1 名前:デフォルトの名無しさん [2008/02/27(水) 18:24:40 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 前スレ ふらっとC#,C♯,C#(初心者用) Part24 pc11.2ch.net/test/read.cgi/tech/1202028267/
249 名前:デフォルトの名無しさん [2008/03/04(火) 10:24:58 ] >>247 > まず、コピーや削除が失敗することがあるのか(File.Copy、File.Delete等) ありますね。destpathが無効だったり、アクセス許可が無かったり、ファイルがロックされていたり destpathが既に存在したりしていれば失敗します。 > 次に、私が上記で示したようにtryで処理を囲みcatchでcontinueするような処理が一般的なのかどうか この例でcontinueがいるとは思えないですが…。。。 > 次に、出した例ではstringで処理していますがFileInfoなどを利用してみてもいます。 > FileInfoを使うことで、他の質問にある答えが変わる場合それも教えて頂きたいです。 同じだと思います。 > 最後に、trycatchで処理部分を囲んでいるとして、それをループしています(そこがおそらく一番時間かかる主要処理) > その際、処理速度の低下などは気にするほどあるのでしょうか? try-catchでも例外が起きない限り、ほとんどコストはかからないと思います。 逆にコストが問題になるほどしょっちゅう例外が起きるなら、ロジックを見直すべきだと 思います。 ファイルがらみの例外は種々雑多なので例外処理のコストを嫌ってすべて条件判定 で処理しようとしても、労多く益は少ないと思いますが。
250 名前:デフォルトの名無しさん [2008/03/04(火) 10:35:19 ] >>248 二つや三つの場合分けならいいんですが、たとえば Aページでフォームに自動記入してBページに飛んで、そこでなんか情報取って さらにCページへ飛んで、サーバ側やクライアントスクリプト、activeXコンポーネント等で自動 ジャンプさせたのを判定して…Dページでまたフォームを記入して……… などと一連の動作を自動化することを考えると、条件分岐が異常に深くなってしまって、 それはそれでものすごく読みにくいんですわ。 素直にwebclientで同期的にダウンロードしてHTML独自に解析しろって言われそうですが、 ページでスクリプトやらactiveXコンポーネント使っているとお手上げなもんで、どうしても DOM操作して人間の動作をエミュレートしたいときがあるもんで…。
251 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 11:14:03 ] >>250 よくわからんけど、 abstract class Base { public abstract void やること(); } class 処理A : Base{ public override void やること() { ..... } } class 処理B : Base{ public override void やること() { ..... } } みたいにそれぞれの処理用のクラスを定義して、 Navigateする前に該当する処理クラスのオブジェクトを作って、 private Base 今の処理 みたいに保持しておいて DocumentCompletedで 今の処理.やること() みたいにすればすっきりするんじゃね?
252 名前:247 mailto:sage [2008/03/04(火) 11:15:49 ] >>248 >>249 ありがとうございます。 trycatchはコストが低いということが聞けて安心しました もし、以下の処理だけならcatch{}だけでよかったですね、反省 foreach (string file in Directory.GetFiles(dir)) { try { File.Copy(file, destpath, true); } catch { continue; } }
253 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 11:16:16 ] 明示的にcatch{}ってしなくていんじゃないの、その例なら
254 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 11:26:18 ] catch{}はしなきゃだめだっての continueはいらんっちゃいらんけど
255 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 11:28:46 ] まあcontinueって書いてても悪くないと思うけどな
256 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 11:36:53 ] MSDNに書いてある例外くらいは事前にチェックして発生させないようにしとくべきだろ キャッチはどっちみち必要だけど
257 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 11:48:31 ] ある程度の事前チェックは必要だと思うけど、どうせ中でチェックして起きた例外をcatchするんだから、 事前に全部チェックしてたら二重になって遅くなりそうだし面倒くさいから俺はやらねえ。
258 名前:デフォルトの名無しさん [2008/03/04(火) 14:39:24 ] >>255 ここではたまたまcontinueがループの最後にきてるから良いけど continueは後無視してループの頭に戻っちゃうから、場合によっちゃまずくないですか?
259 名前:デフォルトの名無しさん [2008/03/04(火) 14:39:47 ] 先物チャートと検証ソフトを作りたいのですが、 C#のフォームとグラフィックを扱った書籍を教えていただけないでしょうか? MDIでの開発の仕方が載っているものがあると助かります。 以前はDelphiを数年バリバリに使っておりましたので、 プログラミング初心者というわけではありません。
260 名前:デフォルトの名無しさん [2008/03/04(火) 14:40:14 ] > C#のフォームとグラフィックを扱った書籍を教えていただけないでしょうか? C#のフォームとグラフィックを扱った書籍のお勧めを教えていただけないでしょうか?
261 名前:デフォルトの名無しさん [2008/03/04(火) 14:43:07 ] >>251 えっと 出していただいた例を今ひとつ理解し切れていない自分ですが、 たとえば、wb_documentcompletedでdocumentを取得して その中のformをinvokemenber("submit")したりすると、次にやるべき処理の クラス(baseの子クラス)を設定する場面が無いと思うんですが…。 wb.Navigateを呼び出したルーチンには戻らないでそのまま再びdocumentcompletedに とんでっちゃうわけで…。
262 名前:102 mailto:sage [2008/03/04(火) 18:54:07 ] >>244 すみません、後学のために教えていただけますでしょうか、フィールドハンドルって何ですか? 知らない知識がまだまだあるみたいです……
263 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 18:56:19 ] >>258 なんでそういう解釈されたか意味不明
264 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 18:59:05 ] >>263 ちゃんとレス辿ってないだけでしょ、彼が
265 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 21:30:42 ] すみません、プログラミング自体の経験は過去にDelphiを少し触って挫折したような者です。 しかし、ひとつ作ってみたいプログラムのアイディアが浮かんだので、 これからC#で作ろうかと思っているのですが、なかなか指針すら立ちません。 どのような設計をすればよいのかアドバイスをお願いいたします。 何を作るのかというと、睡眠日誌というものがあるのですが・・・↓ ttp://www.kaimin.info/part/pdf/nisshi.pdf これを実現するようなアプリを作りたいのです。どうすればよいでしょうか?
266 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 21:42:03 ] 睡眠障害のある俺にぴったりじゃないか。 作るかな。 ネタ提供サンクス。
267 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:00:08 ] >>265 まず書いて動かすこと 動かせる範囲のものを書くこと はじめからちゃんとしたものを作ろうとしないで一部分だけでいいからちゃんと動かす うまく行かなくなったら何度も書き直す それがうまくやるコツ
268 名前:265 mailto:sage [2008/03/04(火) 22:02:27 ] >>266 なんとありがたい! あまり突っ込むとスレ違いになりますが、私自身過眠症で必要に迫られてのことで。ぜひともお願いいたします。 後学のため、よろしければどのような感じで作るかの指針をお教えいただけませんでしょうか?
269 名前:265 mailto:sage [2008/03/04(火) 22:06:56 ] >>267 なるほど。一度イメージするUIを紙に書いて、 自分なりにどの部位からコード化していけそうか考えてみます。 アドバイスありがとうございます。
270 名前:デフォルトの名無しさん [2008/03/04(火) 22:37:48 ] >>264 いや、逆にcontinue書かなきゃいけない理由が知りたいですけど
271 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:44:54 ] >>270 むしろ後に何か書き加える場合にcontinueがないとぶっ壊れるだろ 形としてはここにcontinueがあるべきで、今必要ないからといって 削除しなきゃならないというものでもない
272 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:46:10 ] public bool IsMarked(object obj) { // この部分 } 上記のコメント部のなかで、 引数のobjが宣言時に特定の属性をつけられたかどうかを判別する方法はありますか? たとえば [Marked()]object a; void Test() { if(IsMarked(a)) { Console.WriteLine("True"); } } みたいなことができれば満足です。 詳しい方がたくさんおられるようなので、宜しくお願い致します。
273 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:47:45 ] 過眠症なんて病気があるんだw なんか最近の医者って新しい病気作るのに必死だよな。
274 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:48:30 ] >>272 それは属性の使い方が間違ってる
275 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:59:11 ] 属性はインスタンスには付かないぜ
276 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 23:11:27 ] >>274 >>275 ありがとうございます。 納得しました。
277 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 00:28:15 ] >>271 > むしろ後に何か書き加える場合にcontinueがないとぶっ壊れるだろ 追加実装の場合は、単なるコーディングミスだろ・・・ > 形としてはここにcontinueがあるべきで ないべき。 使用しない、意味の無いコードは書いてあっても利益にならない。 なんで使わない変数とかが警告出るか考えろよ。
278 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 00:29:56 ] じゃあifの中が一行しかないのに{}でくくってあったら消すのか?
279 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 00:35:35 ] >>278 ちゃんとレス読んでから書け、読んでてそれなら半年ROMれ。 >>247 だとfor文の最終行にcontinueつけてんのと同じ事。
280 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 00:44:46 ] >>279 同じことだろうが 実行結果に関わらない、単に無駄なだけのコードだ それに意味があると考えるか考えないかはお前の主観でしかない ifを{}にいれておくのが望ましいといわれるのは、そこに何か追加することがあるからだ あのコードは下に追加される可能性が大いにある その意味ではあのcontinueには意味がある elseがいらなくてもelseと書いた方が分かりやすいこともある ケースバイケースだ それはそれとしてC#ではfor文の最後にcontinueを書かなきゃならなくなることもよくあるぞ
281 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 00:47:14 ] >それはそれとしてC#ではfor文の最後にcontinueを書かなきゃならなくなることもよくあるぞ いいえ
282 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 00:48:41 ] 静的コンストラクタが呼ばれるのは >最初のインスタンスが作成される前、または静的メンバが参照される前 と書いてありますが、複数スレッドから同時にアクセスした場合でも正常に動作するのでしょうか?
283 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 00:49:32 ] gotoのラベルがfor文の最後に来る場合、ラベルの下にcontinueを書く必要がある なんでそうなってるのかといえばラベルがforの最後にあるより、その下にcontinueがあったほうが 意味がはっきりするからだろう
284 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 00:52:24 ] >>280 bool flg = false; if (flg) { } else { ・・・ } こんなコード書いちゃう人?
285 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 00:54:13 ] >>284 それはわかりにくいだろう if(flg == false) と俺は書くな
286 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 01:11:51 ] 俺なら if ( ! flg ) { //・・・ } って書くぜ。 っていうかたまに flg == false とか flg == true って書き方みるけど変じゃね?
287 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 01:18:00 ] if(flg == false)は 普通に左から読んでいけば もしフラグがfalseならば、 と読める !flgは頭の中で変換しなきゃならない flgがよっぽど何のことか分からない名前でなければ==trueとも書かないな しかし変数名がflgだったら==trueと書くかもしれない
288 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 01:32:30 ] !flg程度で頭動かさなきゃならんのは駄目だろ
289 名前:デフォルトの名無しさん [2008/03/05(水) 02:21:11 ] >>271 ちょっとだんだん意味わかんなくなってきたんですけど、 もしかしてcontinueの意味取り違えてません? あとに何か書き加えたときにcontinueあったら、「後に書き加えた何か」 無視して、次の反復処理に制御を移動されちゃうと思うんですが…。 break→以下無視して反復処理抜ける continue→以下無視して 次の反復処理へ移動 だと思ってましたが、違いましたっけ?
290 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 02:30:41 ] >>289 何を言っているのか分からないが 後に書き加えた何かは、例外で失敗した後には実行されないものだ そしてそれはtryブロックの後ろに配置されるべきものだ 全部をtryで囲んで全てをキャッチするというのは悪いコーディングだ
291 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 02:32:26 ] >>289 もう相手すんな
292 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 02:48:52 ] >>283 }の直前など、対応するコードの無い部分にラベル付けられないからだろ どうしてもラベル付けたいなら、普通は空ステートメントを書く >>284-288 if(flg == true)と書くやつは、何故if((flg == true) == true)あるいは if((((flg == true) == true) == true) == true)と書かないのか という指摘を見たことがあるな
293 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 03:00:03 ] >>292 空ステートメントなんていう異様なものを書くよりは、continueの方がずっと分かりやすいだろう ちなみにCにはこんな制限はない。C#にわざわざ加えられたものだ。 おそらくcontinueと書かせるためだろう >f(flg == true)と書くやつは、何故if((flg == true) == true)あるいは >if((((flg == true) == true) == true) == true)と書かないのか 意味が伝わりにくくなるからだな プログラムにとって大事なのは意味が伝わりやすいことであり 文の量が最小になることではない
294 名前:デフォルトの名無しさん [2008/03/05(水) 03:01:10 ] >>290 例外で失敗した後には実行されないものはtryブロックの中に入れるべきで >全部をtryで囲んで全てをキャッチするというのは悪いコーディングだ とは全然無関係ですよ。
295 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 03:02:52 ] flgっつう名前が悪いだろ bool isHogehoge なら if( isHogehoge ) と書いても違和感はない
296 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 03:09:48 ] >>294 それでは例外で失敗しなかった後に実行された文で起こった例外まで無差別にキャッチする それはバグを握りつぶしてしまう よくないコーディングだ
297 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 03:35:54 ] continue より flg の話が気になるな まず flg という名前が論外で、if ... の ... に配置して意味が通るような名前を付けて、flg==true だの flg==false だのは今すぐ止めるべきと思うな それが「プログラムにとって大事なのは意味が伝わりやすいこと」になるんだと思うよ。
298 名前:293 mailto:sage [2008/03/05(水) 03:39:42 ] >>297 全く同感だ
299 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 03:40:54 ] >プログラムにとって大事なのは意味が伝わりやすいことであり >文の量が最小になることではない まったくもって同感だが、ロジックの複雑さは最小にすべきだ。
300 名前:292 mailto:sage [2008/03/05(水) 04:36:35 ] >>293 continueを書くかどうかは好みの問題だから議論する気はないが、 「continueと書かせるため」というのは誤解を招くので ラベルの後にステートメントが必須なのはC++からで、 一応、仕様ではlabeled statementということになっている 単にラベル単独では存在し得ないというだけのこと
301 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 04:40:14 ] >>283 ラベルは命令文の前に書く必要がある。命令文は空文でも良い。 for ( .. ) { .... label_1: ; } でOK。
302 名前:デフォルトの名無しさん [2008/03/05(水) 06:47:59 ] DataGridViewでのコンテキストメニューの抑制ができなくて困っています。 自作のコンテキストメニューではなく、標準というかShell(?)のコンテキストメニューです。 DataGridViewTextBoxColumn、DataGridViewTextBoxCellでセル選択後に カーソルがあたった状態で編集可能になったときに 右クリックすると、このコンテキストメニューが出るのを抑えたいのです。 通常のTextBoxでは TextBoxのContextMenuStripに、空のContextMenuStripを設定するなり 新しいContextMenuStripのインスタンスを(newする)設定するなりすれば 抑制できるとことまでは判明して、実行できているのですが DataGridViewの場合に、同様の制御をするための実装方法がわからないのです。 ご存知の方、お教えください。
303 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 06:48:34 ] ifでの条件文の書き方についてのノウハウはCとC#で違うから混同すると議論が噛み合わない。 C++には論理型があるがCとの互換のために穴だらけだから結局Cと同じになる。 一方C#のifには条件文しかかけないし、論理型は単独で条件文たりえる。
304 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 07:05:06 ] >>302 EditingControlShowing とか
305 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 07:49:18 ] 文字列をデータとしてファイルに保存してあとで読み込みたいと思っています。 文字列の構成は、9つの行と、行数不定の項目です。 その構成を一つのかたまりとしてたくさん扱いたいのですが、どうしたらいいんでしょうか?
306 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 08:23:00 ] C#というのはどういった場面で使われるんでしょうか?Windows環境で動くソフトウェア全般だとは思うのですが 実際本職の方達はC/C++ベースで作ってそうですし いまいちピンとこないです
307 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 08:31:32 ] >>305 CSVでもXmlSerializeでもいいんじゃないかと。 >>306 ASP.NETとか?
308 名前:デフォルトの名無しさん [2008/03/05(水) 08:49:49 ] >>297 flgの話は 命名法の問題は同意 その先 ==trueとするかどうかは趣味の問題。 >>296 continue書かないなら正解。 continueなんてせっかくの例外処理の構造化をわざわざ壊すようなもんをどうしても 書きたいなら不正解だろ。
309 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 09:40:47 ] >>262 RuntimeFieldHandle フィールドを一意に識別出来るハンドル。 識別という意味では、FieldInfoに1対1で対応している。 RuntimeFieldHandleとFieldInfoは相互に取り出すことが出来る。 FieldInfoなどのオブジェクトはサイズが大きいため、 常に使い続ける必要がないものはRuntimeFieldHandleで保持しておき、 実際に必要になった時点でRuntimeFieldHandleからFieldInfoを取得する。 こうするとFieldInfoがGC対象となり、頻繁に使われないものはメモリを占有しなくなる。
310 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 10:25:56 ] >>306 いやいや、中小企業で使ってる業務システムには、VisualBasicが多いよ Cで組んだシステムの方が珍しい。 大企業みたく開発費をかけたくないし、開発期間も短くしたいし、保守性を容易にしたいし、 負荷も少ないしリアルタイム性も求められない用途は多いから。 C#はVisualBasicよりいいし、そういう方面にも使われる
311 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 10:34:38 ] >>307 >>310 なるほど… 来年度から就職でして、使うのかなぁといった感じで質問しました。 C/C++をやりつつC#に手出してて最近はWinAPI関連の本買って手出し始めたので ちょっと気になりました、ありがとう
312 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 10:35:48 ] どんな分野?それによるからなぁ、逆に低級言語ばっか使うとこもあるし
313 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 10:38:04 ] >>312 そこら辺が明確に教えてもらえてなくって(使う言語とか) 一応エンジニア業と営業のそれを両方出来る人材を…って感じで募集されてて 会社自体は自動車会社のシステム部門です
314 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 10:39:17 ] お前らそういう話大好きだな
315 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 10:53:19 ] >>313 だったら、営業の顧客管理表をC#でちゃちゃっと作ったり (たいてい、個人が自分の机のPCでエクセルでちまちまやってるから、 活用するときに面倒だったり、顧客表の流出する可能性があったり、 各営業間で共有が出来てなかったり等々。システムを作れば、 顧客の誕生日一週間前にポップアップさせてみたり、 車検前や12ヶ月点検前にポップアップさせてみたり、いろんな活用も出来る)。 また、営業所とエンジニア部門とをLANで結んだ連絡システムを作ったりにも使えるだろ。 stand-aloneなシステムを手早く作るのにも、 離れた部門をLAN経由で結んだシステムにも、C#は向いているし。
316 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 11:02:40 ] 文字列に指定の引用符を付けたり(Quote)、外したりする(Dequote)メソッドはないでしょうか?
317 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 11:11:46 ] >>316 ごめ質問が理解できないので具体例をあげて >>313 続けたいならあとはマ板でたのむ
318 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 11:24:17 ] >>316 です。 ええと。例えば、文字列ABCにダブルクォート"の引用符を付けると、 "ABC"、文字列DE"Fに付けると、"をエスケープ?して、"DE""F"にする ようなメソッドです。Dequoteはその逆の操作です。
319 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 11:25:02 ] class = new class(); このclassに後から変数を追加するなんて暴挙はできないでしょうか?。
320 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 11:33:26 ] >>318 それくらい自分で作れば >>319 無理 classのオブジェクトをキーにしたDictionary使うとか
321 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 11:57:01 ] 初めまして。 C# 2008 Expressを使ってます。 OpenFileDialogで、画像を選択した際にdialogのウィンドーにプレビュー画像を表示したいのですが、 いったいどうすればいいのでしょうか。
322 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 12:00:53 ] >>304 ありがと。 それでなんとかなりそうです。
323 名前:デフォルトの名無しさん [2008/03/05(水) 12:03:02 ] ボタンにUACのシールドアイコンを付加しようとしているのですが、 VS2005なので SystemIcons.Shieldが利用できません。 なので、APIから行おうとしたのですが、 internal class WinAPI { [DllImport("user32.dll", CharSet = CharSet.Unicode)] extern public static IntPtr SendMessage(IntPtr hWnd, uint msg, IntPtr wp, IntPtr lp); } 〜 WinAPI.SendMessage(Target.Handle, (UInt32)0x160c, IntPtr.Zero, (IntPtr)1); としてもシールドアイコンが表示されません。 何か間違ってるのでしょうか?
324 名前:321 mailto:sage [2008/03/05(水) 12:05:32 ] 追加でごめんなさい。 ↑の件ですが、「縮小版」ではなく、クリックしたときにパッと表示してほしいんです。 あと、openFileDialogには大きさのプロパティがありませんが、 実行時にはマウスでドラッグして大きさが変えられますよね。 プログラム上で自動で変更できるんでしょうか。
325 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 13:10:17 ] >>307 ありがとうございます。 XmlSerializeでなんとか出来そうです。
326 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 13:29:52 ] >>321 >>324 つまり、OpenFileDialogを拡張したいということだろ 結論から言うと、Win32API使わないと無理 cf. ttp://msdn2.microsoft.com/en-us/library/ms996463.aspx
327 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 13:34:58 ] 試しに>>174 をDynamicMethodでif…else if…相当のコードを生成して 毎回リフレクションを使わないようにしてみたら10倍くらい速くなった もっと速くなると思ったんだけどなあ
328 名前:321 mailto:sage [2008/03/05(水) 13:43:14 ] >>326 ありがとうございます。 敷居が高そうですね・・。もう少し慣れてから挑戦してみます。
329 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 14:59:10 ] >>327 if else は、フィールドの数が増えると遅くなるんじゃねえの、使うならswitchだろ。
330 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 15:19:44 ] どっちもJITコンパイルされれば同じだと思うのだが
331 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 15:45:36 ] switchは遅くならないのかよっ
332 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 15:50:58 ] >>331 若干最適化は効きやすいとされる。
333 名前:デフォルトの名無しさん [2008/03/05(水) 16:13:40 ] >>330-332 おまいら今すぐC言語のスレで、コンピュータの基礎を勉強しやがれ
334 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 16:27:33 ] この場合アセンブラだろ お前も基礎を勉強しやがれ
335 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 16:29:17 ] >>334 違うだろ、テーブルルックアップ式 goto label の勉強だ
336 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 16:29:20 ] >>327 FieldIndexerAttributeにAttributeUsage(Attribute)付けるといいかもと思った あと、>>139 の言ってるのは多分FieldInfo.FieldHandle/GetFieldFromHandleの事 >>329-332 以下、MSIL生成する言語に限った話しなのでそのように 疑問があれば逆アセンブル(ildasm.exe)してみればいい 判定するのが連続した整数値じゃないときはswitchもif〜elseも大差ない 比較部分は同じで処理部分がサブルーチンかスパゲッティかって感じ 連続した整数値があれば(一部でも可)switchではその部分がまとめられる MSILから先は分からないが、多分ジャンプ先を数値的に計算してるんだと思う
337 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 16:34:21 ] switchを逆アセンブルしてみると、if,elseとgo,labelの組み合わせだよ
338 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 16:39:46 ] 値が連続したところは>>336 の言うように纏められるよ あれ手でやるのは面倒
339 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 16:49:22 ] class A { // ildasm.exe static void Main( string [] arg ) { System.Console.WriteLine( arg[0] ) ; switch( (int)arg[0][0] ) { case 0 : System.Console.WriteLine( 'A' ) ; break ; case 1 : System.Console.WriteLine( 'B' ) ; break ; case 2 : System.Console.WriteLine( 'C' ) ; break ; } } }
340 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 16:50:36 ] .method private hidebysig static void Main(string[] arg) cil managed { .entrypoint // コード サイズ 66 (0x42) .maxstack 3 .locals init (int32 V_0) IL_0000: ldarg.0 IL_0001: ldc.i4.0 IL_0002: ldelem.ref IL_0003: call void [mscorlib]System.Console::WriteLine(string) IL_0008: ldarg.0 IL_0009: ldc.i4.0 IL_000a: ldelem.ref IL_000b: ldc.i4.0 IL_000c: callvirt instance char [mscorlib]System.String::get_Chars(int32) IL_0011: stloc.0 IL_0012: ldloc.0 IL_0013: switch ( IL_0026, IL_002f, IL_0038) IL_0024: br.s IL_0041
341 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 16:51:27 ] IL_0024: br.s IL_0041 IL_0026: ldc.i4.s 65 IL_0028: call void [mscorlib]System.Console::WriteLine(char) IL_002d: br.s IL_0041 IL_002f: ldc.i4.s 66 IL_0031: call void [mscorlib]System.Console::WriteLine(char) IL_0036: br.s IL_0041 IL_0038: ldc.i4.s 67 IL_003a: call void [mscorlib]System.Console::WriteLine(char) IL_003f: br.s IL_0041 IL_0041: ret } // end of method A::Main このスレは息を吸うようにウソをつく奴が居るので注意が必要だ
342 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 16:55:09 ] まあ、間違いもあるだろうからそんなわざわざ相手逆なでするような言い方する必要はないと思うけど。 結局、IL レベルで switch 命令ありで、 JIT 時に if-else 式かテーブルルックアップ式かで最適な方選択ってこと?
343 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 16:57:31 ] 間違いっつーか、これプログラマなら常識だろ?
344 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 17:04:55 ] 自分の常識を人に押し付けるもんじゃないけど、 その常識ってのは、 MSIL が switch 命令を持ってるってのの方か、 一般に switch はルックアップテーブル使って高速化可能って話の方か、どっち?
345 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 17:07:01 ] そんな複雑な事は聞かないし、普通に学校で教えてもらえるだろ、switchの使い方。
346 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 17:15:14 ] CILのswitch命令はJavaバイトコードでいうところのtableswitch命令相当かな。 Javaバイトコードにはもう1つlookupswitchって命令もあって、CILにはこれに相当するものがない。 これがないせいでgotoだらけのコードができることもあるかもね。 あと、C#のswitch caseには文字列を突っ込むこともできて、このときはもはやswitch命令は関係なくなる。 MSのC#コンパイラは、分岐数増えてきたらDictionary<string,int>を裏で作るって実装になってたかと。
347 名前:346 mailto:sage [2008/03/05(水) 17:21:07 ] >このときはもはやswitch命令は関係なくなる。 すまん、これは言い過ぎか。 Dictionary<string,int>を使って無理矢理switch命令用のインデックスを作り出す。 が正しい。
348 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 17:26:34 ] 今、色々 IL Disasm して遊んでみてるけど、switch のコンパイル結果、そんな単純でもなさそう。 case が 0 で始まる連続な整数 → IL switch 命令 非 0 から始まっての連続 → sub してから switch 命令 完全に不連続 → beq とか brtrue の連続(= if-else と変わらない) だった。
349 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 17:29:51 ] あと、例えば、 switch(x) { case 0: xxx; break; case 4: xxx; break; case 6: xxx; break; case 9: xxx; break; } みたいなのは、0 のところだけ beq、 それから 4引いてから switch 命令、 その後さらに switch 後の default 句内で case 9 の判定するような妙なコードに。 ラベルが不連続でも、値の近い整数ならある程度最適化かけてるっぽい。
350 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 17:30:38 ] コンパイラの出力にあわせてチューンはすべきじゃないよ 高速化したいなら、コンパイラにキチンと意図の伝わる形でコードすべき 前から準にシーケンシャルに比較をする事を伝えたいなら if else if で 一括比較したいなら switch で、将来のJITのチューンにあやかれるようにね。
351 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 17:33:02 ] Cのswitchの実装は処理系依存だろ。常識って何だよ。
352 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 17:34:24 ] >>351 常識っていうのは、プログラマ間で意思疎通をするのに最低限必要な知識だよ
353 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 17:37:29 ] >>349 まあswitch命令がそういう仕様なんだから仕方ないよなぁ。 ここの議論とか参考になるかも。 ttp://www.atdot.net/~ko1/w3ml/w3ml.cgi/yarv-dev/msg/444 ttp://www.atdot.net/~ko1/w3ml/w3ml.cgi/yarv-dev/msg/452
354 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 17:38:13 ] >常識っていうのは、プログラマ間で意思疎通をするのに最低限必要な知識 これはどこに書いてありますか?
355 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 17:39:29 ] >>350 それは同意。 まあ、ただ、単なる興味本位で、IL の switch 命令に関して。 Java の tableswitch, lookupswitch とはどっちとも違うかも。 単に、スタックの先頭を見て、その値をインデックスにしてジャンプするだけっぽい。 ldloc.1 switch (0x10, 0x20, 0x30) なら、ローカル変数1の値が 0 なら 0x10 に、1 なら 0x20 にジャンプってだけ。 switch をブランチの羅列にするか、引き算/テーブル参照+switch 命令にするかは 結局コンパイラ次第ね。
356 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 18:19:16 ] こういう議論て、ふらっとスレで行われることが多いのはなんで?
357 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 18:49:10 ] 前からずっみみてきたが、誰か約一名、ウソを本当のように自信たっぷり書くアンポンタンが居ついているんだよ コイツ以前マ板にもマルチレスで同僚がswitch文を使って if をごまかしたとか書きまくっていた奴じゃねぇかな こういうキチガイはいっぺん地獄へ落ちればいいんだよ
358 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 18:54:31 ] >>356 一旦的外れな方向に話が行った方が議論が盛り上がるからとか? >>357 そういう発言はキチガイをよりいっそう近づけるから、 キチガイがいやなら逆に抑えた方がいいよ。
359 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 20:11:27 ] paintイベントを発生させるにはRefresh()だったりを使ってイベントを発生させるけど、 任意のイベントを発生させるにはどうすればいいんでしょうか? たとえば、textbox1でKeyPressが発生した時に、そのキーがエンターキーだった場合、 button1.Clickを発生させるときなどです。
360 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 20:19:00 ] >>359 button1.Click(button1,new MouseEventArgs()); こんな感じか?
361 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 20:23:20 ] クリックをエミュレートするのはPerformClickだな
362 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 20:57:58 ] >>360 上手く動かなかったのでbutton_Clickメソッドを直接呼び出してみました。 button_Click(button1,new MouseEventArgs()); 一応意図したとおりに動きましたが他のクラスからだと呼び出せないと思うので常套手段ではなさそうですね…。
363 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 21:36:37 ] >>359 イベントは特定条件がそろった時に内部から発生するものだから、 その条件を無理やりそろえるためのメソッドがないものは基本的に無理 通常はイベントを発生させなくても、イベントハンドラで実行される処理と 同じ処理が実行されれば十分なはず その例だとPerformClickでもいい
364 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 21:59:49 ] >>363 なるほどそうですか。 同じ処理をしたいだけなので、例のbutton_Clickの処理内容を別のメソッドにして、 そのメソッドを呼び出すのが自然みたいですね。
365 名前:デフォルトの名無しさん [2008/03/05(水) 21:59:53 ] TableRow,TableCellで動的にボタンをいくつか作成して ***** 何回かループ ***** Button objButton = new Button(); objButton.ID = "Btn" + i.ToString(); objButton.Width = 50; objButton.Click += new EventHandler(Button_Click); objTableCell.Controls.Add(objButton); ***** 何回かループ ***** 縦にボタンがループの回数分並んだとして、適当に真ん中辺りのボタンを押した時、 そのボタンのIDって取得出来るの??? ちなみに"Btn" + i.ToString();で順番にボタンのIDをつけてるんだけど private void Button_Click(object sender, EventArgs e) { string 押されたボタンのID = どのようなコード?? }
366 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 22:03:22 ] ヒント: sender
367 名前:デフォルトの名無しさん [2008/03/05(水) 22:09:34 ] senderをなにかのパラメーターとして渡すのでしょうか?? それともsender.Get…という形で使うのでしょうか?^^;
368 名前:デフォルトの名無しさん [2008/03/05(水) 22:15:32 ] とりあえずsender.ToString();でなにが取れるか見てみたら "System.Web.UI.WebControls.Button"としか取れず、色々してみても 特定のIDを取ってくることが出来ませんでした。。
369 名前:デフォルトの名無しさん [2008/03/05(水) 22:21:49 ] わかりました!ありがとうございます!
370 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 22:23:51 ] >>368 それはつまりsenderがButtonにキャストできるということ。
371 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 22:27:07 ] IDとButtonの関係がさっぱり見えない
372 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 23:20:43 ] >>368 的外れな話かもですが、 そのコントロールの定義?のところに書いてある、senderなんちゃらを使ってみるというのは? 質問です。 画面AからダイアログBを呼び表示させました。 ダイアログBのロードメソッドで条件を判定した結果によって、 ダイアログBを閉じたということにしたいのですが、うまくいきません。 ロード処理の中で、ダイアログのクロージングの処理を呼んだのですが、 処理が画面Aの呼び出し元に戻らず、ダイアログが表示されたままになってしまいます。 クロージングの中で使う、CancelEventArgsで何かパラメーターを渡せばよいのでしょうか? すいません。お願いします。
373 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 23:47:22 ] ヘルプ! IDEをダウンロードしたいのですがセットアップ中のダウンロードが 進まないのは私だけ? ttp://www.microsoft.com/japan/msdn/vstudio/express/
374 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 00:10:24 ] >>372 クロージングの処理とやらは何? イベントメソッドを呼んでるのか? それは「閉じようとしてるときに呼ばれるイベントメソッド」であって 「閉じるために」呼ぶもんじゃないが。 >>373 これまじお勧め。 全部入り。 www.microsoft.com/japan/msdn/vstudio/express/maninstall/2008/default.aspx
375 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 01:08:13 ] ListViewのColumnHeaderコレクションエディタでColumnを追加した後、 メンバの順序を↑↓で変更しても反映されないのはバグ??
376 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 01:49:03 ] 逆引き本を探しているんですが、オススメないでしょうか。 どれも似たり寄ったりでしょうか? ペイントブラシのようなものに挑戦しているので、グラフィック関係が書かれていると助かります。
377 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 02:13:57 ] >>374 いつのまにか全部入りのExpress Edition出てたのか 単品よりいいね
378 名前:323 [2008/03/06(木) 09:45:15 ] 自己解決しました。 ボタンのFlatStyleをSystemにしたら適用されるようになりました。
379 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 15:37:43 ] C#使うなって言われそうだけど、 C#でWin32ネイティブアプリ作れます?
380 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 15:57:57 ] そもそもコンパイラがネイティブコードを吐けないはず。 VC#以外のコンパイラはしらね。
381 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 17:45:30 ] だれか>>375 を試してみてください。 ListViewのViewプロパティをDetailsにして、Columnsのコレクションをいくつか追加して、 コレクションエディタの↑↓で位置を変えても反映されません。 (DisplayIndexが変更されない?)
382 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 19:08:52 ] >>381 DisplayIndexってわかってるなら自分で直せばいいじゃん。 位置を変えたときに変わらないのは仕様なのかもしれないし。
383 名前:382 mailto:sage [2008/03/06(木) 19:20:46 ] うん。やっばり仕様だと思う。 コレクションエディタの順番は単にListViewItem.SubItemsの順番で、 DisplayIndexが表示の順番なんだと思う。 で、それらは必ずしも一致せず、 ListViewItemを作る部分のコードは変えずに表示の順番を変えることも出来るようになってると。 #実は俺も前に同じように順番が変わらず悩んだことがある。 そのときは.Designer.csにDisplayIndexの指定があるのを見つけて、 なんじゃこりゃと思いつつ手作業で削除した。
384 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 20:17:33 ] MySqlで日本語をインサートしようとすると文字化けするのでSET NAMESでutfやsjisを 投げてみたのですが直らず。どうしたら良いのでしょうか?。
385 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 20:25:29 ] >>384 自己レス、接続時にcharsetを投げたら上手く行きました。 他の言語ではnamesを投げて上手く行っていたのですがc#ではだめなのですね。
386 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 21:48:21 ] そんなに投げちゃいかん
387 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 22:21:04 ] >>383 そうなのね。ありがと。 でもコレクションエディタで順番変えてOK押した一瞬だけ順番が変わってすぐに戻るのがデザイナ上で見えるからバグっぽく見える…
388 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 22:37:24 ] あるクラスを作って、そのインスタンスを複数作ったとき、 それぞれのインスタンスを区別するにはどうしたらいいのですか? たとえばこんなクラスです。 public void 猫() { string kainushi public 猫(string, ka) { this.kainushi = ka } public 好きな遊び{ get; set;} }
389 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 22:41:45 ] クラスってclassで定義するんじゃないの?
390 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:01:41 ] 区別してどうするの?
391 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:04:34 ] 区別しない方が難しいだろ。
392 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:05:36 ] そんなこと自分で考える前に基本的な文法を勉強した方が
393 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:10:58 ] 猫[] cats = new 猫[5]; Console.WriteLine(cats[0] == cats[1]); Console.WriteLine(cats[0] == cats[2]); Console.WriteLine(cats[0] == cats[3]); Console.WriteLine(cats[0] == cats[4]); Console.WriteLine(cats[1] == cats[2]); Console.WriteLine(cats[1] == cats[3]); Console.WriteLine(cats[1] == cats[4]); Console.WriteLine(cats[2] == cats[3]); Console.WriteLine(cats[2] == cats[4]); Console.WriteLine(cats[3] == cats[4]); 全部Falseだろ。つまり区別できてる。
394 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:16:16 ] >>393 インスタンスの区別じゃないの??
395 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:17:20 ] 猫 → クラス cats[0] → インスタンス cats[1] → インスタンス cats[2] → インスタンス cats[3] → インスタンス cats[4] → インスタンス
396 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:22:54 ] >>393 そのまま動かしたら全部trueになっちゃうw
397 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:59:33 ] >>395
398 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:02:36 ] cats[0] → null cats[1] → null cats[2] → null cats[3] → null cats[4] → null
399 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:12:27 ] cats[0]がインスタンスと聞いて
400 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:26:15 ] ぬる猫がいると聞いて
401 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:31:44 ] >>393 >>393 >>393
402 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:54:49 ] 何で配列にしようと思ったのやら
403 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:59:17 ] classの規定の==はそれぞれのインスタンスを区別する 中身が全く同じでもインスタンスが違えば==はfalseになる
404 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:24:40 ] >>387 5分くらいで適当に考えた対策だけど多分おk 全選択してDisplayIndexを 列数-1 で並び順になる (0だと逆順)
405 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:52:53 ] >>404 何その裏技っぽいのwすごw でもそれでいけるね! 0指定すると逆順になるけどコレクションエディタと同期してないから同じ事だけど。
406 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 02:25:26 ] 最近C#使ってみようと思ってるんですが、 C#3.0ってもうリリースしてるんでしょうか? どうせなら3.0から勉強したいなと・・・^^;
407 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 02:26:47 ] とっくの昔にリリースしとる
408 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 02:30:41 ] >>407 そうでしたか・・・アホな質問してすいません(__) Wikipediaは見たんですが、言語仕様しか書いてなくて^^; JavaScriptっぽいらしいですね。JavaScriptは好きなんで楽しみです。 後、C#でP2Pしたいんですがお勧めのページあるでしょうか? ActionScript3.0がSocketが扱えて同期通信できるようになるって言ってたんですが 当分先そうなんでFlex2からC#に浮気してみようかなと・・・^ω^;
409 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 02:32:33 ] 「C#」「P2P」「ページ」の関連性について。
410 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 02:36:08 ] お勧めのページといったらタウンページかMSDNしかないだろう
411 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 02:39:20 ] Wikipediaにも最新リリース: C# 3.0とはっきり書いてある。
412 名前:406 mailto:sage [2008/03/07(金) 02:40:14 ] >>410 でwwwすwwwよwwwねwww まぁ進捗Blogとか貼ってくれたら儲けもんぐらいに思ってただけなんで、 適当にググッてみますわwwww
413 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 02:41:43 ] >>411 あー・・・右上の表見落としてた・・・ まじすまそ・・・あほすぎ。
414 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 04:08:06 ] なんか覚えたての単語並べてみましたって感じ?
415 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 11:22:30 ] c#からmysqlにinsert set name=val にする時にvalをエスケープしないといけないのですが mysql側に専用のエスケープ関数などあるのでしょうか?。
416 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 12:55:07 ] それはあれだ、C#のソースコード上の文字列をエスケープする関数を探すようなものだな 例えば、文字列リテラルで \" とエスケープせずに、 " と書いて関数でエスケープしたいと
417 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 13:25:23 ] >>416 いじわる!!笑 @の他は正規表現でいちいち書き換えないとだめなのでしょうか?
418 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 14:03:44 ] 意地悪ではない。処理のレイヤーが違うから無理と暗にいってる パーサが文字列リテラルを判別するためにエスケープが必要で 関数に渡されるのはパースされた文字列 当たり前すぎて確認してなかったけど、 valは文字列リテラルでエスケープというのは ' => '' とかのことだよな
419 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 14:04:50 ] >>417 そんなことより株取引がんばってください
420 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 14:21:10 ] >>418 言われて見て思ったのでちょっと試したのですがこういう事ですよね。 sqlでインサートできないから安易にエスケープと考えてしまったのですが問題は別にあると 認識し試行錯誤します。 string text = @"\a\a\a'''"; MessageBox.Show(text); >>419 おうよ!。みずほが下がってる><
421 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 18:00:24 ] 2008を使ってますが、2002年に出たC#の本を買っても問題ないでしょうか? 『C#によるプログラミングWindows』上下Charles Petzold (著)が気になっています。
422 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 18:33:20 ] せめてC#2.0(VC#2005)に対応したのにしとけ
423 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 18:47:21 ] PictureBoxに画像+αを表示したいのでPictureBoxのPaintデリゲートに指定した関数の中で 描画処理を行わせるようにしたのですが、その際にPaintEventArgs.Graphicsを利用して描画すると意図通り動くのに対して それを利用せずに関数内でPictureBox.CreateGraphics()により取得したGraphicsオブジェクトを利用して描画した場合には 他のウインドウの影に隠れた場合等に再描画が正常に行われないのですが何故なのでしょうか?
424 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 19:22:06 ] お前さんが再描画してないんだから当然 てか、そのためのPaintイベントじゃないか
425 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 19:31:44 ] >>424 どちらの場合も処理してる関数自体はPictureBox.Paintに登録しているのでクライアント領域が無効化された場合には 再描画のルーチンが実行されると思ったのですが違うのでしょうか?
426 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 20:10:49 ] クリッピングというものがあってな
427 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 20:33:12 ] ああ、そういうことか こんな感じにして何度か再描画すると面白いものがみれるよ void pictureBox1_Paint(object sender, PaintEventArgs e) { e.Graphics.Clear(Color.White); Thread.Sleep(1000); e.Graphics.Clear(Color.Gray); Thread.Sleep(1000); this.pictureBox1.CreateGraphics().Clear(Color.Blue); Thread.Sleep(1000); }
428 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 20:33:44 ] MySqlDataReader.read()って一番最後の行を読んだ時点でfalseになりません? while(MySqlDataReader.read()){ List<string>.Add(val)//これだと一番最後の行が追加されない }
429 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 21:51:04 ] System.Web.WebProxyクラスに設定した、プロキシサーバーが生存中かを 楽に確認する方法ってないでしょうか。 プロキシサーバーにpingを打って、100ms以内に応答がなけれ ば無効と判断するコードの、簡単な書きかたってないでしょうか?
430 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 23:27:15 ] Pingクラスがあるよ
431 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 00:17:09 ] >>428 サードパーティ製ライブラリについて質問するのに、ライブラリの名称もバージョンも書かないとか どんだけ
432 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 00:52:32 ] 街の仲間たちにぬっ殺されろ
433 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 01:32:31 ] >>428 read()の時点で1レコード呼ばれてるってオチだろ
434 名前:デフォルトの名無しさん [2008/03/08(土) 03:04:25 ] C#初心者でございます。 C#もJAVAのように数学の関数などを Math.Sin(); 等とクラス名を書かなければいけないようですが クラス名を省略することは可能なのでしょうか。
435 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 03:05:09 ] using
436 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 03:26:02 ] Java には static import が付いたけど C# には似たようなものってあったっけ
437 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 03:27:34 ] using
438 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 04:41:44 ] ハッシュテーブルのことC#では何言うんだっけ?
439 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 04:44:48 ] ハッシュテーブルだろ
440 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 04:49:07 ] Hashtable Dictionary
441 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 07:38:26 ] おはようございます string[] str = (string[]) List<string>をみたいに簡単に変換する方法はないでしょうか?
442 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 07:40:20 ] ToList
443 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 07:41:05 ] じゃなかったToArray
444 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 07:49:23 ] >>443 こんな便利なものがあったのですね ありがとうございます
445 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 10:37:58 ] >>434 いきなりSin()とか書かれても面食らうだけだからやめてくれ
446 名前:デフォルトの名無しさん [2008/03/08(土) 10:58:30 ] お答えいただき有難うございます。 usingだと省略できますか。 別名をつけられるのはできたのですが M.Sin()とかになってしまうのでこれでもまだすっきりしないというか。 できないならできないで仕方ありませんが。 >>445 そうですか? 数学をやるとき「数学の積分(R*数学のSIN(π + θ))」なんて いちいち書くのは冗長ですよね・・・と思っていたのですが、 sin ,cosと来たら三角関数、というのはもはや非常識なのでしょうかね。
447 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 11:08:59 ] >>446 確かに数値計算系のプログラムではいちいちMathつけると読みにくいというのには同意。 自クラスに static double sin(double x) { return Math.Sin(x); } なんて定義するのはダメ? クラス毎に定義しなきゃいけないのが面倒だが。
448 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 11:41:55 ] VBのモジュール感覚で濫用するアホが出てくるからだろ
449 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 11:46:26 ] doubleの拡張メソッドにしたら
450 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 11:55:12 ] でも確かにDelphiのwith相当のことをやりたいことはたまにあるな。
451 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 11:58:39 ] >>450 VB使えよ
452 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 12:17:05 ] ヘジは早くプリプロセッサを追加しろよ。
453 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 12:17:22 ] with最凶
454 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 12:38:28 ] >>446 現状で最もましな方法はpartialクラスで>>447 だと思う てか、モドキじゃないMix-inが使えればいいのにな
455 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 12:55:40 ] ListViewの詳細をクリックするとアイテムが選択されますが、 プログラムから選択させることって出来ますか? listView1.Items[0].Selected = true; こんな感じにしてみたのですが選択はされていると思うのですが見た目上選択されたようにはなっていません。 見た目も選択されているようにするにはどうしたらいいんでしょうか?
456 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 13:16:41 ] >>454 違うと思うよ。 もっとも「マシ」な方法は、"Mathがうっとうしい"などという感覚を矯正すること。 要するにただの慣れの問題でしょ。 まあ慣れすぎて自分のクラスの静的メソッドでもクラス名つけたくなってくるのも それはそれで難儀だとは思うけど
457 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 13:25:23 ] あとVBのWithってブロック内のインスタンスの表記を省略できるだけなんだよね。
458 名前:466 [2008/03/08(土) 13:40:33 ] クラス名の省略はとりあえずできない、というのがわかって助かりました。 ありがとうございました。
459 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:07:05 ] >>455 HideSelectionがTrueのままになってて、フォーカスが他にあるってオチじゃないよね?
460 名前:デフォルトの名無しさん [2008/03/08(土) 14:09:48 ] >>455 listview.Focus()してもだめ?
461 名前:455 mailto:sage [2008/03/08(土) 14:15:32 ] listView1.Select(); で解決しました。
462 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:17:31 ] >>459 違うみたいです。 >>460 だめでした。。
463 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:47:12 ] "続行するには何かキーを押してください . . ."ってどうやるの?
464 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:54:03 ] >>463 pause
465 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:09:11 ] Visualstudioでクラスの名前を変更する時、 ジェネリッククラスだとファイルとクラスの名前が連動しないのは仕様ですかね?
466 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:12:52 ] ファイル名に<>使えない
467 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:13:04 ] >>464 ごめん。質問の仕方が悪かった。 僕が言いたいのは以下のようなプログラムの場合、 using System; namespace HelloWorld { class Program { static void Main() { Console.WriteLine("Hello World"); } } } 実行すると一瞬コンソールが現れて消えてしまうんだけど「Visual Studio」とかで実行したら "続行するには何かキーを押してください . . ."って出て終了しないよね? それでそのようなことをするコマンドプロンプトのオプションがあるのかなあって調べたら無かったからどうやるのかなあってこと。
468 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:15:26 ] >>467 Console.Write("続行するには何かキーを押してください . . ."); Console.ReadKey();
469 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:32:04 ] >>468 レスどうもありがとう。 でもその方法は知っているんだ。 Visual Studioはいちいちそれを加えてからコンパイルして実行しているの? 違うよね。FileMonitorで監視してみたけど「Console.ReadKey();」が付加されている exeファイルは見つけることが出来なかった。 僕は今C#用のエディタを作っているんだけどどうしても、 よく見る"続行するには何かキーを押してください . . ."が出来ない。 教えてください。よろしくお願いします。
470 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:33:43 ] だから、pause もしくは、コマンドプロンプトから実行すればいい
471 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:35:24 ] そして、そのpauseコマンドはC#で作られているわけではない。
472 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:40:39 ] インターフェイスの利用価値がわからないんだが、インターフェイスってよく使うもんなのか?
473 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:50:37 ] 多分知らないうちに一番お世話になってるのはIEnumerableとIEnumerator デリゲートもインターフェイスみたいなもんだな
474 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 17:55:05 ] >>470 出来ました。ありがとうございました。
475 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 18:08:10 ] >>473 んじゃあ、自分でインターフェイスを作る事はそんなに無い感じなのかな? ありがとう^
476 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 18:29:56 ] >>475 ライブラリつくるときとか プラグインぽいのつくるときとか
477 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 19:54:38 ] >>476 じゃあ俺にはまだ必要ないな ありがと^
478 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 22:42:48 ] >>467 に便乗だけど、 Visual C#でコンソールアプリケーションを作成してデバグするときに ウィンドウが消えないように、Visual C#のオプション設定でできないの? (>>468 のようにソースはいじらないで。)
479 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 22:47:55 ] #if DEBUG (>>468 ) #endif でいいだろもう
480 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 22:51:53 ] 他の方法ではなく、できるかできないかを聞いている。
481 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 23:00:23 ] >>480 オプションではできないんじゃね? ってか回答者は機械じゃねぇぞ。
482 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 23:02:03 ] できないならできないと答えろ。
483 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 23:02:41 ] できますん。
484 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 23:03:11 ] そんなきき方じゃできたとしても誰も教えないってなるだけじゃね?
485 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 23:04:30 ] 答えられる奴が答えればいい。 >>478 に回答できる奴いないの?
486 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 23:05:14 ] できるよ。やりかたは自分で探してね☆
487 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 23:06:17 ] できるかできないかでいえばできるな。
488 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 23:07:00 ] >>486 おk。 【結論】 Visual C#でコンソールアプリケーションを作成してデバグするときに ウィンドウが消えないように、Visual C#のオプション設定できる。 以上。
489 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 23:07:56 ] POST送信をデバッグするよい方法ってないですかね? いまのとこ、HttpWebResponseの結果をテキストにしてるのですが、 これじゃPOSTに成功したのかどうかさっぱり・・・。 IEに簡単に表示とか出来ないものでしょうか?
490 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 23:08:24 ] 出来ない。
491 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 23:09:58 ] Wiresharkでも眺めてろよとかそーゆーの駄目?
492 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 23:12:17 ] >491 申し訳ない、プロトコルレベルでの通信は成功してます。 チェックしたいのは、掲示板に書き込んだときあとの、 「名前を入力してください」 とかの類です。POSTの送信データが抜けなく遅れてるのかをチェックしたいのです。
493 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 23:27:49 ] 正常に送られてるか検証するためには送らないことが必要である
494 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 23:29:47 ] そこはTCPの保証範囲でないの。
495 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 00:21:03 ] ウインドウが消えないようにするには、returnのところでF9を押す
496 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 00:22:02 ] returnのところって何?
497 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 00:22:57 ] Mainメソッドのreturnかなんか
498 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 00:23:44 ] ああ、そういうことね。thx
499 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 00:54:21 ] カラムがクリックされた時にどのカラムがクリックされたのか取得したいのですがどうすればいいんでしょうか? 選択されたカラムの名前が取得できるといいのですが…。
500 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 00:57:27 ] カラムって何?
501 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 01:02:55 ] >>500 リストビューのColumnです。
502 名前:499 mailto:sage [2008/03/09(日) 01:27:52 ] ColumnClickイベントで、e.Column.ToString()でとりあえず番号は取得できますが、 columnHeaderの名前自体は取得できないのですかね…?
503 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 01:38:32 ] インデックスが手に入ってるんだからどうでもなるだろ
504 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 01:43:55 ] 例えばどうするんだよ
505 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 01:52:24 ] listView1.Columns[index].Name; こんなことも重いつかんのならプログラミングやめたほうがいい。 向いてないから。
506 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 01:59:34 ] >>502 これでおk?
507 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:03:45 ] listView.Columns[e.Column]
508 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:15:40 ] >>505 index?? それ動きませんよ。 >>507 カラムの名前じゃなくて、カラムのメンバ名を取得したいのです…。
509 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:19:52 ] メンバ名とやらを手に入れる意味は無いから安心しろ
510 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:21:03 ] >>509 お前に意味はなくても>>508 にはあるんだよ
511 名前:505 mailto:sage [2008/03/09(日) 02:30:47 ] >>508 string name = listView1.Columns[e.Column].Text; お前の欲しいものはこれか? 最初っからTextって言えよ馬鹿。 本当に向いてないからやめておけ。 そして二度とくるな。
512 名前:499 mailto:sage [2008/03/09(日) 02:32:42 ] インデックス番号だけしか取得できないとカラムが動的に追加・削除されたら困ると思うのですが…。 メンバ名を取得する方法はないってことですかね??
513 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:34:09 ] >>511 さっきから釣りですか? 向いてないんじゃないですか?w
514 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:34:38 ] >>511 はチンコ剥いてろ。
515 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:39:48 ] >>512 メンバ名ってprivate ColumnHeader hoge; の hoge だろ? 動的に追加削除したらメンバ名も何も無いじゃん
516 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:40:58 ] >>512 >インデックス番号だけしか取得できないとカラムが動的に追加・削除されたら困ると思うのですが…。 困りません。 >メンバ名を取得する方法はないってことですかね?? 日本語でおk
517 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:46:25 ] 死ね
518 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:48:10 ] >>505 =>>511 はチンコ剥いてプログラミングやめて2chもやめた方がいい。 人生だけはやめなくていいから。
519 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:52:59 ] >>515-516 動的に追加・削除してインデックスがかぶってしまったら困ると思うのですが…。 例えばインデックス1を削除したあとに、新しく追加したカラムもインデックス1にしたら区別がつかなくなると思うのですが。
520 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 02:59:13 ] >>518 悔しかったの?w
521 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:00:57 ] >>519 削除したんならもうインデックス存在しないじゃん
522 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:04:21 ] >>521 削除した方はもうないから新しい方と区別つかないじゃん。
523 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:06:41 ] インデックスがわかればカラムのインスタンスそのものを取得できるのに、それ以上何を望む?
524 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:12:36 ] >>523 まあそうですよね。 冗長でもインデックスとは別に取得出来るんじゃないかと思ってしまってました。 ありがとうございました。
525 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:23:00 ] >>512 >>519 で区別できなくて困るのってどんな場合だろ 気になってしょうがないから、思いついた人おせーて
526 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:25:17 ] ちょっと待て終わらせんなw インスタンスそのものがわかってもインスタンス名が分からないと困る事あるだろ。
527 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:26:48 ] インスタンス名ってなに?
528 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:27:16 ] 変数のことかな?
529 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:28:09 ] カラムを動的に追加するときにNameプロパティをちゃんと設定しておけばOK。
530 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:29:58 ] 例えばあるカラムがstringで数字を表示している時にそのカラムを数値として扱いたくなった時など。 その列以外は数字でもstringで扱いたいのに、その列だけは数値として扱いたい。 そして動的に追加・削除されるものだとしたらインデックスよりインスタンス名が欲しいでしょ?
531 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:32:10 ] で、インスタンス名ってなに?
532 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:35:57 ] >>529 Nameプロパティが取得できないからこういう流れになってるんだろ
533 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:36:43 ] >>505 >>511 >>527 >>528 >>531 もうちょっと勉強して来い
534 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:37:06 ] >>533 死ね
535 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:40:06 ] スクリプト脳の弊害ってホント恐ろしいな。 で、インスタンス名って何。
536 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:43:15 ] スクリプト脳って?
537 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:43:46 ] 池沼はスルーしろよ
538 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:44:28 ] 出た、スルーw
539 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:56:26 ] >>525 クリックされた列がある特定のデータ群だった時にだけ処理をしたい場合
540 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 03:59:42 ] 「クリックされた列がある特定のデータ群」ってなに?
541 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 04:01:21 ] もう相手すんなよ
542 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 04:01:52 ] 名前なんて不安定な要素で判定しないなぁ
543 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 04:01:57 ] 出た、もう相手すんなよw
544 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 04:10:38 ] ただの荒らしじゃねえか
545 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 04:13:52 ] A B 1 1 AとBの列があったとして、Aの列(1)にだけ特定の処理をしたい場合困るんじゃね?
546 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 04:16:48 ] 何が困るのか全く分からない。
547 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 04:18:11 ] break;
548 名前:545 mailto:sage [2008/03/09(日) 04:20:31 ] >>546 俺に聞いてる? じゃあ逆にAの列をどうやって特定する? 削除される可能性もあるからインデックスからは特定できないよ。 Aの名前も削除された後に追加されるかもしれないから名前でも特定できない。
549 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 04:34:54 ] List<ColumnHeader>で管理するなりNumberColumnHeaderクラス作るなりどーとでも。
550 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 04:36:35 ] >>548 ColumnClickアクションを拾って、e.Columnでインデックスが取れるよね。 で、アプリはどのカラムが何を意味してるか知ってるはずだよね? 知らないとしたら、それってどういう状況なの??
551 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 04:45:46 ] ListViewからカラムを削除するのはアプリ。 ListViewにカラムを追加するのはアプリ。 何番目のカラムに何を格納するかを決めるのもアプリ。 インデックスが分かればカラムを特定できる。 カラムを特定できればあとはアプリが自由に操作できる。 何が困るのか全く分からない。
552 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 04:49:10 ] >>548 Tag 単純な処理ならint,enumを入れておいてその値で処遇を決めるとか、 ソートするだけならtype(比較可能)を入れておいてキャスト時に使うというのも 複雑な処理をしたければ>>549-551
553 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 06:21:56 ] >>548 削除された列のクリックイベントってどこから発生するの? 動的に追加削除されるカラムの中の特定のカラムに対して特定の処理をしたいってんなら、 そもそもクリックイベントでインデックスを取るまでもなく、そのカラムの変数名でアクセスすればいいだけ。 というよりも、削除されているであろうカラムのインデックスをクリックイベントで取る意味が分からん。 流れ分かってる?発端は>>499 だよ
554 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 11:48:11 ] タブコントロールでタブを下に配置した時にFlatButtonsにする方法はないのでしょうか?
555 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 12:52:16 ] 混乱させる忍術の稽古はよそでやれ
556 名前:デフォルトの名無しさん [2008/03/09(日) 13:10:38 ] ??columnのインスタンス名(??)の話の流れが全く読めないんだが あるインスタンスを格納する変数名を取りたいってことか?? 変数名なんて単なる箱なんだからスコープ違えば役に立たないと おもうんだけど…それとは違うの?
557 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 14:19:01 ] >>556 何いってるの
558 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 14:30:22 ] 釣りなのか思い込み野郎なのかは知らないけど、気にするな
559 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 14:59:37 ] >>550-551 こういう場合はを想定ごらん。 例えばボタン1を押したらカラム追加、ボタン2を押したらカラム削除するとして、 プログラム上ははじめから配置されているある特定のひとつのカラムだけに操作する必要がある場合。 勿論削除されたら操作しないし、内容も他のカラムと見た目上判断できない。
560 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 15:01:10 ] まあ削除するときに特定のカラムかどうかを判定すればいいんだけど、 >>550-551 は状況を想定できないようなので言ってみた。
561 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 16:41:57 ] >>559 カラムクリックイベントからインデックスを取るという状況の話をしているのに、 なんでボタンのクリックイベントで特定のカラムを操作する話になってんの? もともとそんな状況の話なんかしてないんだからそんな想定は無意味だ。
562 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 17:05:24 ] >>559-560 そんなもんプログラム上で如何様にもできるっての。
563 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 17:23:08 ] >>561 なんでインデックスを取る話になるの? インデックスじゃ区別つかないからインデックス以外の方法はないかって話題だろ? >>562 如何様に出来てもインデックス以外の要素で一発で判断できるメンバがあれば楽って話だろ。 例えばエクスプローラでよくあるカラム上の▲▼マークだってオーナードロー駆使すれば如何様にも出来るけど デザイナ上で一発で出来れば楽だろ。 それと同じ。
564 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 17:25:40 ] >>561 それと、カラムクリックイベントからそのカラムを操作するのと ボタンクリックから特定のカラムを操作するのとでは条件同じだろ。 どっちにしろ指定されたカラムが”ある特定のカラムか”判断する術はインデックスからは無理って話なんだけど理解できる?
565 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 17:35:37 ] if (numberColumn == listView1.Columns[e.Column]) { .... } なにが無理なの?
566 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 17:39:16 ] お触り禁止
567 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 17:41:13 ] つまんないこというなよ
568 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 17:46:23 ] >>564 >ボタンクリックから特定のカラムを操作するのとでは条件同じだろ。 イベント引数の中身が全然違う。ゆえに条件は同じとは言えない。 >どっちにしろ指定されたカラムが”ある特定のカラムか”判断する術はインデックスからは無理って話なんだけど理解できる? 何言ってんの? "ある特定のカラム"というからにはそのカラムオブジェクトとインデックスから導かれたカラムの参照が 同じかどうか判定すればいいじゃん。お前もしかして"その特定のカラム"のインスタンスが分からないと 参照が同じかどうか判定できないとでも言いたいわけ? 比べる対象なんだからそんなもの分かっている前提に決まってるだろ。 お前が>>559 で言っている状況の話を理解できないわけないだろうが。 >>559 の内容がこの話の流れと全く違っていると言ってるのよ。 この話の発端となった>>499 を百回声に出して読むんだな。 お前以外のやつは>>449 のアホな質問に対する答えについてどうこう話しているはずだ。 お前だけ流れが読めてない。
569 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 18:00:01 ] まあ元の質問を置いてきぼりにして話が膨らむのはよくあること。
570 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 19:36:28 ] 元の内容自体は>>499 が(もう少しマクロな視点で)目的を言うか、 誰かが質問するかすれば、すぐにでも解決できそうなものなのにな
571 名前:499 mailto:sage [2008/03/09(日) 19:43:02 ] まーまー^^
572 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 19:47:47 ] >>568 そのカラムオブジェクトとインデックスから導かれたカラムの参照が同じかどうか判定 ってどうすればいいの?
573 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 19:49:06 ] >>572 >>565
574 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 19:55:19 ] 必死すぎるやつがいるな
575 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 21:09:48 ] そんなことよりGridLineをスクロールした時のバグは直ってないのか
576 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 08:04:41 ] エクスプローラでドライブにメディアが入っていないときに表示される 「DVD-RAM ドライブ」 といった文字列を取得する方法は、 .NETのライブラリには用意されていないのでしょうか? IShellFolder::GetDisplayNameOfを呼び出すよりも楽に取得する方法はありますか?
577 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 12:15:00 ] ない。シェルをラップしたライブラリでも作れば商売になりそうな気がする。
578 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 13:40:18 ] これをスマートに書くとどうなりますか? private string GetSpecialFolder(string name) { Environment.SpecialFolder esf = new Environment.SpecialFolder(); if (name == "Desktop") { esf = Environment.SpecialFolder.Desktop; } else if (name == "MyDocuments") { esf = Environment.SpecialFolder.MyDocuments; } return Environment.GetFolderPath(esf) + @"\"; }
579 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 13:52:40 ] >>578 Desktop,MyDocumentsをそこらじゅうで使うなら class Desktop class MyDocumentsと作って使うメソッドを定義 そこらじゅうで使わないならメソッド自体いらないと思う
580 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 14:48:37 ] >>578 private string GetSpecialFolder(string name) { return (Environment.SpecialFolder)TypeDescriptor.GetConverter(typeof(Environment.SpecialFolder)).ConvertFromString(name); }
581 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 14:53:38 ] GetFolderPath忘れてた。 private string GetSpecialFolder(string name) { return Environment.GetFolderPath((Environment.SpecialFolder)TypeDescriptor.GetConverter(typeof(Environment.SpecialFolder)).ConvertFromString(name)) + @"\"; }
582 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 15:34:50 ] >>579-581 ありがとうございます。 ループの中で使うだけなのでソース上で多用するわけではないので短くある必要は ないのですが色々と勉強になります。 特にこんなものがあるなんて!。 TypeDescriptor.GetConverter(typeof(Environment.SpecialFolder)).ConvertFromString(name))
583 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 17:21:03 ] 何その裏技w
584 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 18:15:50 ] スレ違いなのですがZIP32J.DLLで進行状況のウインドウを出さないようにするコマンドって何かわかりませんか? HP巡回しても行き着かない・・・
585 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 18:45:15 ] >>584 自己解凍しました
586 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 00:37:58 ] 物凄く初心者な疑問でごめんなさい。 メモリリークってアプリケーションを終了させてもメモリが開放されない状態を言うんですよね? ガベージコレクタはそうならないように解放してくれるんですよね? だとしたらOSにガベージコレクタを実装すればメモリリークなんてなくなるんじゃないでしょうか???
587 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 00:47:49 ] プロセスが終了したら、そのプロセスが確保したメモリは全てOSが没収して別のプロセスが使えるようにする。 メモリリークってのは、プロセスが動いている間に不要になったメモリをOSに返還し忘れて、溜まっていく状態。
588 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 00:52:43 ] >メモリリークってアプリケーションを終了させてもメモリが開放されない状態を言うんですよね? それもメモリリークに入りますが、C#スレとしてはその定義は間違っています。 >ガベージコレクタはそうならないように解放してくれるんですよね? 違います。 >OSにガベージコレクタを実装すればメモリリークなんてなくなるんじゃないでしょうか??? そうかもしてませんが、現実的ではありません。
589 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 03:57:57 ] C++なんかのガベージコレクタがない言語なんかは解放しないとプロセス終了後も残ってるよ。
590 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 04:07:48 ] 配列じゃなくてもいいのですが・・・。 2つの配列があってその配列には1〜9の数字が記録されています。 そこから、1〜9の数字のうち両方で使われていない数字を抽出したいと思います。 たとえば、 A が 1,2,3,4 B が 3,4,5,6 だったら、 C 7,8,9 という答えを得たいです。 配列でもコレクションでもかまわないのですが、 そういう比較を簡単にできる方法はないでしょうか? 現在は配列をforで回して比較しています。
591 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 04:20:21 ] var Universe = Enumerable.Range(1, 9); int[] A = { 1, 2, 3, 4 }, B = { 3, 4, 5, 6 }; var C = Universe.Except(A).Except(B);
592 名前:590 mailto:sage [2008/03/11(火) 05:36:03 ] >>591 ありがとうございます。 LINQはなんとなく避けていたのですが、そろそろ本腰を入れて勉強しないといけないみたいですね。
593 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 06:55:05 ] LINQは怖くないよ
594 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 09:38:49 ] どこにLINQが出てきたの?
595 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 09:47:19 ] Universe.Except(A).Except(B)はLINQのメソッド構文
596 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 12:20:45 ] LINQのメソッド構文というかただの拡張メソッドだよな 拡張メソッドがLINQの本体 ごくまれにクエリ式を使った方がシンプルに書けることがあるけど 普通は拡張メソッドを使った方が早いし見やすいし楽だ
597 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 12:29:12 ] 拡張メソッドで書いてもクエリ式で書いてもLINQだよ クエリを書けるようにする技術を総称してそう呼ぶだけで 別にC#にLINQっていう機能が付いてるわけじゃない
598 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 12:32:17 ] >>589 本当かよそれw
599 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 12:50:44 ] それが本当ならCでexit前のfree論争なんて起きるわけがない。 それどころか、WindowsもUnixもファイルハンドルとかの OSに属するプロセス単位の資源はみんなプロセス終了時に片付けるぞ。
600 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 15:03:32 ] e-words.jp/w/E383A1E383A2E383AAE383AAE383BCE382AF.html システムを再起動する=プロセスを終了させても解放されない(?)
601 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 15:06:11 ] 「OSに属するプロセス単位の資源」でないものが時々問題になるわけだ。 OSの資源管理がタコだったりバグってたりするとその限りじゃなくなるわけだが。
602 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 15:42:13 ] なるほど
603 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 15:47:59 ] >>589 それは OS による。 >>596 LINQ = 標準クエリ演算子(こういう(拡張)メソッドを用意しときなさいっていう規約) + クエリ式構文(C# / VB の言語拡張)
604 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 16:46:58 ] >>600 OSがメモリリークしてたらその通り。
605 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 16:59:37 ] アプリ終了時にメモリが解放されない場合はOSのバグであってプログラマに責任無しってことですか?
606 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 17:23:06 ] マネージドな世界に限ればyes
607 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 18:25:13 ] 本当かよそれw だとしたら「プロセス」ってそもそも何よw
608 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 20:10:05 ] Windowsはプロセスが終了したら勝手に解放してくれてる。 COMとかの細かいことはよく知らない。
609 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 20:27:27 ] アプリが終了しても、関連するプロセスが全て終了しているとは限らないのだ。 COMで起動したexcel.exeを終了してなくて、いつの間にか数十ものプロセスがメモリを占有してる、 という事例に出くわしたことがある。
610 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 20:30:32 ] アウトプロセスサーバなんて糞喰らえ
611 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 21:29:27 ] C# の場合でも一部イベントはちゃんとデタッチするように書いてあるね。たとえばこれとか。 msdn2.microsoft.com/ja-jp/library/microsoft.win32.systemevents.userpreferencechanged (VS.80).aspx
612 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 21:33:05 ] それは別の話だよ staticイベントにイベントハンドラを追加したまま放置すると 呼び出しターゲットのオブジェクトがGCの対象外になってメモリリークする
613 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 22:48:54 ] 9xはシステムリソース残り何%って、心配したなあ。 プログラムを起動すると減り、終了すると戻るが プログラムによっては元の値まで戻らないと当時聞いていた。 これがリークしたからなんだろうなと今だから思える。
614 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 23:24:46 ] String.Splitのオーバーロードを見てみると引数はChar[]かString[]でなければならない みたいなんだけど、実際は string str = "Hoge\tFuga\tFugo"; string[] val1 = str.Split('\t'); string[] val2 = str.Split(new char[]{ '\t' }); どちらも問題なくコンパイル及び実行が通ってしまうのだけどなんで? また、どっちでも良いとなればみんなはどっちの書き方してる? new char[]{ '\t' }を渡してやった方が良さそうかなとは思うんだけど、 str.Split('\t');と書く方がスマートにも見えてしまう。 まあどうでもいいことだと言われたらそれまでなんだが、どうも気になってしまう。
615 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 23:27:05 ] params
616 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 01:13:23 ] params char[]だと可変個の引数が許される str.Split('a','b','c',...)でもいいし 配列を入れてもいい
617 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 02:45:15 ] staticメソッドとそうでないメソッドはどう使い分けるものなのでしょうか? public class Hoge{ public int AddOne(int val) { return val + 1; } } のような引数の値を処理して返すだけのメソッドの場合は staticにするのが普通なのでしょうか?
618 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 03:01:36 ] >>616 なるほど。今までparamsの意味が分からなかったけどそういうことだったのね。 勉強になりました。サンクス。
619 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 03:10:33 ] monthCalendarで方向キーで日付を移動しても選択したことにならないので 強制的にDateChangedイベントで monthCalendar1_DateSelected(monthCalendar1, new DateRangeEventArgs(monthCalendar1.SelectionStart, monthCalendar1.SelectionEnd)); のようにDateSelectedを呼び出しました。 期待通りに、方向キーでの移動でもDateSelectedを呼び出せましたが、 方向キーで移動後にマウスで他の日付をクリックすると範囲選択になってしまいます。 期待する動作はドラッグ以外で範囲選択してほしくないのですが、上記の方法自体が間違っている(常套ではない)のでしょうか? 個人的には強制的にイベントを呼び出すのは良くないと思うのですが他に方法が思いつきません。
620 名前:619 mailto:sage [2008/03/12(水) 03:27:22 ] 問題提起箇所が複雑になってましたので整理させていただきます。 まず、方向キー入力後にマウスで日付をクリックすると範囲指定になるのはもともと仕様のようなので今回は質問から外します。 monthCalendar1_DateSelected(monthCalendar1, new DateRangeEventArgs(monthCalendar1.SelectionStart, monthCalendar1.SelectionEnd)); という強制的にイベントを呼び出す方法は正しいのでしょうか?という質問に絞らせてください。 過去ログを読んでみると>>363 のような書き込みがあるのですが、 PerformClickのようなイベントをシミュレートするようなメソッドがどのイベントにも確実にあるのでしょうか?
621 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 08:26:16 ] 619に書いてあるような「壮大な勘違い」をするのはOOPとイベンドドリブンの意味が 全然わかってないから。 遠回りでもまずOOPを理解することを考えた方がいいんじゃないの? 「イベントを呼び出す」、なんて普通に書いてるけど、 揚げ足取りじゃなくて意味不明だよ。 まあ初心者にはありがちな「勘違い」の類ではあるけど。
622 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 09:33:11 ] Guidやstringの場合は、まだ設定されていないという状態を 初期化のときに、Guid.Emptyなどを設定することによって 扱っているんですが、DateTimeのときはどうしたら良いのでしょうか? DateTime.Emptyは無いですし‥‥ DateTime.MinValueを使っても良いもんでしょうか?
623 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 10:03:33 ] DateTime?
624 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 10:16:22 ] >>617 基本的にはそんな感じ。 double X = 3.14159265; string str = X.ToString("F3"); //インスタンスメソッド double newX = double.Parse(str); //staticメソッド クラスのインスタンスにより異なる動作をさせたければインスタンスメソッドにする。 double.Parseメソッドがインスタンスメソッドだったらちょっと変でしょ?
625 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 10:22:09 ] >>622 623も書いているけどnull許容型。
626 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 10:24:09 ] >>619 OOPっていうかイベントはそんなに単純じゃないよ 君がやってるのはイベントハンドラ用のメソッドを呼び出してるだけ 別に問題ないけどイベントハンドラに直接処理を書かずに他のメソッドを作って それをそれぞれのイベントハンドラから呼び出すようにした方が綺麗
627 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 10:56:22 ] >>623 >>625 DateTimeってstructで値型だから、nullにはならないのではないでしょうか?
628 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 10:57:04 ] null にならないから Nullable でラップするんだお
629 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 10:58:21 ] int?とか書くとintまたはnullな型が出来る DateTime?でnullになるDateTimeが出来る 値型じゃなくてclassだけど
630 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 11:01:13 ] nullableは値が与えられているかどうかのフラグと値をもった値型だよ ==nullで比較できるのは構文糖衣
631 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 11:01:19 ] >>627 msdn2.microsoft.com/ja-jp/library/1t3y8s4s (VS.80).aspx >>629 Nullable<T>は構造体だから値型だぞ。
632 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 11:07:58 ] VS2005で uchukamen.com/Programming1/Menu/image2.gif このようなメニューを作りたく思い、MenuStripを作り RenderModeをSystemにしてみましたが出来ません。 VS2005では無理なのでしょうか? よろしくお願いします。
633 名前:627 mailto:sage [2008/03/12(水) 11:09:15 ] 皆さんどうも有り難うございます。 nullableって、関数の引数でnullを許容するための構文だと思っていて、 何にでも使えるとは知りませんでした‥‥。びっくり。 どうも有り難うございました。
634 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 11:11:45 ] >>632 何が出来ないんだよ。
635 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 11:22:52 ] >>634 レス有り難うございます。 ttp://sakuratan.ddo.jp/uploader/source/date73737.png こうなります。 uchukamen.com/Programming1/Menu/image2.gif より文字が大きいのでなんとかしたいです。
636 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 11:40:18 ] ツールボックスを右クリック→アイテムの選択→MainMenu お勧めしない
637 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 11:41:29 ] >>635 そのサンプルはMenuStripじゃなくてMainMenuなんじゃね? 知らんけど。 MenuStripならToolStripSystemRenderer継承したクラス作って 好きなように描画するようにしたらいい
638 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 11:42:04 ] VisualStyleを切ればいいよ
639 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 11:56:15 ] >>636 ありがとうございました。 希望の動作を実現することが出来ました。 ところで、どうしてお勧めできないのですか? >>638 menuStripにVisualStyleというプロパティはありませんでした。
640 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 11:58:49 ] MenuStripに取って代わられたから Obsolete来ても知らないよ
641 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 14:04:30 ] 拡張メソッドについての質問なんですが、 class Test { static int GetDigit(this int num) { return (int)Math.Log(num, 10) + 1; } } という拡張メソッドがあったとき、C#3.0からはインスタンスメソッドとして使えますが、ライブラリにしてC#2.0から使うときは インスタンスメソッドとして使えるのでしょうか?それとも、Testクラスのstaticメソッドとして使うことになるのでしょうか?
642 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 14:05:11 ] 当然後者
643 名前:デフォルトの名無しさん [2008/03/12(水) 15:23:22 ] あるフォルダにあるファイルの一覧を取得した後に、 そのリストからワイルドカードで検索するにはどうしたら良いのでしょうか。 string[] fileListText = Directory.GetFiles(@"C:\Hoge\", "*.txt"); と同じことを、 string[] fileListAll = Directory.GetFiles(@"C:\Hoge\", "*"); とした後に、fileListAll の中から "*.txt" のファイル名のみ抽出して fileListTex を作成したいのです。
644 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 15:59:40 ] fileListText = fileListAll.Where(s => Path.GetExtension(s.ToLower()) == ".txt").ToArray();
645 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 16:08:17 ] string[] fileListText = Array.FindAll(fileListAll, item => System.IO.Path.GetExtension(item).ToLower() == ".txt"); でも良い
646 名前:619 mailto:sage [2008/03/12(水) 16:37:49 ] >>621 はい、多分そうじゃないかと思ったのでヒントを頂きたく質問しました。 >>626 なるほど。 それだとごく簡単に共通の事が出来ますね。 PerformClickのようなものがあるので他のイベントにも同じような呼び出しでいいのかと思いました。 とすると共通の処理がないときでもイベントハンドラに直接処理を書くのは良くないのですか? それとも共通の処理が必要になった時にメソッドを分ければいいのでしょうか??
647 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 17:10:58 ] >>646 >とすると共通の処理がないときでもイベントハンドラに直接処理を書くのは良くないのですか? いいえ。直接処理を書いて問題ないです。 >それとも共通の処理が必要になった時にメソッドを分ければいいのでしょうか?? メソッドを外に書いてそれを呼び出す方がスマートになる場合もあるし、 わざわざそんなことせんでも良い場合もある。そんなに気にしなくていいよ。 俺なんかはbutton1_Click(null, null)なんかで呼び出したりするのは別に汚いともなんとも思わんし。 if(result==false)と書くか、if(!result)と書くかみたいなもんで、ただの趣味の問題。 気にするだけ無駄だと思う。
648 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 17:16:30 ] さすがにbutton2のイベントハンドラからbutton1_Clickを呼び出すのはちょっと…
649 名前:647 mailto:sage [2008/03/12(水) 17:45:59 ] >>648 それも趣味の問題だと俺は思うぞ。 例えば、 void button2_Click(object sender, EventArgs e) { button1_Click(null, null); } void button1_Click(object sender, EventArgs e) { /*処理*/ } こういうように書くより、 void button2_Click(object sender, EventArgs e) { SampleMethod(); } void button1_Click(object sender, EventArgs e) { SampleMethod(); } void SampleMethod() { /*処理*/ } こう書くべきってことを言いたいんだと思うが、 後者の書き方でもまだ汚いと思うやつ(例えば俺)もいるってことだ。 次に俺の書き方を示す。
650 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 17:52:30 ] 俺だったらこう書く。 public Form1() { InitializeComponent(); //イベント button1.Click += new EventHandler(Button1or2_Click); button2.Click += new EventHandler(Button1or2_Click); } void Button1or2_Click(object sender, EventArgs e) { //処理 } つまり、処理を行うメソッドを外部に記述しても、それを呼び出すためだけのメソッドを記述している時点で 無駄があると感じる人間もいるんだわ。 処理を行うメソッドを直接イベントに紐付けて、デリゲートがメソッドを直接呼び出す方がスマートに感じるということ。 当然反論もあるかもしれん。イベント引数を扱いたいときなどはこの方法ではまずい場合もあり得る。 要するに俺が言いたいことは、最初から言っているとおり趣味の問題だってこと。 自分が綺麗で可読性があると思えるいうコードを書けばいいじゃんって言うだけの話。 コードはこう書くべきなんて他人がどうこう言うもんじゃない。
651 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:18:39 ] >>647-650 ありがとうございます! ということは>>620 のような書き方でも問題ないということですか?? イベントの引数が違う時は>>650 のようには出来ないので>>649 のようになると思うのですが、 >>620 でも趣味の範囲という解釈でいいんでしょうか。
652 名前:647 mailto:sage [2008/03/12(水) 18:25:17 ] >>651 俺はそんなんでいいと思うけどね。
653 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:25:49 ] >>652 ありがとうございました。
654 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:35:42 ] >>642 ありがとうございます。
655 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:40:02 ] >>651 ちなみに、強制的にイベントを発生させるということを厳密に行いたいのであれば、 monthCalendarを継承したカスタムクラスで、イベントデリゲートを呼び出してくれるようなメソッドを公開する。 public PerformDataSelected(object sender, DateRangeEventArgs e){ if(this.DataSelected != null) this.DataSelected(sender, e); } ほんで外からそのメソッドを呼び出せばいい...と思う。 もしかしたら俺が何か勘違いしてるかもしれん。 興味あったら試してみて。
656 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:40:52 ] >>655 OnDataSelectedを呼ぶべき
657 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:40:59 ] 最初は動けば良いのではないかと、そういうものは楽しさの中から築きあげて行けば良いし。
658 名前:655 mailto:sage [2008/03/12(水) 18:41:32 ] さっそくミス発見。 public void PerformDataSelected(object sender, DateRangeEventArgs e){ if(this.DataSelected != null) this.DataSelected(sender, e); } voidが抜けてたわ
659 名前:655 mailto:sage [2008/03/12(水) 18:42:43 ] >>656 ほうほう。 実はmouthCalendarというものを使ったことがないもんでなw 勉強になりますw >>651 だそうです。
660 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:47:04 ] MonthCalendarとか関係なくイベントはクラス外から直接呼べない だから派生クラスから呼び出す手段としてOn**メソッドを用意する
661 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 18:50:17 ] >>650 趣味の問題、か。 議論の余地なく間違ってると思うよ。 こういう人は「抽象化」の意味と意義がわかってないんじゃないの。
662 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 19:00:45 ] 「状況に応じて適切に判断」かな 好みじゃなくて使い分けるもの
663 名前:655 mailto:sage [2008/03/12(水) 19:08:09 ] >>660 あらま、やはり勘違いしてたみたいね。 派生クラスからでもイベントは呼べないのか。 失礼しました。 >>655 はスルーして下され。
664 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 19:15:39 ] そもそもイベントって「呼ぶ」ものじゃないでしょw 英語だとInvokeとかRaiseだから「起こす」とでも言うのが正解じゃないの?
665 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 19:19:08 ] >>621 = >>661 だと思うけど反論あるなら具体例を示すべきだと思うよ
666 名前:643 mailto:sage [2008/03/12(水) 19:34:45 ] >>644 >>645 そのままでは "=>" が上手く行かなかったのですが、 string[] fileListText = Array.FindAll( fileListAll, delegate (string item) { return ( System.IO.Path.GetExtension(item).ToLower() == ".txt" ); } ); でいけました。 ありがとうございました。
667 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 19:43:21 ] 匿名メソッドほんとに冗長だな 設計時から経過措置として認識されてて,後で捨てても影響が出ないように 明示的すぎる書き方になってるのかな
668 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 19:46:02 ] >>665 ええっと、反論ってのは具体例を挙げて行うものなんでしょうか? それとも理由を添えろって言いたいの? まあいいやまず>>661 で言いたかったことをはっきりしておくと、要するに >>649 の前者のコードは議論の余地なく×で、これは趣味の問題なんかではないということ。 後者のコードは普通は△だが、確かにこのように書いた方がわかりやすい場合も 稀にあるかもしれないことは認める。 通常は>>650 の書き方を選択すべき。 >>649 の前者がダメなのは、 (1) button1_Click()が羊頭狗肉になってる。 (2) だからbutton2_Click()の処理内容が把握しづらい。
669 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 20:21:11 ] >>668 シグネチャが違うイベントの場合を示せよ。
670 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 20:28:45 ] だから,好みの問題じゃないってことだろ 判断基準は人それぞれとしても,場合によって適切に使い分けるもの
671 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 20:33:14 ] なんだよ示せよって偉そうにw なんでこういう日本語も満足に使えないたわけってのは例外なく口調が偉そうなのかね。 シグネチャが違うってどういうこと? >>668 に「通常は」と書いたつもりだけど。 EventHandler<T>と違うシグネチャのイベントを扱うのって通常かな。
672 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 22:02:39 ] >>655 >>663 OnDateSelected使えって指摘は既出の通りで、 引数として渡すイベントソース・データを外部から取るのはだめ ソースはthis固定、データはコンストラクタの引数だけ外部から取って自前で生成 その例だとこんな感じ public PerformDateSelected(DateTime start, DateTime end) { OnDateSelected(this, new DateRangeEventArgs(start,end)); }
673 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 22:50:08 ] >>670 >判断基準は人それぞれとしても,場合によって適切に使い分けるもの それこそが、まさしく好みとか趣味という言葉の指し示すものである。
674 名前:655 mailto:sage [2008/03/12(水) 23:08:50 ] >>672 なるほど、勉強になった。Thx
675 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:15:51 ] >>671 普通にあるでしょ。 例えばbutton1が押された時と、textbox1上でエンターキーが押された時に同じ処理をしたい時とか。 この場合は private void button1_Click(object sender, EventArgs e) {foo();} private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) {foo;} } のように>>649 の後者の書き方になるんじゃない?
676 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:17:25 ] あほ
677 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:30:09 ] ばか
678 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 23:38:10 ] 分布図
679 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 11:59:03 ] delegate int Hoge(); Hoge hoge; hoge += foo1; hoge += foo2; hoge(); とするとfoo1, foo2と呼ばれfoo2の返り値だけが返りますが hogeに登録されているものを個々に呼び出し それらの返り値を得たいのですが、どうやるのでしょうか?
680 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 12:03:34 ] >>679 GetInvocationListでDelegate[]を取得するとか。
681 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 12:09:24 ] >>679 素直にrefまたはoutで渡せばいいじゃん。
682 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 12:28:19 ] >>680 thx Delegateクラスのメンバ一覧見てたのに全然気が付かなかった・・・
683 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 16:31:24 ] 属性の書き方なんですが、下記の2つに違いはあるのでしょうか? [Description("ほげほげ"), DefaultValue(false)] public bool HogeHoge {〜} [Description("ほげほげ")] [DefaultValue(false)] public bool HogeHoge {〜}
684 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 16:42:07 ] ない
685 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 01:14:17 ] Hoge hoge = new Hoge(); // 1 hoge = new Hoge(); // 2 hoge = new Hoge(); // 3 hoge = new Hoge(); // 4 hoge = new Hoge(); // 5 とやったときに1~4までのインスタンス解放を気にする必要が無いってのが ガーベジコレクト機能を持つ言語の利点という理解でよろしいでしょうか?
686 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 01:18:05 ] YES
687 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 01:48:14 ] >>671 早く答えろよ
688 名前:685 mailto:sage [2008/03/14(金) 01:53:09 ] >>686 ありがとうございました。
689 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 02:19:53 ] なんからのネイティブリソースを確保してたらアウトだけどね
690 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 04:06:28 ] private void Performed(object sender, EventArgs e) { 処理; } でいいじゃない。 やらないけど。
691 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 08:30:07 ] あほ
692 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 08:32:10 ] なんであほなのか詳しく
693 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 08:54:51 ] テキストを画像に変換したいのですが、 どのように処理したらいいでしょうか? また、変換後の画像の大きさ(高さ・幅)は取得できるでしょうか? 低レベルですみませんがよろしくお願い致します。
694 名前:デフォルトの名無しさん [2008/03/14(金) 09:06:28 ] >>693 > テキストを画像に変換したいのですが、 意味がわからん
695 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 09:12:38 ] GDI+
696 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 09:17:15 ] >>694 例えば「abcde」と入力したら、 abcdeと書かれた画像を生成することです
697 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 09:22:29 ] System.Drawing
698 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 09:24:50 ] >>697 ありがとうございます 生成後のBitmapのサイズは取得できますか?
699 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 09:40:29 ] お前には無理。
700 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 10:05:18 ] >>698 TextRendere.MeasureTextとかで。
701 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 10:09:41 ] >>700 ありがとうございます! 本当に助かりました!
702 名前:デフォルトの名無しさん [2008/03/14(金) 10:14:34 ] マイクロソフトがC#用ネイティブコンパイラの製作を発表 これでC#は事実上最強言語になったわけだ an.to/?microsoft01news
703 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 10:24:23 ] 皆さん、>>702 はクリックしないようにね。
704 名前:デフォルトの名無しさん [2008/03/14(金) 10:27:37 ] >>702 ただの釣り 開くとビルゲイツの若かりしころの写真が出てくるだけ
705 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 10:32:03 ] ウィルスバスター2008役にたたねぇorz
706 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 10:36:19 ] これって何? ググってみたらan.to/?で始まるのがあちこちに張りまくられてるみたいだけど。
707 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 10:51:51 ] >>704 写真が出てくるだけじゃないんだが、 telnetつかってごにょごにょっしようとする。
708 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 10:54:09 ] >>706 「これ」が何を指しているのか分かりかねるが、 URLのことなら書いてる通りの転送サービスじゃないのか 内容のことなら見てないので知らない
709 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 11:29:51 ] ProcessStartInfoのArgumentsにスペースを含むファイルを指定しようとしましたが出来ません...
710 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 11:54:44 ] ""で囲め
711 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 12:04:00 ] どうもありがとうございました。
712 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 12:20:18 ] GDI+で放射状にグラデーションをかける方法はありますか? WPFのRadialGradientBrushみたいなことがしたいのですが
713 名前:712 mailto:sage [2008/03/14(金) 12:28:37 ] 自己解決 using (GraphicsPath path = new GraphicsPath()) { path.AddEllipse(0, 0, width, height); using (PathGradientBrush brush = new PathGradientBrush(path)) { brush.CenterColor = Color.White; brush.SurroundColors = new Color[] { Color.Red }; g.FillEllipse(brush, 0, 0, width, height); } }
714 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 12:50:20 ] たびたびの質問申し訳ありません。 SendKeysでスペースキーを送信したいのですがどのようにすればよいのでしょうか。 よろしくお願いします。
715 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 13:08:58 ] >>714 半角スペースをSendすればいい予感がしました
716 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 13:13:59 ] >>715 10回連続で送信したく思い、 SendKeys.SendWait("{ 10}"); のそうにやってみたわけですが出来ないのでここに書き込みました。
717 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 13:18:52 ] >>716 10回forを回すとか10個の半角スペースをSendすればいい予感がしました
718 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 13:19:33 ] >>717 それ以外に方法が無いのならばそれでしますが...
719 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 13:24:04 ] それ以外に方法がないんだが。
720 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 13:26:37 ] どうもありがとうございました。
721 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 15:25:46 ] このスレの流れを見てるとなんか面白い
722 名前:sage [2008/03/15(土) 00:46:41 ] くだらない質問ですが、ゲームをつくりたいとおもって とりあえずC#でゲームをつくりたいとおもうのですが、 どのようにして習得(勉強)したほうがよいのでしょうか? ネットでしらべるとC#の手引きのようなものがのってますが、 そういうものでいいのでしょうか? おしえてください。
723 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 00:48:38 ] >>722 諦める マジオヌヌメ
724 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 00:50:25 ] >>722 そういうものでいいのです。
725 名前:722 [2008/03/15(土) 01:56:50 ] >>724 わかりました。とりあえずそこで勉強してみます。 一応参考までに聞きたいのですが皆さんはどうやってC#を習得したのですか? できればおしえてください
726 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 02:08:48 ] >>725 ふつーに本を読んで。
727 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 03:41:30 ] すいません質問です。 現在forが入れ子で4段になっているのですが、 一番内側の場所から一気に1段目や2段目のforまでbreakするにはどうすればいいのでしょうか?
728 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 03:42:19 ] goto
729 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 03:46:39 ] あー!! 忘れてました、そうですね。C#には普通にありましたねgoto
730 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 03:59:29 ] >>725 C# 入門 でググレ。 俺はそのサイトと@ITとMSDNとぐぐる大先生だけで独学で習得したぞ。 細かいところとかは.NET関連の質問スレとかをROMったりしても勉強になった。 本なんぞ別に買わんでもネットで十分OOPはマスターできる。
731 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 05:57:25 ] 本買うよりネットで勉強したほうが効率いいですか?
732 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 06:45:38 ] ネットの長所・短所、書籍の長所・短所がわかってればおのずと答えは出るよね
733 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 07:49:39 ] 一度は本を通して読んだ方が近道だと思うが
734 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 07:57:59 ] まあどっちにしても、C#とかオブジェクト指向とかの知識はどうにでもなるだろ。 どんなゲームを作りたいのかにもよるんだろうけど、 その先に「画面の描画」って大きなハードルがある気がするなあ。
735 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 09:02:37 ] string.Format()で、文字列をn桁の左寄せで表示するにはどうすればいいでしょうか? printf("%10s %s",first, second); と同じようなことをしたいのです。 例えば、 aaa xxxxx bbbbb yyyy cc zzzzzzzzzzz のような文字列を表示するときに、 左の項目を最低10文字分とるようにしたいのです よろしくお願い致します。
736 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 09:20:34 ] PadLeft
737 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 09:23:22 ] >>735 string.Format("{0,-10} {1}", first, second)
738 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 09:28:22 ] >>737 ありがとうございます カンマで区切るのですか MSDNにも載ってないので助かりました
739 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 09:33:18 ] >>738 載ってるよ? 複合書式設定
740 名前:デフォルトの名無しさん [2008/03/15(土) 09:43:25 ] 複数のwavを繋げて1つにするプログラムを作りたいのですが、どうすればいいでしょうか? 何かライブラリDLLはあるでしょうか?よろしくお願いします。
741 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 09:46:14 ] class TreeEx : TreeView { public TreeEx() { this.Nodes.Add("ほげ"); } } こんなクラスをフォームに貼り付けて実行してみたら "ほげ"というルートノードが2つ作られました。 おかしいと思ってInitializeComponent()を見てみたら "ほげ"ノードを追加する処理が生成されてました。 勝手に追加されると困るのですが、これを止めることってできないんですか?
742 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 09:58:20 ] >>741 デザイナが自動生成しないようにするやり方はわからないけど、 とりあえずDesignModeなら追加しないってやれば回避できると思う。 デザイナで見れなくなるけど。
743 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 10:06:53 ] あと、試してないし出来るかどうかもわかんないけど、 Nodesプロパティをoverrideして、[Browsable(false)]つけてみるとか。
744 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:21:17 ] ShouldSerializeなんたらだったかのメソッド書いたらいいんじゃね?
745 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:50:40 ] ttp://dobon.net/vb/dotnet/control/lvitemsort.html にあるclass ListViewItemComparerを 引数をつけて呼び出して使おうとしているのですがエラーになったりちゃんと動作したりします。 エラーの内容から考えるとどうもe.Columnと_columnの数字が異なる事があるらしく 比較に失敗してしまうようなのですが、どうしてでしょうか?
746 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:55:59 ] >>742-744 Browsable属性ではできなかったので public bool ShouldSerializeNodes() { return false; } public new TreeNodeCollection Nodes { get { return base.Nodes; } } を書いたら望み通りになりました。 高機能なのはいいんだけどいろいろメンドクサイデスネ
747 名前:745 mailto:sage [2008/03/15(土) 12:09:07 ] '4' の InvalidArgument=Value は 'index' に対して有効ではありません。 パラメータ名: index だからインデックスではなくてそのlistviewitemのsubtime[4]が見つからないのですね。 でも、何で動いたり動かなかったりするのでしょう?。
748 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 12:11:54 ] 引数に渡ってきた値ぐらい確認しろよ
749 名前:745 mailto:sage [2008/03/15(土) 12:25:57 ] サブアイテムは20以上あるのですが何故動いたり動かなかったりするのかわかりません。 IComparer.Compare(object x, object y)のオブジェクトは何処から来ているのでしょうか?。 e.Column から __column にインデックスが入ってそれを基準にオブジェクトが返ってきて いるのだと思うのですがIComparer.Compareの内容はどうやったら見れますか?。
750 名前:745 mailto:sage [2008/03/15(土) 12:34:18 ] あぁ、お騒がせしましたorz。たぶん、わかりました。 IDEって凄く便利ですね。デバッグ字に変数にカーソルを合わせると内容まで表示してくれるとは 今まで気付きませんでした。
751 名前:デフォルトの名無しさん [2008/03/15(土) 13:34:22 ] このスレの住人なら知っていますね、あの糞開発ツールのことを ・自分のプログラムのバグなのかコンパイラのバグなのかわからない ・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している ・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている 糞だけど、政治的な理由で無理やり使わされているんですよね もういい加減、我慢するのはやめませんか? ・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。 上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。 ・あの糞開発ツール提供会社には「糞開発ツールは話にならない」と突き放しましょう。 バグレポートなどしてはいけません。改善要求などもってのほかです。 あの会社はあなたたちのことをテスター/モルモットとしか思っていません。 ・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」 なんて話が出たら力強く机を叩き、会議室を出ましょう。 あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。 糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。
752 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 13:47:19 ] リッチテキストボックスまたはテキストボックスのオーナードローってできますか?
753 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 13:51:36 ] 俺ならできる
754 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 14:56:23 ] >>753 君ならできる。やればできるさ!
755 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 16:33:15 ] 俺にもできる?
756 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 17:18:42 ] 無理
757 名前:デフォルトの名無しさん [2008/03/15(土) 17:24:14 ] 質問です。 Microsoft Visual C# 2008をつかっていいるのですが、 ビルドして実行すると一瞬だけ(入力まちがあるとき以外)表示されて すぐにきえるのですが、どうすればきえなくなりますか? おしえてください
758 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 17:25:37 ] ブレークポイント
759 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 17:26:48 ] 消えないようにするオプションとかなかったっけ?
760 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 17:27:43 ] 無いらしい
761 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 17:34:57 ] Console.ReadLine();でも入れれば
762 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 17:35:44 ] それだったらブレイクポイントのほうが。
763 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 17:37:28 ] #if DEBUGでいいじゃない
764 名前:デフォルトの名無しさん [2008/03/15(土) 19:01:46 ] >>757 コマンドプロンプトからexeを起動しろ
765 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 19:10:31 ] マルチスレッドのサンプルでは、よくマルチスレッドにするメソッドには staticをつけてるけど、 ttp://msdn2.microsoft.com/ja-jp/library/ms171728.aspx を見るとつけてない。 つけるのとつけないのとではどう違うの?
766 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 19:12:48 ] マルチスレッドかどうかとstaticかどうかは関係ない
767 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 19:14:05 ] static つけるとマルチスレッドでより扱いにくくなると思うんだが。
768 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 19:17:40 ] >>767 そのメソッド自体を同時にひとつしか動かさないなら、別に変わらないと思うけど。
769 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 19:19:35 ] オブジェクトの状態に依存しないメソッドを意識したらstaticが多くなるんじゃね
770 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 19:25:42 ] >>757 キーアサイン変えてるからキーわからないけど、ステップオーバー押していって実行すれば?
771 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 19:26:10 ] >>768 そういう保証が必要な時点で 扱いにくくなってるということだろう?
772 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 19:34:51 ] >>757 VS上なら「デバッグ開始」じゃなくて「デバッグなしで開始」だと終了後にpauseしてくれる
773 名前:765 mailto:sage [2008/03/15(土) 19:35:47 ] まあ別に気にしないでいいってことなんだな。 ありがとう。
774 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 21:39:03 ] >>773 気にしないでいいというより気にするべきところが違うという話では。
775 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 00:19:41 ] System.Windows.Forms.TextBoxを拡張して、 入力できる文字を制限したテキストボックスを作りたいのですが、 どのメソッドをオーバーライドするのが適切ですか? TextChangedだとテキストが変わってから戻すことになりそうだし、 KeyPressだとコピペに対応できなさそうなイメージがあって、 msdnみてもよくわかりません。 教えて。
776 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 00:22:13 ] >>775 俺も知りたい。 入力中に入力値を評価するのはどうやるんだろうな。
777 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 00:28:23 ] >>775 wndproc
778 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 00:37:22 ] >>775 コピペ対応はあきらめて(ShortcutsEnabled = falseと、コンテクストメニューにダミーをかます) OnKeyPressで純粋にキー入力にだけ対応するのが一番簡単。 コピペにも対応させたいのならTextChanedで二重にチェックするのが一番簡単で確実じゃないかな。
779 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 00:51:55 ] ペースト対応って難しいの? onPasteあたりをオーバーライドすればいいんじゃないの?
780 名前:デフォルトの名無しさん [2008/03/16(日) 02:14:43 ] Detail表示のListViewで、列ヘッダを押下したときにアイテムをソートさせたいです。 このとき、アイテム内文字列の比較モードを変更できますか? 具体的には、文字列"9"、"88"、"56"をソートした場合 "88","56","9"の順番にならんでほしいのですが、 "9","88","56"の順番になってしまいます。
781 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 02:18:33 ] ListView.ListViewItemSorter プロパティ
782 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 10:31:14 ] >>777 >>778 ありがとうございます。 早速実装してみます。
783 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 10:46:17 ] 継承Controlを作成するときに Controlがフォーカスされたときのイベントってどこに書くんですか? OnClickかとも思ったのですが、これだとTabキーで移動してきたときには動きませんし・・・
784 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 10:57:00 ] Enter/OnEnter
785 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 11:06:56 ] >>784 それかー。 ありがとーございます。
786 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 12:10:23 ] もっと低レベルなのは OnGotFocus/OnLostFocus
787 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 15:03:34 ] PerlとかRubyでゆーWWW::MechanizeみたいなスクレイパってC#に存在する? それとDB使ったツールを作って配布したいんだけど、PerlとかRubyだと一般ユーザに使ってもらえないので…
788 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 15:11:53 ] rubyならexerbつかってexeにすりゃいいじゃん。 スレチだけど
789 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 15:39:20 ] >>778 ここ2日くらいexerbとかrubyscript2exeやってみてたんだけどどうもうまくいかんのだ
790 名前:デフォルトの名無しさん [2008/03/16(日) 17:10:36 ] 質問です。以下のコードをビルドするとエラーがおきますが、原因がわかりません。 (bool型とdouble型が〜とでるのですが自分にはわかりませんでした。) どなたかおしえてくださいませ。 using System; class IfSample { public static void Main(){ Console.Write("身長(cm)を入力してください"); double n = double.Parse(Console.ReadLine()); Console.Write("体重を入力してください"); double m = double.Parse(Console.ReadLine()); Console.Write("BMIは{0}です", m / ((n / 100) * (n / 100))); bool bmi = m / ((n / 100) * (n / 100)); switch(bmi) { case (bmi<19.8): Console.Write("痩せ型です"); break; case (19.8<=bmi<24.2): Console.Write("普通です"); break; case (24.2<=bmi<26.4): Console.Write("やや肥満です"); break; case (26.4<=bmi<35.0): Console.Write("肥満です"); break; default: Console.Write("高度な肥満です"); break; } } }
791 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 17:13:53 ] エラーメッセージは完全な状態でこぴぺしろ
792 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 17:15:13 ] >>790 > bool bmi = m / ((n / 100) * (n / 100)); ここかな? double bmi = ・・・ みたいにしてみれば?
793 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 17:17:46 ] caseには定数式以外は使えない
794 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 17:19:33 ] if (bmi < 19.8) { Console.Write("痩せ型です"); } else if (bmi < 24.2) { Console.Write("普通です"); } else if (bmi < 26.4) { Console.Write("やや肥満です"); } else if (bmi < 35.0) { Console.Write("肥満です"); } else { Console.Write("高度な肥満です"); }
795 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 21:04:38 ] enum型の要素に自動的に割り当てられる値は、 [Flags]属性をつけようがつけまいが同じなのでしょうか? どこかで0,1,2,4になるようなことを読んだような記憶があるのですが、それは勘違いで、 自分で明示的に割り当てなければいけない。というのが正解なのでしょうか?
796 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 21:07:23 ] はい。勘違いです
797 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 21:55:31 ] >>795 俺もそんな話をどっかで読んだな。 どういう属性をつけるかとか、ぜんぜん覚えてないけど。
798 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 21:57:17 ] [Flags]付けるとビットフィールドになるんだろ。
799 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 22:00:40 ] 逆 ビットフィールドには[Flags]を付ける「お約束」
800 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 22:20:11 ] 実際に試したほうが早いし正確なのに
801 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 22:22:13 ] 聞いた方が早い。
802 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 22:23:41 ] ググってみたけど、Flagsでいいんじゃね? www.melma.com/backnumber_120830_2325135/ ↑C/C++の世界では、これは「ビットフィールド」とは言わんと思うけど。C#の世界では知らんけど。
803 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 22:25:49 ] >>802 の続き よく見たら、自動で割り当てるわけじゃなくて、自分で書かないといけないのか。
804 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 22:25:53 ] そのページは大嘘過ぎるな
805 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 22:27:16 ] [Flags]を付けないと、3とか5の値をとれない。
806 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 22:28:21 ] ハァ?
807 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 22:32:49 ] [Flags] public enum ABC { Z = 0, A = 1, B = 2, C = 4} [Flags]を付けないと ABC ab = A|B; でエラーになる。
808 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 23:00:19 ] ならないよ エラーになるような違いが出るんだったら属性じゃなくて言語に直接組み込まれてるだろ
809 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 23:09:29 ] (ABC.A | ABC.B).ToString()で違いが出るね やっぱりコンパイラの動作とは直接関係なくてMSとのお約束なんじゃね
810 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 23:17:53 ] そもそもそのためのFlagsAttributeなんじゃないんでしょうかw
811 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 23:35:39 ] どこが面白いのかわからない
812 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 23:40:54 ] まあさすがに自動でビットフィールドにしてくれるんだったら 属性じゃなくて flags enum ABC { … } みたいにするわな
813 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 04:02:24 ] Form1を閉じても、スレッド2が動いたままなので、 Form1を閉じたら、スレッド2を終了したいのですが、どのようにすれば良いのでしょうか?
814 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 04:32:05 ] Form1を閉じる動作のときスレッド2を終わらせる
815 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 04:54:36 ] >>814 それの書き方が分からないよ><
816 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 05:27:37 ] >>815 Form のイベント全て試す
817 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 14:19:34 ] スレッド2はループ中なんか?
818 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 14:35:03 ] form1.Closed += (obj,e) => thread.Abort(); こんなんじゃないか?
819 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 16:09:07 ] いちいちそんなんでラムダ式使うなカス
820 名前:デフォルトの名無しさん [2008/03/17(月) 16:16:57 ] smallint型のデータをSqlDataReaderを使って取得し、 int型変数へ入れるにはどうすればよいですか? List<int>へループで入れたいが 一部smallint型が ある場合に上手く出来なくて困ってます。
821 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 16:52:46 ] >>819 むしろそんなんだからラムダ式使うんじゃないかと。
822 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 17:59:52 ] >>817 そうです。break;の条件を、Form1が閉じたときとやりたいのですが、うまく行きません。 static int close1 = 0; public void Form1_Closed(object sender, System.EventArgs e) { close1 = 1; } while (close1 == 0) { //////////////時計 long tick = DateTime.Now.Ticks; DateTime d = new DateTime(tick); Console.WriteLine(d.ToString()); label8.Text = (d.ToString()); Thread.Sleep(1000); }
823 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 18:33:40 ] >>822 >label8.Text = (d.ToString()); GUIスレッド以外からフォームにアクセスしちゃダメ。 close1をvolatileにするか読み書き時にlockする。 BackgroundWorkerの使用をすすめる。
824 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 18:47:22 ] そもそもTimerじゃいかんのかと思ってしまうサンプルだ
825 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 19:11:01 ] >>821 ぶわぁか、こんなんでC#3.0にしてどうする。 せめて匿名メソッドだうんこ。
826 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 19:12:46 ] >>825 匿名メソッドは面倒だよ。 なげーもん。ラムダ式使ったら2.0には戻れんね。
827 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 19:14:33 ] C#やめてRuby(笑)でもやってろモルモン。
828 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 19:17:24 ] 言語の進化についていけない落伍者か Cでもやってりゃいいのに
829 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 19:26:29 ] C++から来てるとλ式とかは読みにくいな
830 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 19:40:15 ] 僕はくもん式上がりなのでλ式は余裕です。
831 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 19:43:04 ] C++もそっちの方向でしょ
832 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 19:44:34 ] C++にラムダ式が加えられても落伍者達はわからんわからんとぼやくんだろうな
833 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 19:59:52 ] すみませんλって言いたいだけみたいなのですぐに回収します λ......
834 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:01:55 ] λ式は書けても高階関数は書けないんでしょ?
835 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:05:56 ] 書けるに決まってるだろ
836 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:08:03 ] Enumerableクラスなんか高階関数のお花畑
837 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:28:33 ] >>829 俺、C#よりC++をよく使うが、ラムダ式が羨ましくて仕方ないんだが。
838 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:37:26 ] ここ1年ずっとC#使ってきたらC++書くのがきつくなった・・・
839 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:39:29 ] すみません、質問いいですか? FileSystemWatcherってありますよね? あれ凄くイヴェントを取り逃がすような気がするんですけど皆さんどうですか? 使い方がおかしいんでしょうけど、どうおかしいのかすら判りません。 例えばDeletedイベントハンドラってPathで指定したディレクトリ内の Filter指定したファイルが消されると発生するんですよね?
840 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:41:06 ] っていうか、ラムダ式って所詮、匿名デリゲートの焼き直しなのに何をそんなに目くじらたてるんだろう。 おまけで式木に変換される機能がついたけど、普通に使う分には匿名デリゲートにしかならない。 今思えば匿名デリゲートの記法を delegate(...){...} にしたのが失敗で、 先にラムダ式を導入していたらこの記法は絶対導入しなかったって中の人も言ってるくらいなのに。
841 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:41:50 ] イヴェント
842 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:45:54 ] 1.匿名メソッドを理解、使えるようになる 2.ラムダ式の便利さに気づく 3.ラムダ式は式木でも書けることに気づく 4.もっと複雑な式木を書きたくなる 5.某カッコだらけの言語の存在を知る 6.某カッコだらけの言語の奥深さを知る 7.某カッコだらけの言語で悟りを開く
843 名前:デフォルトの名無しさん [2008/03/17(月) 20:50:17 ] C#である変数を宣言するときに、アドレスを指定するにはどうすれば いいですか? また、アドレスから値を得るにはどうすればいいですか?
844 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:55:07 ] アドレスを指定するって何だよ 変数のエイリアスはつくれねえぞ
845 名前:デフォルトの名無しさん [2008/03/17(月) 20:58:40 ] すいません。。。 質問しなおします。 ある変数Aのアドレスが分かっているとしたとき、アドレスから変数A の値を取得するにはどうすればいいでしょうか?
846 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:59:40 ] >>840 >>825 >>839 InternalBufferSizeを増やす。
847 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 21:25:22 ] >>845 アドレスってどういう意味で言ってんの? *(int*)address まさかこういうことじゃないよね
848 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 21:27:32 ] >>845 unsafeでぐぐれ
849 名前:845 [2008/03/17(月) 21:39:03 ] >847-848 アドバイスありがとうございます。 変数につけられたメモリ上での番号のことを言っています。 簡単なコードを示していただけませんか? 例えば、メモリアドレス1000の値を取得したり、代入する場合など。。。 お願いします。
850 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 21:39:20 ] >839 explorerでけすと、ごみ箱へのMoveだから見逃す、というオチじゃないの?
851 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 21:39:39 ] unsafeつけるとCと変わらない書き方ができる
852 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 21:46:21 ] >>849 int a = 123; int addr = (int)&a; int aValue = *(int*)addr; こういうこと? 超危険なだけで何の意味もないからせめて普通にポインタ使えよ
853 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 21:57:22 ] 1つ値を読み取りたいだけなら、Mashal.Read*メソッドがお手軽かもしれない。
854 名前:845 [2008/03/17(月) 22:02:57 ] >>852 アドバイスありがとうございます。 示していただいたコードで、変数のアドレスを取得することができました。 しかし、アドレス1000に対しての代入?についてはまだ疑問が残ります。。。 849の繰り返しになりますが、例えばメモリアドレス1000に格納されている データを取得するにはどうすればいいでしょうか? また、メモリアドレス1000に値を格納するにはどうすればいいでしょうか?
855 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 22:10:11 ] 釣りだろjk そんなことをする必要はないし する必要があるならC#を使うはずがない
856 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 22:11:06 ] >>854 実際にこんなことやろうとしても、 割り当てられていないメモリを読み書きしようとしたとして、 OSに止められるだけだからな。 int* p = (int*)10000; int x = *p; *p = 666; int x = Marshal.ReadInt32((IntPtr)10000); Marshal.WriteInt32((IntPtr)10000, 666);
857 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 22:13:37 ] どうせ構造体のポインタが欲しいだけとエスパー
858 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 22:16:57 ] >>852 見て>>856 が思いつかないならポインタなんか触るべきじゃない
859 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 22:18:32 ] つかC#でポインタ使うとこってどこ?
860 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 22:25:08 ] Interopとか画像処理とか構造体の配列触るときによっぽどパフォーマンスが大事なときとか
861 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 23:56:57 ] >>854 勘違いしてない? ここはC♯(シーシャープ)という言語のスレだぞ。 もしかして学校の宿題なら、それは、CとかC++という言語じゃなかったか?
862 名前:822 mailto:sage [2008/03/18(火) 00:38:27 ] >>818 ,823-824 レスサンクス 明日試してみる。
863 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 02:36:23 ] 多次元配列は使いそうだけど、ジャグ配列って使わないよな? 覚えるのめんどくさいんだが・・・
864 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 02:40:27 ] >>863 Cから来たら無意識にジャグの方を使う。
865 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 02:42:29 ] >>864 ・・・まじかよ、じゃあ素直に勉強するわ d
866 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 02:46:24 ] いや勉強するもなにも 宣言と要素アクセスのやり方だけ知ってりゃいいんじゃん ジャグのほうは単なる配列を要素とする配列ってだけの話だし 無意識に使われるジャグ配列って「ジャグ」じゃなくね?
867 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 03:09:39 ] List<int[]> lst = new List<int[]>(); //動的に配列を追加していくループ for(...){ lst.Add(....); } int[][] jag = lst.ToArray(); 格納される配列の要素数が動的に変化するような場合とかもあるし、 ジャグのが柔軟。
868 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 03:56:09 ] 普通ジャグにしね? ジャグじゃないとN次元配列が書けんし
869 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 04:30:05 ] そんなことはない。
870 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 06:30:03 ] ジャグ配列ってすごく使いにくいぞ
871 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 07:46:45 ] パフォーマンスはジャグの方が全然良いけどな。
872 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 09:16:17 ] 使いにくさで言うと断然多次元配列だと思うけど Sortメソッドも使えない
873 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 09:24:21 ] 多次元配列よりジャグの方が直感的なんだよな。気がついたらジャグで作ってることが多い気がする。 初期化するときも使用するときも、機械的にいつも似たようなfor文で処理できるし。 >>871 すごく初耳。
874 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 09:50:02 ] >>873 rectangular の方は a[i, j] → *(a + i *WIDTH + j) jagged の方は a[i][j] → *(*(a + i) + j) 相当で、一見 rectangular の方が早そう(間接参照よりは掛け算の方が軽い)だけど、 1次元配列の参照は IL が専用命令持ってるけど、 多次元配列参照命令がない関係で jagged の方が早いって聞く。 jagged 配列の方が柔軟だけど、new しまくらないといけないのが面倒なときもあるのよね。
875 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 11:40:01 ] ジャグ配列の方が速いのは一番右の添え字が連続したアクセスの場合だけだったような
876 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 15:44:04 ] メインフォームにおいて、文字キー T とか Y のkeyPressイベントを起こすにはどうしたらいいんですか? private void MainForm_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { } の中に記述してもイベントそれ自体が発生しないんですが・・・
877 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 16:07:50 ] フォーカスがないだけだろ
878 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 16:08:47 ] >>876 そのイベントハンドラはちゃんとイベントにバインドしてあるのか
879 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 16:23:40 ] KeyPreview
880 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 16:56:20 ] get,setの利点が不明(C#2.0) public string Hoge{ get{ return this.hoge; }} こう書くと public string getHoge{ return this.hoge; } と書くのに比べて何が幸せなんだぜ?
881 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 17:12:21 ] Console.WriteLine(Hoge); Console.WriteLine(getHoge()); あと,リフレクションとの相性
882 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 17:14:58 ] しりあらいず
883 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 17:22:10 ] リフレクションというかコンポーネントモデルやな。PropertyDescriptor。 …ヘジは1.0からこの辺のものを第一言語要素にする点こそ重要って 言ってた気がするがスルーされっぷりが可哀想というか
884 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 17:26:51 ] getHogeがメソッドでないから、きっと記述方法のことを言ってるんだとエスパー 括弧なしのgetHogeでHogeプロパティ作れと プロパティとアスセサ(メソッド)の違いについてならそういう風に書くだろうし
885 名前:デフォルトの名無しさん [2008/03/18(火) 17:35:12 ] iPod touchみたいな慣性付きスムーズスクロールはどうやるのでしょうか? そもそも普通のスムーズスクロールはどうやるのでしょうか
886 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 17:40:07 ] 以下のプログラムから出力される数字を、 wavファイルにするにはどうすればいいでしょうか。 #include <iostream> #include <math.h> using namespace std; const int rate=44100; int p(double q, int f, int t) { const double pi=3.1415; double x; x=sin(2*pi*f/rate*q); cout << int(x*127+128+0.4999); cout << "\n"; if (f<t) p(q,f+1,t); return 0; } int main(void) { p(440.0 , 0, rate); return 0; }
887 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 17:44:02 ] ごめ。 c++スレかと思った・・忘れてください
888 名前:デフォルトの名無しさん [2008/03/18(火) 19:03:44 ] PictureBoxを使って、 Font font = new Font(fontName, size); g.DrawString(code, font, Brushes.White, 0, 0); で、1文字描画します。 この時描画した文字の幅を求める手段を教えてください。
889 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 19:07:52 ] MeasureString
890 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 21:09:56 ] WebColorConverterのインスタンスを取得するにはどうするのが正しいの? MSDNにはTypeConverterのインスタンスは直接作らずにTypeDescriptorを使えと書いてあるけど TypeDesctiptor.GetConverter(typeof(Color))だとColorConverterが返ってきてしまう
891 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 22:07:38 ] 今でも>>886 のことが忘れられない…
892 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 22:24:13 ] 宇宙仮面のC#プログラミングってサイトの、ED が点滅するボタンのページ >次に、ツールバーのカスタマイズにより、コンパイルしたアセンブリーをツールバーに登録します。 ってどういうこと? ツールバーのユーザー設定? コンパイルしたアセンブリーって項目があるってこと?
893 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 22:33:46 ] 事故解決しましたごめんなさい
894 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:02:56 ] class A<T> { ・・・ } とあるとき、Tの型をAのクラスの外から調べて使っていく便利な方法があったら教えてください。 リフレクションを使えばなんでもできますが、できれば使用したくないです。 C++ では class A<T> { typedef T ElementType ; } とできたので話は簡単だったんですが・・・ #VBのLinq to XMLが便利すぎ〜〜〜〜ぐはぁぁぁぁ #ヘジたぁぁぁん
895 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:05:32 ] dateTimePickerをパースして1日追加して表示しようとしているのですがなりません 何か勘違いしているのでしょうか? DateTime dt = DateTime.Parse(dateTimePicker.Text); dt.AddDays(1); lvi.SubItems.Add(dt.ToShortDateString());
896 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:11:38 ] >>894 なにがしたいのかわからんけど class A<T> { public Type ElementType = typeof(T); } こんなんじゃだめなの?
897 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:11:49 ] >>895 勘違いでーす DateTime dt = DateTime.Parse(dateTimePicker.Text); dt=dt.AddDays(1); lvi.SubItems.Add(dt.ToShortDateString());
898 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:13:29 ] >>896 それだと、 A.ElementType inst = new A.ElementType(); とかできなくて不便なんですよ。
899 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:19:26 ] >>898 じゃあ void Method<T>(A<T> a) where T : new(){ T item = new T(); } こうじゃねえの
900 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:24:16 ] >>898 A<T>にこんなメソッド追加すれば public T CreateElement() { return new T(); }
901 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:27:08 ] >>899 それもちょっとなんですよね、全部のメソッドについてやらないといけなくて、場当たり感が・・・ C#に移ってみたもののC++とは勝手が違って難しいです、逆にC#では意外とあっさりできる物なども多いのですが。
902 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:28:39 ] >>897 ありがとうございます。 盲目でした・・・。
903 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:48:06 ] >>895 なんで DateTime dt = dateTimePicker.Value.Date.AddDays(1); じゃだめなの?
904 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:51:20 ] どうでもいいところに反論したがる奴がいるなw
905 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 09:10:16 ] 903じゃないがどうでもいいかぁ? カスタムフォーマットとかで元のコード落ちたりしないだろうか
906 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 09:15:29 ] 大体TをnewするよりA<T>を使う側がそのものずばりをnewする方がうまくいくと思うがなあ
907 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 09:16:47 ] >>906 だよね 使う側はTがなにか知ってるんだし
908 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 09:31:56 ] てか、いろんなA<T>に対して同様の処理をしたいなら それこそ、その関数なりクラスなりをジェネリックにすべきだと思うが
909 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 09:37:48 ] 独り言キモイ
910 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 12:41:47 ] 馬鹿ってのはどうして自分のことばを自分に適用できないのかねw 統合失調なんじゃないのチミ
911 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 12:59:40 ] >>910 因果関係が逆な気もするぞ。 そういう人間のことを馬鹿というのでは。
912 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 15:10:00 ] VB.NET質問スレ(Part25) pc11.2ch.net/test/read.cgi/tech/1203650042/294 294 名前:デフォルトの名無しさん[sage] 投稿日:2008/03/14(金) 20:29:48 ふーん偉そうに他人を「偉そうだ」と言うのは偉そうじゃないんだ。 本当馬鹿ってのはどうしていつでも自分自身の言葉を自分に適用できないんざんしょ不思議。 まあ基本であることに全然異議はないんだけど、その基本すら理解できない御仁がいらっしゃるから 「偉そうに」貴殿はまちがっておられるぞよ、と進言差し上げたしだいなんでございますがね。 345 名前:デフォルトの名無しさん[sage] 投稿日:2008/03/17(月) 21:08:14 多分「俺」に否定的な言葉を投げる奴はみんな「(また)お前」なんだよw 冗談抜きで最近こういう統合失調一歩手前って人間増えてる気がするね またお前か。 ふらっとスレだけは荒らさないでくれよな。
913 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 15:38:20 ] どう見てもビョーキだなwww
914 名前:デフォルトの名無しさん [2008/03/19(水) 16:04:07 ] 統合失調好きだなあ
915 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 19:03:12 ] >>912 言ってるそばから自分棚上げかよw 本当馬鹿ってのはどうして自分自身の吐いてる言葉を自分に適用できんの? それから「荒れて」いるのはスレじゃなくてお前さん自身の脆弱な心、でしょ?w 馬鹿で心が弱いお前さんの感情が刺激されること=スレが荒れること、ではないよ。
916 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 19:11:08 ] マ板でやれ
917 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 00:39:48 ] Webbrowserコントロールがjavascript周りでエラーを吐きまくるのでオフにしたいんですが、 サンプルコードが載ったページをご存じないですか? いくつか類似のページはありますが(www.divakk.co.jp/aoyagi/csharp_tips_wbzone.html )、 旧.Net用でVS2005/2008では使用できませんでした。 ページを読み込む前にDLしたページキャッシュを読んで書き換えて無効化する方法も考えましたが、 読み込みをキャンセルさせる方法が分からず、汎用性もないため諦めました
918 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 03:00:45 ] USBカメラを単純にプレビューするだけのサンプルってないですかね? 色々探してみたんだけど、どれも複雑で。。。
919 名前:デフォルトの名無しさん [2008/03/20(木) 03:01:04 ] >>917 WebBrowser.ScriptErrorsSuppressed = true;
920 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 01:15:31 ] なんでVBのサンプルがC#より上にあるんだよ
921 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 01:18:37 ] アルファベット順だろうな
922 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 01:29:42 ] じゃあCの方が上だろ
923 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 08:32:49 ] ゲイツがBASIC世代だから?
924 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 09:06:52 ] xmlでnode名とvalueを指定して 特定箇所のvalueを更新する方法は ありますか? ファイル丸ごと読み込んで書き出す方法しか 知らないので教えて下さい
925 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 10:06:39 ] >>922 Visual BasicとVisual C#とVisual C++だったらVBが先だろ。
926 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 10:49:55 ] >>924 1) 一気に読み込んで、DOMを使って編集する。 2) XmlReaderで少しずつ読みながら、XmlWriterで書き出す。
927 名前:デフォルトの名無しさん [2008/03/21(金) 14:02:14 ] Linqを使い始めたら、yield を使った即席の IEnumerable ができると便利だと思ったのですが・・・ static System.Collections.Generic.IEnumerable<int> CreateInt100() { for (int i = 0; i < 100; ++i) yield return i; } private void button2_Click(object sender, EventArgs e) { System.Collections.Generic.IEnumerable<int> collection = CreateInt100(); foreach (var element in collection) System.Console.WriteLine(element); } 上のメソッド CreateInt100() を毎回作るのは面倒くさいですし、名前空間を汚すので匿名メソッドにしてみようかと考えました。 private void button2_Click(object sender, EventArgs e) { System.Func<System.Collections.Generic.IEnumerable<int>> lanbda = () => { for (int i = 0; i < 100; ++i) yield return i; }; System.Collections.Generic.IEnumerable<int> collection = lanbda(); foreach (var element in collection) System.Console.WriteLine(element); } 残念ながらエラーになってしまうのですが、何か良い方法をご存知の方がおられましたら教えてください。
928 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 14:08:54 ] Enumerable.Range
929 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 14:23:33 ] >>928 すまみせん、int のシーケンスは例であって、int のシーケンスを作りたい訳ではないです。 手際よく yield を含むコードを書き下したいのです。
930 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 14:25:27 ] できないなあ
931 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 14:32:03 ] ツリーコンテナの列挙をするときには便利な機能と割り切ってそれ以上深く考える事をしなかったんですが・・・ yield 便利だね、なんでもかんでもコレで書いてしまいたくなる衝動に駆られます。
932 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 14:33:50 ] それはするべきじゃないだろう
933 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 14:36:43 ] Haskellの無限リストより書き方が直観的で良いです
934 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 14:53:32 ] クラスの比較をするときに、比較したいメンバを片っ端から .Eulals 等で比較するメソッドを 片っ端から書きまくって、Eulals , GetHashCode …とこれまた片っ端から書きまくって 比較対照数×比較系メソッド数分の条件判断を書くという、ちょっと間違えれば書き損じ出まくりです yield を使って列挙する側は、列挙する側、比較する側は比較する側とバシッと分けて書いてみると…なかなか気持ちいいです。
935 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 14:58:46 ] >>934 よくわかんない コードで頼む
936 名前:デフォルトの名無しさん [2008/03/21(金) 15:11:35 ] 余りに気持ちいいので、ちょっと紹介しておきます。 クラス C の Equals GetHashCode のオーバーライドが、メンバーの変更によって変更しなくても済みやすくなっています。 using System.Collections.Generic; using System.Linq; public class C { public int Field1; public int Field2; public string Field3; public override bool Equals(object obj) { C tmp = obj as C; if (tmp == null) return false; IEnumerable<object> x = this.CreateFieldEnumerable(); IEnumerable<object> y = tmp.CreateFieldEnumerable(); return x.SequenceEqual(y); } public override int GetHashCode() { return CreateFieldEnumerable().Sum((a0) => a0.GetHashCode()); } IEnumerable<object> CreateFieldEnumerable() { yield return Field1; yield return Field2; yield return Field3; } };
937 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 15:23:32 ] 文字がアルファベットかどうか判定したいんだけど、 Char.IsLetter('あ'); の結果がtrueを返してくる。 ほかにいい方法ありますか?
938 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 15:34:09 ] >>936 GetHashCode()に和を使うのはどうかと
939 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 15:35:08 ] >>937 ( ゚д゚)つ正規表現
940 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 15:36:15 ] a<= x && x <= z || A <= x && x <= Z
941 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 15:36:35 ] >>938 そんなの問題があるならテキトーに替えてくださいよ(汗
942 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 15:39:04 ] >>937 「アルファベット」の定義は?
943 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 15:44:27 ] HashCodeの作り方がよくわからんからEqualsのオーバーライドもあまりやりたくないな
944 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 16:10:50 ] >>939 >>940 >>942 どうもです。普通にa-zA-Zで比較して判定します。 それにしてもMSDNのあの説明では日本人は勘違いしますね。 MSは苦労したとは思いますが。
945 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 16:30:12 ] 日本語のアルファベットはひらがな、カタカナ 英語のアルファベットはA〜Z 単にアルファベットと聞かれたらどちらか分からない。
946 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 16:37:49 ] 一般的な日本人はアルファベットと言われたらA-Zの26文字のことだと思う ANK=Alphabet Numeric Kanaって単語だってあるのに。
947 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 16:44:07 ] >>945 MessageBox.Show(char.IsLetter('山').ToString());
948 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 16:57:23 ] >>944 ぼくは一般的じゃないんですかそうでつか><
949 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 17:05:24 ] >>948 私は >>946 とは別人ですよ。あなたは人より教養があるんだと思います。
950 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 17:30:00 ] ギリシャ文字はアルファベットの名前からしてもアルファベットだし、 ヘブライ人も彼らの文字をアレフベートって呼んでるし、 そう考えると、ヘブライ文字の親類のアラビア文字もアルファベットだし、
951 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 17:57:47 ] >926 domとうい単語しらなかったです ありがとう
952 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 18:09:09 ] もうとっくに結論でてますが・・・ 昔と違って、アルファベットの概念が広がっているね int 山 = 5 ; とか、コンパイル通るし、UTF8 で便利になった反面混乱も多々あり。 ja.wikipedia.org/wiki/Unicode あえてライブラリを使うなら、基本ラテン文字 (ASCII互換)、かつアルファベットを調べるとなると Char.IsLetter('あ') && 'あ' <= 0x7f アホ臭いから、直接文字コードを調べるのが良さそうな気がしますね。そしてせっかくの新機能があるので拡張してみた。 static public class CharExt { public static bool IsBasicLatin( this char c) { return c <= 0x7f; } } class MyClass { void func() { bool isBasicLatin = 'A'.IsBasicLatin(); // (笑 System.Console.WriteLine(isBasicLatin); } }
953 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 22:52:21 ] >>951 xsd.exe .net で検索してみな
954 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 12:04:31 ] なになら最近できたというらしい WPF を使ってみた。 Xamlとか一切使わずに、フルにC#でコーディングしてみたんだけど、System.Drawing.Graphics + Pain イベントと比べて断然楽だね Linqに引き続き、説明がさっぱり分らんのは相変わらずで、なんとかしてくれよマイクロソフト・・・ 簡単説明サイトをだれか作ってくれないかな・・・自分で作れってかorz
955 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 12:08:41 ] XAML使わないと添付プロパティとか物凄く面倒だぞ
956 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 13:32:49 ] むしろWPFはコーディングしたら負けだろ
957 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 14:29:50 ] 固定デザイン固定アニメーションならコーディング無しでもいいが プログラマブルに動かしたければ、やはりコーディングするしかないよ いやできなくは無いが、逆に面倒になるだけという意味で。
958 名前:954 mailto:sage [2008/03/22(土) 14:54:20 ] とりあえず棒グラフとか折れ線グラフとか作ってます、描画クリッピングの処理とか つまらない処理にも関わらず、工数の取られる作業がプロパティーの設定とGrid親子構造の作り方一つで 簡単対処できるのには驚愕しています、最後に印刷処理を作りたいのですが、どうするんだ・・・
959 名前:954 mailto:sage [2008/03/22(土) 14:58:45 ] それと、デタラメに描画が速いね、これにはタマゲタ さすがDirectX使っているだけの事はある、描画範囲外に大量にLineを配置しても全然速度低下がない。 これが System.Drawing.Graphics ベースだと、Pain 処理はややこしくなるし 手抜きして全部描画しようものならガックンガックンになるし。
960 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 18:42:46 ] 今C#のCUIを勉強してるんだが、練習問題ってどっかないかな? 探してみても、本とか講座とかしか出てこないんだがー
961 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 18:44:43 ] CUIって勉強するようなことあるのか?
962 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 18:49:35 ] >>961 プログラミング自体が初めてだからさ、一応勉強しとかないとと
963 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 18:53:20 ] ConsoleクラスちょっといじればCUI限定の問題はクリアと考えていい
964 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 18:54:54 ] >>959 Pain処理ってある意味間違ってないよなw >>962 unixコマンドのリファレンス引っ張ってきて実装すれば catとかtelnetとか
965 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 18:58:08 ] >>963 そんなもんですか、やっぱ基本的にGUI弄るってことかな ありがとうございます^ >>964 ググってみます^
966 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 18:58:10 ] CUIをやらなきゃいけない理由でもあんの? 初めてなら逆に手を出す必要はないと思うんだが。
967 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 19:02:13 ] >>966 いやー、やっぱ基本的なことは知っといた方が良いのかなと
968 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 19:02:51 ] CUIとかGUIなんてどうユーザとやり取りするかって話でしかない 本当にやりたいのはその先だろ? >>966 "言語の"勉強にはCUIのほうがいいと思う
969 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 19:02:58 ] 言語仕様からきっちり解説するような本だとだいたいコンソールからだよ
970 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 19:14:39 ] てことは、コンソールが必要になったら、その都度調べる程度で平気ってことですかね どうもです、頑張ります^
971 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 19:16:01 ] GUI を根本からサポートしている言語を除けば、 GUI まで教え始めるとページ数多くなるからな。
972 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 19:36:12 ] GUIだとはじめに必要な「おまじない」が多いし 入出力がまどろっこしいから言語仕様の解説には不向き
973 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 20:11:32 ] >>972 C#だと、それほどでも無いだろ、Windowクラス生成して以上終了だし。 Win32使うと、激しいことになるけど 初代VS.NETには、CUIベースのわかりやすいサンプルが多かったんですけどね。 クイックスタートのサンプルもう一度復活させてもいいと思うんだけど・・・
974 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 20:13:39 ] >GUI を根本からサポートしている言語を除けば、 だからな。 C# は GUI に力要れてるから問題ない。
975 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 20:20:50 ] 言語の勉強する場合、色んなロジックを書いて その処理結果を簡単に出力出来るという点では、 コンソールの方が簡単でいいよね。 GUIだと、そもそものイベントドリブンの仕組みから 色んなコントロールの説明とかしなくちゃならないから。 いきなり、言語の学習の次のステップからになってしまう。
976 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 20:21:32 ] 下手な入門本でGUIだとすぐVSでポトペタだからなぁ。
977 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 20:24:32 ] 言語の勉強なら文字の入出力ができれば別になんでもいいわけで 一番手軽なのがコンソールっていうだけ 使う話とはまた別だ
978 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 20:39:27 ] つまり言語の入門にはTcl/Tkが最も優れているということですね
979 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 20:41:44 ] WinFormsなら初心者でも簡単だけど WPFになるとXAML覚える方が大変なんじゃないか?w
980 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 20:59:23 ] >>975 C#の場合それは問題多いだろ、開発環境が無ければ何故その機能があるのか、そうなっているのか理解できないものが大量にあるし。 たとえば、カスタムアトリビュートしかり、深いネームスペースしかりで。
981 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 21:57:09 ] >>980 その反論の意味が全く分からないんだが。 では、GUIの方が入門者にとって、C♯"言語"の学習をし易いのか?
982 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:14:14 ] つか、今の初心者つったら、CUI? command.com? 何ソレ? だろ、そこから使用方法と説明が必要だ。
983 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:18:29 ] いまどきの新人にパイプの説明したら一週間考え込まれた事があるw そんなオレは、もうロートル入りだorz
984 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:24:29 ] >>982 今の初心者はcmd.exeだからな
985 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 22:59:38 ] .NET学習的にもPowerShellがvista標準じゃなかったのは痛いなぁ
986 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 23:06:46 ] プログラミング Microsoft Visual C# 2005 言語編 (マイクロソフト公式解説書) プログラミングC#―C#2.0/.NET2.0/Visual Studio2005対応(オライリー) 読むならどっち?
987 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 23:08:20 ] オライリーの方。 Googleブック検索でないよう少し見てみたらよかったし「初めてのC#」もよかったから。
988 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 23:10:30 ] そういえばC#使ってるけど未だに解説書の類を読んだ事がないな。 もう何でもpublicで作ってるしその内問題に遭ったりするんだろうか
989 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 23:16:40 ] まだ俺2.0止まりでXAMLとか分からないんだけど、ASP.NETとかでやってるみたく FormベースでXML使ってコントロールとか定義できる物ってことなの?
990 名前:954 mailto:sage [2008/03/22(土) 23:33:53 ] >>989 使い始めて間もないのですが・・・簡単に説明すると フラッシュみたいな物、htmlでいえば、imagタグとか適当にホームページ作成ツールで作って それに名前を付けておいて、サイズや位置情報を、プログラム側からいじくれるという仕掛け。 各種タグで表示するオブジェクトには名前がつけられて、 その名前.アトリビュート名 = 適当な値 とすると、値が書き換えられて、表示が変化します。 Gridというタグがあって、これは各種オブジェクトを格納(子タグが作れる)、ここに自分で生成したオブジェクトを追加する事もできます。 基本的な要素には、LineとかPolyLineとか、DirectXで良く見られるプリミティブ要素のようなものがあって、ページ中に線やポリゴンなども書けます。 これに座標変換行列を効果させて、回転・拡大縮小・平行移動・平行四辺形的な変形といった事ができます。 最終的にはDirectXで描画されるらしく異様に高速。 大半はデザイナでデザインしておいて、必要な所だけをコードしてしまえます。 Paintイベントで再描画のコードは書く必要なしです。
991 名前:954 mailto:sage [2008/03/22(土) 23:41:12 ] 逆にDirectXが分るなら、メッシュの中にボタンやらラベルやらといったプリミティブがあるイメージかな?
992 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 23:47:13 ] thx。そろそろ俺も3.0始めねば・・・。