C#, C♯, C#相談室 Part44
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/11/13(火) 21:20:18c++厨の嵐はスルー汁。
前スレ
C#, C♯, C#相談室 Part43
http://pc11.2ch.net/test/read.cgi/tech/1190845036/
0002デフォルトの名無しさん
2007/11/13(火) 21:38:02もはや、カルト言語となったC++に未来はない
C#で幸せな生活を送りましょう
では、幸せをもたらすC#, C♯, C#相談室 Part44、はじまりはじまりー
0003デフォルトの名無しさん
2007/11/13(火) 21:40:20http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/
ふらっとC♯, C#(初心者用) Part17
http://pc11.2ch.net/test/read.cgi/tech/1182948981/
MSDNライブラリ
http://msdn.microsoft.com/library/ja/
MSDN2
http://msdn2.microsoft.com/ja-jp/library/default.aspx
pinvoke.net: the interop wiki!
http://pinvoke.net/
0004デフォルトの名無しさん
2007/11/13(火) 21:41:02http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/
.NET Framework SDK (2.0)
http://msdn2.microsoft.com/ja-jp/library/ms310244.aspx
MSDN Visual C# Express Edition フォーラム
http://forums.microsoft.com/msdn-ja/ShowForum.aspx?ForumID=187&SiteID=7
Visual Studio ユーザーグループ
http://vsug.jp/
@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/index.html
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/index.html
宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/index.html
WisdomSoft Microsoft .NET入門
http://black.sakura.ne.jp/~third/system/msnet/msnet.html
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
0005デフォルトの名無しさん
2007/11/13(火) 21:42:09Effective C#
More effective C#
Modern C# design
ぐらいは読みましょう
0006デフォルトの名無しさん
2007/11/14(水) 00:04:44while (i < n);
{
n = ある数字;
++i;
}
という処理で、上記のようにすれば、nが定義されてないとエラーが出ます。
変数nに入った数字をwhileの()内で読めるようにするにはどうすればよろしいのでしょうか?
0007デフォルトの名無しさん
2007/11/14(水) 00:06:20をwhileより上に書く
0008デフォルトの名無しさん
2007/11/14(水) 00:07:24フラットいけよw
0009デフォルトの名無しさん
2007/11/14(水) 00:47:331000でC#は世界を翔ける
キタワァ*・゜゚・*:.。..。.:*・゜(n‘∀‘)η゚・*:.。. .。.:*・゜゚・*
0010デフォルトの名無しさん
2007/11/14(水) 00:52:23どうやって情報を移動すればいいですか?
2次元配列は結構大きいので、
ローカル変数に一時的に退避するのがどうも気持ち悪くて…
array[1000][1000];
0011デフォルトの名無しさん
2007/11/14(水) 00:56:24int[][] local = array;でおk(ハンドルを渡してるだけ)
0012デフォルトの名無しさん
2007/11/14(水) 01:06:49「ここはC#スレですよ」
の方が正しい気がしてきた
0013デフォルトの名無しさん
2007/11/14(水) 01:14:100014デフォルトの名無しさん
2007/11/14(水) 01:28:24Cスレと間違えて来る人はC#の存在を知らないんだろうな
C++の人は間違えないと思うし
0015デフォルトの名無しさん
2007/11/14(水) 01:31:120016デフォルトの名無しさん
2007/11/14(水) 01:36:460017デフォルトの名無しさん
2007/11/14(水) 15:48:53現在 Visual C# .NET を使ってDataGridにアクセスからのデータを表示と言うのをやっているのですが
普通にFormLoadに 〜Jet4.0で命令を入れて表示させる事はできるのですが
TabControlを使って(3つ)各ページ毎に アクセスのテーブルを表示させる事が上手くいきません
Formに命令を入れるとTab1にはテーブルが出てくるのですが2.3には何も出てきません
Tab1Clickの欄に表示させたいテーブルを呼び出す命令を入れたら何も表示しないようになります。
そこで質問なのですが
タブ毎に DataGridの表示をさせるには 表示させる命令はどこに入れればいいのでしょうか?
醜い文章かもしれませんが
分かる方みえましたら教えていただけませんでしょうか
0018デフォルトの名無しさん
2007/11/14(水) 18:37:390019デフォルトの名無しさん
2007/11/14(水) 19:38:32そこからページ毎に違うテーブルを読み込むことができない状態でいます。
DBとしては同じファイルなのですが テーブル毎に管理をしたいので
TabPage毎に 表示させたいと思っています。
付け加えで質問なのですが
その際に ページ毎にラベル・テキストボックスをテーブルの項目数分配置して
//グローバル変数宣言
public System.Windows.Forms.Label[] arrlbl=new Label[配置した数];
public System.Windows.Forms.TextBox[] arrtxt=new TextBox[配置した数];
//ラベル名を発行
arrlbl[0] = label1;
arrlbl[1] = label2;
//テキストボックス内の取得
arrtxt[0]=textBox1;
arrtxt[1]=textBox2;
で自動でテーブルの項目名と先頭の項目内容を取得できるようにしているのですが
TabPage1 ではFormLoadに命令を書き込んでいるせいか成功するのですが
他のページ分は成功しないのですが 良い方法はないでしょうか?
現在 自分でも色々突っ込んで試行錯誤中ですので
アドバイスでもいいのでよろしくお願いします。
0020デフォルトの名無しさん
2007/11/14(水) 19:42:50>//グローバル変数宣言
>//グローバル変数宣言
グ ロ ー バ ル 変 数 宣 言
0021デフォルトの名無しさん
2007/11/14(水) 20:35:32なんとか TabPage毎に テーブルの表示をすることができたのですが
残りの
テーブルの項目毎にラベル・テキストボックスに表示がうまくいきません
先ほどの arrlbl arrtxt の後に
for(i = 0;i<ds.Tables["お客テーブル"].Columns.Count;i++)
{
arrlbl[i].Text = ds.Tables["テーブル名"].Columns[i].ColumnName;
arrtxt[i].Text=ds.Tables["テーブル名"].Rows[0][i].ToString();
}
でテーブルにある項目数をラベルとテキストに読み込んでいます。
プログラムの知識が浅いため
for〜TabPage1で出したいテーブル
for〜TabPage2で出したいテーブル
for〜TabPage3で出したいテーブル
とTabPage3つ分繰り返していれている為なのか
TabPage1にfor分の最後 つまりTabPage3で読み込みたい項目が出てきてしまいます。
なにかよい解決策を探しています。
何度も書き込み申し訳ないと思っていますが
どうかお力添えよろしくお願いします。
0022デフォルトの名無しさん
2007/11/14(水) 20:40:330023デフォルトの名無しさん
2007/11/14(水) 20:52:050024デフォルトの名無しさん
2007/11/14(水) 21:05:42悪いこと言わないからもうちょっと勉強してからのほうが結果的に早いよ
0025デフォルトの名無しさん
2007/11/14(水) 21:09:19教える気が無い奴が馬鹿って言っても何の魔力も無いな
>22
もしかして
for文を3つ分 コピペしてテーブルの中身だけ書き換えているとか言う
落ちじゃないよな?
0026デフォルトの名無しさん
2007/11/14(水) 21:38:25来年はちゃんと講義聞けよ!
0027デフォルトの名無しさん
2007/11/14(水) 22:34:15ttp://bbs.wankuma.com/index.cgi?mode=al2&namber=10260
ぶーん2等兵=>>21
だと思うのだが 反応は無いだろうな
文章の意味が解読不能の為か 誰も反応なかったな・・・・
俺もVB6脳じゃねぇから 解読不能だわ
0028デフォルトの名無しさん
2007/11/14(水) 22:57:59おもくそ上書きしてるやん
0029デフォルトの名無しさん
2007/11/14(水) 23:27:530030デフォルトの名無しさん
2007/11/14(水) 23:33:32wankumaは すげぇお世話になってるところですね
まぁ俺のVB脳じゃないってとこかな。
>>21に 気の利いた回答だしてもやれねぇよ
0031デフォルトの名無しさん
2007/11/14(水) 23:52:29回答が禿同すぎるw
0032デフォルトの名無しさん
2007/11/15(木) 00:03:09のか?
0033デフォルトの名無しさん
2007/11/15(木) 00:14:37わからなくても使える言語を目指してると思ってた
0034デフォルトの名無しさん
2007/11/15(木) 00:20:28ステップでデバッグするか、内容をラベルに書かないでtextboxに順次書き出していったほうがいいよ。
回答は書かないけど、単純なのですぐわかると思う。
0035デフォルトの名無しさん
2007/11/15(木) 00:30:340036デフォルトの名無しさん
2007/11/15(木) 11:02:10Invoke(new defineddelegate(func),arg);
って呼ぶ場合と
defineddelegate dd = new defineddelegate(func);
dd.Invoke(arg);
で呼ぶ場合と何か違うのでしょうか?
0037デフォルトの名無しさん
2007/11/15(木) 11:15:08this.Invoke(...
下は単に
func( arg );
0038デフォルトの名無しさん
2007/11/15(木) 11:26:22とInvokeを正しく使うとすると上ってこと?
0039デフォルトの名無しさん
2007/11/15(木) 11:31:480040デフォルトの名無しさん
2007/11/15(木) 11:37:300041デフォルトの名無しさん
2007/11/15(木) 11:49:18多分Control.Invokeでしょうが……
別スレッドで呼ばれてもControl作成スレッド上で動く
下はスレッド関係なく実行スレッドで動く
0042デフォルトの名無しさん
2007/11/15(木) 12:24:180043デフォルトの名無しさん
2007/11/15(木) 13:19:021ヵ月〜2ヵ月ぐらいで、
Execption of the System.OutOfMemory Exception was throw
というダイアログメッセージが出力されます。
ダイアログの詳細を見ると、mscorlib.dll で上記の例外が発生している様子です。
この時のシステムの状態は、Ctrl+ALT+DELでタスクマネージャーを起動しようとしても、
「アプリケーションを正しく初期化出来ませんでした 0xc000012d」
といった感じで、タスクマネージャも起動できません。
また、スタートメニューのアイコンが表示されなかったり、他のアプリケーションの起動も出来ません。
foo.exe をウィンドウメニューの×をクリックして終了させても、状況は変わりません。
foo.exeがメモリリークしているのであれば、foo.exeを終了させれば、その状態は回復する
と思っているんですが、foo.exe を終了させているにも係わらず、タスクマネージャが起動出
来ない状況が変わらないため、何が起きているんだろうと、途方にくれています。
一旦この状態になったら、ウィンドウメニューの×でfoo.exeを終了させても、
メモリはシステムに返されない状態になってしまっているんでしょうか?
それとも、foo.exeを終了させたつもりになっているだけで、実際?は、終了していないんでしょうか?
また、こういった状況を調査するためには、なにを調べれば良いでしょうか。
すいませんが、知恵をお貸しください。
環境は、
WindowsXP SP2
.NET Framework 1.1 Hotfix(KB928366)
です。
0044デフォルトの名無しさん
2007/11/15(木) 13:50:46それだけ間隔が長期だとトラブルシューティングも大変そう。
OSのメモリ管理に何か不具合が起きて、foo.exeがOutOfMemoryになったり
タスクマネージャも起動できなくなったと考えたほうが自然だろう。
メモリやドライバやハードがらみの可能性が高いと思うけどな。
0045デフォルトの名無しさん
2007/11/15(木) 15:10:18とりあえず普通にログ取れば?
OSのカウンタログとか、foo.exe自身のトレースログとか。
そんでわざとメモリの少ない環境で負荷テストとか。
0046デフォルトの名無しさん
2007/11/15(木) 15:54:03004743
2007/11/15(木) 19:42:40レスありがとうございます。
一度カウンタログを取ってみた事はあるんですが、
数日程度では foo.exeがメモリリークしているんだか、
他のプログラムが悪さしているんだか良く分からなかったんです。
(少なくとも、目に見えて foo.exe がメモリをどんどん使っているという
様子ではありませんでした。)
foo.exe 以外の常駐タスクに対しても、カウンタログを取ってみることにします。
0048デフォルトの名無しさん
2007/11/15(木) 20:02:23ここら辺チェックしてみた?
ttp://msdn.microsoft.com/msdnmag/issues/07/01/ManagedLeaks/default.aspx?loc=jp
0049デフォルトの名無しさん
2007/11/15(木) 22:21:340050デフォルトの名無しさん
2007/11/15(木) 23:41:340051デフォルトの名無しさん
2007/11/15(木) 23:45:200052デフォルトの名無しさん
2007/11/15(木) 23:53:090053デフォルトの名無しさん
2007/11/16(金) 01:10:46おもすれー
Bytes in all Heaps が減らない……orz
0054デフォルトの名無しさん
2007/11/16(金) 01:20:35使われてるサイズじゃなくて予約されてるサイズではなかろうか。
005543
2007/11/16(金) 12:02:52おぉ、これは嬉しい情報です、助かります。
カウンタログ取るときに、なにを取れば良いのかが
良く分からなかったんですが、これでめぼしいプロセスの
ログを採取してみたいと思います。
0056デフォルトの名無しさん
2007/11/16(金) 22:20:06一応演算子らしいが。ラムダ演算子?
0057デフォルトの名無しさん
2007/11/16(金) 22:24:450058デフォルトの名無しさん
2007/11/17(土) 00:20:490059デフォルトの名無しさん
2007/11/17(土) 00:21:350060デフォルトの名無しさん
2007/11/17(土) 00:23:060061デフォルトの名無しさん
2007/11/17(土) 00:32:000062デフォルトの名無しさん
2007/11/17(土) 00:43:440063デフォルトの名無しさん
2007/11/17(土) 12:00:330064デフォルトの名無しさん
2007/11/17(土) 15:16:000065デフォルトの名無しさん
2007/11/17(土) 18:21:51gen2のメカニズムはいろんなところに書かれているんですが。
0066デフォルトの名無しさん
2007/11/17(土) 18:54:18図書館にもあるかもよ
ちょっとした記事やブログだけ読んで理解するには大きすぎる
中途半端な知識で解放漏れしてるやつ大杉
0067デフォルトの名無しさん
2007/11/17(土) 19:03:210068デフォルトの名無しさん
2007/11/17(土) 19:49:290069デフォルトの名無しさん
2007/11/17(土) 19:56:050070デフォルトの名無しさん
2007/11/17(土) 19:59:23これの日本語版がどっかにあるはず
あとMSDNマガジンをGCでぐぐれ
0071デフォルトの名無しさん
2007/11/17(土) 20:02:19ここのコラムのリンク集
0072デフォルトの名無しさん
2007/11/17(土) 20:02:490073デフォルトの名無しさん
2007/11/17(土) 20:50:47そんな数年後には意味無くなってるかもしれないinsideなテクに頼らず、基本に忠実にメモリ管理しろっーことだな。
GCに頼ってると複雑で巨大な相互参照してる類のオブジェクトの解放にドえらい時間かかるし。
手抜きの機能というか、メモリ管理においてのフェイルセーフ機能にしか過ぎないね、GCは。
0074デフォルトの名無しさん
2007/11/17(土) 20:55:370075デフォルトの名無しさん
2007/11/17(土) 20:56:46GCに頼る云々以前の問題な気がする
0076デフォルトの名無しさん
2007/11/17(土) 21:14:45ttp://vineetgupta.spaces.live.com/blog/cns!8DE4BDC896BEE1AD!1104.entry
0077デフォルトの名無しさん
2007/11/17(土) 21:16:46C#からはハンドルだけ触るようにすればいいんじゃね
0078デフォルトの名無しさん
2007/11/17(土) 21:27:290079デフォルトの名無しさん
2007/11/17(土) 21:44:490080デフォルトの名無しさん
2007/11/17(土) 21:47:55フィールドなら参照切れる
0081デフォルトの名無しさん
2007/11/17(土) 21:53:43GCないと本気で死ねるだろ。
0082デフォルトの名無しさん
2007/11/17(土) 21:56:06親を破棄しないときなら別に解放とか関係なくnull入れるだろ。
0083デフォルトの名無しさん
2007/11/17(土) 22:00:05「もうDisposeした」フラグとしてフィールドにnull代入するな
0084デフォルトの名無しさん
2007/11/17(土) 22:01:160085デフォルトの名無しさん
2007/11/17(土) 22:03:09それだけ削除するのが大変だな
0086デフォルトの名無しさん
2007/11/17(土) 23:51:55親は長生きだけど子は短命なときはどうするのさ
特に親が子だくさんのとき。
とりあえずあなたの作るものは使いたくないな〜
0087デフォルトの名無しさん
2007/11/18(日) 00:04:55それを継承したClassを使え。
もちろん、Control系は実装済みだからいらないぞ。
0088デフォルトの名無しさん
2007/11/18(日) 00:11:130089デフォルトの名無しさん
2007/11/18(日) 00:27:14>>親を破棄しないときなら別に解放とか関係なくnull入れるだろ。
>親は長生きだけど子は短命なときはどうするのさ
>特に親が子だくさんのとき。
>とりあえずあなたの作るものは使いたくないな〜
どいうことだ?
0090デフォルトの名無しさん
2007/11/18(日) 00:30:04親はそのままで子だけを破棄するときには、
開放目的とか関係なく普通にnull入れるだろう
って言ってるのに
親は長生きだけど子は短命なときはどうするのさ
ってだからnull入れるって言ってんだろうがよ。
0091デフォルトの名無しさん
2007/11/18(日) 00:32:49何を難しく考えてるんだ。
0092デフォルトの名無しさん
2007/11/18(日) 00:37:020093デフォルトの名無しさん
2007/11/18(日) 00:41:01違うと思うよ…
っていうかリソース大量ってどういう意味で言ってるのん?
0094デフォルトの名無しさん
2007/11/18(日) 00:45:45結局、一番影響が多いものから対応するのが実質的なプログラミングだろう。
わざわざ、32bitしかリソース使ってないものを破棄することにベースクラスを遡って
対応なんてやらない。そのような多少なミスを許すためにGCがあるんだから。
0095デフォルトの名無しさん
2007/11/18(日) 00:45:570096デフォルトの名無しさん
2007/11/18(日) 00:49:29なんでやねんw
0097デフォルトの名無しさん
2007/11/18(日) 00:52:060098デフォルトの名無しさん
2007/11/18(日) 00:54:51例としてまず挙がるのがそれだと言いたいんだろ
0099デフォルトの名無しさん
2007/11/18(日) 00:57:57>>っていうかリソース大量ってどういう意味で言ってるのん?
>Dispose関連のリソースと言えばメモリ空間だろう。
>例としてまず挙がるのがそれだと言いたいんだろ
そうはおもえんな。
0100デフォルトの名無しさん
2007/11/18(日) 00:59:120101デフォルトの名無しさん
2007/11/18(日) 01:02:21説明よろしく。
0102デフォルトの名無しさん
2007/11/18(日) 01:02:280103デフォルトの名無しさん
2007/11/18(日) 01:02:56GCで消えないものをDisposeしなきゃならんのであって
0104デフォルトの名無しさん
2007/11/18(日) 01:03:20>何を難しく考えてるんだ。
意味不明。
といいたかったわけだよようするに。
0105デフォルトの名無しさん
2007/11/18(日) 01:03:240106デフォルトの名無しさん
2007/11/18(日) 01:04:320107デフォルトの名無しさん
2007/11/18(日) 01:05:360108デフォルトの名無しさん
2007/11/18(日) 01:05:410109デフォルトの名無しさん
2007/11/18(日) 01:06:31わからないって文句言ってるのに…
0110デフォルトの名無しさん
2007/11/18(日) 01:07:43>何を難しく考えてるんだ。
これをだれかが説明してくれればいいわけだ、うん。
0111デフォルトの名無しさん
2007/11/18(日) 01:08:15もしくはここで質問すれば。
0112デフォルトの名無しさん
2007/11/18(日) 01:09:28http://msdn2.microsoft.com/ja-jp/library/fs2xkftw(VS.80).aspx
0113デフォルトの名無しさん
2007/11/18(日) 01:19:25Disposeのもくてきなんぞちゃんとわかってる。
だ か ら こそ
>普通にリソース大量に消費するクラスはDisposeメソッドを実装しておけばいいという話だろ。
>何を難しく考えてるんだ。
さらに
>Dispose関連のリソースと言えばメモリ空間だろう。
てのが意味不明って言ってんだよ。
リソース大量って同意意味?
ってわざわざ確認したのに
>Dispose関連のリソースと言えばメモリ空間だろう。
ってんだから。
Disposeの意味理解してたら明らかにおかしいことわかるだろうに。
0114デフォルトの名無しさん
2007/11/18(日) 01:20:09リソース大量ってそういういみ意味?
の間違い。
0115デフォルトの名無しさん
2007/11/18(日) 01:20:44リソース大量ってどういう意味?
だ。
0116デフォルトの名無しさん
2007/11/18(日) 01:23:50http://u-biq.org/magazine.htm
0117デフォルトの名無しさん
2007/11/18(日) 01:24:410118デフォルトの名無しさん
2007/11/18(日) 01:25:40とりあえず、説明するの疲れたからもう寝る。
0119デフォルトの名無しさん
2007/11/18(日) 01:26:13メモリ空間の大量使用
する場合にはDisposeを実装すること。
あほか。
0120デフォルトの名無しさん
2007/11/18(日) 01:26:49http://www.aikgroup.co.jp/j-school/japanese/index.htm
0121デフォルトの名無しさん
2007/11/18(日) 01:27:38うーん残念だ。
0122デフォルトの名無しさん
2007/11/18(日) 01:30:33おまえがあほ。
0123デフォルトの名無しさん
2007/11/18(日) 01:33:41まともな反論してもいいんだよ?
0124デフォルトの名無しさん
2007/11/18(日) 01:34:16自動メモリ管理機能を提供します。ガベージ コレクタは、マネージオブジェクトに対するメモリの割り当てと解放を行い、
必要な場合には、アンマネージ リソースを正しくクリーンアップするために Finalize メソッドおよびデストラクタを使用します。
自動メモリ管理は、コードによるメモリ管理方式から生じる一般的なバグを除去することで、
開発を簡単にします。
0125デフォルトの名無しさん
2007/11/18(日) 01:34:31本気で言ってるということでいいのかな?
0126デフォルトの名無しさん
2007/11/18(日) 01:40:23実装する必要がある場合はする
ファイルや画像を扱うクラスは実装されている理由がメモリ管理に与える影響が多いから
GCに任せて良いと判断できる程度のメモリ消費なら実装しない
0127デフォルトの名無しさん
2007/11/18(日) 01:42:50今追いついたけど、何言ってっかわからんわw
0128デフォルトの名無しさん
2007/11/18(日) 01:43:45マジそれやばいって
0129デフォルトの名無しさん
2007/11/18(日) 01:49:400130デフォルトの名無しさん
2007/11/18(日) 01:49:54わかって書いてるのかわかって無いのかいまいち判断しにくい書き方だが、
わかってるならもうちょっと明確な書き方するだろうから多分わかって無いんだろう。
画像はともかくファイルに関して「実装されている理由がメモリ管理に与える影響が多い」
とは普通書かないだろうしな。
0131デフォルトの名無しさん
2007/11/18(日) 02:02:37↓
意味不明とか言ってることがわからんとか突っ込む
↓
わからないなら文句言うな、わからずに文句いってんのかw
↓
いやおかしいこと言ってるからわかりようが無いだろ、わかるやついるのか?
↓
わからないならここみて勉強して来い。
↓
いやあのね…
こういうのって多いんだぜ?
0132デフォルトの名無しさん
2007/11/18(日) 02:03:55本当にわかってないんだろうなぁ。
0133デフォルトの名無しさん
2007/11/18(日) 02:06:440134デフォルトの名無しさん
2007/11/18(日) 02:09:250135デフォルトの名無しさん
2007/11/18(日) 02:10:070136デフォルトの名無しさん
2007/11/18(日) 02:11:260137デフォルトの名無しさん
2007/11/18(日) 02:11:490138デフォルトの名無しさん
2007/11/18(日) 02:21:270139デフォルトの名無しさん
2007/11/18(日) 02:24:270140デフォルトの名無しさん
2007/11/18(日) 02:24:35VC#2005でWindowsアプリケーションを新規作成します。
するとForm1.Designer.cs内に最初から下記のコードが書かれています。(必要な部分だけ抜粋しています。)
private System.ComponentModel.IContainer components = null;
protected override void Dispose(bool disposing) {
if (disposing && (components != null)) {
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent() {
this.components = new System.ComponentModel.Container();
}
しかし、Form1.cs[デザイン]を使ってButton等をポトペタすると、
this.components = new System.ComponentModel.Container();
という部分がコードから綺麗に消えてしまいます。
とても奇妙に思えるのですが、これは何を意味しているのでしょうか?
そして最後までnullなthis.componentsと、
それを参照するDisposeメソッドは残しておく必要があるのでしょうか?
0141デフォルトの名無しさん
2007/11/18(日) 02:26:15つーかコテ使えとは言わんが安価使おうよ・・・
0142デフォルトの名無しさん
2007/11/18(日) 02:55:38確かデザイナの仕様だったキガス
必要になると勝手に復活するから気にしなくておk
0143デフォルトの名無しさん
2007/11/18(日) 03:39:38Form.Controlsに入らなくてコンストラクタにcontainerを引数として持つやつらが
ポトペタされると復活して、そいつらの面倒見てくれて最後にDisposeしてくれる。
そいつらのコンストラクタでは、
public Soitsura( IContainer container)
{
...
container.Add(this);
}
みたいに自分をcomponentsにつっこむの
0144デフォルトの名無しさん
2007/11/18(日) 05:03:28http://www.atmarkit.co.jp/fdotnet/dotnettips/027dispose/dispose.html
0145デフォルトの名無しさん
2007/11/18(日) 05:13:19「リソース大量に消費するクラス」とは全然違う内容なんだけど・・・
0146デフォルトの名無しさん
2007/11/18(日) 05:20:200147デフォルトの名無しさん
2007/11/18(日) 05:36:36>しかし、極めて限られた資源や、特別な特徴を持った資源は、使い終わったらすぐに解放してやらねば不都合が起きる場合がある
ここをどう解釈してる?
014865
2007/11/18(日) 07:07:01>>70
ざっと読んでみたところPart2のほうで触れられていました。
どうやって古いオブジェクトからgen0オブジェクトへの参照を検出しているのか
疑問だったのですが、その疑問が解けました。
なんでもGetWriteWatch API関数でメモリへの書き込みを検出してるんだとか。
>>76
こちらの方にもうちょっと詳細な説明がありました。
>>71
こちらもそのうち読んでみたいと思います。
>>66
プログラミング.NET Frameworkは以前読もうとしたんですが近くの本屋に
なかったんですよね。図書館は盲点だったのでまた探してみたいと思います。
みなさんどうもありがとうございました。
0149デフォルトの名無しさん
2007/11/18(日) 09:56:400150デフォルトの名無しさん
2007/11/18(日) 10:35:30依存すべきじゃないトリビア Gen0 のサイズはCPUキャッシュのサイズ(なことが多い)
0151デフォルトの名無しさん
2007/11/18(日) 11:47:43具体的に言うとファイルやネットワーク等の資源
大量の資源を使うクラスに対するDispose呼び出しは
VMの一定メモリ割り当て量超えた場合のパフォーマンス低下を防ぐため
たとえば、少量の資源を使うクラスをDisposeしたりはしない
string str = "A" + "B";
これの"A"と"B" はすぐに使えなくなるがDisposeしないでGCにまかせたりしてるのは
影響が少ないから。
0152デフォルトの名無しさん
2007/11/18(日) 11:56:120153デフォルトの名無しさん
2007/11/18(日) 11:58:50初心者に一番わかりやすいだろ?
参照が関数から抜けると切れるし、strが参照型だと解る
0154デフォルトの名無しさん
2007/11/18(日) 11:59:450155デフォルトの名無しさん
2007/11/18(日) 11:59:51class HeavyObject:IDisposable{
int[] data;
public HeavyObject(){data=new int[100000000];
public void Dispose(){/*これ実装してdataを解放してくれ*/}
}
0156デフォルトの名無しさん
2007/11/18(日) 12:06:56>VMの一定メモリ割り当て量超えた場合のパフォーマンス低下を防ぐため
具体的にパフォーマンス低下を防いでいる例を書いてくれ。
0157デフォルトの名無しさん
2007/11/18(日) 12:08:53やっぱり意味不明だろどう考えても。
0158デフォルトの名無しさん
2007/11/18(日) 12:10:36配列の開放って、具体的にはどうするの?
今まで意識してやってなかった。
0159デフォルトの名無しさん
2007/11/18(日) 12:12:38GCに任せるしかない
よっぽどすぐ削除したかったら参照切ってからGC.Collectとか考えられるけど、
Disposeでやることじゃない
0160デフォルトの名無しさん
2007/11/18(日) 12:14:02とでもいうつもりなのかな>>151は。
しかし問題はHeavyObject自身がどういう使われ方を想定してるかだ。
Disposeイコール普通はもう使わない、なんだから、
普通はDispose実装しても意味無いわな、ほっといても変わらん。
いやむしろDispose呼び出しのために開放が遅れる場合があるw
0161デフォルトの名無しさん
2007/11/18(日) 12:17:33{
private IntPtr handle;
private Component Components;
private bool disposed = false;
private int[] data
public BaseResource()
{
data=new int[100000000];
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if(!this.disposed)
{
if(disposing)Components.Dispose();
CloseHandle(handle);
handle = IntPtr.Zero;
if(data != null)data = null;
}
disposed = true;
}
~BaseResource()
{
Dispose(false);
}
}
0162デフォルトの名無しさん
2007/11/18(日) 12:23:10それどう見てもdata=nullは一応ついでにやっといたほうがいい程度だし。
どう考えてもdataの開放は主目的とまったく違うし。
ついでっていうのは、Disposeされても参照が開放されない場合という、
どちらかというと特殊な状況でしか時再には意味無いけど、
せっかく開放のタイミングがあるんだから、一応ついでにやっとくべきだろう、
っていうレベルの話ってことね。
0163デフォルトの名無しさん
2007/11/18(日) 12:24:220164デフォルトの名無しさん
2007/11/18(日) 12:30:120165デフォルトの名無しさん
2007/11/18(日) 12:33:06GC.SuppressFinalize(this);
に指定されたオブジェクトがGCによって呼ばれないことによって
>大量の資源を使うクラスに対するDispose呼び出しは
>VMの一定メモリ割り当て量超えた場合のパフォーマンス低下を防ぐため
をおこなってるんだろう。
0166デフォルトの名無しさん
2007/11/18(日) 12:33:12だったらまだ、この表現自体の意味はわかるが、
DisposeしないでGCにまかせたりしてるのは
ってのはもはや意味不明
0167デフォルトの名無しさん
2007/11/18(日) 12:34:11それって「でかいアンマネージメモリ確保しちゃったからマネージメモリ詰めといてね」だろ
0168デフォルトの名無しさん
2007/11/18(日) 12:38:11>>167は>>165が>>164に言ってると思って言ってるのかな?
0169デフォルトの名無しさん
2007/11/18(日) 12:38:50表現のミスは認めるが、あげ足とり好きなやつが多すぎだな。
0170デフォルトの名無しさん
2007/11/18(日) 12:42:34じゃあFinalizeって意味で書いたのか?
そんなわけ無いだろ、さらに意味不明だ。
>DisposeしないでFinalizeにまかせたりしてるのは
>だったらまだ、この表現自体の意味はわかるが、
って書いたとおり、「この表現自体の意味」はわかるってだけ。
>string str = "A" + "B";
>これの"A"と"B" はすぐに使えなくなるがDisposeしないでFinalizeにまかせたりしてるのは
>影響が少ないから。
これでどうだ、ますます意味不明だろ。
0171デフォルトの名無しさん
2007/11/18(日) 12:42:50VMによるパフォーマンス低下を防ぐにはSuppressFinalizeの呼出
参照型には安全に解放を行うためnull参照を設定
まとめたらこんな感じか?
0172デフォルトの名無しさん
2007/11/18(日) 12:44:040173デフォルトの名無しさん
2007/11/18(日) 12:44:38本当はこういう表現をしたかったのに
ミスしてこう書いてしまった
っていう風にを説明してみ、できるわけ無いが。
0174デフォルトの名無しさん
2007/11/18(日) 12:45:52>VMによるパフォーマンス低下を防ぐにはSuppressFinalizeの呼出
>参照型には安全に解放を行うためnull参照を設定
>まとめたらこんな感じか?
んーそりゃ無茶だw
0175デフォルトの名無しさん
2007/11/18(日) 12:46:080177デフォルトの名無しさん
2007/11/18(日) 12:47:19特別な終了処理を行いたかったらDisposeを実装
っていうだけのことなんだけどな
0178デフォルトの名無しさん
2007/11/18(日) 12:49:03C♯, C#相談室 Part34
http://pc11.2ch.net/test/read.cgi/tech/1162467959/
0179デフォルトの名無しさん
2007/11/18(日) 12:52:22Disposeを実装する。Disposeを実装してるメンバを持ってる場合も同じ。
アンマネージリソースを直に扱うクラスはFinalizeを実装する。
ただし、普通はSafeHandle使うべきだし、アンマネージリソースを直に扱うクラスなんて
まずめったに無いから、Finalizeを実装するのは本当にまれ。
Finalizeを実装するなら、Diaposeも実装して、確定的なタイミングでの開放もできるようにする。
この場合はDisposeのタイミングでSuppressFinalizeを呼び出して、
もうFinalizeは呼び出さなくていいことを伝える。
でも普通はDisposeパターンを使うけど。
Disposeを実装する場合は、一応マネージドなメンバの参照もnullにしておけば、
もしDispose後すぐに参照が開放されない、ということがあった場合には効果がある。
まあ普通の使い方じゃそんなに無いけども。
0180デフォルトの名無しさん
2007/11/18(日) 12:58:030181デフォルトの名無しさん
2007/11/18(日) 12:59:580182デフォルトの名無しさん
2007/11/18(日) 13:01:24Disposeの話題はおしまい
0183デフォルトの名無しさん
2007/11/18(日) 13:01:460184デフォルトの名無しさん
2007/11/18(日) 13:03:39Before-Afterパターン的なことをするために会えて実装することはたまにある。
単にusingで簡潔かつ確実に書けるようにするってだけの目的だけど。
TransactionScopeなんかと同じ使い方だな、
何らかのスコープを定義したい場合に使うことが多い。
0185デフォルトの名無しさん
2007/11/18(日) 13:08:510186デフォルトの名無しさん
2007/11/18(日) 13:09:120187デフォルトの名無しさん
2007/11/18(日) 13:10:22コードブロックを引数に取れよ
0188デフォルトの名無しさん
2007/11/18(日) 13:14:17簡潔簡単にかつ間違えなずに使えるようにしとくってのが目的だからな、
コードブロック引数ってのはやりたくない(外向けには、内部ではやったりもするが)。
あと大きいのは、VBでも普通に使えなきゃ困るから、だ。
0189デフォルトの名無しさん
2007/11/18(日) 14:54:180190デフォルトの名無しさん
2007/11/18(日) 15:00:17Rubyのように内部イテレータをメインに使う言語はそれでいい。
foreachで外部イテレータも多用されるC#では
foreachからの脱出時の軽量コールバックにDisposeが流用される。
ttp://www.okisoft.co.jp/esc/prolog/in-cs.html#4
そしてLINQのせいでますます外部イテレータ依存度が高くなった。
IEnumerator<T>.Disposeはもう殺せないよ。使われすぎてる。
例外が軽い言語だと、列挙の中断通知には例外を使う言語もあるけどね。
PythonとかECMAScript 4とか。
0191デフォルトの名無しさん
2007/11/18(日) 15:54:47ふらっとC#,C♯,C#(初心者用) Part21
http://pc11.2ch.net/test/read.cgi/tech/1195368821/l50
0192デフォルトの名無しさん
2007/11/18(日) 19:38:56マウスを高速でぐりぐり動かしても表示がもったりしないような。
もちろんC#で。
具体的にはこんな感じで
(100,230)
↑
0193デフォルトの名無しさん
2007/11/18(日) 19:44:16普通に、イベントはMouseMoveを取得、表示はカーソルを自分で作成する。
0194デフォルトの名無しさん
2007/11/18(日) 19:52:09親フォームのMouseMoveで位置とテキストを更新すれば
0195デフォルトの名無しさん
2007/11/18(日) 19:56:28http://www.microsoft.com/japan/msdn/windows/windows2000/ddhelp_pt1.aspx
0196デフォルトの名無しさん
2007/11/18(日) 21:03:59お手軽かつ確実じゃないか。
まあ、一見便利そうで鬱陶しいUIの見本みたいになりそうだけど。
ステータスバーか、もしくは専用の表示スペース作って表示するのが普通に感じる
0197デフォルトの名無しさん
2007/11/18(日) 22:06:36具体的にいいますと http://www.codeproject.com/cs/miscctrl/XPTaskBar.asp を Vista で動かすときに
デフォルトのままだと描画に不具合が生じるのでクラシックテーマに変更するメソッドを実行させたいのです。
0198デフォルトの名無しさん
2007/11/18(日) 22:12:48まあデザイン時か実行時かはDesignModeプロパティで一応判別ができる。
MSDNライブラリよく読まないとハマる可能性があるけど
0199デフォルトの名無しさん
2007/11/18(日) 22:28:23デザイン時は親フォームの InitializeComponent しか呼び出されないので、その呼び出しをどうやって知ろうかな、と。
0200デフォルトの名無しさん
2007/11/18(日) 23:01:430201デフォルトの名無しさん
2007/11/19(月) 00:22:47IDropTargetHelperって簡単なんだな
今作ってるやつにちょこっと足したらできた
0202デフォルトの名無しさん
2007/11/19(月) 00:25:11デバイスコンテキスト関連が面倒なんじゃないか?
GDIは癖があってあまり好きになれないんだよな。
0203デフォルトの名無しさん
2007/11/19(月) 01:22:55DC関連てソースの話じゃね?
ターゲットの場合、ドラッグイメージの描画はOSつーかexplorerがやってくれるよ?
Vistaならあのでかいアイコンとコピー/移動だかのインジケータ含めて。
問題は下のウィンドウの描画みたいだけど、
Vistaなせいなのかホバーしたときの描画がたいしたことないせいなのか
IDropTargetHelper.ShowまわりはいじらなくてもOKだった
つーか訳ありでIDropTarget自前実装だから簡単だったわけだけど
0204デフォルトの名無しさん
2007/11/19(月) 13:17:58画像を貼り付けて配置をmiddlecenterにしても
中央に表示されません。どうすれば上手く表示出来ますか?
0205デフォルトの名無しさん
2007/11/19(月) 13:47:49それはふらっと向けの質問だな。
そのプロパティがどのプロパティと関連があるのかライブラリを見ておくこと。
0206デフォルトの名無しさん
2007/11/19(月) 15:06:34ありがとうございます。まだ上手くいきませんが頑張ってみます。
レスありがとうございました。
0207デフォルトの名無しさん
2007/11/20(火) 10:36:170208デフォルトの名無しさん
2007/11/20(火) 10:54:10ttp://www.hinet.mydns.jp/tdiary/?date=20050517
SPIのC#ラッパーはそこらに転がってると思う.
0209デフォルトの名無しさん
2007/11/20(火) 11:37:43なるほど、Susieですか。
GhostScriptを扱うAPIがあるといいんですけどねぇ。難しいのかな。
0210デフォルトの名無しさん
2007/11/20(火) 20:11:49コマンドライン引数渡してプロセス動かせば良くね?
0211デフォルトの名無しさん
2007/11/21(水) 00:00:35そのようなメソッドはありますか?
0212デフォルトの名無しさん
2007/11/21(水) 00:02:31素直に接続時の例外でチェックした方がいい、ぞ
netstat みたいな事をしたいというんだったら別だが
0213デフォルトの名無しさん
2007/11/21(水) 11:48:37現在1024bitRSAを使用した通信のプログラムを作っているのですが・・・
相手の公開鍵が判明してる場合
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
RSAParameters rsaParameters = new RSAParameters();
rsaParameters.Modulus = 相手の公開鍵(0x80byte)
rsaParameters.Exponent = {1,0,1};
rsa.ImportParameters(rsaParameters);
暗号化済みデータ = rsa.encrypt(暗号化したいデータ,false);
で、大丈夫なのでしょうか?
いまいちRSAの使い方がわからないのでわかるかたいらっしゃいましたらお願いします。
0214デフォルトの名無しさん
2007/11/21(水) 19:47:560215デフォルトの名無しさん
2007/11/21(水) 19:48:230216デフォルトの名無しさん
2007/11/21(水) 20:20:03できました!ありがとうございます!
0217デフォルトの名無しさん
2007/11/23(金) 01:31:53TextBox に一度フォーカスを合わせると、以降 Form の MouseWheel イベントが呼ばれなくなります。
回避方法を教えてください。
0218デフォルトの名無しさん
2007/11/23(金) 02:18:05フォーカスまわりが怪しい挙動するときがあるよね
toolStripTextBox.Leaveでform.Focus();したらどうか
0219デフォルトの名無しさん
2007/11/23(金) 03:57:38共有しようとしたのですがEXEを起動させたらすぐに異常終了
してしまいます。
これは何故でしょうか?クライアントに置いて起動すると
問題なく動きます。
VB6で全く同じ内容のEXEはファイルサーバ上でも
起動できたのに・・・
0220デフォルトの名無しさん
2007/11/23(金) 04:16:28新規プロジェクトで作ったなにもコード書いてないexeでも?
0221デフォルトの名無しさん
2007/11/23(金) 04:23:48何もコードを書いていないEXEでは今のところ試していません。
内容はあるファイルをある場所へコピーするだけのプログラムです。
0222デフォルトの名無しさん
2007/11/23(金) 07:06:44ネットワーク上にあるファイルは制限ゾーンで実行される。
とくに設定をしなければInternetZone扱いで実行されるんでほとんどのプログラムは動かない。
動かしたければポリシーをいじって、\\server\hoge\* のは
FullTrustといったふうに設定することになる。
0223デフォルトの名無しさん
2007/11/23(金) 10:50:10その辺から勉強した方がいいよ。
0224デフォルトの名無しさん
2007/11/23(金) 12:32:210225デフォルトの名無しさん
2007/11/23(金) 16:33:450226デフォルトの名無しさん
2007/11/23(金) 16:42:53アンカーが無いと誰にレスしているのか分らない。
0227デフォルトの名無しさん
2007/11/23(金) 18:51:480228デフォルトの名無しさん
2007/11/23(金) 21:18:36どっちにしても署名だけじゃ駄目だわな。
0229デフォルトの名無しさん
2007/11/23(金) 22:52:390230デフォルトの名無しさん
2007/11/23(金) 23:21:140231デフォルトの名無しさん
2007/11/24(土) 00:20:460232デフォルトの名無しさん
2007/11/24(土) 01:07:52試してみたらfor(int i=0;i<array.Length;i++)で回すより速いね
どういう実装になってるんだろう
0233デフォルトの名無しさん
2007/11/24(土) 01:29:090234デフォルトの名無しさん
2007/11/24(土) 01:36:25System名前空間のよく使う順(親階層が同じなら揃える)
その他外部のライブラリの名前空間
自分で作った名前空間
俺はこんな感じ
0235デフォルトの名無しさん
2007/11/24(土) 01:39:300236デフォルトの名無しさん
2007/11/24(土) 01:40:410237デフォルトの名無しさん
2007/11/24(土) 02:35:50よう俺。
0238デフォルトの名無しさん
2007/11/24(土) 02:37:010239デフォルトの名無しさん
2007/11/24(土) 08:29:13そんな機能付いたっけ
0240デフォルトの名無しさん
2007/11/24(土) 08:59:080241デフォルトの名無しさん
2007/11/24(土) 12:26:120242デフォルトの名無しさん
2007/11/24(土) 12:31:490243デフォルトの名無しさん
2007/11/24(土) 12:39:300244デフォルトの名無しさん
2007/11/24(土) 12:49:490245デフォルトの名無しさん
2007/11/24(土) 12:52:190246デフォルトの名無しさん
2007/11/24(土) 12:53:54これからしばらくの間、このスレでしょっちゅう見かけるに違いない
0247デフォルトの名無しさん
2007/11/24(土) 12:58:06生産性あがるうううううう
0248デフォルトの名無しさん
2007/11/24(土) 15:05:49nameの意味を調べればこの違和感に気づくだろうが
0249デフォルトの名無しさん
2007/11/24(土) 15:10:180250デフォルトの名無しさん
2007/11/24(土) 15:50:550251デフォルトの名無しさん
2007/11/24(土) 16:58:120252デフォルトの名無しさん
2007/11/24(土) 17:52:15LINQ以外は大体C#3.0の機能が使えます!
日本語版は開発完了が年内予定か
個人で買うには高いんだよなー…一応買うつもりだけど
0253デフォルトの名無しさん
2007/11/24(土) 17:58:172007年の終わりごろに出たのがVS2008なのはなんでだろう
0254デフォルトの名無しさん
2007/11/24(土) 18:32:56WindowsServer、SQLServer、VisualStudioを
2008シリーズとして製品をそろえたかったから、
0255デフォルトの名無しさん
2007/11/24(土) 19:20:11禿しく置いてかれた感ある・・・。これでCLRが上がったりしたら、それこそヤル気でねえw
0256デフォルトの名無しさん
2007/11/24(土) 19:45:47VB専門ユーザーが付いてこられないこと請け合い
0257デフォルトの名無しさん
2007/11/24(土) 19:47:27Rubyが流行った原因もそれだしな
0258デフォルトの名無しさん
2007/11/24(土) 20:21:55考えている日本企業が多いからな。
外資はすでにWPF実装やSilverLightの評価を始めてるよ。
0259デフォルトの名無しさん
2007/11/24(土) 21:04:060260デフォルトの名無しさん
2007/11/24(土) 21:44:12俺は生き残った技術だけで十分だ
学ぶべきことは他にいくらでもある
0261デフォルトの名無しさん
2007/11/24(土) 21:54:500262デフォルトの名無しさん
2007/11/24(土) 22:07:27サイレントインストールしたいんだけど、やり方書いたサイトか方法教えて!!
0263デフォルトの名無しさん
2007/11/24(土) 22:11:27セットアッププロジェクトを作成すれば良いと思うんだが?
0264デフォルトの名無しさん
2007/11/24(土) 22:44:290265デフォルトの名無しさん
2007/11/24(土) 22:52:220266デフォルトの名無しさん
2007/11/24(土) 23:26:340267デフォルトの名無しさん
2007/11/24(土) 23:31:100268デフォルトの名無しさん
2007/11/25(日) 00:19:02やってみます。
ありがとうございました。
0269デフォルトの名無しさん
2007/11/25(日) 01:01:50が、なんか見た目がアイコン抽出した時と違うんですが、
これはなんでですか?
なんかにじんでるというか。
色がめっちゃ濃い部分があります。
0270デフォルトの名無しさん
2007/11/25(日) 01:16:11読み込み時にヘマしてるか表示時にヘマしてるか
我々の予想の斜め上をいくところでヘマしてるか。
めっちゃ濃い部分に関しては単に透明色なだけかもね。
Explorer等は特定の色を描画時に透明として扱扱ってる。
まあまんべんなく調べてみれ。
>できました。
ちなみに世間ではそれを「できてない」という。
0271デフォルトの名無しさん
2007/11/25(日) 01:31:07(´−`).。oO(しかし、なんであれ8bitがデフォルトかね……
0272デフォルトの名無しさん
2007/11/25(日) 01:32:470273デフォルトの名無しさん
2007/11/25(日) 01:38:46>>270
できてませんでした。
多分これで出来ていると思います。各環境ごとに違うのかもしれませんが。
vmかなんかで試してみます。
ありがとうございました。
>>271
ビンゴでした。
ありがとうございました。
0274デフォルトの名無しさん
2007/11/25(日) 01:43:40C# : 普通のおにいさん。超有能でもないけど、まんべんなく、そつなくこなす
F# : ノムヒョン大統領。一部で大人気。
0275デフォルトの名無しさん
2007/11/25(日) 02:07:190276デフォルトの名無しさん
2007/11/25(日) 02:08:200277デフォルトの名無しさん
2007/11/25(日) 02:51:000278デフォルトの名無しさん
2007/11/25(日) 02:52:070279デフォルトの名無しさん
2007/11/25(日) 03:28:23アイコンの合成ってどうやるんでしょうか。
0280デフォルトの名無しさん
2007/11/25(日) 03:29:24具体的にはショートカットの矢印のアイコンとフォルダのアイコンの合成です。
0281デフォルトの名無しさん
2007/11/25(日) 10:46:480282デフォルトの名無しさん
2007/11/25(日) 11:24:542.0までちゃんと全部理解してるならwebで十分だろ
本一冊書けるほどの変化はないよ
0283デフォルトの名無しさん
2007/11/25(日) 11:59:01ttp://madebits.com/netz/index.php
0284デフォルトの名無しさん
2007/11/25(日) 14:31:31HttpRequestに対してサーバが簡単なXmlを返すものなんですが、クライアント側で受け取りに失敗します。(※(2)の箇所)
サーバ側で送出したメッセージを全て読み込むためには何を使うのが定石ですか?
//サーバ側のコード
[WebService(Namespace = "http://tempuri.org/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class MyHttpService : IHttpHandler{
public void ProcessRequest(HttpContext context){
HttpResponse res = context.Response;
res.ContentType = "text/xml";
res.Write("<xml>hoge</xml>");
res.Flush();
res.Close();//※(1) 接続を開放しなきゃ、と思いCloseを後から追加した。
}
}
//クライアント側のコード
private void btnMyHttpService_Click(object sender, EventArgs e){
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://localhost:2779/MyHttpService.ashx");
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
using (Stream stream = res.GetResponseStream()){
StreamReader reader = new StreamReader(stream);
//※(2) ここで「転送接続からデータを読み取れません: 接続は閉じられました。。」という例外発生
//クライアントまで到達している電文を最後まで取りたいだけなんですが・・
string content = reader.ReadToEnd();
stream.Close();
}
}
※(1)にHttpResponse.Close();を追加したところ、
※(2)でSystem.IO.IOException例外が発生するようになってしまった。
1.GetResponseStream()で得られたStreamに対してStreamReader.ReadToEndを使うのがよくない
2.Httpハンドラでは普通HttpResponse.Closeを呼ぶのがよくない
とかあるのでしょうか?
0285デフォルトの名無しさん
2007/11/25(日) 16:23:460286デフォルトの名無しさん
2007/11/25(日) 19:37:550287284
2007/11/25(日) 20:25:55Endだと例外が発生してしまい、パフォーマンス的に問題があるようです。
SOAPじゃなくてREST型サービスを要求されているので、その方向で調査中です。
(相手がJavaとか.NET以外なので&SOAPは遅いとか言われている・・・)
Web参照型と単純なXmlを返すWebサービスでパフォーマンスを比較してみると
Response.Endを呼ぶと明らかに遅くなってしまいますのでResponse.Endは使いたくないです。
サーバ側でResponse.Closeを呼び出すことで
クライアントの呼び出しに依存せずにサーバ側から安全に接続を切りたいのですが
Closeした場合にクライアント側でサーバが送出したメッセージを読み込むことはできないのでしょうか?
0288デフォルトの名無しさん
2007/11/26(月) 00:27:49これすげーな。えらい圧縮される
0289デフォルトの名無しさん
2007/11/26(月) 08:29:420290デフォルトの名無しさん
2007/11/26(月) 09:46:250291デフォルトの名無しさん
2007/11/26(月) 10:24:060292デフォルトの名無しさん
2007/11/26(月) 13:25:26君にはプログラミングの勉強の前に、情報処理の勉強をお願いしたい。
0293デフォルトの名無しさん
2007/11/26(月) 14:50:090294デフォルトの名無しさん
2007/11/26(月) 15:24:530295デフォルトの名無しさん
2007/11/26(月) 16:12:09ジェネリッククラスが書き難い
0296デフォルトの名無しさん
2007/11/26(月) 16:34:48俺もそれは思ったことあるけど、その方法って微妙なところもあるのよね。
class Rational : ICalculable // 有理数
と
class Galois2 : ICalculable // 位数2のガロア体
があったときに、
Rational p;
Galois2 q;
var r = p + q;
はどう扱えばいいのかとか。
0297デフォルトの名無しさん
2007/11/26(月) 16:37:21p.Add(q) と解釈することにして、
Add の中で型チェックすればよさそうに思えるけど、
それだと今度、
class Real : ICalculable // 多倍長・任意精度の実数
みたいなのに対して、
double x;
Real y;
var z = x + y; // double と Real 間の演算は認めたい
をどうするかで困る。
implicit なキャストと上記のルールで何とかならないでもないけど。
0298デフォルトの名無しさん
2007/11/26(月) 16:58:47同じ型同士でも乗算は定義されるけど除算は定義されないとかあるし
0299デフォルトの名無しさん
2007/11/26(月) 17:37:57定義できない場合は例外投げるようにするとか
あと制約条件はなんでシールクラスはだめなんだろう
0300デフォルトの名無しさん
2007/11/26(月) 17:57:47できたところで何の意味がある?w
0301デフォルトの名無しさん
2007/11/26(月) 18:10:05制約条件にintやdoubleなんかを指定できるようになる
0302デフォルトの名無しさん
2007/11/26(月) 18:24:200303デフォルトの名無しさん
2007/11/26(月) 18:28:290304デフォルトの名無しさん
2007/11/26(月) 19:11:430305デフォルトの名無しさん
2007/11/26(月) 20:27:060306デフォルトの名無しさん
2007/11/26(月) 20:32:48プライマリ制約別に特殊化って感じで。
0307デフォルトの名無しさん
2007/11/26(月) 20:34:010308デフォルトの名無しさん
2007/11/26(月) 20:34:490309デフォルトの名無しさん
2007/11/26(月) 20:36:52まあ別に困らないけど
0310デフォルトの名無しさん
2007/11/26(月) 20:37:42void Method(int num) でいいんじゃないのかと
0311デフォルトの名無しさん
2007/11/26(月) 20:53:260312デフォルトの名無しさん
2007/11/26(月) 21:09:480313デフォルトの名無しさん
2007/11/26(月) 23:21:41Closeしないクライアントがサーバ側のリソースを無駄に消費してしまう
ということはありませんか?
Closeした方がブラウザで途中までレンダリングされるのが早いのでは?
と思っていたのですが、簡単なサービス呼び出しで実験したところ特に有意な差はなかったです。
もしかして、Close/Endって必要ないですか?
0314デフォルトの名無しさん
2007/11/27(火) 01:46:590315デフォルトの名無しさん
2007/11/27(火) 02:13:400316デフォルトの名無しさん
2007/11/27(火) 02:20:29http://blogs.wankuma.com/trapemiya/archive/2006/07/06/31783.aspx
参考にはなったけど型引数は1個で済ませられるよね
0317デフォルトの名無しさん
2007/11/27(火) 02:20:310318デフォルトの名無しさん
2007/11/27(火) 02:35:340319デフォルトの名無しさん
2007/11/27(火) 02:36:490320デフォルトの名無しさん
2007/11/27(火) 03:01:45サーバ側で毎回Closeなんて普通遅くなるだけだし。
接続のオープンクローズの方が維持より重いし。
ページは処理完了しないとレンダリングできないから途中で書き出しなんかできないし。
サーバ側でCloseできるってことは全部書き終わってるタイミングだから結局ほとんど差なんて無いし。
0321デフォルトの名無しさん
2007/11/27(火) 05:15:470322デフォルトの名無しさん
2007/11/27(火) 09:04:46特殊な状況ではEndは使われるが
Closeなんかいつ使うんだよ。
勝手に要ると思い込んで遅くなるって
まずに自分の思い込みを疑え。
0323デフォルトの名無しさん
2007/11/27(火) 10:27:48LoadLibrary
0324デフォルトの名無しさん
2007/11/27(火) 14:43:46最近C#でアプリ開発を始めたのですが、配列の変換で悩んでいます。
Byte[,] Temp1 = new Byte[4096,4096];
と定義して、各種メソッドの引数であるByte[];へ
Temp1[0,0]などとアドレスを渡したいのですが、
(例えば、Socket.BeginReceiveの引数1 byte[] の受信ポインタへ、
Temp[0,0]のアドレスを指定したい。)
コンパイル時に変換エラーが出てしまいます。
どなたかよい方法をご存知ありませんでしょうか。
0325デフォルトの名無しさん
2007/11/27(火) 14:53:57byte[,]じゃなくてbyte[][]使えば?
byte[][] temp = new byte[4096][];
for(int i=0;i<temp.Length;i++)
temp[i] = new byte[4096];
でバッファ確保してtemp[0]で0番目の配列がbyte[]として渡せる
0326デフォルトの名無しさん
2007/11/27(火) 15:00:030327デフォルトの名無しさん
2007/11/27(火) 15:06:48何でジェネリクスが出てくる?
しかも配列は構造体じゃないぞ
0328デフォルトの名無しさん
2007/11/27(火) 15:19:37>>325さんの方式でコーディング続けてみます。
ありがとうございました!
0329デフォルトの名無しさん
2007/11/27(火) 15:19:57C/C+;やってた人?
byte[,]は二次元配列。
byte[][]は配列の配列で二次元配列とは別物。
引数のbyte[]のとこではポインタ渡しじゃなくて配列の参照渡しをしてる。
0330デフォルトの名無しさん
2007/11/27(火) 15:22:11ちなみにkは入力できます
0331デフォルトの名無しさん
2007/11/27(火) 15:26:57324です。仰るとおりCプログラマでして、今回C#初挑戦です。
VBで簡単な開発はしたことあるので、C#も大丈夫だろうとタカを
くくってましたが、便利そうで不便なところもあり、
無駄なコードを書くことが多いなというのが感想でしょうか。
解説ありがとうございました!
0332デフォルトの名無しさん
2007/11/27(火) 15:27:010333デフォルトの名無しさん
2007/11/27(火) 15:27:37何にも分かっちゃいねえぜ
0334デフォルトの名無しさん
2007/11/27(火) 15:37:14典型的なC厨だな・・・
0335デフォルトの名無しさん
2007/11/27(火) 16:32:51仲間が増えていい事じゃないか
0336デフォルトの名無しさん
2007/11/27(火) 16:57:250337デフォルトの名無しさん
2007/11/27(火) 17:33:03だが、使い方を知らないのでのこぎりのようにチェーンソーを使い、言った
「こんな使いにくいものよりのこぎりのほうが良く切れるぜ!」
0338デフォルトの名無しさん
2007/11/27(火) 17:53:57自分で定義すれば良いんじゃね?
0339デフォルトの名無しさん
2007/11/27(火) 18:43:04うん
とりあえずこんなのを作った
public struct Number<T> :ICalculable<T>, IComparable, IComparable<T>
where T : struct, IComparable, IComparable<T>, IFormattable, IConvertible, IEquatable<T>
Tはbyte〜ulong、float、double
0340デフォルトの名無しさん
2007/11/28(水) 11:43:35var hoge = new { Boke = delegate( string msg ){ Console.WriteLine( msg ); } }はだめなのね(´・ω・`)
0341デフォルトの名無しさん
2007/11/28(水) 11:49:03var hoge = new { Boke = new Hage(msg => { Console.WriteLine(msg); }) };
0342デフォルトの名無しさん
2007/11/28(水) 11:50:550343デフォルトの名無しさん
2007/11/28(水) 12:28:340344デフォルトの名無しさん
2007/11/28(水) 12:34:270345デフォルトの名無しさん
2007/11/28(水) 12:36:20・・・それは使えんなあ(´・ω・`)
0346デフォルトの名無しさん
2007/11/28(水) 12:45:24Action/Funcなら引数の型の明示が必要なんでnew書くのと大して変わらなくなるな
0347デフォルトの名無しさん
2007/11/28(水) 12:54:52var action = (string msg) => Console.WriteLine(msg);
だいぶ違うと思うんだがなあ
型を<>の中に書くことが可読性をひどく低下させるような気がする
0348デフォルトの名無しさん
2007/11/28(水) 12:59:02うーん、どっちも一長一短・・・
下の方が見やすいけど、
action の型が分かりにくくなるのは嫌だなぁ。
個人的に、右辺値を見れば型が明らかなときにだけ var 使いたい。
その場だと、
Action<string> action = msg => Console.Write(msg);
と書きたいかなぁ。
0349デフォルトの名無しさん
2007/11/28(水) 13:00:180350デフォルトの名無しさん
2007/11/28(水) 13:24:580351デフォルトの名無しさん
2007/11/28(水) 13:33:23foreach(var match in regex.Matches(...))
って書けないのが死ぬほど気持ち悪い
0352デフォルトの名無しさん
2007/11/28(水) 15:09:55コンストラクタで
public Hoge(string name,int id,double val){
_name=name;_id=id;_val=val;
}
みたいなのをかかなくていい技なんかなかったっけ?
0353デフォルトの名無しさん
2007/11/28(水) 15:17:11new Hoge{ _name = name, _id = id};
こんなんだったかな。
Fieldでは無理だったんじゃなかったか
0354デフォルトの名無しさん
2007/11/28(水) 15:22:18暮らす面罵でvarがつかえなかったり、なんかこうかゆいところに手が届かない幹事。
LINQもターゲットが.NET3.5限定になるので使えないかもしれんし・・・
0355デフォルトの名無しさん
2007/11/28(水) 15:30:22ビルドしてEXEを作ることって可能でしょうか?
ELのソースを全部取り込むのは無しの方向で・・・。
0356デフォルトの名無しさん
2007/11/28(水) 15:30:54コンストラクタぐらい書けよという話なんだろう
0357デフォルトの名無しさん
2007/11/28(水) 15:39:18楽のさせ方が中途半端すぎ
0358デフォルトの名無しさん
2007/11/28(水) 15:45:15static libraryのことか?
0359デフォルトの名無しさん
2007/11/28(水) 15:56:30しかし中途半端で使いにくいのは確かだ
存在しないものと考えてコーディングした方がいいような気がする
0360デフォルトの名無しさん
2007/11/28(水) 15:59:49そうかもしれませんが、.NETってできるのですか?
そういえば、MFCの頃に静的リンクの指定によって出来ましたよね。
今、ググって見たら、
http://www.microsoft.com/downloads/details.aspx?FamilyID=22914587-b4ad-4eae-87cf-b14ae6a939b0&displaylang=en
こんなの出て来たのですが、これで1つに出来るのでしょうか・・・。
0361デフォルトの名無しさん
2007/11/28(水) 16:47:460362デフォルトの名無しさん
2007/11/28(水) 17:01:18お舞こそ型推論の仕組みを理解してなくないか?
var objList=new List<object>();
で暮らす面罵だろうがきっちり型推論できますが何か?
0363デフォルトの名無しさん
2007/11/28(水) 17:20:53それが出来たところで別にうれしくないということだろ
0364デフォルトの名無しさん
2007/11/28(水) 21:31:21前はこんな状況じゃなかったのに…
そのまえにアプリ作ってんのかお前ら?
0365デフォルトの名無しさん
2007/11/28(水) 21:40:200366デフォルトの名無しさん
2007/11/28(水) 21:43:04.NET Frameworkのクラスの使い方なんて大抵自分で調べたらすぐわかるだろ
0367デフォルトの名無しさん
2007/11/28(水) 21:45:18言語仕様の話おもしろい
0368デフォルトの名無しさん
2007/11/28(水) 21:48:110369デフォルトの名無しさん
2007/11/28(水) 21:50:390370デフォルトの名無しさん
2007/11/28(水) 21:57:11必死な人たちが君の助けを待ってる
0371デフォルトの名無しさん
2007/11/28(水) 22:18:07んなもんみんな腐るほど作ってるだろうからいまいち意図が読めない。
0372デフォルトの名無しさん
2007/11/28(水) 22:22:070373デフォルトの名無しさん
2007/11/28(水) 23:19:050374デフォルトの名無しさん
2007/11/28(水) 23:20:000375デフォルトの名無しさん
2007/11/28(水) 23:34:260376デフォルトの名無しさん
2007/11/28(水) 23:49:08わざわざ言語スレでやることもないだろ。
0377デフォルトの名無しさん
2007/11/29(木) 03:01:56このレス明らかに・・・働いてから言え
0378284
2007/11/29(木) 06:52:37http://support.microsoft.com/kb/812406/
>>323 Closeが使われているサンプル
>サーバ側でCloseできるってことは全部書き終わってるタイミング
なのにもかかわらず、クライアント側でStreamReader.ReadToEndが使えないのが??と思いました。
通常はCloseする必要が無いようですね。ありがとうございました。
0379デフォルトの名無しさん
2007/11/29(木) 22:10:56逆に何やってんのw
テストコードしか書いてないとか。
まさかそんなことは。。。
0380デフォルトの名無しさん
2007/11/29(木) 22:49:55妙な勘違いしてるうえにしつこいな。
面白い内部デザインや肝になるコーディングなんてアプリ作りの全作業量のせいぜい1割ぐらいだろ。
他のゴミみたいなルーチンワークがそんなに好きなのか?
0381デフォルトの名無しさん
2007/11/29(木) 23:02:240382デフォルトの名無しさん
2007/11/30(金) 00:18:02・時間かかる処理をどう高速化するか
これが楽しい。仕様書作りとかは時間の無駄・・・
0383デフォルトの名無しさん
2007/11/30(金) 00:36:52其処までまかせっきりに出来てうらやましいよ
0384デフォルトの名無しさん
2007/11/30(金) 00:49:29それではC#の話題をどうぞ。
0385デフォルトの名無しさん
2007/11/30(金) 01:07:16君はFormsやASP.NETでイベント記述する程度のことしか作業したことがないんだね。
ソケット通信やスレッドを扱えばわかると思うが、ゴミどころかミスひとつで致命的な
エラーが発生するシステムも存在することをお忘れなく。
0386デフォルトの名無しさん
2007/11/30(金) 01:11:26つまらん見栄の張り合いはもういいっつの
0387デフォルトの名無しさん
2007/11/30(金) 08:05:51DataSetとUI、DBのマッピングフレームワーク作ったり。
最近の開発言語環境は、メタプログラミングができて楽しいぞ。
つまらないルーチンワークなんてのは、できる限りコンピュータにやらせるもんだ。
0388デフォルトの名無しさん
2007/11/30(金) 11:08:10きわめて同意。これでソース-セマンティクス-ILへの相互変換フレームワークあればもっと面白かったのに。
CodeDOMとかExpressionとか微妙に中途半端
0389デフォルトの名無しさん
2007/11/30(金) 17:02:59AutoScalingModeとかの辺りを見てみたけどDPIにしてもなんか期待していた動作にならず。Control.Scaleなどもあるけれどこれも同じ。
コントロールが沸けわからない基準でレイアウトが変わってしまいます(´・ω・`)
0390デフォルトの名無しさん
2007/11/30(金) 17:08:490391デフォルトの名無しさん
2007/11/30(金) 17:09:46無理やりやるならばAutoScaleModeをFontにして、
Formのフォントのサイズを変えるとアンビエントなままな子のフォントも追従して
スケールが変わる
個別にフォント設定してたらだめだけど
0392デフォルトの名無しさん
2007/11/30(金) 18:00:470393デフォルトの名無しさん
2007/11/30(金) 18:12:420394デフォルトの名無しさん
2007/11/30(金) 18:48:460395デフォルトの名無しさん
2007/11/30(金) 18:55:040396デフォルトの名無しさん
2007/11/30(金) 19:26:210397デフォルトの名無しさん
2007/11/30(金) 19:37:300398デフォルトの名無しさん
2007/11/30(金) 19:41:380399デフォルトの名無しさん
2007/11/30(金) 20:46:27IpcChannel使うのが常道じゃない?
0400デフォルトの名無しさん
2007/11/30(金) 20:53:180401デフォルトの名無しさん
2007/11/30(金) 21:45:43プロセス間通信も忘れないように。
0402デフォルトの名無しさん
2007/11/30(金) 23:00:04AppDomainSetupを使おうにもすでに自分自身が起動しているので自分自身のAppDomain
があるので意味ないし、AppDomain.AppendPrivatePathは切り捨てられてるし、
アプリケーション構成ファイルを毎回作るにしてもそのたびに再起動しなければいけないので
だるいし…
やっぱりAssemblyResolveを使うしかないですかね?
0403デフォルトの名無しさん
2007/11/30(金) 23:07:130404デフォルトの名無しさん
2007/12/01(土) 00:13:05WM_COPYDATA
0405デフォルトの名無しさん
2007/12/01(土) 03:01:20プラグインなどを使用するときに、個々で設定ファイルを保存する場合はばらけないように
各プラグインでディレクトリを分けると思うんですが、そいつらをPrivatePathに入れるには
アプリケーション構成ファイルに予めパスを書いておくか、AppDomain.AppendPrivatePath
を使わないといけないので、どうしようかなと。
そもそもこういう使い方自体が間違ってるのかもしれませんが…
0406デフォルトの名無しさん
2007/12/01(土) 16:39:270407デフォルトの名無しさん
2007/12/01(土) 22:54:50よくわからないのですが、アセンブリ名と同じディレクトリ作って
AssemblyResolveで読み込むってことですか?
0408デフォルトの名無しさん
2007/12/01(土) 23:00:580409デフォルトの名無しさん
2007/12/02(日) 07:31:19イベントとかってないですか?
ノード自身が親(ツリービュー)を見つけられる方法が欲しいんですが。
0410デフォルトの名無しさん
2007/12/02(日) 12:24:190411デフォルトの名無しさん
2007/12/02(日) 12:26:160412デフォルトの名無しさん
2007/12/02(日) 12:29:29相談室=中上級者 ネットワーク、DB、スレッド、ネイティブやWin32API呼び出し等
0413デフォルトの名無しさん
2007/12/02(日) 12:31:270414デフォルトの名無しさん
2007/12/02(日) 12:31:520415デフォルトの名無しさん
2007/12/02(日) 12:56:45(´・ω・`)MSDN読んだらいいがな
……なイベントってないですか?
(´・ω・`)MSDN読んだらいいがな
なんかエラーがでます。どうしたらいいですか?
(´・ω・`)しらんがな
0416デフォルトの名無しさん
2007/12/02(日) 16:40:47中級者=MSDNに書いてないことを聞いてくる。
上級者=WEB、本に書いてないことを聞いてくる。
0417デフォルトの名無しさん
2007/12/02(日) 17:01:38中級者=MSDNに書いてないことを聞いてくる。
上級者=WEB、本に書いてないことを聞いてくる。
ーーーーーーー素人の壁ーーーーーーーーーー
プロ=WEB、本に書いてないことに答える。
0418デフォルトの名無しさん
2007/12/02(日) 17:12:270419デフォルトの名無しさん
2007/12/02(日) 17:20:580420デフォルトの名無しさん
2007/12/02(日) 17:39:44中級者=MSDNに書いてないことを聞いてくる。
上級者=WEB、本に書いてないことを聞いてくる。
−−−−−素人の壁−−−−−
プロ=WEB、本に書いてないことに答える。
−−−−−プロの壁−−−−−
エスパー=まともな質問でない、意味不明な質問、質問が支離滅裂な状態、でも答える。
0421デフォルトの名無しさん
2007/12/02(日) 17:47:56まあ何が上級者で何が初心者だか知らないが、
こういうくだらないことに血道を上げる奴が低能であることは自信をもって断言できるよ。
0422デフォルトの名無しさん
2007/12/03(月) 08:35:42(2ch)中級者=(ry
0423デフォルトの名無しさん
2007/12/03(月) 10:39:31コンソール窓を後から表示することはできますか?
0424デフォルトの名無しさん
2007/12/03(月) 10:48:290425デフォルトの名無しさん
2007/12/03(月) 12:15:20TextBoxWriterでぐぐったらいろんな人が実装したのが見つかる
0426デフォルトの名無しさん
2007/12/03(月) 12:38:320427デフォルトの名無しさん
2007/12/03(月) 17:47:390428デフォルトの名無しさん
2007/12/04(火) 08:30:44読めないのでしょうか?
BITMAPV4HEADERから作った場合、bV4V4Compressionの値がBI_RGBの時は
成功するのですが、BI_BITFILEDにするとBitmap.FromHbitmap()実行時に
ArgumentExceptionが発生します
0429デフォルトの名無しさん
2007/12/06(木) 16:42:18stringだけのオブジェクトだとLengthって列しか表示されないです・・・orz
0430デフォルトの名無しさん
2007/12/06(木) 17:16:320431デフォルトの名無しさん
2007/12/06(木) 23:46:361つ1つに [DllImport("hoge.dll")]と書くのが面倒になってきました。
もっと簡単でスマートな方法ないでしょうか?
0432デフォルトの名無しさん
2007/12/06(木) 23:47:540434デフォルトの名無しさん
2007/12/07(金) 08:49:190435デフォルトの名無しさん
2007/12/08(土) 23:22:280436デフォルトの名無しさん
2007/12/09(日) 00:20:11ちゃんと更新されるのですか?
0437デフォルトの名無しさん
2007/12/09(日) 00:23:320438デフォルトの名無しさん
2007/12/09(日) 00:43:29もうくるな。
0439デフォルトの名無しさん
2007/12/09(日) 01:00:29(例えば、C#に継続ってあるんでしたっけ?)
0440デフォルトの名無しさん
2007/12/09(日) 01:05:03市ね。すれ違い
0441デフォルトの名無しさん
2007/12/09(日) 01:06:08日本語でおk
0442デフォルトの名無しさん
2007/12/09(日) 01:06:53(例えば、C#に継続ってあるんでしたっけ?)
0443デフォルトの名無しさん
2007/12/09(日) 01:08:27continueのこと?
0444デフォルトの名無しさん
2007/12/09(日) 01:09:450445デフォルトの名無しさん
2007/12/09(日) 01:10:380446デフォルトの名無しさん
2007/12/09(日) 01:12:42あってもうれしくない無用な言語仕様を挙げる必要はありません。
(例えば、C#に継続ってあるんでしたっけ?)
0447デフォルトの名無しさん
2007/12/09(日) 01:14:340448デフォルトの名無しさん
2007/12/09(日) 01:15:08他でやれw
0449デフォルトの名無しさん
2007/12/09(日) 01:16:060450デフォルトの名無しさん
2007/12/09(日) 01:17:04ヘジか?
0451デフォルトの名無しさん
2007/12/09(日) 01:17:230452デフォルトの名無しさん
2007/12/09(日) 01:18:27あんまりC#やってない人?
0453デフォルトの名無しさん
2007/12/09(日) 01:19:200454デフォルトの名無しさん
2007/12/09(日) 01:19:27スコープはずれたタイミング呼び出されるメソッド。
0455デフォルトの名無しさん
2007/12/09(日) 01:19:300456デフォルトの名無しさん
2007/12/09(日) 01:21:32あれ、デストラクタってないんだっけ?
dispose()(だっけ?)とかクラス名に~付けたメソッドってなかったっけ?
0457デフォルトの名無しさん
2007/12/09(日) 01:23:01Disposeの事?
0458デフォルトの名無しさん
2007/12/09(日) 01:24:370459デフォルトの名無しさん
2007/12/09(日) 01:25:03C#否定派ってどこにいるの?
0460デフォルトの名無しさん
2007/12/09(日) 01:26:360461デフォルトの名無しさん
2007/12/09(日) 01:27:30マ板にはいっぱいいるよ
ついて来れてないだけの人達だけどね
0462デフォルトの名無しさん
2007/12/09(日) 01:28:56それはusing使わないと呼び出されないじゃん。
あとは、GCに呼び出されるやつもあるけど、C++とかDみたいにスコープをはずれた
タイミングで呼び出されるやつはない。
0463デフォルトの名無しさん
2007/12/09(日) 01:35:07usingを使わないことで違う事もできるってだけなんだが
なんで無い事になるのかい
0464デフォルトの名無しさん
2007/12/09(日) 01:38:27usingはネストが深くなる。
using(a)
using(b)
using(c) {
}
みたいに書けって言われるけど、こうはかけない状況が多々ある。
0466デフォルトの名無しさん
2007/12/09(日) 01:42:300467デフォルトの名無しさん
2007/12/09(日) 01:42:410468デフォルトの名無しさん
2007/12/09(日) 01:45:00弱点ってほどでもないけど、個人的にはあってほしい機能だよ。
0469デフォルトの名無しさん
2007/12/09(日) 01:47:03File.Using("hoge.txt", file =>{
...
});
そろそろこうする時期に来てると思うんだ
0470デフォルトの名無しさん
2007/12/09(日) 01:49:590471デフォルトの名無しさん
2007/12/09(日) 01:51:05そうだね。
というか、最強言語を探しに来て、C#が一番近そうだと思ったから、
C#が最強言語になるために足りないものを調べている。
0472デフォルトの名無しさん
2007/12/09(日) 01:51:510473デフォルトの名無しさん
2007/12/09(日) 01:51:54強力なマクロもない
多重継承も無い
0474デフォルトの名無しさん
2007/12/09(日) 01:53:37無いというかわざわざ省いたものじゃないのか
0475デフォルトの名無しさん
2007/12/09(日) 01:53:51あると便利なのにスルーされている機能があったら教えて。
0476デフォルトの名無しさん
2007/12/09(日) 01:54:130477デフォルトの名無しさん
2007/12/09(日) 01:55:430478デフォルトの名無しさん
2007/12/09(日) 01:55:48俺もそういう話というか考察は好きだ
0479デフォルトの名無しさん
2007/12/09(日) 01:56:22他の言語使いに、無いと言って馬鹿にされない様に完全無欠を目指す。
多重継承のように、無いと言われた時に理由を話せれば無くても問題ない。
0480デフォルトの名無しさん
2007/12/09(日) 01:56:26実質多重継承だけど
0481デフォルトの名無しさん
2007/12/09(日) 01:56:580482デフォルトの名無しさん
2007/12/09(日) 01:57:24ジェネリックをネストして型名が長くなったとき、typedef欲しいと思う。
0483デフォルトの名無しさん
2007/12/09(日) 02:00:280484デフォルトの名無しさん
2007/12/09(日) 02:00:47これらと比べてC#に足りない点はないかな。
0485デフォルトの名無しさん
2007/12/09(日) 02:04:32どこら辺がダメかな。
λ式は制圧したよね。継続はよくわからないけど。遅延評価はあるんだっけ?
0486デフォルトの名無しさん
2007/12/09(日) 02:07:090487デフォルトの名無しさん
2007/12/09(日) 02:08:070488デフォルトの名無しさん
2007/12/09(日) 02:08:55オブジェクトがImmutableでないから。
0489デフォルトの名無しさん
2007/12/09(日) 02:10:250490デフォルトの名無しさん
2007/12/09(日) 02:44:140491デフォルトの名無しさん
2007/12/09(日) 11:42:34あんまり言語だけで語るのは意味無いよ
VC#のインテリセンスは神
0492あにす ◆sGTL1yK0.6
2007/12/09(日) 11:44:14あ、やっぱり無いんだ?
C#でメソッド内にstatic hoge mona = orz;って書いたら怒られるから、
「VB.NETのSharedはどこにあるんだろう…」
と思いながらクラス変数にしてた。
0493デフォルトの名無しさん
2007/12/09(日) 11:56:25自動プロパティなんかそうだったし
0494デフォルトの名無しさん
2007/12/09(日) 11:58:37これが出来ないから、プロジェクトA内のクラスを使うプロジェクトBは、
自分の持つクラスをプロジェクトAに対して公開できない。
というと、そんな状況になるのはそもそもプロジェクトやクラスの切り分けが
間違ってるからだ、という声が聞こえてくるようだ。
最初は俺自身そのように考えていたんだけど、どうも必ずしもそうでもない場合が
あるような気がする。
適切な例を提示できなくて申し訳ないんだけど。
0495デフォルトの名無しさん
2007/12/09(日) 11:59:51C#では全ての関数がクラスやインスタンスに属してるから、
フィールドで事足りるってことだろう。
0496デフォルトの名無しさん
2007/12/09(日) 12:02:51揚げ足取りみたいになるが、メソッドスコープの静的変数なんてVBにもないでしょ。
VBのSharedフィールドはC#のstaticフィールドと同じでしょ。
VBのStatic付きのローカル変数は「メソッドスコープの静的変数」じゃないよ。
あれは機能的には「特定のメソッド内からしかアクセスできないフィールド」
という感じ。
0497デフォルトの名無しさん
2007/12/09(日) 12:06:41フィールドをあたかもローカル変数のように見せかける構文糖を用意するしかない
0498あにす ◆sGTL1yK0.6
2007/12/09(日) 12:24:48勉強になた。やっぱ恥は晒すものね。
C#で同じことが出来たらいいのに。
あと、C#にもWithEvents相当の機能が干し犬。
0499デフォルトの名無しさん
2007/12/09(日) 12:47:13複数のコントロールで共通のイベントハンドラを使うようデザイナで指定することもできるし
手で書くなら手間はWithEventsと変わらんし
0500デフォルトの名無しさん
2007/12/09(日) 12:56:03ヘジはILレベルで変えなきゃならんから時既に遅しとかいってたな
0501デフォルトの名無しさん
2007/12/09(日) 12:58:02C#の世界だけなら構文糖でいけるだろうけど、
他の言語との相互呼び出しやILレベルでの強いtypedefを実現するのは無理じゃなかろうか。
0502あにす ◆sGTL1yK0.6
2007/12/09(日) 13:03:24Private Sub ガッ(byval sender As Object, byval e As EventArgs) Handles >>499.ぬるぽ
Dim orz As Nanasi = DirectCast(sender, Nanasi)
Call Sendガッ(orz)
End Sub
みたいな時にHandlesの後を見れば
何のイベントプロシージャか分かるのはエレガントだと思うぬ。
0503デフォルトの名無しさん
2007/12/09(日) 13:09:51定義側でやりたいって話だから必然的に情報の埋め込みは必要になる。
属性レベルで保持して構文糖でサポート、レベルならできそうだけどね。
CLR内でもまともに扱おうとしたら無理があるな。
0504デフォルトの名無しさん
2007/12/09(日) 13:15:22ファイル内でも弱いtypedefしかできないと思うが。
いや、どっちの話をしてるのかわかんないけど。
0505デフォルトの名無しさん
2007/12/09(日) 13:23:32usingで出来るんだな
知らなかったwwwww
0506デフォルトの名無しさん
2007/12/09(日) 19:13:250507デフォルトの名無しさん
2007/12/09(日) 20:00:450508デフォルトの名無しさん
2007/12/09(日) 20:40:33typedef IntPtr HWND
0509デフォルトの名無しさん
2007/12/09(日) 20:48:43dllimportをコピペするのに便利かもw
0510デフォルトの名無しさん
2007/12/09(日) 20:56:150511デフォルトの名無しさん
2007/12/09(日) 21:41:23WithEvents とHandlesを組み合わせた機構は無茶苦茶便利だぞw
便利な上に>>502が言わんとしているような利点、つまり「それ」がイベントハンドラで
あることを明示する機能もある。
実際使わずに想像だけで物言っちゃダメだよ。
あれはC#に導入してもいいと思うよ。
0512デフォルトの名無しさん
2007/12/09(日) 22:07:450513デフォルトの名無しさん
2007/12/10(月) 05:10:34C#に必要かどうかはおいといて、eventのより抽象化された実装としては悪くないと思うよ。
C#のは良くも悪くも生っぽいというかILの基本的な仕掛けがそのまま見えるところが特徴だしな。
逆にVBのDispose/Finalize周りがC#と同じでむき出しの実装になってることに違和感を覚えた。
いまならC++/CLIのような仕組みにすべきなんだろうと思う。
0514デフォルトの名無しさん
2007/12/10(月) 11:50:53ttp://jeanne.wankuma.com/tips/cpp/programming/dispose.html
ここなんかにはusingしてさらにCloseもしろとか書いてあるが
0515デフォルトの名無しさん
2007/12/10(月) 12:35:45ダブルクリックすると出たり隠れたりするやつはどうやって作るの?
0516デフォルトの名無しさん
2007/12/10(月) 13:19:56FileStream fs(L"hoge.txt");
FileStream^ fs = gcnew FileStream(L"hoge.txt");
これで書き分けることが出来るのだろう
よく知らんけど
C#だとusingになっちゃうのはまあ仕方ないことかもしれない
0517デフォルトの名無しさん
2007/12/10(月) 14:05:33そこの例にあるCloseは全部不要だな
C++/CLIのは良さそうに見えるけど実際使ってみたら結構分かりにくいと感じた
どっちみち意識しないといけないんだから、目立つC#のusingの方が好き
0518デフォルトの名無しさん
2007/12/10(月) 14:25:340519デフォルトの名無しさん
2007/12/10(月) 14:30:45明記してないなら用心でCloseも呼んどく。
バッファをフラッシュせずにハンドルだけ閉じないかとか心配してしまうから。
0520513
2007/12/10(月) 14:35:53ここは朝っぱらだったので端折りすぎた。
言いたかったのはusingのことではなくて、
~ClassA() { }
!ClassA() { }
のこと。本物のDispose/Finalizeは隠されていて、
この2つはDispose(bool)から呼び出されるメソッドだということ。
GC.SuppressFinalizeを直接書かなくていいだけでもだいぶすっきりしてると思う。
0521デフォルトの名無しさん
2007/12/10(月) 14:36:14CloseだけしてDisposeしないのがアウトになったりされると余計にわかりにくいな
0522デフォルトの名無しさん
2007/12/10(月) 14:39:260523デフォルトの名無しさん
2007/12/10(月) 14:43:370524デフォルトの名無しさん
2007/12/10(月) 14:44:20System.IO.StreamReaderはこうなってて違いはない。Close後の再オープンは出来ない。
public override void Close() {
this.Dispose(true);
}
0525デフォルトの名無しさん
2007/12/10(月) 15:23:53Dispose(bool)もSuppressFinalizeもベースクラスのDisposeも自動で実装して
アンマネージかマネージかによる分岐もやってくれるんだろ
0526デフォルトの名無しさん
2007/12/10(月) 18:30:41ない
0527デフォルトの名無しさん
2007/12/10(月) 19:49:57usingと併用してるな。
記述が煩雑になるので、Closeはfinallyにしてない。
0528デフォルトの名無しさん
2007/12/10(月) 21:48:360529デフォルトの名無しさん
2007/12/10(月) 21:58:230530デフォルトの名無しさん
2007/12/11(火) 01:10:21aを押したら自動候補が現れて、aだけを入力したいのにasって入力されてしまうんですが、
aだけを入力する時ってどうすればいいのでしょうか?
a→as
b→base
ってなっちゃう
0531デフォルトの名無しさん
2007/12/11(火) 01:13:110532デフォルトの名無しさん
2007/12/11(火) 01:16:33即レスありがとうございます!
できました^
0533デフォルトの名無しさん
2007/12/11(火) 13:19:410534デフォルトの名無しさん
2007/12/11(火) 13:21:260535デフォルトの名無しさん
2007/12/11(火) 13:37:020536デフォルトの名無しさん
2007/12/11(火) 13:54:24スピード速いなら何でも良いです(´・ω・`)
0537デフォルトの名無しさん
2007/12/11(火) 14:01:260538デフォルトの名無しさん
2007/12/11(火) 14:01:57ラムダ式万歳
0539デフォルトの名無しさん
2007/12/11(火) 14:02:520540デフォルトの名無しさん
2007/12/11(火) 14:07:270541デフォルトの名無しさん
2007/12/11(火) 14:11:13何より静的型の方が俺は好きだ
0542デフォルトの名無しさん
2007/12/11(火) 14:36:05from、where、select とかって、今後も構文レベルでどんどん拡張しまくるつもりなの?
なんかおかしくね?
0543デフォルトの名無しさん
2007/12/11(火) 14:37:230544デフォルトの名無しさん
2007/12/11(火) 14:41:27ライブラリでいいんじゃね?なんで言語拡張しちゃってるの?意味わからんし。
0545デフォルトの名無しさん
2007/12/11(火) 14:42:120546デフォルトの名無しさん
2007/12/11(火) 14:43:360547デフォルトの名無しさん
2007/12/11(火) 14:44:02コミュニケーションを円滑に進めるために
言語を拡張する以外の方法でそれが出来ないならそうしたらいい
0548デフォルトの名無しさん
2007/12/11(火) 14:46:53確かにキモいな
0549デフォルトの名無しさん
2007/12/11(火) 14:48:51予約語が増えるといったって識別子が制限されるわけでもないし
0550デフォルトの名無しさん
2007/12/11(火) 14:50:06L#でも使ってろ
0551デフォルトの名無しさん
2007/12/11(火) 14:54:34ライブラリは皆が勝手に拡張しているものだが、コミュニケーションは出来ているぞ。
逆に、特定用途のために言語仕様が大きくなれば、
(その特定用途の記述は特定用途を使っていない人には理解が難しいわけだから、)
その分コミュニケーションが取りづらくなる。
言語仕様は最大公約数的であるべきだよ。
0552デフォルトの名無しさん
2007/12/11(火) 15:00:59.NET Frameworkのライブラリの使い方の質問はそこら中で出来るけど
自作クラスの使い方の質問なんて作者にしか出来ないだろ
そしてLINQはプログラミングのあらゆる場面で出て来る
特定用途でもなんでもない
構文的には特殊なものに限っていて、それによって識別子がかぶったりすることを防いでいるわけだが
0553デフォルトの名無しさん
2007/12/11(火) 15:03:47クエリ構文はあくまでも上のようなよく使う組み合わせを次のように簡潔に書くためのもので、
var q = from s in hoge where s.Length == 5 orderby s select s.ToUpper();
SQLにはあってクエリ構文にないものは拡張メソッドを直接使うことになる。
var q = ( from s in hoge where s.Length == 5 orderby s select s.ToUpper() ).Distinct();
機能を拡張してもリンク構文を増やすことはあまりやらないと思うな。
0554デフォルトの名無しさん
2007/12/11(火) 15:09:07慣れたら必要なくなるんじゃないかと思うが
0555デフォルトの名無しさん
2007/12/11(火) 15:09:56var q = ( from s in hoge where s.Length == 5 orderby s select s.ToUpper() ).Distinct();
と
var q = ( from s in hoge where s.Length == 5 orderby s select distinct s.ToUpper();
をC#のバージョンで切り替えるようなソースが出てくるんだろ。
気持悪すぎる。
0556デフォルトの名無しさん
2007/12/11(火) 15:21:34クエリ構文はLINQ拡張メソッドの簡易構文なのだから。
そういえばLINQ for XMLでXMLリテラルの採用は見送ってますね。
気持ち悪いとか言う輩が多かったせいだろうか。VBにはしっかりあるけど。
var x =
<hello>
<hoge>hhh</hoge>
</hello> ;
0557デフォルトの名無しさん
2007/12/11(火) 15:29:510558デフォルトの名無しさん
2007/12/11(火) 15:30:01自分だけの問題なら別にいいんだよ。
例えば、自分がC#3のコンパイラしか持っていなくて、
C#4の言語仕様にdistinctが取り込まれてC#4のソースにdistinctが使用されたら
自分の持っているコンパイラではそのソースはコンパイルできないんだよ。それは困る。
言語仕様の拡張ではなくライブラリでの提供だけなら、ライブラリを調達するだけで対応できる。
コンパイラまで変える必要はない。
このインパクトの違いは大きい。
0559デフォルトの名無しさん
2007/12/11(火) 15:31:510560デフォルトの名無しさん
2007/12/11(火) 15:32:10何を取り入れないかにすごく気を使っている感じがする
0561デフォルトの名無しさん
2007/12/11(火) 15:34:15C#4のソースがC#3でコンパイル出来るわけねーじゃん
今までを見てみろよ
それでも別に何の問題もなかったろ
0562デフォルトの名無しさん
2007/12/11(火) 15:34:320563デフォルトの名無しさん
2007/12/11(火) 15:37:22拡張メソッドで書いた方が断然読みやすい
0564デフォルトの名無しさん
2007/12/11(火) 15:38:30自分が.NET3.5とC#3のコンパイラしか持っていなくて、
.NET4.0の標準ライブラリに新たな関数が追加されて、C#4のソースにその関数が使用されたら
自分の持っているコンパイラではそのソースはコンパイルできない。
同じ話じゃん。
0565デフォルトの名無しさん
2007/12/11(火) 15:39:08言語の標準を守って節度のある使い方をしてくれる人ばかりならいけるんだろうけど
0566デフォルトの名無しさん
2007/12/11(火) 15:42:13ぜんぜん違うよ。ライブラリならその言語を使って自前で作ることができる。言語仕様を拡張されたら手も足も出せない。
0567デフォルトの名無しさん
2007/12/11(火) 15:42:400568デフォルトの名無しさん
2007/12/11(火) 16:00:08アトリビュートなりなんなりがあったほうがいいかもなあ。
0569デフォルトの名無しさん
2007/12/11(火) 16:00:39.NET Frameworkのバージョンは指定できるようになったし
0570デフォルトの名無しさん
2007/12/11(火) 16:07:04http://joe.truemesh.com/blog//000390.html
0571デフォルトの名無しさん
2007/12/11(火) 16:13:18DISTINCTやSKIPやTAKEなどもあるし、拡張メソッドへの単純な糖衣構文でもない。
LINQの拡張毎にキーワード増やす気満々だ。VBらしいっちゃらしい。
Dim xm =
<AAA>
<BBB id="1">aaaaacxzc</BBB>
<BBB id="2">aaaaaxczx</BBB>
</AAA>
Dim rs = From x In xm...<BBB> _
Where x.@id > 2 _
Distinct Skip 1 Take 3 _
Order By x.@id Descending _
Select ID = x.@id, x
0572デフォルトの名無しさん
2007/12/11(火) 16:16:41クロージャの考え方は変わってないよ。
その違いはバグではなくてC#のクロージャはそういうものというのが正解。
C#のクロージャについてはここの前スレかその辺でだいぶ議論した記憶があるな。
0573デフォルトの名無しさん
2007/12/11(火) 16:17:55return emps.FindAll(delegate(Employee e) {
return e.IsManager;
}
}
public List<Employee> Managers(List<Employee> emps) {
return emps.FindAll(e => e.IsManager);
}
def managers(emps)
return emps.select {|e| e.isManager}
end
差は縮まってきたな
0574デフォルトの名無しさん
2007/12/11(火) 16:23:12ソースに対応できるコンパイラを使え
0575デフォルトの名無しさん
2007/12/11(火) 16:23:42よく読んだらクロージャの変数バインドの話じゃなかった。>>572はなしで。
0576デフォルトの名無しさん
2007/12/11(火) 16:24:17return emps.FindAll(e => e.IsManager);
}
にならないかな。
0577デフォルトの名無しさん
2007/12/11(火) 16:26:06public Employee[] Managers(IEnumerable<Employee> emps) {
return emps.Where(e => e.IsManager).ToArray();
}
こうか
public Employee[] Managers(Employee[] emps) {
return emps.Where(e => e.IsManager).ToArray();
}
こうだと思うが
というかオブジェクト指向的には
List<Employee> list;
public Employee[] Managers() {
return list.Where(e => e.IsManager).ToArray();
}
こうだと思うが
0578デフォルトの名無しさん
2007/12/11(火) 16:29:02戻り値の型が見ただけでわかんないだろ
最悪じゃないか
0579デフォルトの名無しさん
2007/12/11(火) 16:32:58確かに。
0580デフォルトの名無しさん
2007/12/11(火) 16:41:240581デフォルトの名無しさん
2007/12/11(火) 16:48:34LINQ構文が拡張メソッドに慣れるまでの経過的措置なことには違いない
0582デフォルトの名無しさん
2007/12/11(火) 16:49:590583デフォルトの名無しさん
2007/12/11(火) 16:50:180584デフォルトの名無しさん
2007/12/11(火) 16:51:180585デフォルトの名無しさん
2007/12/11(火) 16:51:20使い物にならん
ラムダ式があればこんなものはいらないことはMSも認めてるし
0586デフォルトの名無しさん
2007/12/11(火) 17:04:16かなり早くからC#3.0の仕様出てたのに
ジェネリック制約のwhereなんかは明らかに意識してるっぽいのに
0587デフォルトの名無しさん
2007/12/11(火) 17:21:42ラムダ式とするか匿名デリゲートのままにするか意見が分かれてたのではなかろうか。
0588デフォルトの名無しさん
2007/12/11(火) 17:23:29それが匿名メソッドの書き方である必要はまったくないんだが。
0589デフォルトの名無しさん
2007/12/11(火) 17:28:270590デフォルトの名無しさん
2007/12/11(火) 17:31:10このタイプはExpressionと互換が無い。
つまりDLinqでは使えない。
0591デフォルトの名無しさん
2007/12/11(火) 17:44:34さんくすこ。前かけたような気がして匿名メソッド書かなくていいやと思ってたら、その後別のところでエラー出されてひとつの式しかかけないのかと悩んでた。
>>590
そりゃそういうものだからしょうがない。でもExpressionじゃなくてSentence的なものでも良いからセマンティクスをいじれるものがほしかったなあ( ´ー`)フゥー...
0592デフォルトの名無しさん
2007/12/11(火) 17:45:01匿名メソッド不要のソースはこれね
面白いから読んどくべき
http://msdn.microsoft.com/msdnmag/issues/07/06/CSharp30/default.aspx?loc=jp
0593デフォルトの名無しさん
2007/12/11(火) 18:02:000594デフォルトの名無しさん
2007/12/11(火) 18:15:39var query = from x in context select x; // この時点でクエリをビルド
foreach (var x in query) // この時点でDBサーバにクエリを送信
// some action
という感じっぽい。
コンパイル時には Expression Tree になってる。
SQL文は実行時に生成。
パラメータだけが違うほとんど同じ SQL 文を何度も使いたい場合には、
CompiledQuery ってものもある。
0595デフォルトの名無しさん
2007/12/11(火) 18:22:50何で省略できるようにしないんだろう。この言語設計者は馬鹿なのかな。
0596デフォルトの名無しさん
2007/12/11(火) 18:27:27IEnumerable<T>が冗長だとも思わない
0597デフォルトの名無しさん
2007/12/11(火) 18:31:00つーとデータに関係ない文をラムダ式中に複数書いた場合はむしされるのか?今やってるの落ち着いたら試してみるノシ
0598デフォルトの名無しさん
2007/12/11(火) 18:34:21省略したら推論すらできないだろ
0599デフォルトの名無しさん
2007/12/11(火) 18:43:24ahosugi
0600デフォルトの名無しさん
2007/12/11(火) 18:50:13using System.Linq.Expressions;
class Program {
static void Main() {
Expression<Func<int,int,int>> e = (x, y) => x + y * 1000;
Console.WriteLine(e);
var f = e.Compile();
Console.WriteLine(f(3,4));
}
}
(x, y) => (x + (y * 1000))
4003
ステートメント本体があると即コンパイルエラー
外部の関数などを呼んでたら、SQLを組み立てるときに実行時例外のはず。
0601デフォルトの名無しさん
2007/12/11(火) 18:57:050602デフォルトの名無しさん
2007/12/12(水) 07:00:47static void Main() {
//Expression<Func<int,int,int>> e = (x, y) => x + y * 1000;
var ex_x = Expression.Parameter(typeof(int), "x");
var ex_y = Expression.Parameter(typeof(int), "y");
var ex_1000 = Expression.Constant(1000, typeof(int));
var ex_r1 = Expression.Multiply(ex_y, ex_1000);
var ex_r2 = Expression.Add(ex_x, ex_r1);
Expression<Func<int,int,int>> e =
Expression.Lambda<Func<int,int,int>>(ex_r2, new ParameterExpression[] { ex_x, ex_y });
Console.WriteLine(e);
var f = e.Compile();
Console.WriteLine(f(3,4));
}
0603デフォルトの名無しさん
2007/12/12(水) 12:37:34それが、ラムダ式の「単なる匿名デリゲートの簡素化」ではない部分。
静的な命令型言語で関数型言語のクオート的なものを実現しようという要求の解答。
同じ構文で、
デリゲートに代入すれば匿名デリゲートと同じ扱い
Expression 型に代入すれば Expression Tree にコンパイルされる。
0604デフォルトの名無しさん
2007/12/12(水) 15:34:010605デフォルトの名無しさん
2007/12/12(水) 16:04:460606デフォルトの名無しさん
2007/12/12(水) 19:29:240607デフォルトの名無しさん
2007/12/12(水) 19:41:130608デフォルトの名無しさん
2007/12/12(水) 20:26:000609デフォルトの名無しさん
2007/12/12(水) 21:03:120610デフォルトの名無しさん
2007/12/12(水) 21:09:28余程楽しいことがない人生を生きてるのかね
0611デフォルトの名無しさん
2007/12/12(水) 21:12:120612デフォルトの名無しさん
2007/12/12(水) 21:28:16よう、中学生
0613デフォルトの名無しさん
2007/12/12(水) 22:13:21この板だとレス飛び越してワロタとか言ってくれるよな。
この板って笑いの沸点低いのかね。
あ、もちろん良い意味で。
0614デフォルトの名無しさん
2007/12/12(水) 22:22:540615デフォルトの名無しさん
2007/12/12(水) 22:24:130616デフォルトの名無しさん
2007/12/12(水) 23:56:04お前、周りから冷たい人って言われるだろ
0617デフォルトの名無しさん
2007/12/13(木) 00:35:06お前、明日、死ぬ
0618デフォルトの名無しさん
2007/12/13(木) 00:58:450619デフォルトの名無しさん
2007/12/13(木) 04:46:090620デフォルトの名無しさん
2007/12/13(木) 09:47:11.NET Framework 2.0 から WebClient に Download*Async ってメソッドが追加されてると思うんだけど
この非同期操作の DownloadProgressChanged ってどんな条件で発生するか分かる人いるかな?
1.0 で同じようなもの作らなきゃいけなくなって気になったんだ。
ProgressChangedEventArgs.ProgressPercentage が INT32 っぽいから、単純に ProgressPercentage が変わったら、とかかな?
まさかバッファに読み込むごとに発生するとかじゃないよな…
0621デフォルトの名無しさん
2007/12/13(木) 09:55:52今、EL3.1のLoggingを使っているんですが、ログローテーションしないのです。
ちゃんと、Rolling設定しているのですが。
日単位でローテーションして欲しいのですが、
これって、アプリケーションが深夜0時に起動しっぱなしだと、
ローテーションしないのでしょうか?
書きっぱなしでは無いのですが。
0622621
2007/12/13(木) 17:29:17午前0時でローテーションされるわけではなく、24時間でローテーションでした・・・。
0623デフォルトの名無しさん
2007/12/13(木) 21:01:05なぜだろう…
0624デフォルトの名無しさん
2007/12/13(木) 22:24:07sscli 見れば詳しく分かるんじゃないかな
0625デフォルトの名無しさん
2007/12/13(木) 23:08:22内部バッファから出力先に書き写すごと、のような気がする。
0626デフォルトの名無しさん
2007/12/14(金) 01:02:36C#使って.NETのフォームの自動テストを
自作しようみたいな記事あったはずなんだが
消えてる
誰か知らね?
invokeとか使ってhackするイメージだったはずなんだが
0627デフォルトの名無しさん
2007/12/14(金) 01:03:410629デフォルトの名無しさん
2007/12/14(金) 01:16:230630デフォルトの名無しさん
2007/12/14(金) 01:20:42CodeZineじゃなくて別のところというオチはないの?
例えばMSDN Magazineのこれとか。Invokeとか全然使ってないけど。
ttp://msdn.microsoft.com/msdnmag/issues/07/03/Bugslayer/default.aspx?loc=jp
0631デフォルトの名無しさん
2007/12/14(金) 01:23:53こんなのもある。
0632デフォルトの名無しさん
2007/12/14(金) 11:12:19アプリの中で表示するにはどうすればいいの?
0633デフォルトの名無しさん
2007/12/14(金) 11:36:02TextBoxに出力するとか自由自在
0634デフォルトの名無しさん
2007/12/14(金) 13:14:190635デフォルトの名無しさん
2007/12/14(金) 13:53:340636デフォルトの名無しさん
2007/12/14(金) 18:24:03あんまり使えないけど…
0638デフォルトの名無しさん
2007/12/15(土) 00:08:53SystemEvents.SessionSwitch が上手く働かない・・・。orz
public class Program : ServiceBase {
public static void Main(string[] args) {
System.ServiceProcess.ServiceBase[] ServicesToRun;
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new LogonEventWatcher.Program() };
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
Console.ReadLine();
}
protected override void OnStart(string[] args) {
base.OnStart(args);
SensNotification.writeLogFile("Service started !");
SystemEvents.SessionSwitch += new SessionSwitchEventHandler(SystemEvents_SessionSwitch);
}
static void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e) {
SensNotification.writeLogFile("The session is switched. Reason: " + e.Reason);
}
protected override void OnStop() {
base.OnStop();
}
}
なんか対応出来ませんかね?
0639デフォルトの名無しさん
2007/12/15(土) 23:01:15少しだけコードを追加して実行。
構文エラー
少し直して実行
構文エラー
そのあと何回直しても構文エラー
よくみてみるとステートメントの後ろに ; をつけていましたorz
0640デフォルトの名無しさん
2007/12/15(土) 23:04:490641デフォルトの名無しさん
2007/12/16(日) 08:02:530642デフォルトの名無しさん
2007/12/16(日) 09:44:530643デフォルトの名無しさん
2007/12/16(日) 09:56:09今度は思考レベルで
0644デフォルトの名無しさん
2007/12/16(日) 11:44:590645デフォルトの名無しさん
2007/12/16(日) 11:52:110646デフォルトの名無しさん
2007/12/16(日) 12:00:11人の PC 使うときに結構困る。
PowerShell だと Get-ChildItem に dir と ls の両方でエイリアス付いてたり。
0647デフォルトの名無しさん
2007/12/16(日) 13:30:520648デフォルトの名無しさん
2007/12/16(日) 14:27:58まあ、打ち間違うなって話だけど。
どんどん話し脱線するけど、
Unix のジョークソフトで sl ってタイプミスすると、
SL 機関車の AA が画面上を走る奴があったよね。
タイプミスするたびに脱力物。
0649デフォルトの名無しさん
2007/12/16(日) 14:53:290650デフォルトの名無しさん
2007/12/16(日) 15:00:37似てるだけにVBより厄介
Javaほど似てるとかえって混乱しないんだけど
0651デフォルトの名無しさん
2007/12/16(日) 15:14:27sl は和製ソフト。
0652デフォルトの名無しさん
2007/12/16(日) 15:26:06数万個の構造体をスタックに置きたいのですが、容量が足りるか調べたくて
0653デフォルトの名無しさん
2007/12/16(日) 15:36:54メインスレッドじゃ無理だが
ちなみに既定では1MBytesらしい
0654デフォルトの名無しさん
2007/12/16(日) 15:37:28ありがとうございました。
0655デフォルトの名無しさん
2007/12/16(日) 15:42:560656デフォルトの名無しさん
2007/12/17(月) 02:28:24Aが保持している2つのフォーム両方に表示することはできないでしょうか?
フォームのControlsに追加してもどうやら最後に追加したフォームにしか表示されないみたいです。
0657デフォルトの名無しさん
2007/12/17(月) 09:22:550658デフォルトの名無しさん
2007/12/17(月) 11:39:18って知ってたらそんなこと考えないよ
0659デフォルトの名無しさん
2007/12/17(月) 20:12:030660デフォルトの名無しさん
2007/12/17(月) 20:19:400661デフォルトの名無しさん
2007/12/17(月) 21:35:15>>647
Remove-Item Alias:ls
0662デフォルトの名無しさん
2007/12/17(月) 22:11:210663デフォルトの名無しさん
2007/12/18(火) 14:28:570664デフォルトの名無しさん
2007/12/18(火) 14:38:48{
textBox1.Text = parts[i] + "\r\n";
}
これでpartsを全部表示できないどころか何もtextBox1に表示されないんですがなんででしょうか?
partsはstring[]型で、コンパイル時にエラーなんかはないです
0665デフォルトの名無しさん
2007/12/18(火) 14:40:51最後の行に空白文字しか入ってなかったとか、空文字列だったとか。
0666デフォルトの名無しさん
2007/12/18(火) 14:42:150667デフォルトの名無しさん
2007/12/18(火) 14:49:30コンソールの要領でやってましたごめんなさい
0668デフォルトの名無しさん
2007/12/18(火) 17:27:23Match m;
Regex reg = new Regex("あいうえお");
m = reg.Match(str);
if (m.Success) textBox1.Text = "hit";
ここまでしてもhitが表示されない
あいうえおを[]や()でかこっても同じだしコンパイルエラーはないしstrを表示させればあいうえおは含まれているしなんでなんでしょうかorz
0669デフォルトの名無しさん
2007/12/18(火) 17:33:330670デフォルトの名無しさん
2007/12/18(火) 17:39:22よくわからんけど、まずはおちついてブレークポイント設定して、
一行ずつ実行してみれば?
実際のプログラムでも正規表現は本当に"あいうえお"なの?
単なる例で実際に正規表現で複雑なことを引っかけようとしているのなら
正規表現が間違っている可能性が一番高いと思うけど、正規表現をテストできる
サンプルプログラムはネット上で沢山転がっているので、それ使って、正規表現が
正しいかどうかまず確認してみては??
0671デフォルトの名無しさん
2007/12/18(火) 17:57:390672デフォルトの名無しさん
2007/12/18(火) 19:35:49新しいプロジェクト→フォームアプリケーション→デバッグなしで開始
とやっても何にも出ないのですが。
まともに使えないのは私だけでしょうか?
0673デフォルトの名無しさん
2007/12/18(火) 19:42:28どうでもいいけど普通真っ先にWPF触ってみたくない?
0674デフォルトの名無しさん
2007/12/18(火) 19:52:110675672
2007/12/18(火) 19:57:00>普通に動くんだが
そうですか。
こちらの使い方が悪いと判断してがんばってみます。
>どうでもいいけど普通真っ先にWPF触ってみたくない?
とりあえず動くかなとやってみたら、動かなかったという感じです。
それに、「デバッグ開始」ってやると、
プログラム '[484] WindowsFormsApplication1.vshost.exe: マネージ' はコード -1073741819 (0xc0000005) で終了しました。
と出て止まるし、
「新しいプロジェクト→WPFアプリケーション」ってやると、
Microsoft Visual C# でエラーが発生したため終了します。
と出てIDE自体落ちるし、何が悪いんだか・・・
0676デフォルトの名無しさん
2007/12/18(火) 20:37:08OS は何だ
0678デフォルトの名無しさん
2007/12/19(水) 00:23:21タブ追加してそのタブの中にボタン追加しようとしてもデザイナだけだと追加できなくない?
XAMLいじればタブ内に配置できるけど。。。。
0679デフォルトの名無しさん
2007/12/19(水) 00:35:28後に起動したアプリケーションは終了するソフトを作っております。
GetProcessesByName等により、元々起動していたアプリケーションのプロセスは取得可能なのですが
Form.Hide()によりFormが隠してある場合、MainWindowHandleが0のため最前面に持ってきて表示という動作が不可能な状態です。
なんとかしてHide状態の元々起動していたアプリケーションのハンドルを知ることはできないでしょうか?
もしくは代用策でもありましたら教えていただければ幸いです…
0680デフォルトの名無しさん
2007/12/19(水) 00:35:57Graphics.MeasureStringだと余裕もって測られてしまうので、
Graphics.MeasureCharacterRangesでカッキリ計測して、
きっちし文字列を描画したかったんです。
ですが、Graphics.MeasureCharacterRangesからもってきたRectangleに
Graphics.DrawStringすると、今度も微妙にはみ出して文字ごとクリップされたり
ellipsisの点々がでたりしてしまいます。
数ピクセル余裕をもたせればなんとかなりますが
すべての文字列に対応できるのか分からず気持ち悪いです。
なんとかカッキリきっちし描画する方法はないんでしょうか。
0681デフォルトの名無しさん
2007/12/19(水) 00:36:50TextRendererは使ってみた?
0682デフォルトの名無しさん
2007/12/19(水) 00:40:52後から起動したのは名前付きイベントとか使ってもともと起動していたアプリに通知だけして終了。
元々起動していた方が自分をアクティブにする。
0683デフォルトの名無しさん
2007/12/19(水) 00:55:09TextRendererだとアンチエイリアスがひどいので……
ってStringFormat.GenericTypographicをつっこめばいけるみたいでした。
とりあえずこいつを相手にしてみます
すんません。。。。。
0684デフォルトの名無しさん
2007/12/19(水) 08:51:58デバッグで最適化入れてないにもかかわらずデバッグ時にこのメソッドは最適化されてるため評価できませんうんたら出るのはなんでなんでしょう?
匿名メソッドとかのからみ?
0685デフォルトの名無しさん
2007/12/19(水) 12:55:58obj削除して再実行してみて
0686デフォルトの名無しさん
2007/12/19(水) 14:28:56現在在庫管理のソフトを作ってます。
それで、在庫の変数をclass Declarationで宣言して
frmMainとライフタイムを同じとするように、public class Form1の内側(全てのメソッドの外側)
にpublic Declaration dec = new Declaration();とインスタンスを作成して
frmMainでボタンイベントが起こったときに、現在の在庫数をCSVで出力する用のクラス
FileInOutのInputCsv(Decralation dec) でCSVから取り込んだ値をDeclarationの変数郡に代入す際に
どうしても参照エラーになってしまいます。デバッガで確認すると
dec.sample と参照した変数は0となっており、参照できているはずだと思うんですが・・・
なぜでしょうか。どなたかご教授いただけませんか
マルチすみません。
0687デフォルトの名無しさん
2007/12/19(水) 15:22:420688デフォルトの名無しさん
2007/12/19(水) 16:01:48家帰ったら試してみるノシ
AllReBuildやると同じ効果ある?
0689デフォルトの名無しさん
2007/12/19(水) 16:07:27static void Hoge(Delegate1Param<bool,Form> deleg) { }
static bool Hoge2(Control l) { return false; }
static void HogeHoge() {
Hoge(Hoge2);
}
0690デフォルトの名無しさん
2007/12/19(水) 17:10:480691デフォルトの名無しさん
2007/12/19(水) 17:21:41コンパイラ賢いなぁと
0692デフォルトの名無しさん
2007/12/19(水) 17:27:290693デフォルトの名無しさん
2007/12/19(水) 18:16:55ボタンとリストで代用する作業疲れた
0694デフォルトの名無しさん
2007/12/19(水) 18:17:320695デフォルトの名無しさん
2007/12/19(水) 18:31:110696デフォルトの名無しさん
2007/12/19(水) 18:39:40class A { }
class B : A { }
void F(){
Action<A> funcA = i => { };
Action<B> funcB = i => { };
funcA = funcB; // エラー
}
このコードが通ってほしいよ。
0697デフォルトの名無しさん
2007/12/19(水) 18:59:260698デフォルトの名無しさん
2007/12/19(水) 19:32:24文盲乙
0699デフォルトの名無しさん
2007/12/19(水) 19:51:07一体どうやってデータを追加すればいいんだろう
listView1.BeginUpdate();
items = new ListViewItem[1];
items[t].SubItems.Add(title);
items[t].SubItems.Add(name);
items[t].SubItems.Add(date);
items[t].SubItems.Add(point);
listView1.EndUpdate();
こんなんしてみたりこまこま変えて試しまくってるけど見当つかないですorz
誰か詳しく載っているページとか知らないでしょうか
0700デフォルトの名無しさん
2007/12/19(水) 19:57:39http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.listview(VS.80).aspx
結局一番頼りになるのはMSDN
0701デフォルトの名無しさん
2007/12/19(水) 20:08:49ふらっと行け
0702デフォルトの名無しさん
2007/12/19(水) 20:15:57ついにMSDN、把握しました
0703デフォルトの名無しさん
2007/12/19(水) 20:44:04Google先生に尋ねたり、2chで訊いたりするのは最後の手段。
0704デフォルトの名無しさん
2007/12/19(水) 20:55:570705デフォルトの名無しさん
2007/12/19(水) 20:56:330706デフォルトの名無しさん
2007/12/20(木) 01:43:34IEnumerable<int>がIEnumerable<long>として扱えるようなもんだ
なんでICloneableになっちまうんだ?
0707デフォルトの名無しさん
2007/12/20(木) 01:47:23ILレベルではサポートしてるからそういう言語作ればいいと思う。
0708デフォルトの名無しさん
2007/12/20(木) 01:58:59正直今日はじめてこの言葉知った。
まぁ中でやってること、いいたいことはわかるが、その日本語見て意味がわかるやつはおらんだろ。
原語がなんていう単語か知らんが、なんか間違ってる。
0709デフォルトの名無しさん
2007/12/20(木) 11:09:42原語の直訳。
covariant, contravariant。
圏(けん、category)論っていう数学の分野の用語。
学者肌の人が言語を作るとこういう難しい用語使っちゃう。
0710デフォルトの名無しさん
2007/12/20(木) 17:17:45aspectdngのバージョンは0.9.0.0です。
なにかご存知の方よろしくお願いします。
0711デフォルトの名無しさん
2007/12/20(木) 17:59:10ってことは知ってるがそれ以上のことは知らない
0712710
2007/12/20(木) 18:19:20↑で「?」がついてる理由は不明っていう
この?がとれないと使い物にならないっす・・
0713デフォルトの名無しさん
2007/12/20(木) 20:55:37それが必要になるのは設計が間違ってるから
C#のジェネリックは正しく設計しないとコンパイルすら通らない
0714デフォルトの名無しさん
2007/12/20(木) 21:00:17これが通ってほしいと思うことはあるな
EventHandler<T>に統一しとけばジェネリックメソッドとか駆使して何とかなるんだけども
0715デフォルトの名無しさん
2007/12/20(木) 21:55:120716デフォルトの名無しさん
2007/12/20(木) 21:56:360717デフォルトの名無しさん
2007/12/20(木) 22:44:13MouseEventHandler handler = new MouseEventHandler(eventHandler);
こうはできるな
0718710
2007/12/21(金) 22:35:11cecilのどこかで文字列末尾にU+FFFDがついてしまってる模様。
強引に末尾ちょんぎっても不正なアセンブリっていわれちゃうし・・
みなさんはAOPのライブラリってなに使ってるんでしょうか?
0719デフォルトの名無しさん
2007/12/21(金) 23:16:590720デフォルトの名無しさん
2007/12/22(土) 10:40:310721デフォルトの名無しさん
2007/12/22(土) 20:03:230722デフォルトの名無しさん
2007/12/22(土) 21:18:030723デフォルトの名無しさん
2007/12/22(土) 21:21:53ColumnHeader A = new ColumnHeader();
ColumnHeader B = new ColumnHeader();
ColumnHeader C = new ColumnHeader();
...
こんな具合でA列B列C列・・・とあり、ここにデータが追加された状態で、
ある行をクリックするとその行の特定列の情報を得たいです。
private void listView1_SelectedIndexChanged(object sender, EventArgs e){}
こいつの中でうまくやればいいのはわかるのですがいまいち他コントロールとは勝手が違う為よくわからないでいます
|A|B|C|
|.1|.2|.3|
|.4|.5|.6|
|.7|.8|.9|
...
こんな具合で2行目をクリックすると4,5,6部分が選択され、例えばその中のB列にある5を取得するといったかんじです
それではよろしくお願いします
こいつです(http://pc11.2ch.net/test/read.cgi/tech/1197802312/293)
0724デフォルトの名無しさん
2007/12/22(土) 21:43:440725デフォルトの名無しさん
2007/12/22(土) 21:47:24SelectedIndexを知らんだけか?
0726デフォルトの名無しさん
2007/12/22(土) 21:53:340727723
2007/12/22(土) 21:55:56選択した行の特定列を得たい、だけかけばよかったかなorz
リストボックスならSelectedIndexもありますし、リストビューにも似たものがあったのですが同じようには使えなかったのでおそらくハズレです
0728デフォルトの名無しさん
2007/12/22(土) 22:01:45そういえば無かったなw
SelectedIndicesなりSelectedItemsなりから取れるよ
ListViewは複数選択可能なのが多いからか取得できるのは選択アイテムのコレクションのみ
0729デフォルトの名無しさん
2007/12/22(土) 22:03:24SelectedItemsじゃいかんの?
0730デフォルトの名無しさん
2007/12/22(土) 22:13:50どちらも試したのですが、その二つそれぞれの下にある関数でそれらしいものがなかったため違うのかと思っていました
いろいろとToStringで表示させてみたのですがその二つを表示させた時もその行の情報がでてくれなくorz
何か勘違いしてるんでしょうか
0731デフォルトの名無しさん
2007/12/22(土) 22:22:240732デフォルトの名無しさん
2007/12/22(土) 22:23:180733デフォルトの名無しさん
2007/12/22(土) 22:29:520734デフォルトの名無しさん
2007/12/22(土) 22:34:22this.ListView1.SelectedItems;
これくらいしかヘルプからはわからなかったけどこれも無理だったorz
素直に今回は諦めておきます
0735デフォルトの名無しさん
2007/12/22(土) 22:51:45まずはコピペしてみろよ
0736デフォルトの名無しさん
2007/12/22(土) 22:59:23おそらく知識不足な為調べ方も悪いんだと思われます
0737デフォルトの名無しさん
2007/12/22(土) 23:01:23.NET1.x時代で開発終わってるものばかりで、AspectDNG以外はLoomくらいなもんで
Loomは使ってみたけど元のコードを変更しないとWeavingできないみたいだし使いづらい。
消去法的にDNGなんだけどU+FFFD問題が・・(DNGっていうよりcecilの問題っぽいんだけども)
た す け て・・・
0738デフォルトの名無しさん
2007/12/22(土) 23:08:000739デフォルトの名無しさん
2007/12/22(土) 23:11:220740デフォルトの名無しさん
2007/12/23(日) 00:06:47this.listView1.SelectedItems[0].SubItems[0].Text
SubItems[0]の数値を適当に変えてみろ。
ヘルプ見ろとか言ってるヒマあるなら答え教えてやれよ
0741710
2007/12/23(日) 23:22:00PostSharpを試してみてなかなかよさげだったんだけど、PInvokeメソッドがうまくいかなくてこれまた断念。
結局AspectDNGでCecilを最新版にして、そのInjectメソッドのシグネチャが変わってたので呼び出し部分を修正。
目的はPInvokeしてるメソッドたちのプロファイリングだったんだけどこれでなんとかうまくいきました。
0742デフォルトの名無しさん
2007/12/25(火) 23:28:180743デフォルトの名無しさん
2007/12/26(水) 03:33:50C/Migemo(1.2)の超簡単なラッパーを作ってみたんですが、
こんなんでいいんでしょうか。
批評をお願いします。
http://gamdev.org/up/img/10781.zip
0744デフォルトの名無しさん
2007/12/26(水) 08:54:210745デフォルトの名無しさん
2007/12/26(水) 11:35:340746デフォルトの名無しさん
2007/12/26(水) 13:16:29どこ?欲しい。
0747デフォルトの名無しさん
2007/12/26(水) 14:15:130748デフォルトの名無しさん
2007/12/26(水) 14:55:28だけどこれdllの場所決め打ちだね
0749デフォルトの名無しさん
2007/12/26(水) 14:59:180750デフォルトの名無しさん
2007/12/26(水) 15:04:170751デフォルトの名無しさん
2007/12/26(水) 15:35:48P/Invoke使わないなんて車輪の再発明もいいところだろ。
0752デフォルトの名無しさん
2007/12/26(水) 15:42:400753デフォルトの名無しさん
2007/12/26(水) 15:46:47>>743の中身
0755デフォルトの名無しさん
2007/12/26(水) 15:55:03ライブラリのロードに失敗したときに適切な例外を投げたりしないのは実用上問題があるよね。
普通に[DllImport]使ったほうがいいと俺も思うよ。
0756デフォルトの名無しさん
2007/12/26(水) 19:52:43(HogeDelegate)Marshal.GetDelegateForFunctionPointer(p, typeof(HogeDelegate));
みたいに2回同じ型を指定するのがわずらわしかったので、
// T は delegate、p は GetProcAddress で取得する関数ポインタ
static T GetDelegate<T>(IntPtr p)
{
Delegate d=Marshal.GetDelegateForFunctionPointer(p, typeof(T));
return (T)d;
}
みたいにしてみたが、キャストするところで
「型 'System.Delegate' を型 'T' に変換できません。」
とコンパイルエラーになる。
うまくやる方法は何かない?
0757デフォルトの名無しさん
2007/12/26(水) 19:56:500758デフォルトの名無しさん
2007/12/26(水) 20:15:35お、うまくいった。ありがとう。
しかし GetDelegateForFunctionPointer の戻り値って Delegate だし、
Generic使わなければ Delegateで受けてもキャストできるのに。
謎だ。
0759デフォルトの名無しさん
2007/12/26(水) 20:30:56といいたいところなんだけどC#ではコンパイル通らない
0760デフォルトの名無しさん
2007/12/27(木) 00:15:37サイズ変更する前に。と言うか揉み消ししたい場合。
0761デフォルトの名無しさん
2007/12/27(木) 00:19:440762デフォルトの名無しさん
2007/12/27(木) 00:26:16SC_MAXIMIZE
0763デフォルトの名無しさん
2007/12/27(木) 00:54:27{
if ( ( int )m.Msg == 0x0112 ) //WM_SYSCOMMAND
{
if ( (int)m.WParam == 0xF030 ) //SC_MAXIMIZE
{
MessageBox.Show( "そうはいくか!" );
return;
}
}
base.WndProc( ref m );
}
0764デフォルトの名無しさん
2007/12/27(木) 01:02:120765デフォルトの名無しさん
2007/12/27(木) 01:52:14でないとタイトルバーダブルクリックがスルーされるぞ
0766デフォルトの名無しさん
2007/12/27(木) 08:12:44最大化できないならそれと分かるようにしとけよヴォケ、
あーあーこんな糞ソフト作った奴の顔が見たいよ、と俺なら思っちゃうと思う
0767デフォルトの名無しさん
2007/12/27(木) 08:32:170768デフォルトの名無しさん
2007/12/27(木) 08:33:390769デフォルトの名無しさん
2007/12/27(木) 08:43:43最大化ボタンをけしてもだめなの
0770デフォルトの名無しさん
2007/12/27(木) 09:01:090771デフォルトの名無しさん
2007/12/27(木) 09:45:59正解です。
0772デフォルトの名無しさん
2007/12/27(木) 09:57:12エスパー力精進します
0773デフォルトの名無しさん
2007/12/27(木) 10:11:020774デフォルトの名無しさん
2007/12/27(木) 10:17:03WPFだとその手の処理がちょっと面倒になってるな。
普通にオーバーライドさせてくれればいいのに。
0775デフォルトの名無しさん
2007/12/27(木) 11:53:20DLLにコールバック関数を渡してそれを維持している必要があって
C#に用意した関数をGetFunctionPointerForDelegateでポインタをDLLに渡してるんだけど
同時にいろんなスレッドが動いててC#のコードでガベージコレクションが動く
ここでDLLを呼び出すとC#で用意したコールバックが移動して見当たらなくなる
そこでDLLの関数を呼び出す前に
ガベージコレクションのWaitForPendingFinalizersで待つ
再度GetFunctionPointerForDelegateで取ったコールバックのポインタをDLLに渡す
DLLの関数を実行(処理してコールバックを呼ぶ)
ってやってて、なんとなく動いてるんだけど
DLL側が処理している瞬間に関数のアドレスが移動する可能性を否定できないのは
どうしようもないのかな?
それともDLLから帰ってくるまで他のC#のスレッドを全部止めれれば
回避できるって考え方でいいのかな?
0776デフォルトの名無しさん
2007/12/27(木) 12:03:43呼び出しから帰ってくるまで保持するだけでいいならローカル変数で問題ないし
0777デフォルトの名無しさん
2007/12/27(木) 12:32:21ありがとうです
0778デフォルトの名無しさん
2007/12/27(木) 13:24:260779デフォルトの名無しさん
2007/12/27(木) 14:54:37MFC使えばいいんじゃないか?
0780デフォルトの名無しさん
2007/12/27(木) 18:30:25ここまで当たってるか知らんがフルスクリーンの方法がWindowed=FALSE
でResetならWindowは本当に最大化すると居座ってしまって邪魔なだけ。
アニメもウザいし
0781デフォルトの名無しさん
2007/12/27(木) 19:47:14むしろAPIに戻ったと思えばOK
0782デフォルトの名無しさん
2007/12/27(木) 21:30:45{
if(m.Msg == 0x0112)
{
if((m.WParam.ToInt32() & 0xF030) == 0xF030)
{
MessageBox::Show("むりぽ", this->Text, MessageBoxButtons::OK, MessageBoxIcon::Warning);
return;
}
}
Form::WndProc(m);
}
0783デフォルトの名無しさん
2007/12/27(木) 21:40:390784デフォルトの名無しさん
2007/12/27(木) 21:49:500785デフォルトの名無しさん
2007/12/28(金) 01:53:040786デフォルトの名無しさん
2007/12/28(金) 05:48:440787デフォルトの名無しさん
2007/12/28(金) 13:57:150788デフォルトの名無しさん
2007/12/28(金) 14:02:22forループ奴って(ry
0789デフォルトの名無しさん
2007/12/28(金) 14:06:58Enumerable.RangeかわいいよEnumerable.Range
0790デフォルトの名無しさん
2007/12/28(金) 14:11:460791デフォルトの名無しさん
2007/12/28(金) 14:11:56ではあらためて。
for (int i = 0;... と書くべきところで
for (var i = 0;... とか書く奴って、馬鹿丸だしって感じww
var擁護してる奴ってガキばっか
チームでvar擁護してる奴は即行クビだなwww
0792デフォルトの名無しさん
2007/12/28(金) 14:14:52意味不明。
煽りたいなら、日本語ぐらいちゃんとしろ。
かっこ悪w
0793デフォルトの名無しさん
2007/12/28(金) 14:17:120794デフォルトの名無しさん
2007/12/28(金) 14:26:100795デフォルトの名無しさん
2007/12/28(金) 14:41:01好ましくないだろう。
C++でなぜ、スパゲッティコードが多発したのか原因を良く考えることだ。
0796デフォルトの名無しさん
2007/12/28(金) 14:46:26templateのせいってこと?
0797デフォルトの名無しさん
2007/12/28(金) 14:48:170798デフォルトの名無しさん
2007/12/28(金) 15:42:360799デフォルトの名無しさん
2007/12/28(金) 15:46:150800デフォルトの名無しさん
2007/12/28(金) 16:25:170801デフォルトの名無しさん
2007/12/28(金) 17:58:250802デフォルトの名無しさん
2007/12/28(金) 19:30:14foreach (object obj in list){
i++;
}
0803デフォルトの名無しさん
2007/12/28(金) 19:57:29〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ <こいつ最高にアホ
彡、 |∪| /
/ __ ヽノ /
(___) /
0804デフォルトの名無しさん
2007/12/28(金) 20:34:490805デフォルトの名無しさん
2007/12/28(金) 21:53:20直接htmlソースを入力しHTMLドキュメントを生成しています。
mshtml.HTMLDocumentClassのcreateDocumentFromUrlメソッドを
使った場合と殆ど同じものを得る事ができるのですが
上記の方法ではurlの部分がabout:blankになってしまいます。
このurlの部分のみをあとから修正する方法はないでしょうか?
0806デフォルトの名無しさん
2007/12/28(金) 22:00:570807デフォルトの名無しさん
2007/12/28(金) 22:07:01今クローラを作っていてこの生成したHTMLドキュメントをあとから
利用するときのためにurl情報も残しておきたいと思っているのです。
0808デフォルトの名無しさん
2007/12/28(金) 22:15:24クローラならHTML解析さえ済ませればIHTMLDocument2は用済みじゃない?
0809デフォルトの名無しさん
2007/12/28(金) 22:21:29ただ今のところ解析結果の情報を他に移すことなくそのまま利用しているので。
ちょっと修正が大掛かりになりそうなので
簡単にurlの部分だけ更新できれば、と思い相談させて頂きました。
0810デフォルトの名無しさん
2007/12/28(金) 23:03:17imgノードとかのsrcを得たい時に困るんじゃないの?
0811デフォルトの名無しさん
2007/12/28(金) 23:15:070812デフォルトの名無しさん
2007/12/28(金) 23:22:12まさにそこの部分で困っていました。
DOMツリーを辿ってIMGノードのmshtml.IHTMLImgElementの
srcを取ろうとしたらabout:../image/01.jpgのようになってしまいました。
0813デフォルトの名無しさん
2007/12/29(土) 01:10:300814デフォルトの名無しさん
2007/12/29(土) 01:20:45以前いろいろ考えてみたが、その時はあきらめてbase要素をHTMLに仕込んだな
0815デフォルトの名無しさん
2007/12/29(土) 01:51:20writeするHTMLにbase要素を仕込む方法試してみました。しかし
baseUrl' は、型 'System.NotImplementedException' の例外をスローしました。
となります。
0816デフォルトの名無しさん
2007/12/29(土) 01:56:23入門サイトなどをみると、CUIでハローワールドやら値の入出力やらの説明がされており
GUIで例えば
テキストボックスから値を取ってボタンを押されたら入力された値を表示する
という簡単な動作をやってみたくても参考にできるサイトが見つかりません
ttp://ufcpp.net/study/csharp/st_basis.htmlのサイトの
GUIプログラム例を元にやってみたら動かなかったし…
どこか良いサイトなどありますでしょうか?
0817デフォルトの名無しさん
2007/12/29(土) 02:16:14プロパティグリッドでプロパティいじったりイベント一覧からハンドラつけたり
あんまり悩むところもないと思うのだが
0818デフォルトの名無しさん
2007/12/29(土) 03:20:52それ「baseUrlプロパティに設定」しようとしてないか?
0819デフォルトの名無しさん
2007/12/29(土) 08:45:22そのサイトなら、
ttp://ufcpp.net/study/csharp/st_consoleio.html#gui
ttp://ufcpp.net/study/csharp/lib_forms.html
ttp://ufcpp.net/study/csharp/lib_drawing.html
の辺り読むほうが。
0820デフォルトの名無しさん
2007/12/29(土) 23:19:25のMsg出るんだけど、なんで?.NET2.0入れててればGCAに登録してなくてもいいんじゃないの?と思って
ましたが、何か勘違いしてるのかな・・
0821デフォルトの名無しさん
2007/12/29(土) 23:38:49J#のライブラリなんて必要ある?
0822デフォルトの名無しさん
2007/12/30(日) 00:23:32そうでしたか。zipファイル扱いたかったので仕方なくvjslib.dll利用しました。
0823デフォルトの名無しさん
2007/12/30(日) 12:47:27よくあることだよね。
多倍長整数なんかも、今はDLRがあるけど、以前はJ#のライブラリを使うのが
一番手っ取り早い方法だった。
>J#は別にランタイムが必要だったような
「Microsoft Visual J# 2.0 再頒布可能パッケージ」だな。
0824デフォルトの名無しさん
2007/12/30(日) 19:55:250825デフォルトの名無しさん
2007/12/31(月) 03:09:14そんなのあったんだな
0826デフォルトの名無しさん
2007/12/31(月) 09:38:090827デフォルトの名無しさん
2007/12/31(月) 22:50:18ってのは
> System.IO.Packaging.ZipPackage
を指しているんじゃまいか
0828825
2008/01/01(火) 02:07:35その通りです。
3.0というとWPFってイメージしかなかったから、「そんなの(ZipPackage)あったんだな」と。
一応補足。
0829デフォルトの名無しさん
2008/01/01(火) 02:53:580830デフォルトの名無しさん
2008/01/01(火) 22:48:02これが何でエラーになるの
> 218.42.128.8
Name: pso-mp08.sonic.isao.net
Address: 218.42.128.8
逆引きできるはずなのに
0831デフォルトの名無しさん
2008/01/02(水) 12:48:08IPHostEntryの情報を取るのに逆引き以上のことをしている。
pso-mp08.sonic.isao.net この名前で引けないし。
0832デフォルトの名無しさん
2008/01/05(土) 19:46:01フォームに表示する必要はないのでComponentから継承して、コンストラクタは(IContainer container)をパラメータにしています。
System.Threading.Threadで別スレッドを起動し、そのスレッドで
Microsoft.DirectX.DirectInput.Device.SetEventNotificationを使ってシグナルを待ってからイベントを起こそうと思っているのですが、
メインスレッドでイベントを起こすための方法に悩んでいます。
DelphiでのTThread.Synchronize相当のものを探しています。
Invokeを使うようですがControlで実装されているので、Componentから継承しているので使えません。
そこで親のフォームのInvokeを使おうとしています。
プロパティを通して親Formを設定するコードを書いてしまえば出来そうなのですが、
できるだけ汎用性を持たせたいので、IDEでフォームに乗せただけで、
自分はどのフォームに乗せられているのか知る方法はないのでしょうか?
0833デフォルトの名無しさん
2008/01/05(土) 21:04:46俺自身C#初心者なんてトンチンカンな答えかも知れないけど、
例えば次のようにUIの同期用に適当なコントロールを強制的に作っちゃうのも
一つの方法なんじゃない?
static Label mUISyncObj;
public static ISynchronizeInvoke GetUISyncObject()
{
if (mUISyncObj == null)
{
mUISyncObj = new Label();
mUISyncObj.CreateControl();
}
return mUISyncObj;
}
0834デフォルトの名無しさん
2008/01/05(土) 22:27:530835デフォルトの名無しさん
2008/01/05(土) 23:43:062000個のアイテムを追加すると(SuspendLayoutしてAddRange)2秒以上かかる。。
個数と時間考えれば遅くはないんだろうけど。
2000個もつっこむのが間違ってるよね。。。。
0836835
2008/01/06(日) 01:16:120837832
2008/01/06(日) 09:40:41ジョイスティックの初期化でもハンドルが必要なことに気づいたので、とりあえず
public Control ParentControl
というようなプロパティを持つことにしました。
アホなことに、こうすればIDEで簡単に設定できることにも気づいたし。
0838デフォルトの名無しさん
2008/01/06(日) 11:36:39あったとしてもハンドル(ウィンドウハンドルのことを言ってるんだと思うけど)
なんて必要だったかなあ。。
いずれにせよ、ISynchronizeInvokeをグローバルで一つ持つのが一番単純で応用が利くと思うんだが。
0839デフォルトの名無しさん
2008/01/06(日) 13:27:020840デフォルトの名無しさん
2008/01/06(日) 13:31:09XNAとか知らんのか
0841デフォルトの名無しさん
2008/01/06(日) 13:44:400842832
2008/01/06(日) 13:46:30ちなみに私が作ろうとしてるのはゲームじゃないです。
パッドをリモコン代わりにいろんなソフト(主に動画・音楽再生系)をコントロールするツールです。
自分専用。
0843デフォルトの名無しさん
2008/01/06(日) 13:46:42探偵小説?w
0845デフォルトの名無しさん
2008/01/06(日) 13:56:010846デフォルトの名無しさん
2008/01/06(日) 14:13:110847デフォルトの名無しさん
2008/01/06(日) 14:26:30ttp://www.microsoft.com/japan/msdn/xna/migration.aspx より
>DirectInput デバイス
>
>フライト スティック、ハンドル、旧式のゲームパッドなどの DirectInput デバイスは、
>XNA Framework ではサポートされて いません。
>これらのデバイスは Xbox 360 と互換性がないため、
>クロスプラットフォーム ゲームをサポートするためには適切で ありません。
>
>DirectInput デバイスのサポートが必要なゲームでは、
>これら のコントローラにアクセスする手段として引き続き MDX 1.1 DirectInput アセンブリが必要となります。
>DirectInput はクロス プラットフォームでは動作しないので、ほとんどの XNA Framework プロジェクトにとって推奨されません。
もの凄く中途半端な位置づけ
0848デフォルトの名無しさん
2008/01/06(日) 14:31:140849デフォルトの名無しさん
2008/01/06(日) 14:55:59てこと
0850デフォルトの名無しさん
2008/01/07(月) 11:30:41Excel本体のProcessオブジェクトはどのような形でつかむことができるでしょう。
たとえばHtmlDocumentのようなものから手繰っていくのでしょうか、よろしくお願いします。
0851デフォルトの名無しさん
2008/01/07(月) 21:45:400852デフォルトの名無しさん
2008/01/07(月) 23:25:340853デフォルトの名無しさん
2008/01/07(月) 23:40:150854デフォルトの名無しさん
2008/01/08(火) 13:10:51>Documentは何に
と言われますと、それのプロパティで見るのでしょうか・・・。
すみません、よくわかりません。
0855デフォルトの名無しさん
2008/01/08(火) 13:49:200856デフォルトの名無しさん
2008/01/08(火) 14:44:58ApplicationのExecuteExcel4Macroを使って
kernel32.dllのGetCurrentProcessID()で
ExcelのProcessIDが取れる
0857デフォルトの名無しさん
2008/01/08(火) 16:52:04ありがとうございます、そういうふうに行うのですか!!
これでやってみます!!
0858デフォルトの名無しさん
2008/01/08(火) 21:32:17この方法でExcelの場合のProcessをつかむことができそうでした、ありがとうございました!!
Excelのマクロを使ってしまうというのはすごい方法ですね!!
こうしたWebBrowserで走っているCOMサーバープロセスをつかむ一般的な方法と
いうようなことを考えた場合ですが、Excelも含めて対応できるものがあると便利かと
思いました。もしかしてそうしたことも可能でしょうか。今回の方法から類推して
考えてみればいいのかもしれませんが自分ではちょっと考えつきません。
もしそうしたものがありましたら教えていただけないでしょうか・・・。
0859デフォルトの名無しさん
2008/01/08(火) 22:45:440860デフォルトの名無しさん
2008/01/08(火) 22:47:400861デフォルトの名無しさん
2008/01/08(火) 23:57:52そうですか、やはりないですか、わかりました。
>>860
実はExcelファイルの表示を終了してもExcelのプロセスが生き残っていたため
それを強制的に終了したかったのですが、ActiveXInstance.ExecWBでCloseコマンド
を投げるとWebBrowser自体が消えてしまいましてびっくりしました。
それでCOMのプロセスは残りやすいのではと思いまして、そうしたときの対策でと
思いました。別の方法がありましたら教えてください。
0862デフォルトの名無しさん
2008/01/09(水) 00:03:02>ActiveXInstance.ExecWBでCloseコマンドを投げる
-> ActiveXInstance.ExecWB(OLECMDID_CLOSE, ・・・, ・・・) を投げる
0863デフォルトの名無しさん
2008/01/09(水) 00:10:40いやおまえ・・・力づくでプロセス落とそうとすんなよ・・・。
それバグだぞw
0864デフォルトの名無しさん
2008/01/09(水) 00:16:38ハンドルをクローズさせないといけないだろう。
まずは基礎的なCOM操作を覚えないとな。
0865デフォルトの名無しさん
2008/01/09(水) 00:19:470866デフォルトの名無しさん
2008/01/09(水) 00:23:59・・・・・・え?
0867デフォルトの名無しさん
2008/01/09(水) 00:29:11>クローズするのはプロセスじゃなくて、
>ハンドルをクローズさせないといけないだろう。
わかりました、COM操作について勉強します。
OLECMDID_SAVE ができたのでExcel自体のプロセスが終わって
くれるのかと思ってしまいました。
>>865
いつかはガーベジコレクションで消えるのでしょうか・・・
気にしないでいいでしょうか。
0868デフォルトの名無しさん
2008/01/09(水) 00:40:57明示的に参照の解放をしなければなりません。
解放しないと、プロセス内に居座り続けるため Excel は終了しないです。
(タスク マネージャを見ると、Excel.exe がプロセスに残ったままになる)
とりあえず、参照はすべて変数に取りましょう。
必要ではなくなった時点で、System.Runtime.InteropServices.Marshal クラスにある、
ReleaseComObject メソッドで解放してください。
それと、例外発生時の対応として Try 〜 Finally を使用して、
解放を保証することを強くお勧めします。
0869デフォルトの名無しさん
2008/01/09(水) 00:44:04呼び出しもとのプロセスを終了してもExcelが残っているなら、
それはExcelに対してClose/Quitの命令を実行してないからだと思うがね。
0870デフォルトの名無しさん
2008/01/09(水) 00:47:010871デフォルトの名無しさん
2008/01/09(水) 01:17:560872デフォルトの名無しさん
2008/01/09(水) 01:34:000873デフォルトの名無しさん
2008/01/09(水) 01:42:15Excelを触ってないと思ったので、>>865
触ってるなら>>868
0874デフォルトの名無しさん
2008/01/09(水) 01:44:03多少のメモリリークは目をつぶるしかないところがある。
0875デフォルトの名無しさん
2008/01/09(水) 09:30:45詳しいご指導を頂き、大変ありがとうございました!
>>869-874
WebBrowserで表示したのみで直接Excelのオブジェクトを
操作はしてませんでしたが、こちらのアプリケーションを終了しても
残っていました。
>>873
つまり「触って」はいなかったです。その場合はいつかはシステム上の
誰か(.NETFrameworkでしょうか?)が消してくれるのですね、
そうならば特に気にかけないことに致します。
0876デフォルトの名無しさん
2008/01/09(水) 09:58:450877デフォルトの名無しさん
2008/01/09(水) 15:29:570878デフォルトの名無しさん
2008/01/09(水) 15:49:560879デフォルトの名無しさん
2008/01/09(水) 15:55:54ファイルがプロセス共有してる。
ここまで、言わないと理解できないわけじゃあるまい。
0880デフォルトの名無しさん
2008/01/09(水) 17:59:410881デフォルトの名無しさん
2008/01/09(水) 18:08:430882デフォルトの名無しさん
2008/01/09(水) 19:42:27Explorerなどで、ファイルやフォルダの「新規作成」という操作ができる
ようになっていますが、あそこに出てくるファイルの種類というものは、
何かの基準で選別されて出てきているのでしょうか?
その場合には何かの選択されるの基準や条件というものとしてどこに
情報ファイルとして格納されているということでしょうか?もしそうしたものが
あって見られるとしましたらその形式やアクセス方法などを知りたいのですが、
どなたか教えていただけないでしょうか。
0883デフォルトの名無しさん
2008/01/09(水) 20:03:40どの辺のレベルのことを聞いているかわからないけど、直接的にはFileDialog.Filterプロパティ
0884デフォルトの名無しさん
2008/01/09(水) 20:15:36で出てくる辺り?
0885デフォルトの名無しさん
2008/01/09(水) 20:17:08レジストリ、フォルダ、色々あるけど ShellNew でググれば大体わかるんじゃない?
0886デフォルトの名無しさん
2008/01/09(水) 20:33:25>FileDialog.Filterプロパティ
>新規作成 explorer レジストリ
>レジストリ、フォルダ、色々あるけど ShellNew でググれば大体わかる
おお!!ありがとうございます!!
すばらしいです、こんなにすぐにもたくさんのレスを、感謝です!!!
これらを調べてみます!!助かります!!またよろしくです。
0887デフォルトの名無しさん
2008/01/09(水) 20:50:28Win32からのAPIも提供されてるってだけで
中身COMだから、そもそもサービス全滅。
0888デフォルトの名無しさん
2008/01/09(水) 20:57:07std::list<Hoge>::iterator it;
for (it = hogelist.begin(); it != hogelist.end();){
if (it->inactive()) it = hogelist.erase(it); else it++;
}
こんな感じで、inactiveになっていたらリストから消すって事ををやりたいんですが、
C#だとSTLないんで、System.Collection.Genericを使うんだと思うんですが、
上の書式ってどういう風に書けばいいんでしょうか
foreach使って消すとなんか怒られるんですよね…
0889デフォルトの名無しさん
2008/01/09(水) 21:02:520890デフォルトの名無しさん
2008/01/09(水) 21:03:57hogelist.RemoveAll( delegate(Hoge o) { return o.inactive; } );
0891デフォルトの名無しさん
2008/01/09(水) 22:42:11おお、RemoveAllに条件をつければよかったんですね
てっきりclearと同じ関数だと思ってました
ありがとうございます
0892886
2008/01/10(木) 13:52:05ことがわかりました。ありがとうございました!!
ところで、このレジストり内の 「拡張子」 の項目に Shellnewで新規作成できるファイルを
追加しようと思うのですが、テンプレートファイルを複数用意しておいて、それらすべてを
一つの拡張子に割り付けて複数のファイルから選択できるようにしたいと思ったのですが、
これは可能でしょうか?
何卒よろしくお願いします。
0893デフォルトの名無しさん
2008/01/10(木) 14:07:13Win32API質問箱 Build61
http://pc11.2ch.net/test/read.cgi/tech/1199514664/l50
0894デフォルトの名無しさん
2008/01/10(木) 14:28:07誘導ありがとうございます!!あちらで聴いてみます!
0895デフォルトの名無しさん
2008/01/10(木) 20:49:12callmethod(String methodname, arg1・・・)
みたいに文字列のメソッド名を使って指定したメソッドを呼び出すみたいなことはできませんか?
0896デフォルトの名無しさん
2008/01/10(木) 21:00:33refrection
0897デフォルトの名無しさん
2008/01/10(木) 21:08:520898デフォルトの名無しさん
2008/01/10(木) 22:33:08必要性がなくね?
0899デフォルトの名無しさん
2008/01/10(木) 22:38:150900デフォルトの名無しさん
2008/01/10(木) 22:46:330901デフォルトの名無しさん
2008/01/10(木) 22:48:540902デフォルトの名無しさん
2008/01/10(木) 22:49:480903デフォルトの名無しさん
2008/01/10(木) 23:49:56×IntPtr p = (IntPtr)o; InvalidCastException
×IntPtr p = (IntPtr)(int)o; InvalidCastException
×IntPtr p = (IntPtr)(uint)o; OverflowException
○IntPtr p = (IntPtr)(int)(uint)o;
小一時間はまっちゃった。
どうしてこうなるの?
0904デフォルトの名無しさん
2008/01/10(木) 23:53:39んで、それを元に戻すのが uint へのキャストで、
他へのキャストはできない。
uint から IntPtr への直接のキャストでは範囲の判定が行われて、
オーバーフローになってしまう。
そこで、一旦 int を挟む必要がある。
という事なんだろう。
0905デフォルトの名無しさん
2008/01/10(木) 23:59:07↑ ボックス化解除
↑ 整数変換
↑ ユーザ定義キャスト
0906デフォルトの名無しさん
2008/01/10(木) 23:59:13>元に戻すのが uint へのキャストで、
>他へのキャストはできない。
なるほどなるほど……
だけどIntPtrへのキャストで範囲をチェックするのが納得いかない
UIntPtrの存在も。
0907デフォルトの名無しさん
2008/01/11(金) 00:19:26これは、
IntPtr p = IntPtr.op_Explicit((uint)o);
とみなされて、
op_Explicit(Int64)が呼ばれるから。
0908デフォルトの名無しさん
2008/01/11(金) 00:34:040909デフォルトの名無しさん
2008/01/11(金) 00:39:45uint u = 1;
object o = u;
int i = (int)o;
で例外がでるなんて思いもよらなかった。
吊ってくる。
0910デフォルトの名無しさん
2008/01/11(金) 01:12:48てUIntPtrの説明に書いてあるよw
0911デフォルトの名無しさん
2008/01/11(金) 03:03:31http://www1.bbiq.jp/blue_sky/vb6/img/04.png
0912デフォルトの名無しさん
2008/01/11(金) 03:12:390913デフォルトの名無しさん
2008/01/11(金) 03:16:11わかりました。ありがとうございます。
0914デフォルトの名無しさん
2008/01/11(金) 03:26:06・型パラメータの制約(where)を使って、プリミティブ型のみ使えるように制限したい
って事で悩んで小一時間調べてたんだけど、もしかして
class Hoge<T> where T : IComparable, IFormattable, IConvertible, IComparable<T>, IEquatable<T> { }
と少々強引?なやりかたでもいいのでしょうか。
0915デフォルトの名無しさん
2008/01/11(金) 03:55:370916デフォルトの名無しさん
2008/01/11(金) 04:33:43そう思うから、何かもっと良い方法がある筈と考えてるんだけど、分からないんだよねぇ
実行時に型チェックすればプリミティブ型を一発で見分けれるんだけど、実行時に分かっても例外飛ばすしかなくなるし・・
0917デフォルトの名無しさん
2008/01/11(金) 04:37:090918デフォルトの名無しさん
2008/01/11(金) 04:38:520919デフォルトの名無しさん
2008/01/11(金) 05:00:190920デフォルトの名無しさん
2008/01/11(金) 05:24:28Tじゃ演算できないからICalculable<T>インターフェースみたいなのも作らないとね
演算子定義したり違う型との演算とかまで考えるとちと面倒になってくるけど
0921デフォルトの名無しさん
2008/01/11(金) 08:28:440922デフォルトの名無しさん
2008/01/11(金) 08:58:44System.Int32とかじゃなくてIL組み込み型としての名前が付くみたいだね
区別する方法はありそうだけど
0923デフォルトの名無しさん
2008/01/11(金) 09:30:010924デフォルトの名無しさん
2008/01/11(金) 12:18:290925デフォルトの名無しさん
2008/01/11(金) 12:20:11考えただけで気持ち悪いな
0926デフォルトの名無しさん
2008/01/11(金) 12:28:38かなり危ない感じだけど
0927デフォルトの名無しさん
2008/01/11(金) 13:23:570928デフォルトの名無しさん
2008/01/11(金) 18:00:58以下のようなクラスを作り
class TextBoxTraceListener : TraceListener
{
TextBox textBox;
public TextBoxTraceListener(TextBox tb)
{
this.textBox = tb;
}
public override void Write(string message)
{
this.textBox.AppendText(message);
}
}
class Form1 : Form
{
public Form1()
{
TraceSource ts = new TraceSource(GetType().ToString());
ts.Listeners.Add(new TextBoxTraceListener(this.textBox1));
ts.TraceInformation("hoge");
}
}
とやれば、hoge がテキストボックスに表示されますよね。
他のクラスでTraceSourceを作成し、トレースしても、そのインスタンスごとにリスナを登録しないとだめですよね。
でも構成ファイル(app.config)にConsoleTraceListenerとか
TextWriterTraceListenerとかを指定してやれば全てのTraceSourceのインスタンスにリスナを設定してくれますよね。
ところがTextBoxTraceListenerはTextBoxのインスタンスが必要なので、構成ファイルで設定できないのです。
複数のクラスでTraceSourceを使っていて、それらの出力を全てテキストボックスに表示させたいんです。
なんかいい方法ありませんか?
0929デフォルトの名無しさん
2008/01/11(金) 18:24:40ログの名称はアセンブリ名かアプリケーション名にしたほうがいいぞ。
GetType().Assembly.GetName().Name
0930デフォルトの名無しさん
2008/01/11(金) 19:59:04TextBoxのインスタンスは後でプロパティ経由で渡すことにして、
それまではバッファリングしとけば
0931デフォルトの名無しさん
2008/01/12(土) 15:03:09UNLHA.dll(アンマネージコード)を使ってLHAファイルを解凍しています
UnlhaExtractMem関数(つまりファイルの解凍)を呼び出すときにbyte配列を渡していますが
UnlhaExtractMem関数実行中に渡したbyte配列がGCの対象になって
移動してしまうことはないかです
unsafe中では、fixedを使用すれば移動しないのが分かるのですが、
同じことは不要なのでしょうか?
マーシャリングの中で自動的に整合性を取ってくれてるように思えますがご回答願います。
0932デフォルトの名無しさん
2008/01/12(土) 15:16:29関数を呼び出してから戻ってくるまでの間にGCが動くことはない。
渡したポインタをDLLが保存していて、後で使うような場合ははまる。
0933デフォルトの名無しさん
2008/01/12(土) 15:21:28呼び出しはDllImportを使用しています
>渡したポインタをDLLが保存していて、後で使うような場合ははまる。
保証の限りではありませんが、さすがにそれは無いと信じますがw
0934デフォルトの名無しさん
2008/01/12(土) 15:38:57>P/Invokeでアンマネージドな関数を呼ぶ場合、
>関数を呼び出してから戻ってくるまでの間にGCが動くことはない。
ちょっと補足させてもらうよ。
1)アンマネージドな関数Xを呼ぶ
2)Xからマネージド関数MXがコールバックされる
3)MXでGC発生
4)MXからリターン
5)Xからリターン
という可能性はあって、その場合Xの呼出し周辺のみを見ていると嵌ることがある。
>マーシャリングの中で自動的に整合性を取ってくれてるように思えますがご回答願います。
byte配列を渡したからと行って常にコピーが起きないとは限らない。
もしコピーが回避された場合、
マーシャラは1)のタイミングでfixed相当のことをやっていて、
5)のタイミングで解除している。
仮に3)でGCが起きたとしても大丈夫。
0935931
2008/01/12(土) 15:59:31回答ありがとうございました
お二方?とも問題ないと言うことなので、
GCによる問題は発生しないとで安心致します。
(あとEssential.NETという本を思い出して見てましたが、GCの問題の記述は見あたりませんでした)
>2)Xからマネージド関数MXがコールバックされる
こんなことも出来るんですねw
0936デフォルトの名無しさん
2008/01/12(土) 16:21:57そうだっけ?マーシャラがP/Invoke時にpin指すから3)は起こらないと思ってたけど。
0937デフォルトの名無しさん
2008/01/12(土) 17:11:06http://msdn.microsoft.com/library/ja/csref/html/vcwlkPlatformInvokeTutorial.asp?frame=true
ここにはそう書いてあるんですが、
http://msdn2.microsoft.com/ja-jp/library/s9ts558h(VS.80).aspx#Mtps_DropDownFilterText
にはBStrなんて書いてあります。
もしかして前者はC#、後者は.Net Frameworkの既定値って意味ですか?
0938デフォルトの名無しさん
2008/01/12(土) 19:56:200939デフォルトの名無しさん
2008/01/12(土) 20:36:46間違い?
0941デフォルトの名無しさん
2008/01/14(月) 12:53:37以下のようなコードで、hoge()をマルチスレッドで処理したいのですが、シングルCUP環境だと意図した通り
実行しますが、マルチCPU環境だと2つ目のスレッド開始時点でShareClass.m_TaskQueue.Countが0となって
1つのスレッドしか動作しません。解決のヒントを戴けないでしょうか・・・
デリゲートで非同期実行しています。
static class ShareClass{
public static Queue<string> m_TaskQueue = new Queue<string>();
private static object sync = new object();
public static void SetTarget(string item){
lock(sync) m_TaskQueue.Enqueue(item);
}
public static string GetTarget(){
lock(sync) return m_TaskQueue.Dequeue();
}
}
//別のクラス
void hoge(){
while(ShareClass.m_TaskQueue.Count != 0){
string item = ShareClass.GetTarget();
//何らかの処理
}
}
0942941
2008/01/14(月) 13:02:50連投すみません。また夜におじゃまします。
0943デフォルトの名無しさん
2008/01/14(月) 14:13:04Singletonにすりゃいいんじゃね?
0944デフォルトの名無しさん
2008/01/14(月) 15:15:34Monitorを使ってちゃんと排他する。
class BlockingQueue<T> {
object sync = new object();
Queue<T> qu = new Queue<T>();
public T Dequeue() { lock(sync) {
while (qu.Count==0) Monitor.Wait(sync);
return qu.Dequeue(); }}
public void Enqueue(T item) { lock(sync) { qu.Enqueue(item); Monitor.PulseAll(sync); }}
}
0945デフォルトの名無しさん
2008/01/14(月) 15:26:57.m_TaskQueue.Count を読み取る箇所にもlockが必要。
読みとって1以上だったときにDequeueするまでの間も
他の処理が入り込まないようにlockしたままにする必要がある。
>>944はそれをMonitor.Waitで実現している。
0946デフォルトの名無しさん
2008/01/14(月) 16:03:27しかしよくその環境の違いに気づいたな
0947デフォルトの名無しさん
2008/01/14(月) 17:31:15マルチスレッドのバグってCPU2個以上で表面化するものが多いから
別に不思議ではないんでは?
0948デフォルトの名無しさん
2008/01/14(月) 19:01:29>>944>>945であってるんだろうってきはするが、
元のプログラムとは違うよな…
0949デフォルトの名無しさん
2008/01/14(月) 19:08:190950デフォルトの名無しさん
2008/01/14(月) 20:25:43(ひとつめ)
プロパティP1{ get; set{ if(P2==null)return; base.A=value;}}
のとき、P2、P1の順でシリアライズできないでしょうか?
(ふたつめ)
インスタンスI1のプロパティPとI2.Pの参照が同じであるとき、
その関係を保持したままシリアライズ・デシリアライズを
することはできないでしょうか?
0951デフォルトの名無しさん
2008/01/14(月) 22:11:57誰も不思議だとは
0952941
2008/01/14(月) 23:02:18参考になりました。
適切にロックすることで解決できました。
Count調べてアイテム取得するまでの間に別のスレッドが取得、削除して
エラーとなってました。デバッグ環境ないPCで動かしてたので特定に時間かかってしまいました…。
ありがとうごさいました。
0953デフォルトの名無しさん
2008/01/15(火) 14:52:00実行中に処理を一時中断するのにThread.suspend()を使おうと思ったのですが
困ったことに.NET2008では使用が推奨されていないようです
Thread.Interrupt()を使おうかと思ったのですが
途中でsleepする部分が無い(パフォーマンスが落ちると困る)ので
停止してくれません
suspend()、resume()に相当する機能を実現するには
どうすればよいのでしょうか?
よろしくお願いいたします。
0954デフォルトの名無しさん
2008/01/15(火) 15:27:24外部からの処理一時停止リクエストを監視して自ら待つコードを入れとく。
一秒に数回も実行されれば十分だろうから、パフォーマンスへの
影響はさほど無いでしょう。
非推奨のThread.Suspendで強引に Thread を suspend しちゃう場合には、
当該スレッドが何かの共有資源をつかんだタイミングで suspend
なんかしちゃったりして他のスレッドをブロックしちゃう可能性とか
そういうことを詳細に検証したうえで行ってください。
0955デフォルトの名無しさん
2008/01/15(火) 16:34:340956デフォルトの名無しさん
2008/01/15(火) 17:30:56Form1内で
Form2 f2 = new Form2();
f2.ShowDialog();
でForm2を呼び出した後にf2内のbutton_Clickイベント処理内でf2の中のテキストボックスや、コンボボックスの値をForm1で取得したいのですが
どうしたらよいでしょうか?
0957デフォルトの名無しさん
2008/01/15(火) 17:37:00リアルタイムならShowDialogは不向き、、、つかこれふらっとスレでいいんじゃ?
0958デフォルトの名無しさん
2008/01/15(火) 17:47:16具体的に言うと、form1からform2をdialogで呼び出します。
そしてdialogの中のテキストボックスとコンボボックスに値を入れてOKボタンを押します。
そんで、form1内のデータグリッドにform2で入れた値を反映させる。
というものです。
なのでタイミング的には閉じた後でいいのかな?
0959デフォルトの名無しさん
2008/01/15(火) 17:54:14プロパティで直接公開する。コントロールを外に見せることはしない。
0960デフォルトの名無しさん
2008/01/15(火) 18:13:47ってのはDesigner.csの必要な値のプロパティをprivateからpublicにするということでしょうか?
それとform2のその必要な値はform1からどのようにすれば参照できるのでしょうか?
0961デフォルトの名無しさん
2008/01/15(火) 18:20:33OpenFileDialog使ってみればどう取得するかは分かるだろ?
0962デフォルトの名無しさん
2008/01/15(火) 18:25:26外からアクセスするようにしてみ。
その後、Form2でtextboxとメンバーが同期するようにする。
つーか、参考書ないのか?
0963デフォルトの名無しさん
2008/01/15(火) 18:28:19>dialogの中のテキストボックスとコンボボックスに値を入れてOKボタンを押します
ここを手動でいれます。
そのあとのOKボタンをクリックした時に、form1からform2のテキストボックスとコンボボックスの値を取り出したいということなのですが。
なにか私おかしいでしょうか?
0964デフォルトの名無しさん
2008/01/15(火) 18:33:09移動しなはれ
0965デフォルトの名無しさん
2008/01/15(火) 18:53:470966デフォルトの名無しさん
2008/01/16(水) 01:59:03自分はリストが一番慣れているんだけど(Lispをかじっただけだけど)
そのリストの中に入れれる型を指定することできるかな。
Cell(object car, object cdr)とかやると何でも入っちゃうでしょ。
それをMLだったら[a]とかやると[Int]ならIntしか入らないし[String]ならStringしか入らないしとかやりたいんです。
(MLは使ったことないんで間違ってたらすみません)
generics使ってclass Cell <T> {public Cell(T car, T cdr)}とかやるとcarやcdrにはCellが入らなくなっちゃうんですよね。
0967デフォルトの名無しさん
2008/01/16(水) 02:16:38つ List<T>
0968デフォルトの名無しさん
2008/01/16(水) 02:29:52触ってみるマジオヌヌメ
0969デフォルトの名無しさん
2008/01/16(水) 03:00:27Thank you.
C# Listでググレばよかったんだね。
俺低脳。
これって.Net Frameworkの一部と考えていいの ?
.Net FrameworkってC#の標準ライブラリと考えていいの ?
JavaやRubyでいう公式ライブラリみたいな。
とりあえず.Net Frameworkの本買ってくる。
千葉はろくな本屋がないので週末まで待たなきゃいけないのがおっくうだ。
0970デフォルトの名無しさん
2008/01/16(水) 03:11:33うん
0971デフォルトの名無しさん
2008/01/16(水) 03:16:54Amazonって千葉にあるんじゃなかったっけ?
0972デフォルトの名無しさん
2008/01/16(水) 04:34:35千葉はまだ日本だからAmazonで買えるはずだな
0973デフォルトの名無しさん
2008/01/16(水) 10:25:420974デフォルトの名無しさん
2008/01/16(水) 12:46:270975デフォルトの名無しさん
2008/01/16(水) 22:02:02C#のTableAdapterに関して教えてください。
TableAdapterを使って関連付け(Relation)されている
テーブルのDBの行を削除することって出来ますか?
例えば以下の二つのテーブル(親:Table1 子:Table2)で
Table1のIDの"ID1"の行を削除すれば
Table2のIDの"ID1"の行が自動的に
削除されるみたいな・・・。
[Table1]
ID Name Age
----------------
ID1 Yamada 20
ID2 Hanako 18
[Table2]
ID Height Weight
-------------------
ID1 170 65
ID2 160 50
0976デフォルトの名無しさん
2008/01/16(水) 23:35:45各々のDataTableのRowDeletedイベントとか使ってみてはどうだろか
0977デフォルトの名無しさん
2008/01/16(水) 23:57:21たとえば、こういうコードがあったとします。
if (Result == null) {
transaction.Rollback();
MessageBox.Show("エラー0です。");
return false;
}
if ((int)Result == 1) {
transaction.Rollback();
MessageBox.Show("エラー1です。");
return false;
}
if ((int)Result == 2) {
transaction.Rollback();
MessageBox.Show("エラー2です。");
return false;
}
transaction.Commit();
return true;
これをスッキリ表記するのに何かいい手段はないですかねぇ…。
throwで例外起こしてtry〜catchってのもスッキリしなくて…
0978デフォルトの名無しさん
2008/01/17(木) 00:02:300979977
2008/01/17(木) 00:51:48ありがとうございます。ふらっと逝ってきます。
0980デフォルトの名無しさん
2008/01/17(木) 07:12:37どこかで見たことある気がしてた
0981デフォルトの名無しさん
2008/01/17(木) 14:46:23キーボードイベントを送りたいと思っています。
DOSプログラム側では kbhit()+getch() でキーコードを取得しているのですが、
RedirectStandardInput = true にして StandardInput.Write() でキーコードを送ろう
としているのですが、うまくいきません。
おそらく kbhit() が反応しないからだと思うのですが、
kbhit() で引っ掛けられるようなキーボードイベントをC#側から起こすことは可能でしょうか?
何かご存知の方がいらっしゃいましたら、よろしくお願いいたします。
0982デフォルトの名無しさん
2008/01/17(木) 15:05:140983981
2008/01/17(木) 15:31:01即レスありがとうございます。
確かに、コマンドプロンプトを最小化しないで SetForegroundWindow() でアクティブにし、
SendKeysを使うことでとりあえず期待している動作を確認できました。
ただ、できればコマンドプロンプトを最小化しておきたい、
可能であれば CreateNoWindow = true でウインドウすら消して実行させたいのですが、
そのようなケースで同様の処理を実現することはできないでしょうか?
ダメならば kbhit() が書かれているコード側を修正したいと思います・・・。
0984デフォルトの名無しさん
2008/01/17(木) 15:37:050985981
2008/01/17(木) 15:37:15初めにやったときはうまくいかなかった気がしたんだけどな。
さすがに、CreateNoWindow = true ではダメっぽいです。
フォーカスできないですもんね・・・。
引き続き、何か情報がありましたらお待ちしております。
0986975
2008/01/17(木) 20:55:15なるほど、DBのレコードの削除は
関連付けされていても一括でできないものなんですね。
RowDeletingイベントでやってみます。
0987デフォルトの名無しさん
2008/01/19(土) 01:08:00AP側で対処せず、できるならDB側でトリガー作成するのがベターじゃないかな。
0988975
2008/01/20(日) 00:28:44助言ありがとうございます。
DBも初心者なのでトリガの存在は知りませんでした。
少し調べたところによるとDBのテーブル、ビューが
更新されたときに実行されるものみたいですね。
ちょいと調査してわからなかったらまた聞きにきます。
出来たら出来たで報告しにきます。
それまでこのスレあるかな・・・。
0989975
2008/01/21(月) 15:21:22トリガについて調べたのですがわかりませんでした。
データ定義言語(DDL)にて記述が必要そうなのは
何となくわかったのですが、いろんなサイトを覗いて
いざトリガの記述をしようかと思うも全然手につきませんでした。
何か初心者にもわかりそうな
これっていうサイトはありますか?
関連するテーブルのレコードを削除するくらいだから
すぐに見つかると思っていたら大間違いでした・・・。
0990デフォルトの名無しさん
2008/01/21(月) 15:30:52SQLSeverならBooksOnline(MSDNライブラリに統合されてるかもしれん)あたりで
CREATE TRIGGERあたり調べるなり
0991デフォルトの名無しさん
2008/01/21(月) 16:34:00気がするだけかも
0992デフォルトの名無しさん
2008/01/21(月) 16:38:43RDBMSによって違うから、ググる時はDBの名前も含めるといいよ。
0993デフォルトの名無しさん
2008/01/21(月) 16:52:34BaseClass<T>
を継承したクラスを作成したいのですが
class SubClass<T> : BaseClass<T>
みたいに宣言してもエラーが出ます。
こういうのがやりたいときはどのように記述すればよいのでしょうか?
0994993
2008/01/21(月) 16:54:54class BaseClass<T> where T : FooObj
みたいに制約をかけています。
0995デフォルトの名無しさん
2008/01/21(月) 16:57:580996993
2008/01/21(月) 17:03:16class SubClass<T> : BaseClass<T> where T : FooObj
ですね。
0997デフォルトの名無しさん
2008/01/21(月) 18:27:38{
public T Foo(T a, T b)
{
return a - b;
}
}
これはエラーでるんですがこういう事はできないんでしょうか?
0998デフォルトの名無しさん
2008/01/21(月) 18:34:320999デフォルトの名無しさん
2008/01/21(月) 18:45:24Enumaで調べてみます
1000デフォルトの名無しさん
2008/01/21(月) 19:37:4410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。