1 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:11:11 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 前スレ C#, C♯, C#相談室 Part52 pc12.2ch.net/test/read.cgi/tech/1238548552/ Visual C# 2008 Express Edition 日本語版 www.microsoft.com/japan/msdn/vstudio/express/vcsharp/ その他テンプレ>>2-5 くらい
105 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 20:07:01 ] >>103 プロパティにない以上OpenFileDialogクラスじゃどうしようもないね
106 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 18:54:22 ] >>68 その系列はロビン電子経由で直接本人と面識ある派だと思う
107 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 19:17:01 ] ふらっとC#,C♯,C#(初心者用) Part42 pc12.2ch.net/test/read.cgi/tech/1245836827/ ふらっとの新スレご案内
108 名前:デフォルトの名無しさん mailto:sage [2009/06/25(木) 14:26:55 ] >>106 そうなのかなぁ。 Hoge!さんから、メタ構文変数のhogeへの系譜(があるのか否か)って まだ検証されてないよね。
109 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 22:37:12 ] >>104 >>105 ありがとう。 どうしても解決できなかったのと、他の理由で 作る必要が出たので自作しときます。
110 名前:デフォルトの名無しさん [2009/06/29(月) 19:37:54 ] webBrowser.Navigate("www.xxx/ "); でアクセスするとアクセスした記録が残るのに WebRequestなどでアクセスしてもninjaツールなどで アクセス記録が表示されないのはなんでやろ?
111 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 19:47:59 ] agentだろ
112 名前:デフォルトの名無しさん [2009/06/29(月) 20:21:45 ] UserAgent設定してみたけどあかんね…
113 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 20:31:31 ] スクリプトとimg辺りで履歴取ってんだろ
114 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 15:52:52 ] 相談させてください。 PDFのセキュリティ設定(コピー許可、印刷許可など)を読み取りできるライブラリを どなたかご存じないですか? アンテナハウスのサーバーベース・コンバーターはR/Wとあったからできそうですが、 たったそれだけのことに導入するのは辛すぎです。
115 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 18:51:12 ] >>114 PDFはアドビが仕様書配布してるよん
116 名前:デフォルトの名無しさん [2009/07/03(金) 20:50:41 ] C#2008を使用しています。 エディタのプロパティウィンドのように DataGridViewに指定クラスのプロパティを 表示、編集することは出来るでしょうか? DataTableを作って表示させることは出来ると 思いますが、できれば Grid.DataSource = クラス のように簡単にいかないものかと。 BindingSourceを使ってもうまくいきませんでした。
117 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 20:54:36 ] PropertyGridじゃだめか
118 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 21:05:44 ] PropertyGridって表示する分には超お手軽だけど ちょっと凝ったことしようとすると一気に難しくなるよねw
119 名前:116 mailto:sage [2009/07/03(金) 21:09:57 ] ぬぉぉおぉぉぉ どんぴしゃです!ありがとう! C#って思った以上にいろいろ揃ってますねぇ
120 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 23:38:30 ] >>114 中身はテキストベースだから、仕様書を精査すれば気合でパースできなくもない Javaでいくつかライブラリあるから参考にしてみるのはどうか
121 名前:デフォルトの名無しさん [2009/07/04(土) 00:33:17 ] PropertyGridは開発者専用と考えたほうがいいよ そもそもこんなものが標準のライブラリにあるのがおかしい WPFでは無くなってるし
122 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 03:33:20 ] 何がおかしいの?
123 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 07:09:21 ] 高機能で自動的過ぎて潰しが効かないという意味じゃね? SelectedObjectのpublicなプロパティを自動表示するとかの部分。 明らかにユーティリティであって、コントロールとしては度を越えている。 WPFでは無くなっているっていうより、まだまだ練れていないから、導入は 見送っているんじゃないかなMS。
124 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 07:59:50 ] >>123 自動表示するから楽ちんなんじゃんw カスタムしたければ好きなように隠せるし 存在しないプロパティをあるように見せたりも出来る
125 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 08:58:21 ] WPFでなくなってるのって リストとかグリッドがアホみたいに高機能化して PropertyGridの存在意義がなくなったからだろ リストやグリッドの子要素として「何でも」埋め込めるんだぜ 自動表示ってのもBindingでどんなデータにも紐付けられるし
126 名前:デフォルトの名無しさん [2009/07/04(土) 09:37:02 ] いずれにせよ開発者向けのツールを作るためのコントロールであって 一般のユーザーに触らせるのは間違い
127 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 09:37:46 ] >>114 やったことないからよくわからないけど Acrobat SDK とか使えばできるんじゃないの。 Adobe Reader とかインストールされた環境が前提になるだろうけど。
128 名前:デフォルトの名無しさん [2009/07/04(土) 11:35:32 ] hoge.GetType()==typeof(Hoge) で型チェックしたらえらい速いんだけどJITで特別に最適化されてたりする? 左辺をいったんローカル変数に入れたら10倍くらい遅くなるみたい
129 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 11:38:45 ] >>127 たぶんむり セキュリティ絡みはAdobeの有料アプリ買わないと出来ない機能だし どうやっても金払わないことには無理だろうね
130 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 15:46:22 ] べつにセキュリティの設定を変更するわけじゃないんじゃないの。 たんにプロパティみたいだけでしょ。
131 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 16:05:46 ] >>114 ttp://www.ujihara.jp/iTextdotNET/ja/ これで出来そう
132 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 16:08:37 ] stackoverflow.com/questions/756127/building-pdf-files-with-c ここに載ってるの確認すれば? iTextSharpで全部できそうだけど(よく見てない)
133 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 16:54:20 ] null と 空文字 どちらでも良い場合、どっちで管理するのが一般的なの? 空文字だと??が使えなくなるから不便かな? nullはnullで何か面倒なことになりそうな気もするし
134 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 17:51:24 ] 文字列の操作なら"" オブジェクトの操作ならnull
135 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 18:28:25 ] >>128 確認してないけどコンパイル時に is に変えてるんじゃないの? ローカル変数に入れちゃうと is に変換できないからとか
136 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 23:40:05 ] isに変えてるわけはない。 動作が変わってしまうから。 変数に入れると遅くなるのはTypeの取得が走るからで、 何らかの方法でハンドルの比較だけに変えられてるとかか?
137 名前:デフォルトの名無しさん mailto:sage [2009/07/04(土) 23:47:47 ] Type.GetTypeHandle(hoge)==typeof(Hoge).TypeHandle こんな感じになってるとか。
138 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 08:14:14 ] ILを見た限り違いはなかった。JITでいろいろやってるのかな。
139 名前:114 mailto:sage [2009/07/05(日) 08:19:35 ] >>131 iTextSharpならTitleとAuthorの読み取りに使ったけど、 AllowCopy関連はWriteできるけどReadIがなかった(と思う)。
140 名前:デフォルトの名無しさん [2009/07/06(月) 08:39:41 ] コメントのXMLドキュメントタグって使ってる? どうにもとっつきにくいわ、冗長だわ、読みづらいわで使わずじまいなんだけど。
141 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 08:42:26 ] なにそれ?といってのける俺はもしかして勝ち組?
142 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 09:43:53 ] 大敗
143 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 09:46:03 ] >>140 あれは、メタデータに加工するためのものだから、読みづらい言われても…
144 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 11:08:37 ] // // 機能 : あんなことやこんなことを行う // // 機能説明 : あんなことやこんなことを行う。 // その中であんなことやこんなことが起きればあんなことやこんなことを行う。 // // 引数 : ARG1 - あんなの // ARG2 - こんなの // // 返り値 : そんなの // // 備考 : 簡単なサンプルです。 //
145 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 11:35:22 ] XMLドキュメントタグを使わないと、インテリセンスにちゃんと説明が出てこないだろ。
146 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 15:09:38 ] >>140 どうやって読んでいるのか気になるところ
147 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 16:40:13 ] あのXMLは超便利だろ インテリ効くしビルド時に出力すればヘルプファイルも作れるし
148 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 17:48:51 ] とあるクラスからDispoes付きのコレクションを取得して foreachにかけるとき、全部Dispoesすべきなんでしょうか? 要素は出来るだけ早く開放したほうがいいものを想定しています。 using( クラス ) { using( コレクション = クラス.取得 ) { foreach( 要素 in コレクション ) { 要素.Dispoes(); } }
149 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 17:53:22 ] そんなんしらんがな クラスとコレクションと要素の製作者に聞け
150 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 18:30:19 ] >>140 とっつきにくい? 冗長さと読みづらさはまあ分からんでもない コードが多少ごちゃごちゃになるからな とっつきにくいことは無いだろう 関数とかの宣言の上でスラッシュをカカカっと三回入力するだけで テンプレ出てくるんだから
151 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 19:16:13 ] >>148 using()するなら、Disposeしちゃ駄目。
152 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 19:19:40 ] >>151 usingしてるのはコレクション disposeしてるのは要素 >>149 のツッコミが正しい
153 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 21:27:37 ] Dispose は何度呼ばれても大丈夫なように作らなければならないから 何度呼んでもいいべ
154 名前:デフォルトの名無しさん mailto:sage [2009/07/06(月) 23:50:03 ] >>140 もったいなさ過ぎると思います
155 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 00:02:46 ] あれだな、とりあえず ・/// で VS は色々生成してくれる ・エディタのツリーでコメントはたためる ・インテリセンスのツールヒントに注目 ・Sandcastle とか使ってみる この辺押さえろみたいな
156 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 00:13:10 ] >>144 なにこれ見やすい
157 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 00:25:22 ] >>156 そんな所見やすくてもしかたないだろ、ヘルプは使う所(インテリセンス)で見るんだから
158 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 00:37:24 ] >>156 タグ嫌い?英語嫌い?
159 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 03:17:06 ] そんなにたくさんコメント書くの('A`)マンドクセ
160 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 08:58:46 ] わずか2,3行のメソッドに長々としたコメントが付いてるのは糞ウザイ
161 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 21:09:34 ] 俺が一生懸命コメント書いてドキュメント生成しても誰も読まない
162 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 21:10:40 ] 無駄な努力乙
163 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 21:38:51 ] ドキュメントはたまにしか見ないな。 インテリセンスとVSのオブジェクト ブラウザでほとんどの場合は事足りてる。
164 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 21:55:13 ] ドキュメントは全体の流れと思想が書いてあれば大体足りる。
165 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 21:56:11 ] そして投げられる例外の記述が無くてキレる
166 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 22:28:40 ] >>160 XMLコメントやインテリセンスの登場は、ソースを読むというくだらない時間を割くのはやめるといいよ という事なんだと思うよ 最近C#慣れしてきて、だんだんコメント不要の意見が変わってきたオレ ソースコードの変更にコメントの変更が遅れるぐらいならソースコードをきっちり書けというのは間違っている コメント(仕様書)にソースコードが管理されるべきだなとw こんなに楽ちんならもう元には戻れない
167 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 22:35:21 ] >>166 WEB というものがあってだな・・・
168 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 22:37:54 ] WebもASP.NETで!
169 名前:デフォルトの名無しさん mailto:sage [2009/07/07(火) 22:41:08 ] WEB と Web は違う。クヌース先生の Web サイトでも見てこい。
170 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 09:35:25 ] >>165 MSDNですら書いてない例外が飛んでくることは普通にあるしな。
171 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 19:26:11 ] 最近やたら煽りが多いと思ったらストールマン発狂つづいてオプソ信者発狂でC#狙い撃ちだったんだなw タコつぼで暴れてろよお前らよ
172 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 19:34:18 ] ,,-‐----‐、 , -'"` ̄ ̄"`''-,__, --‐‐-.., / 、゙ヽ、 ‐-'´ ヽ‐- / / ヽ ,/´ .., ヽ,,l_)' zェェェァ' ;rfァt ヽ ,ト/ / ヽ / ヽ,r' ,l′ _,,, . __,, ,l゙.-〈__r,'、 ヽ_ _.l ヽ」 ,l .イてソ` l イにj`,/ ゙‐ヽ、_,, /l ,l l| −'´ll ,l rソi" ヽ じ'' f゙l .,//゙l //\ ココおかしいんじゃねえか l`l| l|ヽ v'⌒ヽ .,ノ j/ |l // } l \ l| ,l l_U> r‐--‐ァ ,l |,l // l / '\ l|`l ゝ_,´ ゙ヽ__r′ .,.' ___l ヽ /
173 名前:デフォルトの名無しさん mailto:sage [2009/07/08(水) 20:41:31 ] なんかめったにこのスレで見ない大 AA が現れたの見て >>171 はひょっとしてとちょっと思った
174 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 17:16:57 ] C#のソケットですが、.NET1.1から何か変更はありますか? ソケット関連の本を買おうかと思ってるのですが、2004年の ものなので情報が古いかなと思いまして。
175 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 17:48:38 ] 1.1はもはやC#の方言だからやめた方がいい。
176 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 18:37:37 ] MSDN見て自分で補正できないレベルだったら、2.0以降用を探すようにすすめる。
177 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 19:34:02 ] >>176 >>175 ありがとうございます。2.0対応だったら買うことにします。
178 名前:デフォルトの名無しさん [2009/07/10(金) 21:42:28 ] イベントに関して質問です。 イベント += Onイベント イベント -= Onイベント のように+=および-=演算子でイベントを登録/解除できると思いますが、 イベントにOnイベントが既に登録されているかどうか判断することは出来ないのでしょうか?
179 名前:デフォルトの名無しさん mailto:sage [2009/07/10(金) 21:50:35 ] うん
180 名前:デフォルトの名無しさん [2009/07/10(金) 21:57:56 ] ですよね。 残念。
181 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 01:03:27 ] 自分で定義したイベントなら取れる。
182 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 01:11:34 ] >>178 通常は判別できる必要性など無いと思うが 逆に必要と思った理由を教えて欲しい ただし、「多重登録の回避」という回答は却下
183 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 01:14:00 ] 自分で定義したイベントでなくても取れそうだ。 Reflction なコード書くのが面倒だから、サンプルは作らんけど。 Component の Events、EventHandlerList、Delegate.GetInvocationList() あたりを 調べてみて。
184 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 01:35:17 ] それはそれに結びついている保証もないというか ロジック確認してみたいなハックに等しいから 分離を破壊する(実装変わったら終了って話)ので さすがに薦めるのどうよ アクセサが add/remove しかないんで無理でもう いいじゃん
185 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 10:24:34 ] クラスAがイベントHogedを持っていて、クラスBのなかでクラスAのインスタンスaを作り自分のメソッドHogeをHogedに登録するとする。 あるタイミングでaは破棄されるんだけど、そのときHogeはHogedからRemoveする必要ないよね?
186 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 11:02:04 ] うむ
187 名前:デフォルトの名無しさん [2009/07/11(土) 11:05:58 ] COBOLは、データラベルについてREDIFINEで再定義を行うことができますが、 C#でも同様に、 01 DATE 05 YY 05 MM 05 DD みたいな再定義はできますか? よろしくお願いします。
188 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 11:19:50 ] union かなあ
189 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 11:21:45 ] ってここC#か、MarshalAs属性とか?
190 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 12:49:04 ] >>184 保証はあるだろ。 できる/できない の話として「できる」ってだけで、 薦める/薦めないの話じゃない。
191 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 12:58:02 ] ないよ イベントはデリゲート型ではあるけど実装としてデリゲートを使う必要はない
192 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 13:05:49 ] +=、-= でデリゲートを使わない、具体的な例を頼む。
193 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 14:14:03 ] int a = 1, b = 2; a += b; a -= b;
194 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 14:26:49 ] >>190 いや、完全に実装依存。 あるイベントについて現時点で動作するロジックなら書ける。 でも、全てのイベントについて今後永久に動作するロジックは無理。
195 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 14:29:51 ] >>191 イベントはデリゲート型ではあるけど これは違うような。。
196 名前:デフォルトの名無しさん [2009/07/11(土) 15:13:43 ] C#のテキストボックスで、 ・高さ指定&文字列の縦配置を中央にする。 ・高さ指定&padingを設定する。 以上のいずれかは可能でしょうか。 老人向けの大きな見栄えの良いボックスを作りたいのですが…。
197 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 16:15:45 ] >>185-186 の件だけど、これってデリゲートが弱参照だってことだよね。 ヘルプで見つからないフシアナな俺に、どこに書いてあるか教えて。
198 名前:197 mailto:sage [2009/07/11(土) 16:16:58 ] あ、ごめん。aを破棄した時か。 じゃあ問題ないな。
199 名前:デフォルトの名無しさん [2009/07/11(土) 16:33:39 ] Win32APIのスレで聴いたのですがスレ違いとのことでした。.NETの クラスで解決できるでしょうか? 現在、.NETアプリケーションでWebBrowserコントロールにおいて フォルダのExplorer表示を出しています。そうすると必ずあの青色の 「タスクメニュー」が現れてきます。 通常のエクスプロ−ラだとそれをフォルダツリーに置き換えたり、 検索ツールに置き換えたりできました。 自分のアプリケーション上で、あのタスクメニューを消してしまうことは できるでしょうか?できるようであればその方法を教えてほしく。 ちなみに、エクスプローラのオプションで「全般」タブ→「作業」のところ で、「従来のWindowsフォルダを使う」を選ぶとタスクメニューはでなくは なるのですが、そうすると、Xpでは「写真」表示ビューが使えなくなって しまうので、「フォルダに共通の作業を表示する」の方で使いたいので した。このオプションの状態で、プログラムから「タスクメニュー」を消す 方法がありましたら教えてください。 よろしくお願いします!
200 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 20:20:40 ] >>187 自分ならプロパティで実装するかな? .NETクラスライブラリのSystem.DateTimeにも Year, Month, Dayプロパティがあるから、プロパティによる実装がC#流のはず
201 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 21:06:20 ] >>196 Multiline=trueにすれば高さ指定はできるけど、 老人向けならフォントをでかくすればいいだけじゃないの?
202 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 21:58:13 ] >>200 追記 REDEFINES句の例としてはSystem.DateTimeは不適切だったかも 01 DATE-STRING PIC X(6). 01 DATE REDEFINES DATE-STRING. 05 YY PIC 9(2). 05 MM PIC 9(2). 05 DD PIC 9(2). のようなことをやりたい? これもプロパティによる実装が良いと思う。
203 名前:デフォルトの名無しさん [2009/07/11(土) 23:37:33 ] >>202 ありがとうございます。 プロパティをオリジナルで定義するということでしょうか。
204 名前:デフォルトの名無しさん [2009/07/11(土) 23:42:26 ] >>201 ありがとうございます。 操作性と見栄えを重視したシステムにしなければならないんので、 テキストボックス内の上下の余白をゆったり目にとって、 かつ中央揃えにしたいんです。 これはc#では不可能なのでしょうか…。
205 名前:デフォルトの名無しさん mailto:sage [2009/07/11(土) 23:48:30 ] >>204 TextBox を使わないで独自コントロールを使うとか Panel 上に透明な TextBox を乗せてごまかすとか。
206 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 00:16:23 ] system.windows.controls.control.padding
207 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 00:27:58 ] >>204 少なくとも、C#そのものは関係ない。 (というか、C#のテキストボックスなんてないだろ) どういうGUIコンポーネントを使うかは関係がある。
208 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 00:35:48 ] WPFを使えばどうも簡単にできるみたいだけどね・・・。開発環境がまだ完成しきってないし、Vista以降ターゲットになっちゃうけど
209 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 00:41:51 ] >>208 普通にXPで動くけど?
210 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 01:14:44 ] >>209 そうなんだ!勘違いしていたよ!
211 名前:デフォルトの名無しさん [2009/07/12(日) 01:25:20 ] >>206 そんな名前空間、あったっけ…? 探しても見つからない(-_-;)。
212 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 01:27:42 ] すいません。 VisualC#2008で、フォームアプリケーションを作っているんですけど フォームの多重表示を禁止したいのですが、検索してみつけたソースどおりにしても まだ多重表示をされます。なにかソースがおかしいのでしょうか? 表示するフォーム=about.cs about about = null; if ((about == null) || about.IsDisposed) { about = new about(); about.Show(); } 参考ページ:ttp://homepage3.nifty.com/midori_no_bike/CS/form.html
213 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 01:29:00 ] ローカル変数においといちゃダメだろ
214 名前:デフォルトの名無しさん [2009/07/12(日) 01:44:44 ] >>206 C#でその名前空間を使うにはどうすればいいの?
215 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 02:21:36 ] >>211 >>214 WPFの一部だから基本的にWPFプロジェクトで使う。 msdn.microsoft.com/ja-jp/library/system.windows.controls.control.padding.aspx
216 名前:デフォルトの名無しさん [2009/07/12(日) 03:06:00 ] C♯では、テキストボックスのパディングや縦位置の中央揃えが存在ないということ? そんな…まさか…。
217 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 03:25:54 ] >>216 C#に押し付けるとは・・・まだまだ青いな
218 名前:デフォルトの名無しさん [2009/07/12(日) 06:56:46 ] >>217 もしかしてこれからはWPFの時代ですかね…? C♯でできる裏技があればゆいのですが(*_*)
219 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 07:29:19 ] >>216 あるからググレ
220 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 08:01:33 ] WPFの柔軟性は異常。 Formsは今後のバージョンアップ は見込めないらしいね。
221 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 08:50:00 ] ググるまでもなく>>215 のリンク先に答えが書いてあるし >>216 とか>>218 は言語フィルタでC#外しているのか
222 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 11:51:05 ] ____ / \ /\ キリッ . / (ー) (ー)\ / ⌒(__人__)⌒ \ | |r┬-| | 今後永久に動作するロジックは無理 \ `ー'´ / ノ \ /´ ヽ | l \ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ____ /_ノ ヽ、_\ ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ /⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // だっておwwwwwwwwwwwwwwwwwww | :::::::::::(⌒) | | | / ゝ :::::::::::/ 当たり前だろwwwwwwwwwwwwwww | ノ | | | \ / ) / ヽ / `ー'´ ヽ / / バ | | l||l 从人 l||l l||l 从人 l||l バ ン ヽ -一''''''"~~``'ー--、 -一'''''''ー-、 ン ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
223 名前:デフォルトの名無しさん [2009/07/12(日) 12:47:15 ] >>215 俺も読んでみたけど、分からないんですが…。 テキストボックスのプロパティで縦の位置を中央揃えに指定できないし、 windows.control名前空間もC#だと見当たらない。 >>216 ぐぐっても出てこないよー…。
224 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 13:02:34 ] >>223 ttp://hanatyan.sakura.ne.jp/vbhlp/textali.htm vbだけど
225 名前:デフォルトの名無しさん [2009/07/12(日) 13:48:29 ] system.windows.controls.control.padding ってアドインみたいなものっすか? 3.5入れてるけど出てこないんです。
226 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 13:54:21 ] >>225 msdn.microsoft.com/ja-jp/library/system.windows.controls.control.padding.aspx
227 名前:226 mailto:sage [2009/07/12(日) 14:09:55 ] >>225 暇だからきちんと説明するか。 新規のwindowsアプリケーションを作成する。 追加->新しい項目->ユーザーコントロール(WPF) UserControl1.xamlの<Grid></Grid>要素の間に>>226 の<Button>〜</Buttion>を入れる。 デザイナにPaddingと表示されたButtonができる。 これをダブルクリックすればvoid ChangePadding(object sender,RoutedEventArgs e)がソースに自動追記される。 >>226 にあるコードを実装する。 そしてwindowアプリケーションの方に戻り、Form1のデザイナの上にツールボックスからUserControl1を貼り付ける。 以上
228 名前:デフォルトの名無しさん [2009/07/12(日) 14:42:14 ] >>227 ありがとうございます。 すみませんが、 テキストボックスの高さをゆったりともたせ、 paddingを使って文字を縦中央に配置したい場合、 このコントロールでどう設定すればよいのでしょうか。 どうか、見捨てないでください。
229 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 15:03:52 ] C#は関係ないし、WPFスレに行けば? その前に、msdn.microsoft.com/ja-jp/library/aa970268.aspx ここと、関連する情報は読んで理解しておいてね。
230 名前:デフォルトの名無しさん [2009/07/12(日) 15:26:29 ] >>229 C♯は関係ないの? 今までの話とちがうよ。
231 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 15:29:02 ] そもそもFormsもC#と関係ないがな(´・ω・`)
232 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 15:33:41 ] >>230 System.Windows.FormsもC#と関係ない。 C#という言語を使って、System.Windows.Formsというアセンブリを使う だけ。C#から使おうがVisual Basicから使おうがIronPythonから 使おうが、使い方に違いはない。 言語(C#)とフレームワーク(.NET)とその中のライブラリ(System.Windows.Formsアセンブリ)の 区別が全くつきませんか?
233 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 15:41:14 ] 232を書いた後、あれ、アセンブリは不適切?名前空間と言うべきだった? でもこの文脈で区別するとますますとっつきにくくなるよな。 と思ったが、System.Windows.Forms.dllだった。よかった。
234 名前:デフォルトの名無しさん [2009/07/12(日) 15:50:18 ] >>229
235 名前:デフォルトの名無しさん [2009/07/12(日) 15:52:06 ] >>229 結局、テキストボックスの縦中央に配置するにはどうしたらよいの?
236 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 15:59:01 ] プロパティで項目一通り探してみればいいダロ VerticalContentAlignmentとかそのものな項目が見えるけど
237 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 16:30:51 ] >>235 >>229 のリンク先は読んだの?読んだら、どこが分からなかったの?
238 名前:デフォルトの名無しさん [2009/07/12(日) 16:45:01 ] 言語非依存WinFormsスレなんかあってもまず機能しないだろうな WPFは現状VBerがほとんどいないからこそ専用スレが成り立つ
239 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 16:50:33 ] >>238 実際、以前.NETスレがあったが、過疎だった。 みんなC#とかVB.NETのスレへ流れるもんだから。
240 名前:デフォルトの名無しさん [2009/07/12(日) 17:01:34 ] WPFにはXAMLという共通言語があるし 言語とライブラリを混同するようなレベルの初心者ユーザも少ないからな
241 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 17:17:18 ] >>212 aboutっていわゆるバージョン情報のフォーム? だとすると、面倒なことをせずにShow()ではなくShowDialog()で一つ表示する方法が普通だと思うけど
242 名前:デフォルトの名無しさん [2009/07/12(日) 17:29:10 ] >>237 あの…恥ずかしながら、 ユーザーコントロールを追加しましたが、 テキストボックスのパディングをどこで設定するのか… またはテキストボックスの垂直の位置をどこで中央にするのか… (水平の中央はありますが) が分からないんです。
243 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 17:29:31 ] >>239 俺もそのスレ見てたわ。 次スレどうしようか悩んだけど、過疎ってたのでやめといたら結局誰も立てなかった・・。
244 名前:デフォルトの名無しさん [2009/07/12(日) 17:33:08 ] Gridの中にテキストボックスを入れるんだよ
245 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 17:34:11 ] テキストボックスじゃなくていいならラベルで出来る
246 名前:デフォルトの名無しさん [2009/07/12(日) 17:37:31 ] 関係ないけど、WPFではLabelは特殊なコントロールで、普通の文字描画には使わないんだよ TextBlockというのを使う
247 名前:デフォルトの名無しさん [2009/07/12(日) 17:41:23 ] グリッドってなんだろ… (T_T)? ところで、テキストボックスのパディング設定は果たしてできるのかな。
248 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 17:46:47 ] Paddingの追加って、こんな感じに入力するだけでしょ。 <TextBlock …… Padding="10">……</TextBlock>
249 名前:デフォルトの名無しさん [2009/07/12(日) 17:49:58 ] Paddingプロパティがあるだろ? パディングはそのコントロールの親(GridやBorderなど)を基準にして行われる WPFはとにかくコンテナ(WinFormsでいうPanelみたいなもの)をネストしまくるんだ
250 名前:デフォルトの名無しさん [2009/07/12(日) 18:19:59 ] >>249 それは、Windowsアプリケーションでも可能なの?
251 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 18:22:24 ] >>217
252 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 18:24:16 ] 何この馬鹿は。 やってから言えよカス。
253 名前:デフォルトの名無しさん [2009/07/12(日) 18:26:27 ] Windowsアプリケーションには textblockとかgridってあるのかな。
254 名前:デフォルトの名無しさん [2009/07/12(日) 18:30:15 ] WinFormsなら無い ユーザーコントロールに枠線消したTextBoxを張る みたいな汚い方法しかない
255 名前:デフォルトの名無しさん [2009/07/12(日) 19:02:18 ] ビジュアル重視ならば、 WPFで作った方がよかったんじゃないかな。 俺もよく知らないけど。
256 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 00:13:27 ] 見た目こそWPFの領分だね
257 名前:デフォルトの名無しさん [2009/07/13(月) 00:55:49 ] しまったな… 俺もWPFで作れば良かった。 できることはWindowsアプリケーションと変わらないし。
258 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 01:37:11 ] 何だか勘違いしてるようだけど、WPFで作ってもWindowsアプリケーションだよ。 場合によってはMFCとか.NETじゃないやつまで含んじゃう言葉だから、誤解を避けるためにWinFormsって書く方がいい。 WinFormsで見た目をちょっと改善しようと思ったら、自前で描画するとか泥臭い手段しか無かったというのはよくある話。 WPFでは馬鹿みたいに(褒め言葉)柔軟で何でも出来るけど、設計思想がWinFormsやMFCとは別物の新しいやつだから、最初は戸惑うと思う。
259 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 07:29:50 ] そして起動が遅いと言われるわけですな
260 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 09:54:35 ] Formでやるなら>>224 でいいじゃない
261 名前:デフォルトの名無しさん [2009/07/13(月) 11:19:26 ] ListViewでItemをひとつひとつ.Selected=Trueする方法で選択していくと、 Items.Count が非常に多い場合にはあまりに時間がかかりすぎることが わかりました。 Items.Count=10000ぐらいで2分ぐらい(Core2Duo/2GHz)。 ところが例えばExplorerでファイルを同じくらい用意してやってみると瞬時に 全部が選択されました(3秒ぐらい)。これと同じ程度のスピードで選択 したいと思います。良い方法がありましたらご指導のほどお願いしたく。 よろしくお願いします。
262 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 11:49:28 ] 試したけど3秒くらいだったよ。 イベントハンドラがあったりする? あと描画関係なら、BeginUpdate - EndUpdateで挟むとか
263 名前:デフォルトの名無しさん [2009/07/13(月) 11:59:23 ] >>262 実地に調べてまでして下さり、大変ありがとうございます! いろいろすみませんです。 >BeginUpdate - EndUpdateで挟む これたった今やってみました。結果として時間の変化はありませんでした。 >イベントハンドラがあったりする? わかりました、すぐ調べてみます。どうもです!
264 名前:261 [2009/07/13(月) 12:15:11 ] >>262 >イベントハンドラ この件、仰るとおりでした。Selectされた時点で、何かのメッセージの Hookが行われているようでした!これは別のコントロールのものでしたが 対策を考えてみます。ご指導、大変どうもでした!助かりました!
265 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 19:26:25 ] インデックスで回してない? foreachにすれば大丈夫だと思うけど。
266 名前:デフォルトの名無しさん [2009/07/13(月) 23:23:23 ] VirtualModeにしてみたら?
267 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 09:41:49 ] 良く使うジェネリックコレクションは何? とりあえずList<T>とDictionary<T>覚えておけばいい?
268 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 09:42:31 ] Dictionary<K,V>だった。
269 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 09:52:07 ] K,VじゃなくてTKey,TValueな 型パラメータの命名ガイドラインは接頭辞Tプラスその型引数の意味 (ただし用途が明らかな場合List<T>とかはT一字でOK) 2.0ならあとはLinkedList<T>, KeyedCollection<TKey, TItem>辺り? あ、Queue<T>とStack<T>があった 3.0(WPF)ならObservableCollection<T> 3.5はHashSet<T>とか? コレクションじゃないけどやはり最重要はIEnumerable<T>だな
270 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 10:24:18 ] >>269 ふむふむ。 IEnumerable<T>はLINQで出て来るなあ。 ObservableCollection<T>はWPF本で出てきたけど まだいいや。 List<T> LinkedList<T> KeyedCollection<TKey, TItem> Dictionary<TKey, TValue> IEnumerable<T> とりあえずこのあたりからマスターする。
271 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 10:29:51 ] あ、KeyedCollectionは後で良いよ つか全体にマスターするほどでもないような IEnumerable<T>以外は
272 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 13:37:18 ] T[] も忘れないで上げてください、影薄いですけど
273 名前:デフォルトの名無しさん [2009/07/14(火) 21:15:32 ] >>269 .NETの型引数の命名規則は合理的で優れてるよな java式のK,Vとかイミフ
274 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 21:33:54 ] Tとかそういう意味だったのかw ほかの引数にSとかUとかつけてたわw
275 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 21:43:12 ] c++テンプレートのTypenameだよね
276 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 21:44:53 ] >>274 SとかUってどういう意味よ?w
277 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 21:45:31 ] SとかUつける人いるんだw
278 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 21:46:57 ] アルティメットファイナルクソワロチw ま、俺はVをつけてたけど。
279 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 21:56:52 ] >276,277 いや、Tの前とか次の文字とかw HogeHoge<S,T,U>ってかんじ。
280 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 22:08:04 ] 型引数を真面目に変数っぽく名前考えてるのって C#くらいだよね javaもc++もそんな習慣無い
281 名前:デフォルトの名無しさん [2009/07/14(火) 22:23:47 ] C++には型引数に普通の名前付ける文化もある(STLなど) わかりやすいけど普通の型名と見分けがつかないので、 .NETの(プリフィクス)+(意味)はその落としどころ
282 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 22:30:04 ] >>281 今VC9見たら真面目に命名してるな VC6とか_Aとか_Cとかだったんだが
283 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 23:45:07 ] >>280 .NET も初めからそうだったわけではなく、型引数のこの命名は ベータかどっかでやっぱりこうしようみたいに一気に変えたんだよ 確か。Connect とかの Suggestion も絡んでた気がする 出来上がりとか見てみんな思うところがあったんじゃないかな
284 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 23:52:12 ] >>283 .NET 2.0ベータ中は一文字だった、ように記憶してる リリースされた正式版のドキュメント見て初めは違和感あった
285 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 23:57:32 ] 制約がわかりやすいのはいいよね TEventArgs : EventArgs なんか神
286 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 00:09:02 ] >>284 ああごめん。 >出来上がりとか見て はベータのです。 なんか変わると発表したときにフィードバックの存在を 書いていた記憶があるから。
287 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 00:17:22 ] おまいらC#でオープンソースとか使ってる? Log4netはつかってるがほかゴリゴリ書いてるので時間かかるお(´・ω・`) csharp-source.net/search?query=graph+layout
288 名前:デフォルトの名無しさん [2009/07/15(水) 03:22:30 ] SerialPortクラスについて質問 DataReceivedイベント使えばVC++の時みたいに自分でスレッド組まなくて済みそうで楽出来そうなんだけど 実際に受けてみると欠ける時がある STXhoge123ETX ↑見たいなデータが改行無しで垂れ流しで延々と来るんだけど たまに STXhoge123ETX STXhoge124ETX STXhoge125ETX STXhoge126ETX STXhoge127ETX STXhoge128ETX STXhoge129 ←ETXが受けれて無かったり STXhoge134ETX←間の130-133までが無かったり・・・ private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { string recvData = serialPort1.ReadExisting(); Console.WriteLine(recvData); } こんな感じで直接出力しても途切れる・・・ 何故なんでしょうか?誰か詳しい人教えて
289 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 03:22:38 ] すいません。質問ですが、 new RelayCommand(param => this.OnRequestClose()); この=>はどういう意味があるのでしょうか?
290 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 03:34:36 ] ラムダ式 ufcpp.net/study/csharp/sp3_lambda.html
291 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 05:26:44 ] >>288 フロー制御はうまく言ってる?
292 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 06:30:27 ] >>290 おお、ラムダ式。 どうもありがとうございました。
293 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 14:06:19 ] ジェネリクスのクラスの型パラメータを配列に制限したい のですが、以下だと上手く行かないようです。 class Widget<T> where T : IEnumerable { public void Iterate(T arr) { foreach (object item in arr) { Console.WriteLine(item); } } } ・型パラメータTは、競合する制約IEnumerableおよびobjectを継承します ・foreachステートメントは、TがGetEnumeratorのパブリック定義を含んで いないため、型Tの変数に対して使用できません。 というエラーが出ます。どうかご教示願います。
294 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 14:13:11 ] 間違ってない それだけならコンパイル通るし動く 他のところに問題がある
295 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 14:13:14 ] ジェネリックでdelegateを指定するにはどうすれば いいでしょうか? やりたいことは public delegate_T func<delegate_T>( string str ) こんな感じなんですが。
296 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 14:25:37 ] コンパイル時にチェックするのは無理 Expression<TDelegate>みたいに、名前だけそれっぽくして実行時にチェックする
297 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 14:31:40 ] typedefがないので無名になるが Func<string, int> func; funcがstringを受け取ってintを返す関数になる 戻り値がdelegateって言うなら Func<string, Action> func; とかです
298 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 14:44:14 ] >>294 レスありがとうございます。 using System.Collections; を宣言していませんでした。
299 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 15:04:49 ] >>296 >>297 上で書いたような書式じゃ無理ということとですね。 Funcとか知らなかったので試してみます ありがとう
300 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 16:12:22 ] C#入門としてオススメな本があれば教えて下さい
301 名前:デフォルトの名無しさん [2009/07/15(水) 16:20:19 ] >>291 レスありがとう フロー制御に問題がある様には思えません 送信側と合わせてるので 疑似で STXhoge0ETX〜STXhoge5000ETX までのデータを作ってtxtファイルにして ハイパーターミナルからテキストファイルの送信で流してみたんですが 5000までデータはあるのにコンソール上には200行から300行くらいまでしか出てこない・・・ フロー制御もいろいろ設定変えて試したんですが変わらずです・・・
302 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 16:53:02 ] 症状はどう見てもバッファあふれだろう。 >フロー制御に問題がある様には思えません 経験的にいえば強く思い込んでるところが間違ってる可能性が高いな。 コントロールパネルで設定したとか言うなよ。 あとPC−PCでの接続だったらリバースケーブルになるけど、 結線に種類があってハード制御用のラインが自分のほうに戻ってきてるのもあるから要注意。
303 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 17:36:23 ] threshold設定してるだけ? アレってあんまり信用ならなかったとおもう
304 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 17:37:26 ] 概算じゃなくてデータのサイズきっちり計算してバッファと比べたりしようぜ
305 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 19:30:24 ] すいません。質問です。 C#や.NETの資格で、MS社以外のものはありますか? また、MCPですが、 70-505 TS: Microsoft .NET Framework 3.5, Windows Forms Application Development などの「開発経験が 1 年以上」は、大学の研究室での開発や趣味プログラミングでも大丈夫でしょうか?
306 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 21:48:39 ] Console.WriteLine(new Uri("example.com/sample../foobar.txt ")); この出力が "example.com/sample/foobar.txt " になるんですが、これってバグですか?
307 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 21:52:30 ] いいえ
308 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 22:03:26 ] sample/../foobar.txt / を足して味噌
309 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 22:07:41 ] >>308 いや、それはわかるけど、俺が聞きたいのはそれじゃない。 ".." が消えているのはなぜかと、どうすれば回避できるのか、だ (´・ω・`)
310 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 22:22:46 ] OriginalStringプロパティ
311 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 22:27:16 ] URIの仕様としては>>306 の動作は正しいのかい?
312 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 22:42:31 ] RFC2396 Similarly, parsers must avoid treating "." and ".." as special when they are not complete components of a relative path. これ?
313 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 22:45:45 ] sample.. の .. を特別扱いしちゃいけないから >>306 の動作は仕様を満たしてないってことかな
314 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 22:49:36 ] >>310 Console.WriteLine(new Uri(new Uri("example.com/ "), "sample../foobar.txt").OriginalString); ごめん。こういうのを書いて、ちょっと (´・ω・`) とした。 RFC か何かで規定されているなら、まあ無視しちゃって良いかなって気にはなるんだけど、 まだ読みきってないス (´・ω・)
315 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 23:25:59 ] 全然関係ない。 趣味でも十分な奴もいれば仕事でも無理な奴もいる。
316 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 23:27:39 ] ふらっとの誤爆か?
317 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 19:30:14 ] Path.DirectorySeparatorCharとPath.AltDirectorySeparatorCharを くっつけたものを出来ればconstで定数にしたいんですが どう書けばよいでしょうか? もしくはC++の関数内で static string str = "123"; みたいなことは出来ないでしょうか? 別な方法はありますが、これが出来るとすっきりしそうなのです。
318 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 19:40:42 ] readonlyじゃ駄目なの?
319 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 19:57:42 ] >>318 なるほど。うまくいきました。 readonly static string str = string.Format( "{0}{1}", Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar ); ちなみに >もしくはC++の関数内で >static string str = "123"; >みたいなことは出来ないでしょうか? これって出来ますか?
320 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 20:01:25 ] できない
321 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 20:04:56 ] そうですか・・。 了解しました。
322 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 21:15:10 ] >>319 C++で関数内のstatic string str = "123";は可能では? まあスレ違いになるからC++スレで聞け。
323 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 00:36:11 ] internal修飾子の使いどころがイマイチわからん
324 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 00:40:57 ] ライブラリ作成をしてみると分かるんじゃないか
325 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 00:41:24 ] プログラムをDLLで分割しまくって アクセス制限考え出すとわかる
326 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 02:26:16 ] TabIndexに-1を指定できるようにしてほしい
327 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 03:00:27 ] 何故?
328 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 03:09:19 ] 使用していないことを明確に表すため
329 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 03:16:08 ] 継承して、使用していないことを明確に表すため のプロパティを用意すればいいじゃん
330 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 03:31:49 ] いえ、相談ではなく提案です TabIndexプロパティの仕様の話で、-1が使えた方がスマートだということ
331 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 03:35:20 ] でもそれだとデザイナで設定できなくなるし、 そもそもTabStopがあるからいらないと思う
332 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 03:38:55 ] どうでもいいオブジェクトのTabIndexの値がふらふらしてて気持ち悪い 収まりが悪い
333 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 07:04:28 ] そう良かったね。
334 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 08:19:21 ] 使ってないやつは-1とか 発想が前時代的
335 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 14:04:06 ] そうだな。 TabIndexはタブの移動順序を決めるためのプロパティだから、タブの有効/無効とは無関係だよな。 TabEnableてきなプロパティを作るべき。
336 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 14:27:34 ] ヌルあぶればいいじゃない
337 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 04:05:27 ] おまえらセンス無い
338 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 04:05:56 ] ごめん
339 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 10:11:32 ] 2つの256色ビットマップを読み込んで(パレットは2つとも同じ)、 1つの大きな256ビットマップに描画して、保存したいと思っています。 System.Drawing.Bitmapオブジェクトは作成できたのですが、 ピクセルフォーマットがFormat8bppIndexedになっているので、Graphicsオブジェクトが作成できません。 256色ビットマップに描画するには、どのようにすればよいでしょうか?
340 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 10:42:12 ] 1枚をRead→Writeはできてるの?
341 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 10:44:29 ] >>339 Bitmap コンストラクタ (Int32, Int32, PixelFormat) でコピー先ビットマップ作って GetPixcel/SetPixelで書き写すしかないんじゃね?
342 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 11:45:19 ] 最近、ビットマップ合成がらみを色々見てて、 2.0以前のSystem.Drawing.Bitmapよりも、 3.0以降のSystem.Windows.Media.Imaging.BitmapSource と WriteableBitmap の方が使いやすかった。
343 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 12:19:39 ] そんなことSetPixelでやったら死ぬよ LockBitsだな WPFが使えるならもちろんそっちの方が遥かに便利で強力
344 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 12:27:12 ] 結局、32bitBitmap上に描画し、LockBitsして32bit->8bit変換を行いました。 回答してくださった方、どうもありがとうございました。
345 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 12:28:08 ] >>344 は>>339 です。
346 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 02:08:09 ] 会社で社内の業務改善ツールを任されることになりました 上からJavaかC#を選ぶようにいわれましたが どちらが扱いやすくて今後の将来性がありますか?
347 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 02:12:17 ] C#スレで訊いたらC#と答えるに決まっているだろう
348 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 02:23:27 ] >>346 Javaスレで聞いたら? Javaって返ってくるだろうけど。 まぁ、アレですよ。 自分で使いたいと思うほうを使えばいいと思います。 どっちも将来性なんて分からないので。
349 名前:デフォルトの名無しさん [2009/07/22(水) 02:29:17 ] >>346 製作されたソフトウェアのどちらが長期使用に耐えられるかと言ったら C#だろうな
350 名前:デフォルトの名無しさん [2009/07/22(水) 04:16:08 ] www10.ocn.ne.jp/~mitinoie/RPGProject.zip RPGClientでログインして、少し動かした後で切断。再度ログインすると、KeyNotFoundExpectionが発生してしまう。 しらべてみると、MapChangReq()のunits.setUnit()でunitlistに登録したキーの値がfindUnit()でキーを元に検索しようとする前の段階で入れ替わってるのが原因だとわかった。 でも、治し方がわからない。 詳しい人がいたら教えてほしい。
351 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 07:48:58 ] Windows環境限定でいいんだったらC#でいいんじゃね?
352 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 07:59:31 ] 互換性考えるとC89だよな
353 名前:デフォルトの名無しさん [2009/07/22(水) 08:37:00 ] コンシューマ用ならC#が俄然有利な気がするが 後方互換保ってくれるかわからないんだよなぁ なんだかんだで10年来動き続けてるVB6という手も怖い
354 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 09:17:18 ] >>352 互換性(笑) >>353 少なくとも IL は互換性保たれるんじゃないかな。
355 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 09:48:41 ] >>350 プロジェクト開けねーじゃねーか・・・XNA入れないとならんのか?メンドクサ
356 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 10:01:33 ] >>350 解凍できね
357 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 10:25:04 ] >>356 7zipで解凍できたよ。 >>350 ぱっと見なんだけどRPGServerをリブートしていたというオチではないか? UnitManagerのunitlistをセーブしたりしている箇所はどこだ? しかし、なんかUnitの管理とかが微妙な感じがする。 精査したわけじゃないが、unitsが座標ごとに持ってる部分とか。
358 名前:デフォルトの名無しさん [2009/07/22(水) 12:04:26 ] >>357 RPGServerをリブートしているという落ちは残念ながありませんw unitlistをセーブしている部分はsetunit、removeall、removeUnitの三つです。
359 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 13:40:05 ] >>358 右クリックして、送る→圧縮(zip 形式)フォルダ で圧縮したものでうpしなおしてくれ。
360 名前:358 [2009/07/22(水) 13:54:39 ] >>359 すまん。今使ってるウィンドウズにはその機能はない。
361 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 14:44:12 ] >>360 機能がないんじゃなくてテメーが無効にしたんだろ。
362 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 15:05:03 ] 使っているWindowsかビルド環境が古いというオチか。
363 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 16:11:02 ] Vistaの標準のエクスプローラで解凍できたけどな
364 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 16:33:30 ] >>358 んじゃ、recive_packetでMapChangReqコマンドを投げる前にHandleInput受け取って SetPosコマンド投げた。とか? は無いか、initedチェックしてるから。 わかんね。ギブ。 ただ、ひとつ気になったのはunitlist.Add(id, u);。 Dictionary#Addは「ただし、指定したキーが Dictionary<(Of <(TKey, TValue>)>) 内に 既に存在する場合、Item プロパティを設定すると既存の値が上書きされます。 一方、Add メソッドは、指定したキーを持つ値が既に存在する場合、例外をスローします。」
365 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 22:30:01 ] 何が何だかよくわからない。 切断した後IPとか変わってても大丈夫なの?
366 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 22:54:46 ] 駄目だけど、そこんとこはまた別の問題。 ツッコミどころはまだまだ多いけど、それは一つずつ解決していくしかなかろう。 とりあえず、結構頑張ってると思う。
367 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 18:08:18 ] C++/CLI のスレから誘導されてきた。よろしくお願いしたい。 ---------- おしえて。 フォームアプリのテキストボックスとかにデータバインディングで、 DataTable の要素を関連づけて入力値を管理したい。 ここで、テーブル中のレコードが1つの場合はいいんだが、複数あって かつ、バインドするレコードを動的に変更したい場合ってのはどうすれば いいのだろうか? よくわからなかったので、 ・バインド用に同じ構造のテーブルを用意して ・そこにレコードをひとつだけ作り ・そのレコードに元テーブルの任意のレコードの値をコピーする ・フォーム終了後にもとのテーブルのレコードに値をコピーし直す 方法で使おうとも思ったのだけど、もっと直接的な方法がありそうな気がする。 いかがだろうか。教示いただけると嬉しい。
368 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 19:14:08 ] 何を言いたいのかがハッキリわからないけど DataTableに複数レコードつっこんで あるときは1レコード目、あるときは2レコード目をバインドすればいいんじゃないの
369 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 19:37:11 ] 返信をありがとう。 >あるときは1レコード目、あるときは2レコード目をバインドすればいいんじゃないの その2レコード目をバインドする方法がわからなかったんだ。。。
370 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 19:38:54 ] 何言ってるんだろ? 次のレコードに進めるだけだろ。
371 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 23:37:42 ] ああ。そう言う方法があるんだね。 ごめん。まだこれの経験が浅くてそれ自体がわかってないんだ。 その方向で調べ直すよ。ありがとう。
372 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 00:35:25 ] BindingManagerBase::Position のことか。 気がつかなかったよ。お騒がせしました。
373 名前:デフォルトの名無しさん [2009/07/27(月) 14:13:58 ] 非ジェネリックのIDictionaryをジェネリックのIDictionary<TKey, TValue>に 変換するスマートな方法があったら教えてください。 foreachで別のDictionayに1つずつ追加するのはやれてます。
374 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 14:30:54 ] それが一番だと思うけど。 dic.Cast<DictionaryEntry>().ToDictionary(entry => (TKey)entry.Key, entry => (TValue)entry.Value); がスマートとは思えない。
375 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 14:34:42 ] C# 2.0 で質問です System.Threading.ManualResetEvent のインスタンスを使用して1ミリ秒のウェイト処理をループ中にかけようとしているのですが ・Vista環境だと上手く1mSec 程度停止するのに ・XP環境だと15mSec程度まで跳ね上がる時があります。 OSの分解能ということで1mSecは諦めるしかないのでしょうか? 用途は最高速で常時まわしたい処理を以下のソースのWhileの中に組み込んでHOGEの処理をしているのですが 可能であれば10mSec以下で1ループを終わらせたいのです。(中の処理は2〜3mSec程度) ただしこのままでは別スレッドで実行しているにもかかわらずCPU負荷率が高すぎるために 最低レベルでのスレッド停止処理を行いたいのです。 ちなみにSystem.Threding.Thred.Sleep(1); を行うとVista環境でも1mSecより大きく停止してしまいます。 System.Threading.ManualResetEvent mre = new System.Threading.ManualResetEvent(false); While(True) { HOGE();//処理 //ストップウォッチ計測開始 mre.WaitOne(1); //ストップウォッチ計測終了 if(exitFlag == true) break; } 何とか最速でまわしつつ負荷を上げずにWhile文を回し続ける方法はないでしょうか?
376 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 17:19:40 ] 1msの分解能が欲しかったらCPU負荷率は諦めるしかないと思うけどな スレッド切り替えるのに1ms以上かかりそうだし
377 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 17:55:33 ] >>376 そうですか・・・ まぁヂュアルCPUなんで負荷率は50%なので構わないと言えば構わないのですが・・・ できるだけ使用率を低くして寿命を延ばしてやりたかったのです
378 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 17:59:39 ] >>375 Sleepすることが目的ではなく、CPUを使いすぎることを抑えたいだけのように感じる。 もしそうなら、Priorityプロパティでスレッドの優先度を下げるだけというのはどう? もちろん、優先度を下げるということはCPU使用率を下げることとは違うから、、 ほかにやることがなければCPUを使い尽くすということに変わりはないけど。
379 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 18:02:17 ] >>377 何をやりたいのか知らないけど専用マシンを用意すれば?
380 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 18:32:57 ] 10mSecでTimer回した方が良いように思えてならない。 再入をブロックする必要はあるけど。
381 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 20:17:27 ] >>375 よくわかんないけどこういうこと? Stopwatch sw = new Stopwatch(); long nextTiming = sw.ElapsedMilliseconds + 10; sw.Start(); while (true) { while (sw.ElapsedMilliseconds < nextTiming) { Thread.Sleep(0); } nextTiming += 10; Console.WriteLine("Now is {0} ms", sw.ElapsedMilliseconds); } Thread.Sleep(1)にしてやればCPU使用率は無駄に上がらない。 その場合、処理のインターバルの精度は落ちるけど、時間あたりの処理回数の精度は 保てるといってよいんじゃないか。
382 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 23:32:44 ] マルチメディア系の機能でミリ秒レベルの精度でsleepする方法ってあったりするんだっけ? 普通のSleepって、TimeBeginPeriodで指定した分解能でスレッドの状態変わるんだっけ? もしSleepの精度にTimeBeginPeriodが効くなら、それやってスレッドの優先度をあげればいいかも。 ただし処理をきちっと終えてちゃんと確実に速やかにSleepしないと死ぬことになるが。
383 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 23:35:31 ] 各回のインターバルの精度が必要でないなら、10回分繰り返して10回分Sleepとかそういう手もあるが。
384 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 23:42:24 ] >>382 timeBeginPeriodは消費電力を増やすと言われているのだから、 寿命を気にする>>377 には似つかわしくないと思う。
385 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 23:54:07 ] HDDはともかく、CPUはヒートシンクが動作中に外れるとか 余程のことでもなければ「寿命」を縮めるなんてことはないと思うけど。 真空管じゃないんだから
386 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 00:07:36 ] まあCPU自体にはあんま関係ないけど、 使用率が高いところを維持するのは全体で見ればあまり望ましいことじゃなかろう。 あと確かに大麻精度あげると電力使用はアップしてしまうのかも知れんが、 CPU使用率が高いままになるよりはましじゃないかと思うがどうだろう。 もちろんそうせずに済むならそれにこしたことはない。
387 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 00:19:55 ] 結局のところ、何であんな事をやりたいのかハッキリしないと何とも言えん
388 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 10:43:04 ] C#では、グラフィック関連のメソッドで、小数の引数はfloat型になってますよね。 floatよりdoubleの方が一般に速いと思うのですが、なぜfloatなんですか?
389 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 10:49:39 ] GPUはほぼ単精度までしか扱えなかったぜ まあGDI+はGPU使わんけどな!
390 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 10:57:27 ] 計算速度じゃなくて帯域幅の問題。 あとdoubleが速いってのは今のCPUでの話にすぎない。
391 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 10:58:17 ] あGPU関係なかったか…
392 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 11:00:36 ] >>389 なるほど…。 今まで、座標を保存するための変数x, yをdouble型で宣言して、 描画時にintに変換して使っていたのですが、 これはfloatにしてキャストなしで使った方がいいんでしょうか? 「float同士の演算(座標計算時)」と「double同士の演算(座標計算時)+intへのキャスト(描画時)」 では、どっちが速いんでしょうか。
393 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 11:05:11 ] >>390 > 今のCPUでの話にすぎない。 昔のCPUのことを想定してどうすんだよw
394 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 11:19:55 ] >>392 自分でベンチ書いて試しなよ その方が納得できるだろ
395 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 11:53:38 ] 昔のCPUの話じゃなくて今のGPUの話だよ。 関係なかったけど。
396 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 12:20:35 ] レスが遅くなりました。 >>378 おっしゃる通り現在の処理速度を犠牲にせずにCPUの負荷を下げてあげたいということです。 スレッドの優先度は、この処理部分以外にあまり同時に激しい処理をしているわけではないので微妙な感じです >>379 まぁ専用マシンを用意してもCPU負荷がずっと大きな値に張り付くのは・・・微妙なきがします。 FA系なので安定して長く動作させたいのです。 >>380 やってみた感じスレッドのタイマで1mSecで動かしてもどうも間隔はOSに引っ張られるようですorz 例えばですが・・・再入ブロックはこんな感じの処理のことでしたっけ? タイマコントロール void tick { タイマ停止 処理 タイマ開始 } スレッドタイマ (間隔で動かすというか1回だけ動かすのを繰り返す) void Tick() { 処理 次回Tickを動かす時に1mSec間隔をあけて実行 }
397 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 12:37:37 ] >>381->>383 , >>387 本当はWhileの中は最速でまわしてあげたいのです。 しかし、CPU負荷率が高くなりすぎるのでそれを防ぐためだけに仕方なく1mSecのスレッド停止を挟んでいるのですが そのスレッド停止がXPではきっちり1mSec止まってくれない (別に2mSecとかでもいいのですが15mSecとか止まってしまうのです。) 結局やりたいことを説明すると FAの工場内のでラインの制御をおこなうのに1スキャンあたり(1ループ)25mSec以内で処理しなければ処理ヌケが発生する。 →処理ヌケが発生しないようにする処理は現在のループ処理の中では余裕 →だけどCPUがずっと高い使用率に張り付いたまま →基本的に長期安定動作させたいので使用率は大きいよりは小さいほうがいい →SleepやManualResetEvent.WaitOneではXP上で停止時間が不安定 (これで運用すると少しでもOSの動きに引っ張られると処理時間が延びて処理ヌケしてしまう) →VISTAはなぜか停止時間が結構安定する →上に VISTAにしてくれというと「FAでVISTAとかまじありえね XPでやれ」 と言われ取り合ってももらえず →打つ手が思い付かずに ここへ知恵を借りに ↑いまここ そして同じPC内にはコスト削減とかでラインの画像判定を撮って判定するソフトが・・・ (これ自身はCPU負荷はそこまで使いません。 一瞬5〜10%まで上がる程度が50mSec程度の間隔) こんな状況ですorz そもそも、Pgを別のPCに分けてもメインのループ部分がCPU使いっぱなしになるので問題の解決はしないという・・・ >>385-386 CPU自体は迷信なのかもれません。 まぁ、ただずっと高しようりつで張り付くと結局温度が上がってしまうので 色々と起きてきそうなのです。
398 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 12:49:09 ] CPUのタイムスライスってレジストリでいじれなかったっけ? そこまでシビアなFAの制御なら専用のCPUボードにやらせて、 OSはサマリーだけ受け取るような仕掛けにしないといかんだろう。
399 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 12:53:35 ] >>398 本当はそうなんですよね せめてPLC使って処理させるとか でも・・・今回は期限ないうえにコストも落とせという色々無茶な状態が重なってしまいまして…
400 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2009/07/28(火) 13:11:31 ] >>399 RTOSが必要なんじゃね? この辺にも色々書いてあるけど www.microsoft.com/windowsembedded/ja-jp/developercenter/whitepaper/xpe/hardrealtime.mspx
401 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 13:13:02 ] 他のプロセス(サービス含む)が動いたらあっという間に25ミリ秒とか過ぎ去るな
402 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 13:17:34 ] >>400 エンベデッド(これで読みはいいのか?)ですよね そう、せめてそれがあれば最低限のコンポーネント入れていけるとおもうんです しかし普通のPCに普通のXP PRO サービスとかはできる限りとめて動かしていますがなんというか・・・がっくりです >>401 そうなんです! というか、やる気起きないのでダラダラと
403 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 13:22:06 ] 連投ばっかですみません なんとなくですが >>382 のTimeBeginPeriodでいけそうな気がします。 また詳しいことは微妙ですが これ使って簡単に1日程度動かして様子を一回見てみようかと
404 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 17:53:02 ] >>392 描画メソッドの呼び出し頻度なんか知れてる 呼び出してからの実際の描画処理の方が遥かに時間がかかるからそんな細かい差は全く意味がない
405 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 19:47:21 ] >>403 なんか>>397 を読んでもやっぱりよく分からないんだけど、 要するにDIOか何かをポーリングしてるのかな? それでそのDIOのイベントに応答するときのレイテンシの最大許容時間が25ms、 みたいなこと?
406 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 20:18:16 ] 浮動小数から整数への丸め制御方法によっては、intにキャストする回数が多いと遅くなるかもね
407 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 20:24:57 ] そんな差が目に見えるほど描画メソッド呼び出したらそれこそ死亡
408 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 21:33:20 ] >>397 >>403 タイマーが15ms間隔でしか発動しないのはWindowsの仕様。 パラメータでは1ms単位の数値が設定できるけど、実際の動作は約15.5ms間隔に切り上げられる。 TimeBeginPeriodを使えば間隔を詰めることはできるけど、実際に試してみると、 最短の間隔がせいぜい2ms程度で、それより長くなることもある。 それにTimeBeginPeriodには副作用があって、他のアプリがたまたまTimeBeginPeriodを再設定してしまうと、 そのマシンで動いているすべてのアプリが影響を受けてしまう。 >>375 でVistaは1msてのは、たまたま何かのアプリがTimeBeginPeriodをいじってただけの可能性が高い。 そもそもSleep関数の動作は「少なくとも」指定した時間経過、だから、どれだけオーバーするかは運次第。 ただしこれはVistaまでの話で、Windows7ではタイマー関係がようやく強化される予定なので、 どうしても2ms以下の間隔を死守したいならWindows7を使えばすんなり解決するかもしれない。
409 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 21:47:44 ] タイマっていうかタイムスライスの問題だからちょっと話がズレてると思うけど。。
410 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 21:53:02 ] >>408 XPしかだめっつうてんだろw XPにPLCと同じことさせようとしても無理。 制御じゃなく監視だよね? FA屋で制御までさせようとしてるなら職変えたほうが良いよ。
411 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 22:08:01 ] Chrome起動中だと高速化するよ(笑い)
412 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 22:16:54 ] 25msなら、スレッドの優先度上げてやればSleepでも大丈夫かもしれん(実質15msくらいで)。 まあTimeBeginPeriod使った方がいいと思うけど。 優先度を上げない場合、Sleepでの停止自体は短時間でも、実行順が回ってくるまでに タイムオーバーする危険がある(他のスレッドがある場合)。 優先度を上げると実行可能になった時優先的に処理が回ってくるので、遅れる危険が小さくなる。 ただし、処理を終えたら確実にSleepしないと、下手すればマシンハングアップ状態になるので注意。 ただ、いずれにしてもWindowsではそういうのを本当に確実に処理することはできない。
413 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 22:21:58 ] XPのタイムスライスってどんくらいだっけ?15msくらいだっけ?20msくらいだっけかな? もしフォアグラウンドで何かを動かしたらそいつは3倍になるから処理にもよるけど簡単に死ねる。
414 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 22:23:41 ] スレッドの優先順位? スレッド?
415 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 22:29:46 ] >>413 1/64 s
416 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 22:37:57 ] あー大きく上げるにはプロセス側で上げとかないと駄目だったか、 言いたかったのは単に最終的なスレッドの優先度を上げるということ。
417 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 23:23:52 ] >397の人件費考えたらVISTAなんて安いものだろうに・・・
418 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 00:05:42 ] ていうか・・・なんでWindowsでそんなリアルタイムOS的な制御をやろうと企画した んだろ、発注元。
419 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 00:17:34 ] >>397 の言葉遣いも怪しいところがあるから、 必ずしも本来の要求仕様を満たすために必要のない手法を>>397 自身が 考えているだけかもしれない。 なんかその可能性が高いように思う。
420 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 00:36:59 ] リアルタイムにセンシングするとして、データをキューに入れといて別スレッド で処理したら駄目なのかな・・・いや、そういう話じゃないな。 382の言うとおりマルチメディアタイマ使えばいいんじゃね?
421 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 00:47:18 ] >>410 いや、Vistaはカンベンしてくれって話だろ?
422 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 00:48:14 ] マルチメディアタイマーも15ms縛りがあったような…
423 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 00:49:07 ] 要求が「VistaとXP」なんだからそんなところの議論は無駄無駄
424 名前:デフォルトの名無しさん [2009/07/29(水) 01:16:39 ] てか1ms周期で動かしたら大抵CPU時間使いまくるってオチ
425 名前:397 mailto:sage [2009/07/29(水) 02:13:03 ] 多くのレスありがとうございます。 そもそもなぜXPなのか? というのはその上役の人間が安定志向でXPで今まで出来てたんだから という考えのもとに言っているような感じです。 しかし、その実績はせいぜい50〜1000mSec程度なのでどのOSでも簡単に実装できるものでした。 新しい機械を開発するにあたり そこそこ高速で移動するライン状の物の位置をエンコーダで追い、DIOの信号を利用して移動させる という処理が必要になり 上役の人間が打ち合わせをした際にその程度の処理なら出来る という憶測で仕事を受け入れてしまいました。 その尻拭い的な感じをいまやっているわけなのです。 多くの皆様意見をいただき本当にありがとうございます。 さすがに限界を感じる感じなので、CPUをフルに使う状態での運用か、それとも設計や方針自体を変更するべきなのかを上の人間にかけあってみます。 ちなみに単純な処理です → 物の流れる方向 |----------------目的地 センサ ↓ センサをONしたタイミングでエンコーダ値を取得・保持し、目的地の位置までパルスが移動したらDIO信号をONし、流れているものを矢印の方向へ稼働させる機械を動かす。 たったこれだけです。 PLCでやればどれだけ単純で簡単なレベル という話 orz 多くの意見、今後のPGに生かしていこうと思います。 はぁ・・・月曜日が鬱だw
426 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 03:16:37 ] しかもC#でとな('A`
427 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 06:05:48 ] >>425 それ本当に1msの精度求められてるの? 仕分けでそこまでの速度を要求されるとは思えんのだが。
428 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 06:47:49 ] >>393 intよりdoubleが早い環境なんて少数派だぞ
429 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 06:58:29 ] PCでそんな制御やるのがそもそも間違えてる カーネルから優先度の高い命令が割り込んだら何ぼでも処理落ちするぞ
430 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 08:05:16 ] 動かないと思ったらWindowsUpdateでリブートしてるんですね。わかります。
431 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 12:06:08 ] >>427 初めに書いたとおり1mSecまでは求められてはいませんが 自分がWindowsで制御するなかでは初めての精度になります。 まぁごくまれに処理抜けする程度ならリターンしてもう一度処理をすればいいのでそれはそれで何とかなるわけですが その為、処理負荷をできるだけ下げつつ処理時間間隔を短くするために可能な範囲で試行錯誤してみています。 >>426 >>429 そうなんですよね 何というか・・・GUIがほしいのはわかるんですが・・・ ちなみに現在実機でタイマ精度変更後に一日動作させた感じ1処理は停止含めて15mSecを超えていない(StopWatch調べ)感じです。 CPU負荷も常時高い位置にあったものが時々大きく上がる程度まで抑えることができている感じです。 でもぶっちゃけ実運用になったら・・・ちょっと怖いかも
432 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 12:17:58 ] 実際のとこ、全力でぶん回してもリスクは変わらないから。
433 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 12:31:00 ] 全くもってそのとおり ”ずーっと確実に最長1msの周期で観測する”という要件しか聞いていないから,PCの電源が落とされた時点でアウト, PCの電源落とさないってんなら,たった一日の観測(>>431 )くらいで何か分かるわけでもないし. おとなしくデバイス作ってUSBかシリアルで接続したほうが安心. GUIはC#でいいだろうが
434 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2009/07/29(水) 12:39:49 ] >>433 なんかPC障害でラインが暴走しそうな悪寒もする。 ちょっとした機能追加で制御不能になったりとか 担当者さんのデスマーチが目に浮かぶ
435 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 12:44:55 ] 今思った GC時間考慮してねー
436 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 13:02:29 ] まあ書かれてた処理内容なら大丈夫だろ。 もち注意して作る必要はあるけど。
437 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 19:25:38 ] >>425 その説明だと、そもそも「目的地」のところにセンサをつけ、 その出力を「流れているものを矢印の方向へ稼働させる機械」に直結すれば PCなんか要らないように思えるけど。 それにどうしてエンコーダが必要になるのか意味がわからない。 わざわざ目的地じゃなくてその手前なんかにセンサを付けるから、 目的地を検出するためだけにエンコーダが必要になるんじゃ?
438 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 20:39:38 ] >>425 目的地にセンサつけたらだめだろw 目的地はn通りあるから事前に振り分ける処理が要る。 FAの機械ってのは大抵が独自のプロトコルで通信する。 だからPCなりPLCなどの中継が必要になる。 ここまでは皆理解していて、その先の精度や耐久性について語ってるのだよ。
439 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 22:02:36 ] >>438 よくわかんない発想をする人だなあ。 仮に目的がN通りだとする。 それって何を基準に振り分けるの? その仮説と>>425 の説明をあわせれば、恐らく物体の高さか何かによって ONするセンサが変わるから、それを基準に振り分けることになる。 だとすると、それってN個の目的地の直前で、対応するセンサと 「矢印の方向へ稼働させる機械」を直結することと等価でしょ。
440 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 22:37:57 ] まあ、質問主が詳細を明らかにしてないのに細かいこといってもしょうがないか。 なんとなくセンサの設置法さえ工夫すればビジーループでポーリング、 なんてことしなくてもPCでもこなせそうな仕事にも思えるけど。 DIOの付属のライブラリって、たいてい入力のイベントでコールバックする 機能がついてると思うから、そのあたりとあわせればできるんじゃないのかな。
441 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 06:33:12 ] >>439 バーコード、QR、RFIDなんかは普通に使うぞ?素人か?
442 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 19:46:27 ] もうどうでもいいよ。 さっさと上司と拳闘しろ。
443 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 20:16:21 ] >>441 そういう問題か。 そんなことは>>425 の文章からは読み取れない。 余程の馬鹿じゃなければ、そんな重要なことは最初に明確に書くだろう。
444 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 20:42:16 ] >そんな重要なことは最初に明確に書くだろう。 うーん そんなこと無いケースが多々あるが・・・
445 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 20:48:45 ] そういうスレでやれ
446 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 12:41:04 ] EventHandler eh += delegate { }; EventHandler eh += (sender, e) => { }; sender, eを使わない場合ラムダ式にしない方がいいの?
447 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 12:49:58 ] 使いもしないのに書くのは気持ち悪い
448 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 20:20:09 ] 関数でシステム作る様な言語でもないんだし LINQの目的に使わないのなら俺は使ってないなー
449 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 01:35:08 ] >>446 ラムダ式使うなあ。 別に引数を使わないのはLinqでもあることだし。
450 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 08:27:42 ] 使ってると関数式が分散しちゃって管理しづらくない?
451 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 12:16:38 ] 複数箇所で使うならメソッドにしとけ。その場限りならラムダにしとけ。 作ったメソッドをシグネチャ合わせるためにラムダ使うとかも良くあること。
452 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 13:20:59 ] はい匿名関数使います。
453 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 13:29:18 ] delegate { }の形の匿名メソッドはそのうち「今後は使用しないでください」ってお達しが出るかもね
454 名前:デフォルトの名無しさん [2009/08/02(日) 01:07:34 ] C#って内部クラスをどういうときに使うの? 関連の強いクラスでも、内部クラスにするメリットがわからない。 Javaならすごいはっきりしてるけど・・・
455 名前:デフォルトの名無しさん [2009/08/02(日) 01:08:10 ] >>1 の本文は「飲み過ぎた・・・」と予想したが見事にはずれた
456 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 01:13:55 ] >>454 javaだろうがc#だろうがインナークラスの使い道なんて一緒だと思うけど…。 よくわからん疑問だな。
457 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 01:32:22 ] >>454 おまえはおれかw 今日ふと気になってそれ調べてたよ。 外部クラスのprivateフィールド、関数にアクセスできるのが一番のメリットだろうね。
458 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 01:32:42 ] >>454 わざわざ外に書くほどでもないとき スコープ的にそのクラスの外に見れないようにしたりしたいし
459 名前:デフォルトの名無しさん [2009/08/02(日) 01:49:07 ] >457,458 こんな遅い時間にサンクスコ! >外部クラスのprivateフィールド、関数にアクセスできるのが一番のメリットだろうね。 ああ、なんか勘違いしてました。外部クラスのインスタンスは渡してやらなきゃいけないけど privateにアクセス可能なんですね。馬鹿な漏れですみません。 C#ってJavaに似せてはいるけど、かなり別モンですね。 スコープっていうかアクセス権については、 Javaのパッケージプライベートに相当するものが欲しい・・・ でもプロパティは素晴らしいです!(JavaのBeansは最悪。)
460 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 02:26:21 ] プロパティはすばらしいとおれも思う。直観的だし、見やすい。
461 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 02:59:27 ] そして書きやすいしね。VB.NETのプロパティはマンドクサだけど。
462 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 03:00:55 ] プロパティとデリゲートは自慢できる機構だな。 いつJavaが逆輸入してくれるかと期待してるんだが、無理なのか。
463 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 04:01:16 ] プロパティはいいとしても、 delegateはVJ++時代の歴史的ないさかいがあるからあれだなぁ。
464 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 04:02:34 ] プロパティはJavaの新機能の候補にまで入ったんだけど・・・駄目だった デリゲートはありえなさそうだ
465 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 07:55:22 ] C++の将来はどうなりますか?
466 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 09:19:43 ] C++の将来はC++0x、2015年までに何とかしてくれるらしい。 そろそろスレ違いだな。
467 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 10:36:21 ] >>459 パッケージスコープはinternalがある。 「名前空間」っていうのはそもそもクラスライブラリを使う側のためにあるものだから 作る側の実装の都合によるパッケージスコープとは明確に区別されてる。 どっちがいいかは別にして,考え方の問題。
468 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 10:48:31 ] .NETでCollectionを返してくるやつがあるけど何でジェネリック使ってないの?
469 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 11:03:03 ] .NET1.xのころはジェネリックが使えなかったから。 3.0〜のWPFで非ジェネリックコレクションが一部使われてる理由は, WPFはけっこう型にルーズで,突っ込まれたいろんな型のオブジェクトを 適当に自動的に変換したりするから
470 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 11:46:54 ] >>467 考え方がどうとかはしらんが、 internalはexeやdllレベルのアクセス制限だから、Javaのpackage privateとは別モンだろ。 適度なアクセス制限かけたい時に、いちいちdllに分けるとかありえんwww
471 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 12:59:45 ] ?:でelse側要らない時あるから、何もしないで辞めるという予約語cancelを追加してほしい x = x > y ? 10 : cancel; Open(Exist(path) ? path : cancel); 引数にcancelが入るとそのメソッドは実行されない
472 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 13:05:42 ] 素直にif使えよ
473 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 13:14:30 ] Exec(a(), Open(b(), Exist(path) ? path : cancel, c()), d()) じゃあこれでExist(path)がfalseになったときはExecも実行されないの? aやbやcやdは? 無駄に複雑になりすぎる
474 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 13:33:32 ] x = x > y ? 10 : x;
475 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 13:38:21 ] x = x > y ? 10; こう書けりゃいいのにな
476 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 13:57:46 ] >>473 あー、なんか無理っぽいね 全部実行されないで欲しい感じはするものの
477 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 13:59:24 ] 無理して三項演算子使わなくてもいいのに。
478 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 14:38:47 ] >>475 代入式なのに代入されない場合があるって、すんごいキモイと思うんだけど どうだろうか
479 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 14:41:25 ] タイプ数そんなに変わらん if(x > y) x = 10; cancel導入だとむしろ多くなるじゃないか
480 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 14:53:24 ] >>479 これでいいじゃん 三項演算子にこだわる必要どこにもないし
481 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 14:53:48 ] 全メソッドが毎回cancelチェックするらしいぜ!
482 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 14:57:36 ] なんで阿保の思いつきを開陳しようとする気になったの。
483 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 15:22:10 ] おまえというド阿呆をおびき寄せるため
484 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 16:35:49 ] 本筋ではないけど、>>471 のOpenの例はテストせずにモードOpenでtryして、 FileNotFoundExceptionなどをcatchでしょ。 ファイルは存在さえすれば開けるというものじゃないから、 どのみちtryする必要あり。それならばExistで存在確認するのは無駄。
485 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 16:38:23 ] 例外は重たいから事前にチェックできるのならばチェックすべし
486 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 16:40:16 ] チェックから開くまでに、ファイルが消される可能性があるから無意味。
487 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 16:40:50 ] チェックした方がいいのは確かだが ファイルを開こうとして失敗するなんて秒間何千回起こるようなものでもないんだから 重たいとか別に関係ない
488 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 16:42:34 ] 例外は重いからチェックするってのは正か否か これもよく揉める議題だよね。 頻度を考慮したらそんなに避けるべき問題でもないという結論に。
489 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 17:03:41 ] 平均的には、チェックする方が遅くなるだろうな どっちみち頻度考えたら問題にはならないけど
490 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:04:04 ] 例外が思いからファイルを開くときにチェックしない →ファイルを開くアクションを起こすと時々アプリケーションが終了 →作業内容が喪失 →作業意欲低下 →業務が滞る →会社の収益が低下 →GDPが減少 →犯罪発生率の上昇 →本国崩壊 →朝鮮半島がなにかを主張し始める ←ここまで1年半 つまり例外処理反対派は反日親韓ということ?
491 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:10:37 ] >>490 それを言うなら、 例外が思い(ママ)からファイルを開くときにチェック<する> だろ。 いつも思うんだが、ネタっていうのは分かってる奴がやるから面白いんであって、 何もわかってない奴が無理してやるネタなんて面白くもないともないんだよお馬鹿さん。
492 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:14:21 ] プログラムがファイルが存在しない状況について想定していることが伝わるからチェックはすべきでしょ
493 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:14:51 ] >>491 ??
494 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:17:53 ] 必要な処理を必要なだけやるわけであって 重いから処理しないのはゆとり
495 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:18:03 ] ファイルが存在しない状況について想定していることが伝わればいいのなら FileNotFoundExceptionを別にcatchするだけで十分じゃねーの
496 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:19:40 ] はげどう
497 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:25:50 ] まあFile.Existなんて気休めだよな。
498 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:56:25 ] ところで Try(() => Open(path)).Catch<FileNotFoundException>(ex => Console.Write(ex)); とか書けたらいいなと思ってるのは俺だけじゃないはず というか多分書けるな 今から作ってこよう
499 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 00:05:20 ] 醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い 醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い 醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い 醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い 醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い 醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い
500 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 00:10:24 ] try〜catchじゃない意味あるの? こんなオナニーコード見せられたら卒倒しちゃうよ。
501 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 00:14:51 ] 吐き気がするw
502 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 01:43:51 ] >>498 賛同者はごくまれだろうな・・・・・
503 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 02:18:06 ] if(auto ex = collectException(new File(path))) writeln(ex);
504 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 03:17:30 ] RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup みたいのはあるけどな。 もちろん理由があって。
505 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 05:05:40 ] Util.TryCatch(()=>hogehoge...,e=>hoge....); というのは作った。
506 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 05:10:59 ] 何の役にもたたなそうだな
507 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 07:06:19 ] きもい流れになってるな・・・
508 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 12:01:36 ] C#を見にくいコードにする友の会か?
509 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 12:47:28 ] 使う気にはなれないが、総称型をcatchに使えることは分かった。 public static T Try<TEx,T>(Func<T> func) where TEx : System.Exception { try { return func(); } catch (TEx ex) { Console.WriteLine(ex); return default(T); } }
510 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 13:08:02 ] これがラムダ厨の威力だというのか。
511 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 13:12:37 ] もうクラス使わずに全部クロージャだけで書こうぜ
512 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 13:20:44 ] 一部のラムダ基地外をどうにかしてくれ。
513 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 13:27:07 ] 短かく書きたい病ってのは誰でも一度は発症するもんだよ
514 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 15:10:12 ] ありすぎて困る
515 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 15:19:57 ] 短く書きたい自体は分かるが、 短くなってない、見にくくなってるだけが多いのはなんでだ。
516 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 15:20:14 ] 短く書きすぎて可読性落ちたらいみねぇwww に気付くのにPGはじめて数年かかった
517 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 15:21:54 ] try-catch-finallyをラムダで書くのに何のメリットがある。
518 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 15:48:42 ] テストコードやアサーションとかなら使い道があるかも 思いつかないけど
519 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 18:00:32 ] >>515 同感、未だ短く書きたい病発症してますけど、つか冗長コード書くやつ死ね派ですが Tryは間違ってるだろと思うわ
520 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 18:05:09 ] 俺は冗長コードは可読性とパフォーマンスはかりにかけて許容範囲ならOKな派
521 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 18:34:03 ] C#は文法自体が冗長だから短く書いてもたかがしれてるんだよな。 とりあえずPerlとかRubyは糞。
522 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 18:36:49 ] 冗長にも種類があって、この修正いったい何か所なおしゃいいんだよボケっって冗長タイプは大嫌い
523 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 18:52:04 ] 特定の人間しか読めないようだとそれはそれで冗長といえる気がする
524 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 19:00:18 ] >>498 みたいなのはともかく,さすがにラムダが全く分からないのは問題外
525 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 19:30:49 ] いつも思うけどこのスレって程度の低い盛り上がり方するよね ラムダ式なんて書けて当然読めて当然 ラムダ厨も叩いている奴も意識しすぎできもいよ
526 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 19:37:50 ] と、>>498 が言っております
527 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:08:43 ] 2chブラウザみたいに動的に分割するウインドウって作れるでしょうか?
528 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:17:19 ] 2chブラウザっていろいろない?
529 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:18:54 ] それよりも TryってVBじゃねえの
530 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:20:22 ] どう考えてもjavaだろう
531 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:23:11 ] いや そこはNullでしょ
532 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:27:53 ] 書けて当然読めて当然濫用も当然
533 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:33:24 ] 俺の書くコードが一番! お前らの書くコードは二番!
534 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:37:40 ] 1人で書いてる限りは好きなように書いていいよ
535 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:59:43 ] さんじのおやつはぶんめいどー
536 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 21:00:33 ] 534 おまえねーじゃますんなよw
537 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 21:09:53 ] 俺の言った設計通りに動いてくれるならどんな書き方したっていいよ 保守するのはお前らだし
538 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 21:46:04 ] >保守するのはお前らだし そう思ってたころもありました・・・
539 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 22:39:59 ] Enum.ToStringはメタデータ検索するから遅くなるって言ってるけど じゃあEnum.GetNamesとかはどうなの?遅くならんの?
540 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 22:48:22 ] ウダウダここに書いてる間に試せると思うんですが…
541 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 22:49:04 ] 俺とお前じゃ時間単価が違うんだよ
542 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 22:49:59 ] GetNamesやGetValuesは中でキャッシュされてるからそんなに遅くない といっても配列の作成とコピーは毎回行われるので注意
543 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 22:51:32 ] ToStringよりはずっと速い。
544 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 23:14:44 ] 全然関係ないけど、プロパティをリフレクションで取得したりするコードで、 リフレクションは遅いからプロパティ情報をキャッシュするのだ!って言って DictionaryとかにPropertyInfoやMethodInfoをキャッシュしてるサンプル見るんだけど、 どうせキャッシュするならデリゲートにしとけっつの。 圧倒的に速いしリフレクション特有の問題も起きない。
545 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 23:29:47 ] GetMethodとかは中でキャッシュされるからPropertyInfoやMethodInfoを キャッシュするのはあまり意味がないとかいうのをMSDN Magagineあたりで読んだ覚えがある。 パフォーマンスのためなら>>544 の言うようにデリゲートをキャッシュする。
546 名前:545 mailto:sage [2009/08/03(月) 23:34:54 ] www.microsoft.com/japan/msdn/msdnmag/issues/05/07/Reflection/default.aspx あった
547 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 23:47:28 ] メンバの検索には結構時間がかかったりもする(条件によってことなる)ので無意味ではないけど デリゲートをキャッシュする効果に比べたら全く無意味と言っていいレベルだな。
548 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 23:55:42 ] >>541 だったらなおさら時間を大事にしろよ。 頭悪いのかね。
549 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 00:46:07 ] うん
550 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 01:20:09 ] くだらねー
551 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 01:53:58 ] うん
552 名前:デフォルトの名無しさん [2009/08/04(火) 18:11:07 ] 質問です。 領域を確保したbyte型の配列を以下の関数Funcに渡したいのですが、 どうすればいいのでしょうか? byte[] bytes = new data[640*480]; Func(????) void Func(ref byte data){ }
553 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:14:22 ] int n = 0; //好きな数字を入れてね! Func(ref bytes[n]);
554 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:14:40 ] void Func(byte data[]){ } 何でこうなるのか考えてから次に進めよ
555 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:18:01 ] cじゃねえんだから void Func(byte[] data)
556 名前:デフォルトの名無しさん [2009/08/04(火) 18:26:09 ] >>553 ,554,555さん レス有難う御座います。 この場合、関数の型を以下で定義するべきなのは重々承知しております。 void Func( byte [] data) ただ、この関数は他社提供のクラスライブラリの為、替えることができません。 これってやっぱり、関数の定義ミスでしょうか? ちなみに、この関数は某大手電卓メーカの提供しているクラスライブラになります。
557 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:27:03 ] >>556 それなら使い方をサポートに問い合わせるのが一番だろ
558 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:31:21 ] >>557 さん 恥ずかしながら、保守契約が切れていてけないのです ・・・ちょっと見落としていたけど、553の案で行けそうな気がしてきた
559 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:33:58 ] 553の方法でアクセスできました!!!!! すいません。 有難うございます。 3時間ぐらいハマってた・・・ 皆様有難う御座いました。
560 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:34:14 ] なんじゃそりゃあ。
561 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:35:35 ] なんつうライブラリだ・・・・ 要は配列の中の1バイトを書き換えるプログラムってことか…?
562 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:37:30 ] まさかのネタがマジレス
563 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:48:06 ] ネタじゃないです。 ネイティブコードのラッパライブラリみたいです。 サンプルさえあれば、こんなにハマることは無かったのですが、 本当に助かりました。感謝!!!!
564 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:52:54 ] 中でえげつないことしてそうだなあ
565 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:57:52 ] なんというか・・・・ これはひどそうな匂いがぷんぷんしてくるな
566 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 19:26:21 ] ライブラリの機能や仕様が不明なんだから何とも言えん。 ぱっと見た感じで怪しいのは確かだが。
567 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 19:36:16 ] C++ の void Func(byte* data) を、C# に持ってくるときに void Func(byte[] data) にするべきはずのところを void Func(ref byte data) にしただけだと思う まあわかりやすい間違いだな
568 名前:デフォルトの名無しさん [2009/08/04(火) 19:57:55 ] こんばんわ 文系のプログラムわからないぼくですが 仕事の兼ね合い覚えないといけないことになりました。 やはり先に本をかって進めていったほうがよろしいですか?
569 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:01:21 ] あたりまえ いくらPCに詳しくても,プログラミングでは「なんとなく触ってたら使える」というのはありえません
570 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:03:09 ] >>568 それってC#でなきゃいけないの?
571 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:08:39 ] >>570 はい、C#で開発なんで それでないといけないと思います。 本で初心者用って書いてあればなんでも平気ですかね。
572 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:10:16 ] C# とだけ書いてある本ではなく,Visual C# と書いてある本を選びましょう。 いきなり前者に挑むと挫折します。
573 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:12:58 ] しかし門外漢を使おうなんて余程手が足りないのね ここからが本当の地獄だ
574 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:17:23 ] >>572 助かります。 2種類あったのか・・・ visualstudio2005を使うんですが、C#って書いてあったようなきがしたけど visualC#ってことでいいのでしょうか?
575 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:22:36 ] VisualStudio2005は複数のプログラミング言語が使える。 その中でC#を使うならVisualC#2005を使うことになる。 二種類あるっていうのは,例えるなら>>572 の前者は英文法の本,後者は英会話の本だ。
576 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:23:44 ] >>575 なんと・・・・ VisualC#で探します、ほんと助かりました。 前者後者で差が結構ありますね¥・・
577 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:30:01 ] >>574 プログラミング未経験者がいきなり本で独学でC#とか俺は無謀だと思う。 特別地頭がいいなら別だけど。 こういうスレの連中は変な見栄と気取りがあるから認めないと思うけどねw いきなりC#でも人に直接教えて貰えばなんとかなるかもしれんけど、 そういう訳にいかんのかな。
578 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:30:59 ] だから地獄の始まりだと言ってるだろ
579 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:32:57 ] >>577 うちの会社教えてくれる人いないんですよ・・・ これやってねって言った人も始めてだし。 今まで仕事・・・まぁ新入社員だけど プログラミング教えてもらったことなど一度もないんです。 本渡されてどうぞ?しかないです。
580 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:37:02 ] まあとりあえず触ってみりゃいいんじゃない 「VisualC#入門」みたいな本買ってきて一通り打ち込んで動かしてみてそれからだな プログラミング自体に興味が持てれば次は文法の本に行けばいいし無理ならキャリアスクールへどうぞ
581 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:45:10 ] そのレベルの初心者なら、最初は研修に行かせてもらったほうが早いんだけどな。 最初は入門書は定番の有名なのより、 手取り足取りタイプの超入門書を2〜3冊読み漁るのがいい。 物足りなくなったら定番に移行。
582 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:55:54 ] >>577 C#が無謀なら何ならいいの?
583 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:56:17 ] 研修とかスクールって行った事ないけど意味あるの? 実際に仕事したことのない講師が教えてそうで怖いわ。
584 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:10:35 ] 研修とかプログラム受けると お金になるとききました (経理的な意味で)
585 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:34:40 ] msdn.microsoft.com/ja-jp/library/ms229043%28VS.80%29.aspx >複数の単語で構成されるパブリック メンバ、型、および名前空間の名前には、常に Pascal 形式を使用してください。 ってあるけどプライベートなメンバの命名規則はどこにあるの?
586 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:35:54 ] 公式には原則自由 それ「クラスライブラリ開発者向け」のガイドラインだからアセンブリの外から見えないメンバについては どうでもいいの
587 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:37:02 ] すばやい返答ありがとう
588 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:49:37 ] ちなみに非推奨のアンダーバー始まりを使ってます。
589 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:52:15 ] Cじゃないんだから取り立てて禁止というわけじゃないよ。
590 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:55:53 ] むしろMSが公開してるC#で書かれたコードでは _camelCase が多数派
591 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 22:29:41 ] C#って結構とっつきやすい方だと思うんだけどなぁ。
592 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 22:32:20 ] 他の言語の経験がある人にはね もともとそういうコンセプト
593 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 22:38:09 ] 他の言語使ったことないと結構きつい気がするよ
594 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 22:40:13 ] 他のってCとjavaだけだろ。
595 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:07:54 ] delphiから移行したけど結構簡単だった
596 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:09:54 ] delphi とは腹違いの兄弟みたいなものだからなぁ
597 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:12:02 ] >>590 そうなんだけど非推奨なんだよw
598 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:16:02 ] ああ・・・種は一緒だからな 確かに腹違いだ
599 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:18:45 ] お下品。
600 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:32:40 ] 他の言語の経験なんているか? どの辺が?
601 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:42:45 ] >>600 誰に向かって反論してるわけ? 「どの辺」にそんなこと書いてあるの? どうでもいいけど、こんなちっちゃいことで自分を大きく見せたい奴は 大概その意図に反して無能な奴だわな。
602 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:46:25 ] C/C++やってた俺には最初ヘッダが無いのが気持ち悪くて仕方なかった
603 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:47:37 ] >>597 非推奨と書いてある箇所は何処でしたっけ?MSDNみてるけど出てこない。
604 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:48:08 ] #defineが無くて幸せ
605 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:49:24 ] マクロには使えないが一応あったような。#define
606 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:49:36 ] あ、#defineマクロのことな
607 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:59:12 ] 条件付きコンパイルはもうちょっと言語を壊さない形で実現できなかったのかな conditional (DEBUG) { }とか
608 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:59:40 ] プリプロセスを無くすのはいいが、ファイルのインクルードまで無くしたせいで 条件付コンパイルがやり難くてしょうがないと思うんだけど。 とくに条件が複数のプロジェクトを横断的に規定するようなものだった場合。
609 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 00:02:52 ] >>601 うわっ、キモっ
610 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 00:03:40 ] >>579 悪いことは言わん。明日の退社後にでも、夜でもやってるパソコン教室へ、せめて1日(2時間)だけでも行ってこい。 最低限のとっかかりがないと、参考書のコードをそのまま入力するのも大変だろうし、ぐぐることもできんはず。 つーか、俺を雇ってくれよ…
611 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 00:09:54 ] なんか変な妄想ふくらませてるのがいるなw 習得に相当時間がかかったのだろうか。
612 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 00:12:26 ] >>610 悪いことは言わん。明日の朝にでも職安へ行ってこい。
613 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 01:17:30 ] >>568 明日の朝、退職願出して、ハローワークに行って、事務か介護か土方の仕事探しな。 お前みたいな奴が居ると迷惑だ。
614 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 06:32:24 ] >>603 msdn.microsoft.com/ja-jp/library/ms229045.aspx アンダースコア (_) やハイフン (-) など、英数字以外の文字は使用しないでください。 ハンガリー表記法は使用しないでください。 読み直したらこれはプロパティのことだけに言ってるのか一般的なことに言ってるのかがわからんようになった。
615 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 07:25:28 ] >>614 >>586 の見解で正しいと思う。 自メンバーのアクセスには全部this.つけろより、 前か後ろにアンダーバーのほうが好みだ。
616 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 08:43:36 ] 日本語使ってるコード見たことあるな
617 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 09:27:46 ] ○○○○○○ToolStripMenuItem_Click(object sender, EventArgs e) これの前に日本語つくよねw
618 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 09:42:06 ] インテリセンスの都合で、後ろに _ の方が好き。 アンダーバーってキーボードの位置的に押しづらくて、先頭に持ってきたくない。
619 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 09:46:47 ] private readonly stringのメンバー変数名って大文字から始まるの?
620 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 09:58:36 ] privateは好きにしろと何度も出てるだろ
621 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 10:18:09 ] 今はC#だからメソッド名とか大文字にしてるけどF#始めるから小文字になる予感。 そのあとC#使うときはどっちになるんだか・・・
622 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 10:24:36 ] 正直どうでもいいな。
623 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 10:25:16 ] F#ってC#と比べてどんなメリットあるの?
624 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 10:54:16 ] >>617 エンティティフレームワークなんて、Hogesってテーブルがあったらデフォルトで エンティティ=Hoges エンティティセット=Hoges設定 だぜ。
625 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 11:12:59 ] ワロタ
626 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 12:05:34 ] プログラミングで初めての言語が C# だとクラスとか よくわからないままになるかもしれないかな。 C++ から入るとあまり問題にならないような気がする。
627 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 12:08:04 ] C++こそクラスから逃げられないと思うんだが…
628 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 12:18:26 ] C# をはじめてのプログラミング言語にすると Main メソッドをもつクラスの意味がわかりづらい。 いきなりおまじないから始まるのはちょっと考えもの。
629 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 12:30:56 ] >>627 逃げられないからこそよくわからないままでいられないってことでしょ?
630 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 12:51:18 ] クラス設計が難しい
631 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 14:33:24 ] >>608 プリプロセスのうちヤバイとされる物の一つだからそりゃなくなるだろ。 また、define の方は、Conditional アトリビュートを使えとのいうがC#流。 これによって、マクロ機能等をライブラリ化する時に捨てず、きっちりdllまで維持して再コンパイル等を防止している。
632 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 15:14:12 ] ファイル横断的にやりたいなら、 csc /define:HOGE ... やMSBUILDのスクリプトで指定するのが原則。
633 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 17:17:09 ] C#でのスレッドセーフなプログラミングに関する簡単な質問なんですが あるクラスインスタンスの値を取得する部分 work = myClass; と、クラスインスタンスの参照をセットする部分 myClass = new MyClass(); これってそれぞれクリティカルセクション化しないとまずいですか? 内部で何をやっているのか分からず不安なんですが、何でもかんでもlockするのは嫌なので… また、intなどの値型でも同じことが言えるんでしょうか。お願いします。
634 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 17:57:08 ] 前提が抜けすぎてて答えようがない。もう少しシナリオをしっかり書こうよ。
635 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 18:42:23 ] そこだけをロックしなけりゃならないことはあまりない
636 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 18:50:18 ] 念のため、なんでもかんでもロックしたところでそれでもスレッドセーフになるわけじゃないぜ
637 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 18:59:04 ] 普通は想定される複数スレッドからの使われ方というのがあって、 その時にどのように動作させるという設計があって、 その上で内部のデータや動作が不正にならないための条件を導いて、 それを壊さないようにロックなどで保護するんだよ。 だから何の前提もなくただスレッドセーフなんてのはない。
638 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 21:49:32 ] // どちらが実行されるでしょうか? bool a = true, b = false, c = true; if ((a = b == c) == (a == b == c)) d(); else e();
639 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 21:53:46 ] d
640 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 21:53:47 ] 宿題か?
641 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 21:55:20 ] 貼りつければ分かるから宿題じゃないです クイズです
642 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 21:58:15 ] 不適切な問題じゃね 演算子の優先順を問う感じだろうけど=と==をどっち優先にしてもdになる気がする
643 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 22:01:08 ] d?
644 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 22:03:05 ] >>642 (a = t == f) == (f == t == f) (a = f) == (f == t) (f) == (f) t (a = t == f) == (f == t == f) (t == f) == (f == t) (f) == (f) t ホントだw
645 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 22:17:53 ] あほやのう
646 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 22:26:34 ] >>644 (f == t == f) が (f == t) ? なんで?
647 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 22:33:06 ] 安産してeだと思った15年目の俺・・・orz 基本的に優先順位とか気にしたくないのでかっこでくくってますが( ゚Д゚)ナニカ?
648 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 22:34:56 ] なんだろうねぇ
649 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 22:39:14 ] なにいってんの? eだろ
650 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 22:53:01 ] >>644 (f == t == f) の出所は?
651 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 23:18:16 ] (a = b == c) == (a == b == c) => (a = (F == T)) == (a == b == c) => (a = F) == (a == b == c) => F == (F == (F == T)) => F == (F == F) => F == T => F なので e が正解
652 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 23:21:37 ] ==演算子って左結合じゃなかった?
653 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 23:28:05 ] >>651 まて結合の優先順位と、実行される順序は別だ。 (a = b == c) == (a == b == c) => (a = (F == T)) == (a == b == c) => (a = F) == (a == b == c) 1) => F == (F == (F == T)) => F == (F == F) => F == T => F 2) => (a = F) == (T == (F == T)) => (a = F) == (T == F) => F == F => T
654 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 23:32:29 ] 大漁ですな(;´Д`)
655 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 23:34:36 ] 式は右辺からと思っていると、 (a = b == c) == (a == b == c) -> X == Y の右辺Yからやることになり、地獄行きになるんです
656 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 00:13:44 ] (==)((a = b == c), (a == b == c))
657 名前:651 mailto:sage [2009/08/06(木) 03:03:09 ] >>652 すまん4行目は F == ((F == F) == T) だな。 結果は一緒。 ttp://msdn.microsoft.com/ja-jp/library/aa691323(VS.71).aspx
658 名前:633 mailto:sage [2009/08/06(木) 09:04:57 ] >>634-637 遅くなってすみません。 たとえば、スレッドAとスレッドBで変数myClassを共有している スレッドAでは、myClassに新規インスタンスをセットする while( 1 ) { myClass = new MyClass(); } スレッドBでは、myClassを作業用変数に確保し、さまざまな処理を実行する while( 1 ) { MyClass work = myClass; workに対しての様々な処理 } 代入演算子はオーバーロードしていません ちょっと何をやりたいかわかりにくいかもしれませんが、これだけを見た場合に問題はありそうですか? 内部的に参照カウント関係の処理が走っていたりして、危険だったりしますか?お願いします。
659 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 09:10:07 ] ダメダメ絶対ダメ スレッドBのループが一回回る間にスレッドAのループが何回回るか全く分からないんだよ? それにいくらメモリを意識しなくていいといったってさすがにノーウェイトでnewしまくったらGCの負担になる
660 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 09:21:04 ] スレッドAとスレッドBの周回数は同期がとれていなくていいです GCの負荷は考慮しないとして、スレッドセーフかっていう質問なんですが・・・ 要するに myClass = new MyClass(); と MyClass work = myClass; のところをロックしないとメモリを壊したりしますか?ってことが聞きたいんです C言語なら問題無いはずですがC#だとどうなのかな?って >>635 の言うようにこれ自体はロックしなくても問題ないんですかね^^;
661 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 09:28:22 ] myClassが共有されてると言うことでおけー? ロックされる云々の前に多分それ意図してるように動かないよ。エスパーしてみるとw
662 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 09:29:44 ] 必ずしも間違った扱いではないけど問題あるかどうかは別だな AでMyClassのコンストラクタが呼ばれた後に,Bで古いインスタンスが使われる可能性はある
663 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 09:32:02 ] ロックするならスレッドBの書かれてない処理のところじゃね?
664 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 09:36:37 ] 参照やintへのアクセスはアトミックと規定されている。 つまり、myClassが32bitだとすると16bitだけ新しい値に書き換わってるという状態は存在しない。 一方doubleやlongはそういう状態が発生しえる。 ただしマルチCPUの場合はもう少しややこしくて、 スレッドAが書き換えたmyClassの内容がスレッドBに反映するまでにタイムラグが発生する場合がある。 これが問題になるならlockを使用するかmyClassをvolatileで宣言する。 Cのvolatileとの違いに注意。
665 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 09:44:52 ] あと、C#のGCは参照カウントじゃないよ。
666 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 09:58:55 ] ま、確実性という意味なら、volatileつけとけば確実。 ただしなくてもメモリが壊れるとかのレベルの問題はない。 実質的にはCLR2.0以降のメモリモデルと86系CPUのメモリモデルから、 事実上はvolatileなくても問題ないはず。
667 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 10:02:26 ] あ、確実というのは、可能な限り最新のインスタンスを使うという意味でね。
668 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 10:13:30 ] Interlocked.Exchangeでも使えば
669 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 10:40:47 ] volatileを使わない場合はもうひとつ問題があって、 MyClassの初期化が終わる前にスレッドBに参照が渡ってしまう可能性がある。 ただし、これが起きるのはMSだとItatiumの場合だけ。 原理的には有名なダブルチェックロッキング問題と同じ。 myClassをvolatileにしない場合のスレッドA while( true ){ MyClass tmp = new MyClass(); Thread.MemoryBarrier(); myClass = tmp; }
670 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 11:15:28 ] おまいら詳しいのな
671 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 11:20:35 ] それもCLR2.0以降では大丈夫でそ。 ついでにその問題を出すなら、Aのメモリバリアだけじゃだめ。 なぜなら、Bスレッドのワーク変数が目的通りに動かないから。 ワーク変数への各アクセスで、新しい参照を読んでしまう危険がある。 かなり直感に反する動作だと思うけど。 結局この場合もvolatileつけるのが最も簡単確実。
672 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 11:58:19 ] >>671 いや大丈夫でないから.NET2.0で.MemoryBarrier()が追加になってるわけで。 myClassからworkの参照コピーは1回限りのようだから問題ない。 work変数はローカルなんだし、 MyClassはスレッドAでセットしたあとは放置状態なのだから、 途中で新しい参照を読み込むことはありえない。 workは一貫したクラスを参照できてれば、MyClassのバージョンは問わないという前提だよ。
673 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 12:00:37 ] C# 2.0で質問です。 List<int> _list = new List<int>(); //(本当はintではなくクラスなんですが説明しやすいようにintで・・・) _list.Add(1); _list.Add(2); _list.Add(3); _list.Add(4); _list.Add(5); foreach(int data in _list) { Console.WriteLine(data); } このような感じで記述した時に List<int>はインデックス0からデータを順番に必ず返すのでしょうか? やってみた感じ必ず返っては来ているようなんですが、保障されているというような感じの文章がヘルプから探せなかったので質問させていただきました。 よろしくお願いいたします。 コレクションやソーテッドリストなんかはその並び順は勝手に変わるようですがListオブジェクトはどうもみあたらない・・・orz
674 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 12:11:22 ] foreach が配列の要素を走査する順序は、次のように定義されます。 1 次元配列の場合、要素はインデックス 0 から始まってインデックス Length ? 1 で終わるインデックスの昇順に走査されます。 多次元配列の場合、要素は、最初に右端の次元のインデックスが増加し、次にその左側の次元のインデックスが増加し、さらにその左側の次元のインデックスが増加する、というように走査されます。
675 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 12:37:54 ] >>674 int のコレクションとして考えれば0〜インデックスの最後までの順序で処理される それでもってListコレクションの中身も同じように処理されるということでしょうか? ということであればすっきり処理を続けることができます。 ありがとうございました!
676 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 13:09:05 ] >>672 違うよ。 メモリバリアはCLIの標準仕様では必要。 CLR2.0以降の実装では不要だとしても、互換性の為には必要になる。 だからある。 あとソースコード上はワーク変数に1回だけ取得してても、 実際にはワーク変数を削除して毎回実体にアクセスするという、 直感的でない最適化が行われる可能性があるんだよ。 共有してる変数をvolatileにすればそれを防げる。
677 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 13:11:03 ] この辺はいつだったかのMSDNマガジンに詳しく書かれてる。
678 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 14:05:33 ] >>676 ありがと、勉強になった。MSDNマガジンで確かに見た気がするがスルーしてた。
679 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 14:46:29 ] ごめんもう一つ補足。 CLR2.0以降では書き込みアクセスでのvolatileは事実上不要だけど、 読み取りでは必要な可能性もあったと思う。 書き込み順序と回数はデフォルトでvolatileのように保証されるが、 読み込みは場合によっては省略されることがある。 ただ、その他諸々の事情により、実際に問題が出るパターンはあまりなかったと思う。
680 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 17:20:59 ] C#からUnmanaged-DLLを利用する場合についての質問です。 DLL側でThread Local Strage(__declspec(thread)を付けた静的変数)を使用し ている場合、(DLL内の関数がC#から呼び出され)DLL内でこれにアクセスしよう とした時にSystem.AccessViolationExceptionになるようです。(エラー画面.PNG) DLL側を修正せずに、C#側の修正もしくは他の手段でこれを回避する方法はあ りませんでしょうか? www1.axfc.net/uploader/Sc/so/24967.zip&key=Test は問題を再現する簡単なコード例です。 Test\MyDll\MyDll.cpp の18行目が__declspec(thread)を付けた静的変数で、 これを、N:\Test\MyCSApp\Program.cs の29行目から呼び出されたMyFunc(5)の 処理でszMyLastErrorにエラー情報をセットするところで例外が発生します。 Test\MyC++App は同じ処理をC++で記述した場合で、これは問題なく動作しま す。 以上、よろしくお願いいたします。
681 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 17:43:07 ] >>680 ttp://msdn.microsoft.com/ja-jp/library/2s9wt68x(VS.80).aspx の一番下
682 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 17:57:52 ] C++/CLIあたりでlibを使ってラッパ作れば何とかなるかもね
683 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 21:44:03 ] レスありがとうございます。 >>681 症状からして、そのページに書かれていることが起きている(C#はDLLを動的にローディングしている) のだろうな、とは思っていたのですが、それを回避する方法がなにかあるのではないかと質問させてい ただきました。 >>682 MangedなラッパDLLを作成し、これにMyDll.libをリンクしてみましたが、ラッパDLLがC#アプリからは 動的にローディングためか結局ダメでした。 何か、裏技がありませんかねえ??
684 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 21:52:25 ] 別 Exe にしてプロセス間通信するしかないだろ。
685 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 21:57:02 ] C++/CLIから起動してC#側を動的ロードするとか
686 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 22:23:54 ] DLLのほうを触っていいならTlsAllocを使えばいいはずだけど。
687 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 23:40:08 ] COMのアウトプロセスサーバーでラップすると何とかなりそうだが、 激しくめんどい。 インプロセスサーバーだと駄目だった。
688 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 02:56:45 ] 一番現実的なのは>>685 だろうな マネージ側は参照だけでいいんで動的ロードとか言わんけど
689 名前:デフォルトの名無しさん [2009/08/07(金) 08:47:30 ] .NETのWindowsアプリケーションで作成したプログラムにおいて、 ネットワークPCのドライブにあるフォルダをアクセスしようとした時、 たまたまそのPCが立ち上がっていなくてネットワーク上に見つからない 場合に長く待たされていました。このタイムアウト時間はたぶんOS の設定で変えられるものとは思うのですが、タイムアウトにならない うちにプログラムでアクセスを中断してしまうことは可能でしょうか?
690 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 10:09:55 ] C#でパケットキャプチャしたいのですが、サンプルありますか?
691 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 10:18:07 ] www.stackasterisk.jp/tech/program/howtosniff01_01.jsp sourceforge.net/projects/sharppcap/files/SharpPcap/
692 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 11:42:39 ] >>691 ども、でもなんかよくわからないです エラー 2 型または名前空間名 'NetDefineSet' は名前空間 'StackAsterisk' に存在しません。アセンブリ参照が不足しています。 とか
693 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 12:04:49 ] お前にはまだ早いということだね
694 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 12:16:19 ] >>689 別スレッドでチェックしに行って適当にタイムアウトとかできるんじゃ?
695 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 13:22:57 ] >>692 そういやなんかサンプルそのままじゃビルドできなかった記憶があるな >The Code Projectによいサンプルがあったので拝借させていただき、それを元に書いてみました。 >元となったのは 「RawSocket Class-Create Network Monitoring (Packet Sniffing) Apps」 というものです。 って書いてあるしそっちも参考にするといい
696 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 14:39:34 ] スレッド分けるのに一票
697 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 14:49:45 ] Process.Start()で存在しないフォルダを起動したら、FileNotFoundExceptionじゃなくてSystem.ComponentModel.Win32Exceptionというのが来る Frameworkが吸収するところじゃないのか
698 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 15:34:45 ] あなたはそれがいいと思うかもしれないが、 大多数の他人はそう思わない
699 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 16:48:15 ] いやそうでもない
700 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 16:59:52 ] Frameworkが吸収すべき所のような気がするけど 実害は無いからとやかく言わない
701 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 17:06:23 ] >>697 つうかふつうに固まるだろ・・・・ 問題はみに行く時に固まるつうのが問題なわけで なにかボタン押したときにチェック ↓ チェック中ですのダイアログ的なものと共に強制キャンセルボタン ↓ チェック開始(バックグラウンドワーカーでもなんでも) ↓ バックグラウンド終了前にキャンセルされたら ナックグラウンドワーカー停止 こんなんでいいんじゃね? 成功のときはバックグラウンドの完了イベントかなんかで処理するとか 色々あると思うけど
702 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 17:25:47 ] Microsoftの決めたことなんだから正しいお
703 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 18:37:58 ] >>697 吸収してどうしろって? 別プロセスからの例外をプロセス間通信で受け取るの? それをフレームワークでやれって?
704 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:01:23 ] なん…だと…
705 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 20:19:40 ] Windowsフォームで質問。 Form2 _form2 = new Form2(_form1); としたとき、_form2.FormClosedのイベントハンドラで_form1.Close()するコードを書くと、 Form2.OnFormClosed()が何度も呼ばれる(つまりFormClosedイベントが何度も発生する) ようなんだけど、これは仕様?バグ? 仕様だとしたらどう理解したらいいんだろう?
706 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 20:25:45 ] OwnerはCloseするときOwnedFormsを全部Closeする って言えば分かる?
707 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 20:34:10 ] >>706 そのレベルの話はOK
708 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 20:53:58 ] 普通に再帰呼び出しになってるだけっしょ 止まるのはハンドルが消えるから
709 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 20:59:15 ] >>708 現象の説明としてはそれでいいと思うんだけど、 俺が聞きたいのはそういうことじゃなくて、それが仕様なのか、 仕様だとしてそれに何らかの意味があるのかってこと。 FormClosedイベントの意味は、「Close()が呼ばれました」ではないはずだよね。
710 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 21:06:03 ] > FormClosed イベントは、ユーザー、Close メソッド、または Application クラスの Exit メソッドによって > フォームが閉じられた後に発生します。 「Form.Closeが呼ばれました」でも大体いいんじゃないかな ま、おいらはMSの人じゃないので意味とか答えられないけど
711 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 21:09:46 ] >>710 それはさすがに読解力マズいんじゃないかと思うけど。。
712 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 21:50:30 ] 何度も呼ばれるって何度?
713 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 21:52:55 ] バグだよ、>>705 のプログラムのね
714 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 21:55:57 ] Closed≠Disposedと理解すれば良い
715 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 22:07:36 ] >>710-711 MSDNの説明から読み取れるのは ・ユーザ操作、Close()、Application.Exit()で発生しうる ・FormClosedが発生した時点ではフォームは閉じられている の2点だけじゃね? てか、説明が怪しいと感じたら英語版を読むといい それでも怪しいときも多いけどな
716 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 22:20:48 ] ちなみに何回くらい呼ばれるの? また毎回同じ回数なのか場合によって変わるのかどんな感じ?
717 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 22:33:34 ] >>716 以下が問題を再現する最短のコード。 コンストラクタは省略してある。 public partial class Form1 : Form { Form2 _form2; protected override void OnLoad(EventArgs e) { base.OnLoad(e); _form2 = new Form2(); _form2.FormClosed += new FormClosedEventHandler(_form2_FormClosed); _form2.Show(this); } void _form2_FormClosed(object sender, FormClosedEventArgs e) { Close(); } } public partial class Form2 : Form { int _count = 0; protected override void OnFormClosed(FormClosedEventArgs e) { base.OnFormClosed(e); Console.WriteLine("Form2.OnFormClosed Called ! // count = {0}", _count++); } }
718 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 22:53:53 ] >>717 とりあえずDisposedイベントでForm1.Closeやるように変更したら 現象回避出来たぞ
719 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:00:06 ] >>718 うん、それはわかるけど、 俺が知りたいのはこういうコードを書くと「何故」そんなことになってしまうか、なんだ。 普通に考えれば、OnFormClosedが何度も呼ばれるのは理解に苦しむと思うんだが。
720 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:00:45 ] Form2ClosedでForm1Closeして新しいClosedが発生するのがおかしいと言ってるの? 何がおかしいのかよくわからない
721 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:02:44 ] >>719 まあ所持関係にあるForm同士として呼び出してるんだから > _form2.Show(this); Form1閉じる→Form2閉じる っていうのは標準動作として組み込まれてる 逆方向の動きを追加したい場合(Form2閉じる→Form1閉じる)は 標準の動作と競合しないようにしなきゃ不具合が起きて当たり前 FormClosed()の時点ではForm同士の所持関係を破棄していないようなので 無限ループが起きる Disposed()の時点でForm同士の所持関係を破棄しきったので やりたい動作が実現できる
722 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:07:42 ] FormClosedイベントなんだから、「完全にフォームが閉じた後」に発生しないとおかしい と言いたい訳か。 んで_form2が完全に閉じた後だから、_form2_FormClosedが呼ばれても子フォームのCloseが呼ばれるのはおかしい、と
723 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:15:06 ] Close()をこうやって呼べばいけるっちゃいける。 this.BeginInvoke((MethodInvoker) (() => Close())); 親フォームが子フォームを閉じるための参照のコレクションを持ってて、 親フォームから登録を抹消するタイミングがFormClosedの後なんだろうな。
724 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:16:44 ] >>722 >_form2が完全に閉じた後だから、_form2_FormClosedが呼ばれても子フォームのCloseが呼ばれるのはおかしい、と いや、そこは必ずしもそうは思わないけど、>>717 のコードの動作が「おかしい」と思う点は、 何度も言うけどOnFormClosedの呼ばれ方が、MSDNに書かれたFormClosedイベントの仕様に 反するように思える点。
725 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:17:10 ] >>723 なんかそれタイミング次第で うまく行ったり例外おきたり 危険な動作しそうな気がする
726 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:18:43 ] 例えば、Form.Show()は何度でも呼べるけど、 その都度Shownイベントが発生したりはしないよね。
727 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:19:47 ] >>724 Formのオーナーシップの関係で Formクラスから子FormのCloseが呼び出されるってことでしょ 何も反してないよ
728 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:23:40 ] >>727 だから、FormClosedイベントの意味、つまり仕様は、「Closeメソッドが呼ばれました」 ではないよね。少なくともMSDNライブラリを詠む限り、そうは読み取れない。
729 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:26:58 ] お前が明示的に呼んだときしかCloseメソッドが呼ばれないと思ってるということか
730 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:37:46 ] >>729 こんなこと言いたくないが、馬鹿はすっこんでてくれよ。 二重の意味で日本語も読めないのかまったく……
731 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:40:59 ] >>730 どう見てもお前の方が馬鹿だが
732 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:41:33 ] むしろMSDライブラリを読み取れないレベルの馬鹿がやめた方がいい お話になりません
733 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:59:09 ] 横やりだが>>728 とかの言ってることは別にそんなおかしくないぞ。 Closeを何度呼ぼうが、実際に閉じたタイミングで一度だけ発生する と期待するのは普通の感覚。 MSDNの説明も普通に読めばそうだと期待する。 一度しか呼ばれない、とは明記されてないし結局仕様なんだろうとは思うけど。
734 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 01:05:38 ] 1度テストしてみて理解できないようなら方法は無い
735 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 01:14:25 ] MSDNのクラスのドキュメントって クラス単体の動作を説明してるのが基本であって フレームワークの中でそのクラスがどう扱われてるかは オマケ程度にしか説明されていない っていうことをわかって無いから的外れなこと言い出すんだよね
736 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 01:28:44 ] >>735 ほほう、「的外れ」とは? 具体的に何がどう「的外れ」だ、と? いや、無理しなくていいよ。 そんな自分の頭で理解していることを表現しているとは思えない、 悪いけど意味不明な文章を書いているようじゃたぶん正面からの回答は無理だと思うから。 しかし、別に初心者が悪いと思わんけど(誰だって最初はそうだし) 知りもしないことに口出しして挙句に相手をいきなり罵倒する奴っていうのは 迷惑以外の何者でもないな本当。 初心者どころか自分でイベントを生成するコードすら書いたことすらないのが、 言っちゃ悪いがミエミエなのに。 まあそれ以前に日本語もまともに読めていないようだけどw 2chでこんなこと言ってみても仕方ないのは分かっているが、あまりに腹が立ったのでね。
737 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 03:20:05 ] ここでクダ巻いててもしょーもねーだろw
738 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 04:57:36 ] 長文書いたら負けですよ
739 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 06:37:29 ] 閉じられる理由位見ろ _form2_FormClosed() の処理が if (e.CloseReason == CloseReason.UserClosing) Close(); じゃないの点が問題なんだよ 何度も Form2 に FormClosed が送られてくるのも あくまでも Form2.FormClosed イベントが終了していない段階で Form1 を改めて閉じようとしているからループしてるに決まってるだろ ユーザ操作以外ではどうせ親から Close が送られてくるから無視でいい
740 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 16:24:06 ] Form 1 の中で生成した Form2 を破棄しようとして起きるんじゃないの
741 名前:デフォルトの名無しさん [2009/08/08(土) 18:41:56 ] テキストボックスやパネルの境界線の色をグレーや薄いブルーなどにするにはどうすればいいですか? また、 ラベルの上に小さめのテキストボックスを重ね、一つのコントロールにすることはできますか? 調べましたが分かりませんでした。 どなたか教えてください (T_T;)。
742 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:08:28 ] WPFをつかっとけ
743 名前:デフォルトの名無しさん [2009/08/08(土) 19:45:28 ] >>742 WindowsフォームアプリケーションでWPFのコントロールを使えるんだっけ…。
744 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:50:05 ] >>740 ユーザ要求により Form2 に WM_CLOSE が送られ その処理中に Form2 から Form1 に WM_CLOSE が送られ Form1 が閉じる際に子ウィンドウに対して WM_CLOSE が送られ その処理中に Form2 から Form1 に WM_CLOSE が送られ…… WM_CLOSE から発生する一連の処理が終了してない間に 改めて WM_CLOSE を流したらループするだろ
745 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:51:38 ] >>743 Windows Forms の編集時にツールボックス見たら WPF 相互運用機能グループに ElementHost あるでしょ
746 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:56:57 ] >>717 の場合は、別にWin32のウィンドウメッセージの水準で連鎖が起こってるわけじゃなく、 あくまで.NET Frameworkの、いわゆる「イベントの連鎖」が起こってるだけ (しかも仕様というよりバグが原因ぽい)だから、ちょっとその説明は違うと思うけど。
747 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:57:05 ] なんでElementHost なんてわけわからん名前にしたんだ?
748 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:09:08 ] 至って普通の名前だと思うが・・・
749 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:11:01 ] わけわからんって。 Element(UIElement) を Host するから ElementHost。
750 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:14:18 ] WinFormだけでやるなら、 TextBoxやらはボーダーなしにして、 その親としてPanelを用意して、 そのPanelのPaintで枠を描画
751 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:15:37 ] このスレはMS信者に乗っ取られているようだ 嘆かわしい
752 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:31:56 ] まぁC#使ってる奴の99.9%がMS使いだと思うよ(´・ω・`) だれかC#でiPhone開発してる人来ないかな・・・
753 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:34:52 ] というかどこから >>751 が出てきたんだ?
754 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:44:26 ] 何かのキーワードに反応するボットじゃない?
755 名前:デフォルトの名無しさん [2009/08/08(土) 21:12:16 ] >>750 PanelにPaintができるの? 枠線入りの画像をパネルの背景にするってこと?
756 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 21:17:07 ] 普通にPaintできるだろ もしWPFを使うなら,テキストボックス一つ一つをElementHostでホストするようなことはお勧めしない ある程度の大きい範囲で丸ごとWPFにしてElementHostに乗せる
757 名前:デフォルトの名無しさん [2009/08/08(土) 21:28:28 ] >>755 具体的にどうやるの? panel1_iventが出てきたけど…。
758 名前:デフォルトの名無しさん [2009/08/08(土) 21:45:35 ] paintイベントって、formをloadしたときに自動で発生するの?
759 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 21:51:23 ] 描画が必要なとき もちろん初めにフォームを表示するときも呼ばれるな
760 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 21:51:35 ] くれくれしすぎは
761 名前:デフォルトの名無しさん [2009/08/08(土) 22:14:24 ] もしパネルやテキストボックスがたくさんある場合、 それらの全ての四辺を描画するならば、 重たくなりそう。
762 名前:デフォルトの名無しさん [2009/08/08(土) 22:16:19 ] >>756 ラベルやテキストボックスにbordercolorがないのが困る。
763 名前:デフォルトの名無しさん [2009/08/08(土) 22:17:19 ] >>756 エレメントホストはどれくらい重たいのかな。 今からやってみよ。
764 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:01:35 ] >>741 なんかまともにレスする奴がいないんで見てられないからレスするけど、 そんなのは普通にTextBoxを継承してカスタムコントロール作ってやればいいんだよ。 class TextBoxEx:TextBox { public TextBoxEx() { BorderColor = Color.Red; BorderStyle = BorderStyle.FixedSingle; } [Category("Design"), DefaultValue(typeof(Color), "Red")] public Color BorderColor { get; set; } [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public new BorderStyle BorderStyle { get { return base.BorderStyle; } set { base.BorderStyle = value; } }
765 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:02:47 ] * 764続き * protected override void WndProc(ref Message m) { base.WndProc(ref m); const int WM_PAINT = 0xF; switch (m.Msg) { case WM_PAINT: using (Graphics g = CreateGraphics()) { using (Pen pen = new Pen(BorderColor)) { Rectangle rect = ClientRectangle; rect.Width -= 1; rect.Height -= 1; g.DrawRectangle(pen, rect); } } break; } } }
766 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:09:41 ] >>765 細かいことだけど、WndProcよりもOnPaintのオーバーライドのほうが簡潔では? もちろんsuper.OnPaint呼ぶ手間含んで。
767 名前:デフォルトの名無しさん [2009/08/08(土) 23:09:50 ] >>765 すごい。ありがとうございます。がんばって解読します。 この継承クラスをまた継承したら、命令を抑えてコーディングできますね。 ※ なんで継承したら、bodercolorが出てくるんだろう---。
768 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:10:55 ] >>766 やってみればわかるよ。
769 名前:デフォルトの名無しさん [2009/08/08(土) 23:12:08 ] 例えば50個のテキストボックスを表示させ、 それら全てに色枠線を描いたら、重たいのかな。
770 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:30:00 ] >>768 ごめんなさい。言うとおりだった。 ググったらこんな記述も見つけた。PaintイベントがないならOnPaintもなくて当然か。 msdn.microsoft.com/ja-jp/library/system.windows.forms.textboxbase.paint.aspx > TextBoxBase.Paint イベント > コントロールが再描画されると発生します。このクラスでは、このイベントは使用されません。
771 名前:デフォルトの名無しさん [2009/08/08(土) 23:35:45 ] panelならOnpaintも可能なんだろか。
772 名前:デフォルトの名無しさん [2009/08/09(日) 07:46:49 ] >>765 さんの記事に、 「using (Pen pen = new Pen(BorderColor)) 」 という行がありますが、using句は名前空間の定義のみに使用するわけではないのですか? どういうケースでusing句を指定するケースがあるのでしょうか。
773 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 07:47:50 ] msdn.microsoft.com/ja-jp/library/yh598w02.aspx MSDNくらい読めよクソタコ
774 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 07:54:42 ] >>765 using (Graphics g = CreateGraphics()) { using (Pen pen = new Pen(BorderColor)) { } } だとネストが深くなるから using (Graphics g = CreateGraphics()) using (Pen pen = new Pen(BorderColor)) { } の方がいいな。
775 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 07:56:28 ] }それならこれでいいだろ using (Graphics g = CreateGraphics(), Pen pen = new Pen(BorderColor))
776 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 09:16:17 ] >>775 そうやって並べると見辛くないか? >>774 でいいじゃん
777 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 10:00:28 ] わざわざ1行にする意味ないな
778 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 10:26:24 ] 「黄金分割」<副題> ピラミッドから ル・コルビュジェまで 柳亮著 美術出版社 1965年の出版でしかも純粋な美術書。でも、なぜフィボナッチ数の課題を 出されるのかピンとこないプログラマは一度目を通してみるとよい。
779 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 11:14:40 ] 黄金分割なんてうさんくさいと思うのは俺だけか?
780 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 12:15:28 ] みんなが黄金といっているのだから黄金なんだろう
781 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 12:23:24 ] 僕には黄金はまだきついので聖水でいいです
782 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 13:30:33 ] 名前が胡散臭いだけで特別なものでも不可思議なものでもないけどね。
783 名前:778 mailto:sage [2009/08/09(日) 17:47:10 ] >>779 すみません。これ誤爆でした。
784 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:35:56 ] >>775 コンパイル
785 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:08:36 ] >>765 こうやると枠線だけ書いて、中の文字塗り潰してしまうイメージあったけど これでいけるんだ 勉強になりました
786 名前:デフォルトの名無しさん [2009/08/09(日) 19:13:38 ] このやり方で重たくならないならば、俺もやりたい。 みんな、なんでそんなに詳しいの? 頭脳を分けてほしいよ。
787 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:14:55 ] もっと簡単にできたとおもうが。
788 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:23:35 ] listviewのcustomdrowめんどくさー
789 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:27:50 ] ユーlistviewつくっちゃいなYO!
790 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:33:28 ] customdrow?
791 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:37:31 ] カスタムドローで合ってるぞ オーナードローじゃないぜ
792 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:44:39 ] dr o w?
793 名前:デフォルトの名無しさん [2009/08/09(日) 21:05:54 ] >>784 このロジックはどこに書くの? デザイナーズcs? それとも本体の方?
794 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 21:39:42 ] いろいろ作ったらさ SS見せてほしいんだけどw
795 名前:デフォルトの名無しさん [2009/08/09(日) 22:21:54 ] >>794 SSってなに?
796 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:24:17 ] Secret Service
797 名前:デフォルトの名無しさん [2009/08/09(日) 22:26:35 ] SQLサーバーを借りてるんですが、直にSQLを書くのと、linqを使うのと、どちらがメリットが高いですか?
798 名前:デフォルトの名無しさん [2009/08/09(日) 22:28:15 ] ボーリングのスコア表をC♯で作りたいんだけど、 膨大な数のテキストボックスを早く負担なく描くには何かいいテクニックはありますか?
799 名前:デフォルトの名無しさん [2009/08/09(日) 22:29:39 ] >>798 なんでボーリングスコア表なんていんねん。
800 名前:デフォルトの名無しさん [2009/08/09(日) 22:31:47 ] >>798 マウスを使って一つずつペタペタ描く。 それしかないだろ。 本を見てもそう書いてた。 間違っていたらごめん。
801 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:40:38 ] 手っ取り早いのはGirdじゃね
802 名前:デフォルトの名無しさん [2009/08/09(日) 22:45:24 ] >>801 ジードって読むの? 初めて聞きました。 詳しく教えてください。 僕もマウスて配置していてくたびれました。
803 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:47:17 ] 1文字間違えるのが流行りなのか? DateGridView
804 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:48:40 ] >>800 その本は何個のテキストボックスをポトペしていた? 10個超えてたらダウト
805 名前:デフォルトの名無しさん [2009/08/09(日) 22:59:55 ] >>804 5つのコマンドボタン。 揃える技は書いてたけど、大量描画についてはコメントなし。
806 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 00:37:08 ] ストライクとかのアイコンはどうすんの? 結局自前で描画する予感 なら1枚絵で作ってしまえ!とか
807 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 00:42:53 ] DataGridViewはアイコン置けるよー
808 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:34:20 ] 複数の定数を定義したクラスの中に存在する、 定数に要素に全てアクセスするにはどうすればよいでしょうか? for each 的なコードがあればお教えください。 class TestClass { public const string const_test_1 = "aaa1"; public const string const_test_2 = "aaa2"; public const string const_test_3 = "aaa3"; public const string const_test_4 = "aaa4"; }
809 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:39:29 ] 設計から見直せタコ
810 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:41:46 ] >>808 案1 人手で全て列挙を行う 案2 コンパイラの忠告を無視して後々のメンテナンスを全て投げきってもいいならリフレクション 後で人手で行った場合の数倍のツケを支払う覚悟があるなら 機械的にリフレクションを通してもいいかも
811 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:41:54 ] 配列で用意しとけよそんなん
812 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:47:17 ] >>810 案2の方法をお教えください。
813 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:48:25 ] >>812 c# リフレクション フィールド 列挙 で出てきたの↓ dobon.net/vb/dotnet/programing/typegetmembers.html
814 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:50:23 ] >>813 ありがとうございました。
815 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 02:11:58 ] リフレクションなんか馬鹿に勧めるな馬鹿。
816 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 02:29:09 ] >>815 馬鹿のお前がいっても説得力がない。
817 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 02:31:24 ] リフレクション使って全部実行時に行う必要もなくて 一旦リフレクション使って集計して その後手作業でソース起こしてもいいかもね
818 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 07:04:01 ] yieldでよくね?
819 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 09:10:28 ] >>817 これはよくやる 自動生成しちゃえばいいんだよね
820 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 11:09:01 ] リフレクションとか難しすぎて頭おかしくなりそう
821 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 11:26:49 ] >>819 日本語としては「ひちがつ」が正しいがレッドブックの「なながつ」も間違いではない ただ朝鮮人や関西人が良く使う「しちがつ」は明らかに間違い これを使っていると日本人である事を疑われるので気を付けるように
822 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 11:31:29 ] >>821 なんか最近BOT多くね?
823 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:27:14 ] 馬鹿ウヨ死ねや
824 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 20:20:39 ] lex とか yacc を思いだした
825 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 00:07:46 ] リフレクション使うならせめてconstではなくreadonly使おう constとリフレクションは非常に相性が悪い
826 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 01:13:45 ] >>825 もしかしてCLI時点でconst修飾の名前ってきえちゃうの?
827 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 01:29:13 ] ビルドした時点でリテラルに置き換わるんじゃなかったか
828 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 01:31:13 ] んだよ だからリテラルにできない物はconst宣言できない
829 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 01:38:09 ] 使用した場所はリテラルに置き換わってるが、 型の定義としては残っているのでリフレクションで確認できる。 public static const field System.String const_test_1
830 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 01:40:05 ] ildasmの表記のほうがいいな。 .field public static literal string const_test_1 = "aaa1"
831 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 01:57:24 ] しょうがないんだろうけれど、Attributeのコンストラクタ?に普通のオブジェクト生成式とか書けるようになって欲しいお(´・ω・`)
832 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 02:26:21 ] むちゃゆうな まあ気持ちは分かる
833 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 08:30:52 ] Expression<TDelegate>さえ書ければ解決なのに
834 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 02:27:35 ] TDelegateってなんだ。
835 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 06:20:06 ] Delegateは特殊クラスなのでこういう制約は作れないってことだと思う。 class F<T> where T : System.Delegate
836 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 20:09:48 ] IL 上作れないわけじゃないよ。実際 ECMA335 には 一例として載ってる。 要するにわざと禁止しているものなので理由を考えて みるといいと思うよ
837 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 15:52:09 ] 1日分のログを日付フォルダごとに分けて保存していて 一定期間経過したフォルダを DirectoryInfo.Delete(true)で削除しているんだが 毎日少しずつ削除時間が延びていくんだが なんか理由知っている人いない? 削除の他にも処理をしているんだが なぜか削除だけ時間がかかる IOの問題なのかな? ちなみに、、、 OS:windows 2003 server R2 Enterprise x64 Edition Service Pack2
838 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 16:39:00 ] 普通にコマンドで消した時は遅くないの?
839 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 20:45:04 ] 削除してる間にログを他者が見てるって事はないの? そもそもログの量、大きさは同じくらいなの?
840 名前:デフォルトの名無しさん [2009/08/14(金) 00:23:18 ] 処理内容がわからんから何とも胃炎。 毎日一定時間に処理をしてるんじゃないのか。 削除終了時に終了後から一定時間をセットするなら 削除処理にかかる時間分ずれていくだろ。
841 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 00:45:25 ] すいません vista + C# express edition + excel2007です 参照設定で参照の追加でcom タブでmicrosoft excel5.0をみると microsoft excel5.0 ?????????? と出てるんですけど・・・ これって一体・・・・2007以前のexcel入れれば治るのでしょうか? とても不安です・・・ 壊れてるのかなC#・・・(涙
842 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 02:03:58 ] >>837 最初は断片化かな?とか思ったけど、メモリリークな気もする。 C#はジェネリクスとnewで管理されているけど解放されないメモリが 簡単にできちゃうから、仮想メモリにガリガリアクセスして時間が かかってしまう可能性も否めない。 Process Explorerあたりで確認して、GCのジェネレーション2が 異常にでかいサイズなら解放漏れ(ジェネリクスのClearやDisposeのし忘れ)を 確認してみたらどうだろう。
843 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 02:06:10 ] >>842 気になる これってアンマネージドで管理されているメモリの話? それともマネージドだが古すぎてpermanent(永久?)領域に直ぐに移されちゃう話? それとも両方混ざった話?
844 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 02:13:25 ] マネージドでしょ
845 名前:842 mailto:sage [2009/08/14(金) 02:35:11 ] マネージドの話。 ちょっと怖い書き方をしてしまったけど、要は使わないクラスがどっかで 参照されてるので消されずにメモリが圧迫されてるかも、という事です。 ソートとかで一時領域として使ってたDictionaryに、そのまま参照が残っちゃってて、みたいな。 開発中、デバッガ終了後なかなか処理が戻ってこない時はこの現象が起きてるか 疑ってみたほうがいいかも。と、経験者よりorz
846 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 05:20:44 ] DirectoryInfoのインスタンスは使いまわしてるか、毎回newしてるか。 Directory.Delete(String, Boolean)を使ったらどうか。
847 名前:841 [2009/08/14(金) 08:32:26 ] 初心板にまわります
848 名前:837 mailto:sage [2009/08/14(金) 11:20:52 ] みなさん、ありがとうございます。 >>838 ディレクトリのサイズが32MBぐらいで 普通に"rmdir"コマンドで削除すると1分ぐらいです。 >>839 削除しているのは、数日経過したディレクトリなので 他の人は見てないです。 >>840 日付ごとにディレクトリを作成して その配下に時間ごとのサブディレクトリを 作成してプロセスごとのログを出力しています。 "日付ディレクトリ"の日付を見て 数日経過していたら削除するという 処理を行っています。 >>842 自分も最初はメモリリークを疑っていました。 ページファイルが1日で5MBずつ増えていますが そのせいで削除処理が約30秒も伸びるんでしょうか? 削除処理だけで、他の処理は遅くなっていないのも 気になっています。 >>846 毎回newしています。 解放処理は明示的に行っていないので 参照が残ってしまっているのでしょうか?
849 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 12:18:00 ] >ディレクトリのサイズが32MBぐらいで >普通に"rmdir"コマンドで削除すると1分ぐらいです。
850 名前:デフォルトの名無しさん [2009/08/14(金) 12:58:35 ] 削除の処理にかかる時間が延びてるってことか
851 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 13:54:14 ] 32MBで一分ってその時点で遅すぎねーか?
852 名前:837 mailto:sage [2009/08/14(金) 14:04:49 ] >>850 そうです。 削除の時間が日々伸びています。 >>851 ディスク上のサイズは204MBでした。 遅すぎですかね?
853 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 14:07:13 ] ファイル数くらい書けよ。 エスパーさせんな
854 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 14:08:40 ] シャドウコピーとかは有効になってる?
855 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 14:42:25 ] ファイル数がきっと膨大なはず ファイルの数があまりに多いと関連の処理がどんどん重くなる 確かWindowsのファイルテーブルてツリー構造してるの見た目だけで 実際はドライブごとに一つの表があるだけだから ドライブ内のファイル/フォルダの数が多くなる度に ファイル/フォルダ絡みのあらゆる動作が遅くなる 間違ってたらごめん
856 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 15:14:19 ] NTFSだったらB木使ってるからFAT32よりも格段に速いよ
857 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 15:22:48 ] >>856 フォルダの中身ごと削除の時点で全スキャンだし
858 名前:837 mailto:sage [2009/08/14(金) 15:58:22 ] >>853 すみません。。 フォルダ数:約9500 ファイル数:約52500 膨大な数ですよね。 >>855 毎回削除する"フォルダ数"/"ディレクトリ数"は 変わらないのですが それでも段々遅くなるのでしょうか?
859 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 16:07:16 ] >>858 数日でそんなに溜まるログとか設計が狂ってる
860 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 16:10:39 ] いっその事DBにログ記録しろ
861 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 16:18:10 ] 単純に一日のログを1ファイルにまとめるだけでも 相当マシになるはず
862 名前:837 mailto:sage [2009/08/14(金) 17:51:15 ] みなさん、ありがとうございます。 設計というよりも、そういう仕様なので 仕方ない部分もあるのですが・・・ アドバイスを参考にしたいと思います。
863 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 18:46:36 ] それ、プログラム終了させて新たに起動したらあきらかに速度が違う というのなら、今まで消したファイルもスキャンしてるとかないか?
864 名前:842 mailto:sage [2009/08/15(土) 01:15:55 ] >ページファイルが1日で5MBずつ増えていますが >そのせいで削除処理が約30秒も伸びるんでしょうか? >削除処理だけで、他の処理は遅くなっていないのも >気になっています。 その、今の所、日を追うごとに増えているデータってのが ページファイルだけなら疑ってみる価値はあるかと。 ファイル削除とページングでハードディスクへのリクエストがかち合って ガリガリ言ってる時間が長くなれば可能性はあるかと。 削除プログラムが常駐プログラムなら一度再起動してみて速度をみてみるのはどうだろう? それ以前にgen2の値はどうなんだろう?これでリークか否かの答えは出ると思うんだけど。 毎回起動なら、そのページファイルを増やしている別のプログラムをつきとめた方がいいかも。 なんにせよ、そのサーバはリークを起こしているっぽいw
865 名前:デフォルトの名無しさん mailto:age [2009/08/16(日) 12:42:56 ] webbrowserに表示しているHTMLを画像として保存するには、 どのような方法が一番妥当ですか? クライアントの隠れている部分も含めて画像変換したいので、 PrintScreenではだめです。
866 名前:865 mailto:sage [2009/08/16(日) 13:00:41 ] ネットで探してて最初は見つからなかったのですが、 書き込んでからいろいろ見つかってきました。 homepage1.nifty.com/yasunari/VB/VB2005/WebBrowserDrawToBitmap.htm www.i-tribe.info/Blog/post/2009/06/08/e7b0a1e58d98e79a84e381abWebe38398e383bce382b7e381aee794bbe5838fe38292e4bf9de5ad98e38199e3828b.aspx すみませんでした。
867 名前:865 mailto:sage [2009/08/16(日) 13:04:11 ] ここが一番よさそうでした。 ufreyr.blog80.fc2.com/blog-date-200703.html
868 名前:837 mailto:sage [2009/08/17(月) 14:29:39 ] >>864 遅くなりましたが、「Process Explorer」で見てみました。 削除しているプログラムの値です。 #Gen0 Collection 14,220 #Gen1 Collection 5,952 #Gen2 Collection 314 Gen0 Heap Size 3,145,728 Gen1 Heap Size 30,976 Gen2 Heap Size 64,076,116 これって、リークしているのでしょうか?
869 名前:864 mailto:sage [2009/08/17(月) 18:07:10 ] Gen2を知らないなら、今だけはプログラムを起動中に常に必要なメモリサイズだと思ってください。 削除プログラムに常に必要とされているメモリが64M弱が正しいならリークしてないです。 これが削除処理を実行する度に増えているなら、かなり怪しいです。 個人的な見解としてはファイルが何ギガあっても削除するだけに64Mは異常です。 CLR Profilerで何にメモリを使っているのか調べます。 更にいうと、64M程度で体感速度に差が出るとは考えづらいです。 他のヒープも合わせ削除処理中にムチャなメモリ確保がある可能性も視野に入れます。 ただし処理時間の原因がメモリリークであり、それが改善された場合、 これ以上削除時間が延びる事は無いはずなのでクレームが来るまで放置しますw
870 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 23:10:33 ] サーバーでPaythonスクリプトを実行し、 特定の命令が呼び出されたら割り込みが入るまで待機ということをしたい。 それを実現するために、スクリプトを実行するごとにスレッドを呼び出してイベント来るまで待機ということをしているんだが、 これだと多数のユーザーがスクリプトを実行したときにリソースが枯渇しそうなことに気付いた。 スレッドプールで書き直したいんだが、ブロックするような処理をするのはまずいとMSDNに書いてあった. これってイベントが来るまで待機するような処理も含まれるの?
871 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 23:44:28 ] どの辺にC#がw
872 名前:870 mailto:sage [2009/08/17(月) 23:55:18 ] 使用言語:C#3.0
873 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 00:22:37 ] >>870 そのまえにペイソンとかいう言語はC#とどの程度相互運用できるんだ
874 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 00:28:52 ] phython≠paython
875 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 00:59:19 ] また変なエサを投下して・・・
876 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 01:07:01 ] ふぁいそん?
877 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 01:46:04 ] 北米的にはぺいずぅぁん。
878 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 10:24:41 ] SORPとかでWCF使うとか
879 名前:870 mailto:sage [2009/08/18(火) 16:49:05 ] >>873 ironpaythonを使えば、楽に相互運用ができる。
880 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 17:25:17 ] >>879 paythonって何だよ ironpaythonって何だよ
881 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 17:36:43 ] 試しにググったらここのPart42が引っかかったw
882 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 20:44:15 ] SORP?
883 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 20:46:14 ] >>879 アイロンペイソンってサーバーで動かすPaythonスクリプトにもなれるの?
884 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 21:22:55 ] おまえらペイトホンも知らねーのかよ。 >>870 マジレスしようと何度か読み直してみたがさっぱり意味が解らない。 とりあえず質問の内容は最後の2行のみ? で、ブロックしそうなのはクライアント側?サーバ側? っつか多分日本語でやりとりしてもらちがあかなそう。簡単なソース出して これはおk?ってやった方が、キミとは上手くやっていけそうな気がする。
885 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 21:53:42 ] boid mein() { } とかってコード期待w
886 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 22:35:00 ] >>869 亀だが・・・ 64M程度ならドトネトでは普通じゃないかと思う 結局メモリ量は予約領域でもあるはずだから純粋に使用しているメモリというわけではないだろうし
887 名前:870 mailto:sage [2009/08/18(火) 23:54:18 ] >>884 ソースをさらします。 サーバーがRunScriptというパケットを受け取ると実行される void talk() { Thread t = new Thread(executeScript); t.Start(this.remoteip); } private void executeScript(object data) { PythonEngine pe = new PythonEngine(); pe.deliverVarible("_self", this); pe.deliverVarible("_target", target); pe.deliverVarible("_remoteip", (string)data); pe.execute("foo.py"); } //リモートIPとManualResetEventが対になってる static Dictionary<string, ManualResetEvent> ManualEvent = new Dictionary<string, ManualResetEvent>(); //foo.pyがwaitForSignalを実行すると呼び出させる public void waitForSignal() { if (remoteip == null) return; ManualEvent[remoteip].Reset(); ManualEvent[remoteip].WaitOne(Globals.script_wait_time); } //別スレッドから呼び出し public void setSignal() { if (remoteip == null) return; ManualEvent[remoteip].Set(); }
888 名前:870 mailto:sage [2009/08/18(火) 23:55:49 ] 訂正 ×//別スレッドから呼び出し ○//同じクライアントから特定のパケットを受け取ると呼び出される(パケットを受け取る部分は非同期ソケットを使ってます)
889 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 00:08:34 ] Directory.Delete("パス",true); これに64Mはありえない。それからgen2は回収に何度か失敗している領域。 現在使用中かつ長い間確保されている可能性が高い。 とまぁ、レスの情報と自分の経験からの推測な訳です。はい。 本当に64Mが適正か否かは>>837 氏のみが知る所でしょう。
890 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 19:00:23 ] 質問です 今ちょっと頼まれて テキストボックスとボタンのフォームだけがあります。 そしてそれに必須入力チェック、桁数チェック、書式チェックと言う条件を作らないといけないのですが 当方初心者でまるでわかりません。 まず、True,Falseの場合に出すメッセージボックスを作ります。 そしてIF文でどっちに行くかを条件付けるんですが どのようにして記述していけばいいのでしょうか・・・・
891 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 21:30:38 ] ググれ
892 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 21:31:42 ] 初心者向けの本でも買え。
893 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 21:53:52 ] カスどもありがとう助かったわ
894 名前:デフォルトの名無しさん [2009/08/19(水) 22:19:58 ] タブコントロールのタブなしってあるの? アクセスではあるらしいね。
895 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 22:34:11 ] フラットスタイルじゃなくて?
896 名前:デフォルトの名しさん mailto:sage [2009/08/19(水) 22:46:10 ] ふらっとの方でもたずねたのですが、返事がないので C#を始めて1年くらいで、2Dグラフィック周りを主にやってます。 最近、JAVAプログラムのオープンソフトでJDrafter(hhp://jdrafter.com/)とい うソフトを発見したのですが、 このソフトは、イラレ感覚で2Dグラフィックを作成し、Javaの オブジェクトとして保存できるため、Javaプログラムからの表示やアニメーションなどにも応 用できるようなのですが、 どなたか、C#でこんなプログラムをご存知の方いないでしょうか。 もしくは、オープンソフトなので、描画周りのクラスをC#に変換して利用できないか考え ているところですが、どなたかその方法やこれに適したjava→C#変換ツールをご存知 の方があれば、ご教授をお願いします。
897 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 22:54:20 ] 何文字目?
898 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 22:55:30 ] Java使えよ
899 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 22:56:59 ] つJ#
900 名前:デフォルトの名無しさん [2009/08/19(水) 22:59:36 ] >>895 フラットスタイル… C♯にあるの?
901 名前:デフォルトの名しさん mailto:sage [2009/08/19(水) 22:59:48 ] >>898 javaに変えてもいいのですが、今までの資産や、C#の将来性を考えると簡単に は決断できません。 ググってもみましたが、どうしてもわからないのでお尋ねしているところです。
902 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 23:01:03 ] つか xaml に変換できるもの、Expression とかがまさにそのまま イラレ感覚がいいんならイラレ -> xaml のエクスポータ使えばー
903 名前:デフォルトの名しさん mailto:sage [2009/08/19(水) 23:17:21 ] >>902 ありがとうございました。 xamlテクノロジーは始めて知りました。(勉強不足ですみません。) xamlについて調べて、フリーの(金がないので) ツールなんかがない かいググります。どうもありがとうございました。
904 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 23:36:49 ] イラレってxaml生成できんのか。おどろいた。
905 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 23:49:29 ] XPSじゃねーのと思って調べたらほんとにXAMLだった
906 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 00:11:20 ] イラレ10でも出力できますか?
907 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 00:59:00 ] プラグイン形式のやつはCS以降じゃないと無理なんじゃないかな? Photoshop(.psd)やIllustrator(.ai)を直接取り込めるようになったBlend 3を使うのが楽だとは思うけど↓みたいなのもある。 XamlXporter for Illustrator www.codeplex.com/Wiki/View.aspx?ProjectName=xamlxporter >>903 Inkscapeがオススメ。日本語化されてて標準でXAML出力に対応してる。
908 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 02:14:50 ] (´・∀・`)ヘー
909 名前:デフォルトの名無しさん [2009/08/20(木) 06:44:32 ] イラレでコントロールを作成してWPFコントロールにすることは可能なの?
910 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 07:02:50 ] 仮にCanvasしか吐けなくても好きなルート要素で囲んでやるだけで ユーザーコントロールでもコントロールテンプレートでも作れるはず
911 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 08:27:03 ] へーへーへー
912 名前:デフォルトの名無しさん [2009/08/20(木) 11:35:37 ] すいません。教えてくらはい。 VS2008のプロジェクトに*.iniファイルを含めて プロジェクト出力として一緒に出力したいのですが、 クラスライブラリプロジェクトの場合うまくいきません。 これは仕様でなんでしょうか? <<設定例>> ファイルプロパティ ビルドアクション:コンテンツ 出力ディレクトリにコピー:常にコピー
913 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 11:56:20 ] 質問ですが、遅延バインディングにてExcelの単一セルの中に入っている情報を取り出すにはどうすればよいでしょうか? 遅延バインディング レイトバインディング 実行時バインディング いろんな呼び方がありますね。 www6.atwiki.jp/we_hate_sunshine/pages/73.html にありましたコードの一部を参照させていただいております。 // セルデータを2次元配列にいっぺんに読み込みます。 objRange_Late = objSheet_Late.GetType().InvokeMember("UsedRange", BindingFlags.GetProperty, null, objSheet_Late, null); Object[,] tmpTable; tmpTable = (System.Object[,])(objRange_Late.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, objRange_Late, null)); ↑上記コードはうまくいったのですが、 単一のセルを指定し(Rangeを使うのだと思います)そのセル内のデータを取得する方法がわかりません。 やりたいこと 例) A1セル「hoge」 の文字列hogeを取得したいです。 試しに書いたコード(実行時にエラーが出たのでできませんでしたが)を乗せておきます。 parameters = new Object[] { "A1",Missing.Value }; objRange_Late = objSheet_Late.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, objSheet_Late, parameters); Object tmpTable = new object[1]; tmpTable = (System.Object[,])(objRange_Late.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, objRange_Late, null)); こういう雰囲気でいけそうな気がするのですが、わかりません。よろしくお願いします。
914 名前:デフォルトの名無しさん [2009/08/20(木) 18:43:57 ] Webサーバ機能を、作ってるアプリに付けたいのですが、 単一ループ内でkeep-aliveを処理できるお手軽なアプローチ無いでしょうか? // listner起動 while (true) { // Context取得 (ブロック) // Request処理 // Response処理 if (Connection == close) { break; } } と言う様な処理を行い、 要は、ソケットの接続〜切断のモデルと近似にしたいのです。 理由は、データ管理や前回のリクエスト/レスポンスに強く依存した処理の為、簡単に回したいと言う感じです。 アドバイスと慈悲を下さい。
915 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 18:52:23 ] >>912 プロジェクト出力ってセットアッププロジェクトの話? セットアッププロジェクトでDLLだけ配布するの? >>914 プロトコルに何使うのさ >>913 Excelの質問には答えられないけど、エラーの内容ぐらい書いた方がいいんでないか
916 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 18:55:59 ] >>915 httpです
917 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 20:16:18 ] >>916 HTTP で keep-alive でのみセッションが維持されるなんて 仕様外の特殊な事考えたりしてるなら 独自プロトコルでやった方がいい
918 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 22:27:31 ] 前回のリクエスト/レスポンスに強く依存した処理ってviewstateじゃだめなん?
919 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 22:37:11 ] >>914 つまりソケットの接続〜切断のモデルと同じなんじゃね? ソケットつかえばおk
920 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 23:46:05 ] .net 3.5、 WinXP VS2008、C#で開発しています。 開発するアプリケーションの利用環境は、Win2003、Win2008、WinVistaなどを想定している開発です。 質問します。 C#でファイル名の整合性を確認する関数はあるでしょうか? ファイル名に使えない文字を取得する、System.IO.GetInvalidFileNameChars()は知っていますが、これだと CON, PRN, AUX, CLOCK$, NUL COM0, COM1, COM2, COM3…… のような文字列を調べることができません。 また、開発環境こそWinXP Proなんですけれども、開発するアプリケーションは クライアント・サーバ方式のアプリケーションで、クライアントからサーバにファイルを作成する形式のものです。 サーバはWin2003かWin2008、クライアントはWinVistaかWinXPです。 そうなってくると、いったんクライアントでファイルを作成して、実際に有効なファイル名かどうかを 確認する手段もOSの差を吸収できるかどうかに疑問が生じます。 このような場合、一体どのようにしてファイル名として有効な文字列かどうか判断したらよいか 教えてください。 お願いいたします。
921 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 23:48:30 ] 最近C#をはじめました。ワケあってちょっと急いで基本を学ばなければなりません。 質問させていただきたいのですが、sqrtやsinなどの数学系の関数を使うとき Math.Sqrt(2.0) といちいちMath.をつけるのが(複雑な式をコーディングするときにMathだらけになる) 嫌なのですがこれを書かないでいいようにするにはどうしたらいいのでしょうか。 多分Console.WriteをWriteだけにしたいというのと同じ意味だと思いますが。 よろしくお願いいたします。
922 名前:920 mailto:sage [2009/08/20(木) 23:54:54 ] ごめんなさい、よく考えたら権限の問題とかもあるので、サーバ側でディレクトリ作ってみて、失敗するかどうかで判断したほうがよさそうです。 質問を取り消します。
923 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 23:56:21 ] >>921 Math.Sinを呼び出すだけのローカル関数でも作っとけば
924 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 23:56:42 ] >>919 開発効率が悪いからもっと便利なクラスを使いたいです
925 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 23:58:21 ] 便利なクラスを作れ
926 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 00:00:06 ] static import は?と思ってしまった・・・orz
927 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 00:16:18 ] >>923 >>925 それはそういうものなのですか。VC#で開発してるとあまりそういうことは みんな面倒とは思わないためでしょうか? いずれにせよ、手軽にできるわけではないんですね。ありがとうございました。
928 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 00:18:17 ] >>927 Math って書くのが普通。とくに面倒じゃないよ。
929 名前:デフォルトの名無しさん [2009/08/21(金) 00:36:50 ] >>927 オブジェクト指向というのはそういうもの。
930 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 00:52:29 ] >>927 Math.Sinをコンパクトに記述することを考えるより、 式そのものを簡単にすることをまず考えるべきだろうね。 数学の数式だって同じだと思うけど、式が複雑だっていうなら いくつかの部分に分けて部分ごとに一時変数に入れるとかね。 まあ数式の場合と違って、数値計算の場合は演算誤差に対する配慮は 必要になるけど。
931 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 01:25:51 ] using使えば
932 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 01:29:53 ] Func<double, double> sin = Math.Sin; とかできねーの?
933 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 01:30:22 ] >>927 VC#っていうか、フレームワークの関数がいくつあると思ってるん? 全部一発で書けるようトップレベルに置いたらとんでもないことになる。 Mathだけ特別扱いなんて出来ないよ。
934 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 01:37:07 ] >>927 そういうのは学生のうちに卒業しよう。 プロジェクトメンバーが迷惑するから。
935 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 01:41:10 ] >>932 できるよ
936 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 01:44:44 ] >927 うるせーよ
937 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 02:17:22 ] 普段使わない関数がIntelliSenseでわらわら出られたらよっぽど面倒だわね
938 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 06:34:37 ] ExpressionTree使え
939 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 07:35:53 ] >>927 その書き方だと「面倒だなぁ……。よくみんな我慢してるよなw」って考えてるみたいだが、 こうやって分類されている方が、長い目で見れば便利なんだ。 このめんどくささはむしろ必要なめんどくささ。いずれわかるよ。
940 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 07:36:37 ] >>932 Math.を省略したくなるような状況でそんなことしたら遅くなるからやめれ
941 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 08:03:24 ] コードを書くときには面倒かもしれないけど コードを読むときには何してるかわかるからいいと思うんだが。 というか実際のところたいした手間じゃないだろう。
942 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 08:07:18 ] >>939 がもっともだと思う
943 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 08:47:45 ] F#でかけばMath.とか書かずにすむお
944 名前:>>913 mailto:sage [2009/08/21(金) 10:39:22 ] >>913 です。 自己解決したので解決方法を。 parameters = new Object[] { "A1" }; objRange_Late = objSheet_Late.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, objSheet_Late, parameters); Object tmpTable = new object[1]; →tmpTable = (System.Object[])(objRange_Late.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, objRange_Late, null)); // 「→」行部分実行時に Error:型'System.String'オブジェクトを型'System.Object[]'にキャストできません のエラー parameters = new Object[] { "A1" }; objRange_Late = objSheet_Late.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, objSheet_Late, parameters); String str = string.Empty; str = (System.String)(objRange_Late.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, objRange_Late, null)); MessageBox.Show(str); 無事A1セルに入力されていたValueを取得することができました。 無駄にキャストしていたことが問題だったのですね。エラーみろよっていってくれた>>915 さんどうもです。
945 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 16:47:03 ] Double型をString型に変換する方法を教えていただけませんか?
946 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 16:53:59 ] ToString
947 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 17:43:13 ] >>946 ありがとうございます。>>945 です doubleを無理やりstring型にキャストしようとしてました^^;
948 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 17:44:05 ] キャストの意味を勉強しなおそう
949 名前:デフォルトの名無しさん [2009/08/21(金) 17:51:22 ] DataGrid へ適当なクラスリストのバインドを考えています。 ただ、表示対象は対象クラスが保持するプロパティの一つに限定したいです。 後々にDataGrid から SelectedItems として、バインドしたクラスのデータを取得を考えます。 ここで、クラスをそのまま ItemsSource へ突っ込むと、クラス名が表示されてしまいます。 こういった場合、特に二行目の部分ではどんな風にすれば対象プロパティのみ表示可能でしょうか。 よろしくおねがいします。
950 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:04:56 ] 全体に意味が分からんが、まずそれはWPFか?
951 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:07:19 ] >>949 >ここで、クラスをそのまま ItemsSource へ突っ込むと、クラス名が表示されてしまいます。 ここで、クラスをそのまま ItemsSource へ突っ込むと、突っ込んだリスト中のクラスが保持するメンバクラスの名前、でした。 class hoge { public int m_hoge; public foo m_foo; } class foo { で言う foo です。 m_hoge | m_foo ------+------ 2 | m_foo 2 | m_foo 3 | m_foo 4 | m_foo
952 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:10:29 ] >>950 WPF というか、 Silverlight でやってます。 >>951 では途中で送信してしまったので、続きです。 class foo { public int m_x; public int m_y; } ここで、 foo というクラス名ではなく、数字の x を出力したい。
953 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:10:59 ] パブリックプロパティ用意すりゃいい
954 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:18:24 ] XAML側でどのプロパティを表示するかの指定があったはず−。 それにしてもpublicなフィールドでm_って気持ち悪い命名規則だね。
955 名前:デフォルトの名無しさん [2009/08/21(金) 18:27:16 ] >>954 ありがとうございますっ! そういうのを探していました。 とても助かりました。
956 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:51:19 ] アクセサを使いましょう
957 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:53:43 ] XAMLのバインディングってわかりづらいよね もとより人間が書くものじゃないんだろうけど
958 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 19:01:24 ] >>956 アクセサって get とか set ですよね? XAML と合わせて検索しても、どうにも分らないです。 すみません。 バインディングの記述に利用する識別子でしょうか? >>957 未だにクラス名やそのメンバ名を直接 XAML ファイルに記述するのが気持ち悪くて仕方ありません。 慣れの問題でしょうか……。
959 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 19:20:53 ] BindingのPathは . 使ってプロパティのプロパティを指すこともできる つかフィールドってバインディングできたっけ? プロパティじゃないとダメな気が > 未だにクラス名やそのメンバ名を直接 XAML ファイルに記述するのが気持ち悪くて仕方ありません。 XAMLに記述するのはViewModelのクラスのだから問題ない
960 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 19:23:48 ] >>942 >>927 の考えは>>939 やチミが勝手に心配しているような意味じゃないと思うぞw 別にクラスの中にしかメソッドが存在できないのがウザい、 というような意味のことは言ってないだろう。 っていうか、複雑な計算式をベタにコーディングしたら >>927 のように思うのはむしろ普通のこと。 実際見難くくてかなわんよ。 だから>>930 のようにアドバイスするのが正しい。 しかし、今に始まったことじゃないけど本当シロートがシロートに講釈垂れる 図式が多すぎるなここ。
961 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 20:55:24 ] >> 未だにクラス名やそのメンバ名を直接 XAML ファイルに記述するのが気持ち悪くて仕方ありません。 >XAMLに記述するのはViewModelのクラスのだから問題ない どうにもバインディングを勘違いしていました。 特に制約無く作ったデータでもバインディングは行えるものとして考えていました。 バインディングは特定のインタフェースを実装したクラスしか不可能なのですね。
962 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 21:01:05 ] >>961 >バインディングは特定のインタフェースを実装したクラスしか不可能なのですね。 違う。 設計の問題で、バインディング自体にそういう制限は無い。
963 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 00:13:55 ] >>960 このレベルの自分で頭使わないで文句言うタイプには「黙って書いとけ」が正しい。
964 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 00:39:36 ] ""(空文字列)との比較は以下のどれがいいですか? それぞれのメリット・デメリットを教えてください。 @str.Equals("") AString.Equals(str, "") Bstr == "" Csrt.Length == 0 D"".Equals(str)
965 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 00:45:34 ] 個人的には3 他は4以外objectで比較できちゃう 14はstrがnullのときを考慮しないといけない でも大体はString.IsNullOrEmptyで片付けるかな
966 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 00:46:47 ] あくまで個人的な意見だけど。 俺は「str==""」が一番シンプルかつ直感的でいいと思うね。 1. 参照アドレスの比較と差別化するという意味合いはご尤もだが…。ここまでする必要あるかなぁ。 2. 冗長。 4. 使う場面による。文字列自体に着目した流れで来てるのか、 文字列の長さに着目した流れで来てるのか、というのが判断基準。 5. これは逆。どういう意図でこう書くんだろう。
967 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 00:58:15 ] 5の書き方はJavaかなんかでこうするのがイイ みたいなのがどっかに載ってた気がする(そして当然叩かれてた) C#だと3かIsNullOrEmptyだよね。
968 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 01:05:59 ] fxcopにIsNullOrEmpty使えっていわれたような
969 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 01:14:50 ] C#の世界でも割と「==使うなEquals()使え」っていう教条主義的意見は 見かけるね。 というか、俺の見解では、そもそも==がデフォで参照等価の検査なのが直感的じゃない。 少なくともこれに関してはVBの方がまともに感じる。 つまり、参照等価の検査用には別の演算子を導入することにして、==の方は 値等価用にオーバーロードしないと使えない方が分かりやすい。 まあそれを言うと、そもそもC由来の=と==からして逆なんじゃないのかとも思うが…
970 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 01:34:35 ] しかし値の同一性ってのはデフォで定義できない
971 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 01:40:47 ] Estr == string.Empty
972 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 01:42:52 ] IsNullOrEmpty 派です。
973 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 02:14:56 ] >>966 >5. これは逆。どういう意図でこう書くんだろう。 これはリテラルのequals()呼び出しだから、コンパイラが最適化してくれる 可能性がある、という説明で自分は納得した。 実際のところ本当かは検証したわけじゃないけど、どう再定義してるかわか んないstrのequals()を呼び出すよりは速い可能性があるというだけで充分 に意味はあると考えてる。
974 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 02:22:55 ] Javaでの話だけど、str.equals("")だとstrがnullのときにぬるぽの例外になるので、 "".equals(str)がいいんだって言っていた。 でも、まともな意見の人は"".equals(str)に否定的な人が多いという印象。
975 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 02:25:37 ] 君の印象ではなく「まともな意見」でどう否定したかが重要。
976 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 02:29:39 ] つか str.Equals("") とほぼ等価でかつ str が null でも大丈夫だから だろ。2 と 3 がほぼ同じ意味であることを除けば他は意味とか前提が 色々微妙に違う
977 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 02:57:02 ] class Tuple<T1,T2>{ T1 _t1,T2 _t2}(アクセッサとか省略)みたいな奴で Tuple<Hoge,HogeHoge> tuple1,tuple2の比較したいときに、class でなくstructなら_t1,_t2が各々==でtrueの時tuple1==tuple2になるんだっけ? classでEqualsとかoverrideするのめんどくさいよ(´д`)ママン… 属性とかの指定一発でやってくれ・・・
978 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 03:46:49 ] >>964 俺も>>971 と同じ書き方するな。 でも null と空文字列で特別に違う意味がなければ IsNullOrEmpty を使う。
979 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 05:58:42 ] str.Equals(string.Empty)か String.Equals(str,stringEmpty) だな。 javaと違って参照でも'=='が使えるのは知ってるんだけどね。
980 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 06:46:21 ] String以外にも話を展開してみる。 Equalsはタイプセーフではない。 Equalsをoverrideするなら==、!=もoverrideしなければならない。 a.Equals(b)はnullチェックが面倒なので、Object.Equals(a,b)が有効。
981 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 06:50:49 ] タイプセーフでないというのは事実だけど、型を意識しないで比較するのは個人的にはなしだ。 ライブラリ製作者と使用者で意見が食い違うところか。
982 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 07:22:05 ] 10.0と10は違うのか?→時と場合と人による "a"と'a'は違うのか?→〃 10と10は違うのか?→〃 しかし”参照”としての比較はドメインが”参照”に固定されているので混乱しない 値の比較はドメインが固定できないので混乱する 値の比較であーだこーだ言っていてもはじまらね
983 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 07:35:17 ] >>968 はこれか msdn.microsoft.com/ja-jp/library/ms182279.aspx それはそうと次スレは?
984 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 08:59:39 ] >>980 >タイプセーフではない。( 値型以外では使うことはまずないけど IEquatable<T>.Equals(T o) >Equalsをoverrideするなら==、!=もoverrideしなければならない。 Stringのようにimutableでない限りは==や!=演算子のoverrideはするべきではない。
985 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 11:02:53 ] なんで
986 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 12:31:41 ] 次ぎたててくる
987 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 12:34:22 ] C#, C♯, C#相談室 Part54 pc12.2ch.net/test/read.cgi/tech/1250911923/ はい
988 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 12:44:02 ] >>987 ^^
989 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 13:00:55 ] .NET 4では2.0の部分のパフォーマンスの向上とかあるのかな?
990 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 13:09:55 ] BCL部分はC#4.0などにあわせて確実に手が入るけど WinFormsはどうせ放置だろ
991 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 13:36:55 ] >WinFormsはどうせ放置だろ せっかく枯れてきたのに手を入れられてもねぇ…
992 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 13:40:42 ] 2005以降に追加されたコントロールのバグはしっかり直してくれないと 困ると思うけど… toolstrip関連はバグ多過ぎなんだよ本当。