1 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 18:23:31 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 前スレ ふらっとC#,C♯,C#(初心者用) Part45 (実質46) pc12.2ch.net/test/read.cgi/tech/1255658236/
558 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:02:27 ] VBとVC#ならどちらがプログラム初心者にとっては組みやすいですか?
559 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:03:58 ] 試しに書いてみれば? 書くと何がスマートじゃないか何となくわかるからそれで書き直せばOK
560 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:05:30 ] >>558 c#
561 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:12:23 ] >>560 どうしてでしょう? VBは入門言語だと聞きますが、VC#も似たようなものでしょうか? また、趣味で本格的なプログラムをするとなればどちらが有利ですか?
562 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:14:42 ] どちらも難易度は変わらない 趣味なら断然C#。VBを選ぶ積極的な理由はない。使ってる人はみんな仕方なく使ってるだけ。
563 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:18:44 ] 昔はVBとVC++が比較されてて、 VC++はポトペタ(フォームに貼り付けてイベント直接書いて終わりの書き方)が今一な上、 C++の概念もMFCも難しかった。よってVBの方が楽っていわれてた。 その流れでVBの方が楽っていまだに言う人がいるんじゃないのかなぁ。 VBもVC#も.NETを使いこなすのが一番のポイントになってるから 文法が違うぐらいでやるこた一緒だよ。 んで文法の自由度はC#の方が強力。
564 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:25:40 ] 趣味なら情報は主にwebに頼ることになるだろうけど,それについてはC#の方がずっと充実してるんだよね オープンソースプロジェクトもほとんどC# C系言語に慣れてればjavaやC++の情報も理解しやすい
565 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:31:25 ] C#のdoubleって計算の途中でどうみても誤差が発生してる場合微妙に調整されてるの? math.PIとかmath.Eとかつかった計算をdoubleでやってみてToStringすると条件によってきっちりした整数が表示されることがあるんだが・・・ こっちとしては10.000000000001とか表示されるより10と表示されるほうが楽でいいんだけどさ。
566 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:31:41 ] C#は.NET用に一から設計されているから、負の遺産が無いのもメリット
567 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:38:39 ] 超初心者はMainをmainって書いちゃったりusingをUsingって書いちゃったり;がありませんとか double型とint型は互換性がありませんとかコンパイラにおこられまくるからいやになるかもねw
568 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:40:11 ] >>565 ToStringの段階で下の方切り捨ててるだけ 実際の演算とは無関係
569 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:52:22 ] >>565 double x = 10, y = 10.0000000000001, z = 10.00000000000001; Console.WriteLine("{0}, {1}, {2}", x.ToString(), y.ToString(), z.ToString()); Console.WriteLine(x == y); Console.WriteLine(y == z);
570 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:03:54 ] キーボードショートカットの実装で、どういうキーが押されたかの判定は どういうふうにやるのが一般的なんでしょうか。 ぐぐるとifやswitchをつかった例がいくつか見つかりますが、数が多くなったり、 Shiftなどの装飾キーの有無も含めた判定をするとかなりごちゃごちゃしそうなのですが・・・
571 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:05:57 ] メニューやコントロール自身に関連づけるのが一般的じゃない?
572 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:18:47 ] string word が日本語かどうか判別できる関数または方法はありますか?
573 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:23:39 ] >>570 ちょっとかいた、多分動く protected override bool ProcessCmdKey(ref Message msg, System.Windows.Forms.Keys keyData) { //Debug.WriteLine("ProcessCmdKey Start:"); const int WM_KEYDOWN = 0x100; const int WM_SYSKEYDOWN = 0x104; if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN)) { switch (keyData) { case Keys.F1: return true; case Keys.F2: return true; case Keys.F3: return true; case Keys.F4: return true; case Keys.F5: return true; case Keys.F6: return true; } } return base.ProcessCmdKey(ref msg, keyData); } 各キーとリターンの間に実行したい処理をいれればいい。他のキーの組み合わせはぐぐれ
574 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:42:14 ] アセンブリのことがよくわからないのですが、 VC#の場合1プロジェクト1アセンブリという認識でだいたい合っていますでしょうか?
575 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:45:45 ] VC#の場合1プロジェクト1モジュール1アセンブリ
576 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 22:46:35 ] うん。
577 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:00:10 ] マルチモジュールアセンブリってどういうときに使うの
578 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:06:00 ] >>577 msdn.microsoft.com/ja-jp/library/168k2ah5.aspx
579 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:08:42 ] >>557 自分なら、そう言う判定は牌クラスにはやらさない。 麻雀はやらないから良くはわからないけど、手牌を管理するクラスの基底クラスか、 役を判定するクラスを作って、そこで判定させる。 麻雀を知らないから良くわかんないんだけど、牌のグループを判定する目的ってなに? そんなのなくても判定できそうに思うんだけど。。。
580 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:11:23 ] どうせアルゴリズム主体だからどうでもいい
581 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:20:02 ] >>579 牌の情報は牌が知ってる方が妥当な設計かなーと思ってそういう設計にしてました。 実際そういった情報を使うのは役判定クラスだけになりそうなんですよね。 グループの判定がしたいと思った理由は、以下のような役で ある牌がどのグループに属してるか判った方が実装が楽かなと思ったからでした。 ・清一色(全部の牌が萬子、筒子、索子のうちの一種類) ・字一色(全部字牌) ・混一色(清一色に字牌の面子あり)
582 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:28:25 ] Win32APIのCreateProcessを使っているのですが C++だと終了前にCloseHandleをするように決められています これはリソースの解放をいうことだと思うのですが ガベッジコレクション?があるからC#では特に解放したりする必要はないのでしょうか?
583 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:32:34 ] >>582 自分で解放しなきゃダメ。 GCに回収/開放されるのはC#の管轄内で生成されたオブジェクトだけ 具体的にはそのインスタンスの為に処理系が用意したメモリ領域だけ
584 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:33:18 ] 当たり前に必要。というかなんで Process クラスを使わん .NET でまじめに Handle を使うのなら SafeHandle を使う 必要もあるし、P/Invoke は素人にお勧めできない。
585 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:41:38 ] >>581 なるほど。知識不足、すまん。 それなら、牌種類 enum の他にグループ enum を牌クラスのプロパティに持たせるかな。 やっぱり牌クラスにはその手の判定メソッドは持たせない。自分なら。
586 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:49:41 ] private void GetTextBlocks(UIElement p) { if (p is TextBlock) { list.Add((TextBlock)p); }else if (p is Panel) { var pa = (Panel)p; foreach (UIElement c in ((Panel)p).Children) { GetTextBlocks(c); } }else if (p is ContentControl) { GetTextBlocks((ContentControl)p); } } 再帰的に TextBlock の一覧を取得するメソッドですが、 これを Linq とか ラムダ式とか使ってメソッドを定義せずに 短く書くことってできますか?
587 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:51:05 ] >>585 なるほど、属するグループもenumにしちゃうってのは盲点でした。 [Flag]属性付けとけば数牌かつ萬子とか風牌かつ字牌なんてのも容易に表現出来そうですね!
588 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:55:27 ] >>583 やっぱそうなんですか うーん管理が必要だな >>584 そっちは 作成時にウインドウスタイルをいじれなくて困ってます 作成、MoveWindow(Win32API)でサイズ変更 とやると管理は必要ないですが プロセスが立ち上がるまでサイズがデォルトなので支障がありまして・・・ せめて、非表示でプロセスを立ち上げる方法があれば・・・・と思ったのですが検索しても見つからず CreateProcessを使用するしかないかという結論に至りました
589 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:59:03 ] ダメだこりゃ。
590 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:01:28 ] C#のみでの解決法も提示できないくせに口だけは御達者のようで^^
591 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:03:36 ] msdn.microsoft.com/ja-jp/library/system.diagnostics.processstartinfo_members (VS.80).aspx >>598 じゃないというか >>584 だけど少しはまともに調べたら?
592 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:04:23 ] >>587 なんでもかんでも[Flag]使って一つのプロパティに収めるのは如何なものか? でもenumが継承出来ない以上無理ないのか。
593 名前:588 mailto:sage [2009/11/15(日) 00:07:03 ] ちなみに現在の状況としてはプロセスを起動 WaitForInputIdle()でIdleを待ち MoveWindowでサイズを変更すると言った感じのことをしています Idleをまつのだから、プロセスがデフォルトの設定で開かれるのはしかたないことではあるのですが ちょっとそれだと支障がありまして
594 名前:588 mailto:sage [2009/11/15(日) 00:11:10 ] >>591 みなさんからすれば調べ方が悪いのでしょうが自分でも半日以上調べてたのですが どうしようもなくこういう結論に至ってました そんなものがあったのですね ありがとうございました 自分で考えて導き出した結論はたしかに初心者なので間違ってることも多いかと思います でもなにも考えずに あれやるのどうするの?これやるのどうするの? って全部聞いた方がいいんですかね? 自分で必死に考えてだした結論をそうやってバカにされるのは正直不快ですね
595 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:14:00 ] バカなんだからしょうがない。
596 名前:588 mailto:sage [2009/11/15(日) 00:15:41 ] >>595 ここは初心者スレじゃなくて 分からない人をバカよばわりして上級者が偉ぶるスレですか?
597 名前:588 mailto:sage [2009/11/15(日) 00:16:22 ] うそですdb
598 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:16:30 ] 煽られるのがいやなら、2ch なんて来るなよ。
599 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:17:54 ] >>598 お前の2ch論を勝手に初心者におしつけんなよwwwwwwwwwwww 2ch利用すると煽られなきゃいけないとかお前の世界はどんだけゆがんでるんだよwwwwwwwwwwwww
600 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:18:59 ] 少なくとも煽り耐性くらい付けろよ… 2ch初心者までは歓迎してなんだが。
601 名前:588 mailto:sage [2009/11/15(日) 00:19:30 ] >>598 >>597 さんはどなたでしょうか 不快なのは確かですが 自分がバカなのも確かですので仕方ないです 他の方が教えていただけたので自分は満足です ありがとうございました。喧嘩はしないでください
602 名前:588 mailto:sage [2009/11/15(日) 00:20:40 ] >>600 2ch初心者wwwwwwwwwwwwwwwwwww ぼくは2chのプロですwwwwwwwwwww あおっちゃうし偉そうに初心者を見下すけど解決法も提示しませーんwwwwwwwwwwwww ってかwwwwwwwwwwwwwwwww どんだけゆがんでんだよwwwwwwwwwwwwwww
603 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:20:42 ] 気にせずに、また来いよ。バカ
604 名前:588 mailto:sage [2009/11/15(日) 00:21:26 ] うそですdb
605 名前:588 mailto:sage [2009/11/15(日) 00:21:31 ] うそですdb
606 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:22:11 ] >>604 わろたwwwwwwwwwwww
607 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:22:49 ] >>594 煽るやつにしか煽り返さんよ。自覚ないのかよ?不快いう お前が不快だ。 それはそれとしてやっていることの内容的に CreateProcess でも 不自然でもないかもな。Vista や 7 で問題があるから使われなく なりつつある API だけど。 で、まじめに使う場合の話したが、具体的にはハンドル型を SafeHandle から継承して作成してうんぬんってややこしいことを しないといけないので大変って話だ。やりたいんなら説明は長く なるから SafeHandle でぐぐってその辺の知識を入れてからやれ。
608 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:27:22 ] 香ばしいスッドレですね
609 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:27:56 ] >>586 メソッドは必要 無理やり最近のC#っぽく書くならこんな感じか private IEnumerable<TextBlock> GetTextBlocks(UIElement p) { var textBlock = p as TextBlock; if (textBlock != null) yield return textBlock; else foreach (var textBlock in LogicalTreeHelper.GetChildren(p).SelectMany(c => GetTextBlocks(c))) yield return textBlock; }
610 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:31:38 ] はい次の方どうぞ
611 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:33:59 ] なんか根本的なところが間違ってる、とまではいわないまでも、考え違いをしているような気がする。 もういちどスタートラインに戻って考え直してみてはいかが?
612 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:49:16 ] WebBrowserのこんとろーる? を使ってるんだけど IEデフォルトのショートカットを無効にして自分で設定したショートカットを使うにはどうすればいいの?
613 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 01:18:17 ] >>573 ありがとう。研究してみる
614 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 01:52:12 ] 神回答者の俺がいなくなるとすぐに荒れるな まったくおまえらの役立たずぶりには困ったもんだ
615 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 02:17:39 ] さっきのものですが非表示起動はできたのですが その後、非表示から表示にきり変える方法が分かりません msdn.microsoft.com/ja-jp/library/system.diagnostics.processwindowstyle%28VS.80%29.aspx に、 Hidden 非表示のウィンドウスタイル。ウィンドウは表示または非表示のいずれかにできます。システムは、ウィンドウが非表示であることを示す場合は、そのウィンドウを描画しません。 ウィンドウが非表示の場合、そのウィンドウは無効になります。非表示のウィンドウは、システムまたはその他のウィンドウからのメッセージを処理できますが、ユーザーからの入力を処理したり 、出力を表示することはできません。アプリケーションは、新しいウィンドウを非表示にして、そのウィンドウの外観をカスタマイズしてから、ウィンドウ スタイルを Normal にすることがよくあります。 と、描いてあるのですが非表示で作成したプロセスをどうやって表示状態に戻すかが分かりません 作成したプロセスのWindowStyleを再度変更するにはどうすればいいのでしょうか? win32APIも試してみたのですが ProcessStartInfo startInfo = new ProcessStartInfo(save.memosoft); startInfo.WindowStyle = ProcessWindowStyle.Hidden; Process p = new Process(); p.StartInfo = startInfo; p.Start(); p.WaitForInputIdle(); Win32API.MoveWindow(p.MainWindowHandle,200,200,480,640,1); p.WaitForInputIdle(); Win32API.ShowWindow(p.MainWindowHandle,1); こんな感じで表示を切り替えようと思ったのですが非表示のウィンドウが表示されてくれません ShowWindowの2や3最大化・最小化なんかは、普通に動くので表示・非表示切り替えの部分だけ Cと、C#では別のものなのでしょうか? よろしくお願いします
616 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 02:25:23 ] >>615 すまん、Win32系のスレで聞いた方が早いかも 対象言語はC/C++になるとは思うが
617 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 02:29:22 ] どう考えてもC#の領域だろうが
618 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 08:52:57 ] >>569 Console.WriteLine("{0}, {1}, {2}", x, y, z); Console.WriteLine("{0:F18}, {1:F18}, {2:F18}", x, y, z); Console.WriteLine("{0:E18}, {1:E18}, {2:E18}", x, y, z);
619 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 09:11:00 ] ばかばっか
620 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 09:14:55 ] >>619 自覚しているんだねw
621 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 09:39:25 ] >>620 自覚しているんだねw
622 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 10:05:50 ] >>619-622 自覚してるんだぜ
623 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 10:33:39 ] ねぇ、オウムって賢いと思う?w
624 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:02:33 ] コンニチハ!オハヨウ!ボクピーチャン!ヨロシク!
625 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:04:39 ] >>586 やっぱContentControl渡すとスタックオーバーフローするな、これ。 何か窺い知れないオーバーロードあるかと試してみたんだが。 例示としては不適切だし、実コードなら見直しを薦める。
626 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:23:05 ] try catchってなるべくつかわないほうがいいの?
627 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:25:41 ] なんでそう思い至ったのか言ってみ
628 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:49:52 ] ム板の感じの悪さは異常。 無駄にプライドばっかり高くてスルー能力も足りず、話を脱線してでも一言いわずにはいられない。 勿論冷静な人も大勢いるだろうが、一部の幼児脳は単芝と^^を付けて顔真っ赤なのを隠しつつ 煽らずにはいられない。 ‥あ、このレスはスレチで、かつ釣りなので絶対にスルーして下さいね。 言わば例外ですが、これは仕様想定外の例外なので catch はしないで下さい。 こんなレスがある事自体が誤りなのです。その他はスルーしないで下さいね。
629 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:54:55 ] 簡単に画像を表示したり graphics gとか使ったりするのはフォームでもできるけど やっぱり画像処理はPictureBoxつかってやったほうがいいですか?
630 名前:デフォルトの名無しさん [2009/11/15(日) 11:55:46 ] >ム板の感じの悪さは異常。 結構学歴あって立場のある人間でも変態がいるからなぁw
631 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 12:28:29 ] >>615 なんでだろうな? CreateProcess() して、ShowWindow() なら表示されるんだよね? 表示・非表示以外はできる、ってことだから、ウィンドウハンドルはちゃんと取れてるんだろうし。
632 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 12:29:06 ] 煽り煽られはマの基本的な習性です。言語論争など尽きる ことがありません。そうやって知識とか整理されたり解決策を 導く兵達の世界なのです。でもこれを忘れて暗黒面に落ちる のは自重しようね! >>629 「画像処理」をもうちょっと詳しく。拡大縮小とかそんなの?
633 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 13:12:37 ] 楽しいからいいよ
634 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 13:20:44 ] axWMPコンポーネントを使い、 wmp.PlayStateChange += new AxWMPLib._WMPOCXEvents_PlayStateChangeEventHandler(st); public void st(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e) { MessageBox.Show("StateChanged"); } こうして、停止/再生を繰り返してもメッセージが表示されません。 何か間違っていませんか?
635 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 13:36:13 ] >>634 なんか最後の1行でフイタ そのライブラリって有名なのか? リファレンスにはその状況下でそれでハンドル出来ると書いてあるの? 最早知らないとわからない話の類だと思う
636 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 14:21:56 ] >>635 新規プロジェクトで、>>634 だけ張るとちゃんと機能してくれるんですが・・
637 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 14:51:27 ] WindowsMediaPlayerSDK見ると、サンプルで Player = new WMPLib.WindowsMediaPlayer(); Player.PlayStateChange += new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(Player_PlayStateChange); で private void Player_PlayStateChange(int NewState) { ・・・・・ } になってるな。
638 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 16:29:55 ] >>626 try に入る部分で負荷がかかるから try のネストはするなってのをむかーし Java か C++でのなんかで読んだ気がする。 C#はどうなのかはあんまり気にしたことなかったなぁ。 あと .NET だとこんなの見つけた msdn.microsoft.com/ja-jp/library/ms973839.aspx >.NET アプリケーションのパフォーマンス関連のヒントとトリック >送出する例外の数を減らす >例外の送出にはきわめて高いコストがかかることがあるので、.......
639 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 17:04:30 ] string s="abcd"; //いろいろやる s="efgh"; これって、いろいろやるを行っている間は"abcd"はガベジコレクタンの対象にならずに s="efgh"が実行された瞬間"abcd"がガベジコレクタンにぶっこわされるの?
640 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 17:23:56 ] 例外が投げられない時のtry catchのコストは無視していい。 まぁ例外のパフォーマンスを気にしないといけないほど、大量の例外を投げる作り方ってどうなのさ?
641 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 18:03:29 ] >>640 あるとしたらフロー制御に例外を使うとかじゃない? それが推奨されないやり方だからMSも注意を促してるってことかと。 >>639 瞬間に"対象になる"ってのが正しいんじゃね?すぐにぶっこわされるわけじゃないよ。 あと当然ながら何かに参照されてるインスタンスはガベコレ対象外だよ。 あれこれしてる最中にぶっこわされるとかあったら怖すぎるww
642 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 18:05:53 ] >>639 リテラルだからガベコレも何もない >>640 正常系で例外を利用するようなとんでもない実装も、 異常系が頻発するような滅茶苦茶な設計も普通に駄目だろ
643 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 18:07:03 ] >>640 ループの中でcatchしまくり&別にそれでループ脱出はしない、とか。 直接そういう書き方しなかったとしても、ループ内で呼び出してるメソッドの中の方でcatchしてたりすると なかなか見つけづらいんじゃないかな。
644 名前:デフォルトの名無しさん [2009/11/15(日) 18:42:50 ] 部分的に文字列の色やフォントサイズが変更されている1つのリッチテキストボックスの書式の内容を、1つのRectangle構造体の中に同じ書式で印刷することは可能ですか?
645 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 18:45:43 ] テキストボックスの文字列を数字のみか確かめるときに Parse使うのは駄目なの?
646 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 18:52:51 ] >>645 try catch の流れで聞いてる? なら TryParse を使いましょう。
647 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:10:06 ] >>637 どういうことですか?
648 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:16:37 ] >>642 リテラルかどうかなんて一切関係のない話だと思うけど。
649 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:18:44 ] >>647 宣言が違うってことじゃね?
650 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:19:55 ] >>645 正規表現使うのがオーソドックスなんじゃないの? まあ扱う数字が非整数かつ国際化対応を考えるとちょっと面倒だったりするんだけど。
651 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:21:14 ] Parse でいいだろ。指数表現とかをどうするか? とかって問題はあるけど。
652 名前:634 mailto:sage [2009/11/15(日) 19:30:38 ] >>647 は私では無いです >>637 wmpはprivate AxWMPLib.AxWindowsMediaPlayer wmp; こう宣言していました。 AxWMPを使って同じ事出来ませんか?
653 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:32:01 ] そういうのはParseとかTryParseで充分じゃね? 正規表現使う程のもんじゃないと思うが。 IsDigitでシコシコチェックするメソッド作るのも別にありだと思う。
654 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:52:04 ] >>648 リテラル文字列の参照はなくならないから、ガベコレの対象にはなり得ない
655 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:55:18 ] >>652 何をやって何がどうできないのか、全然わからんよ。 環境やら手順やら、落ち着いて書いてみ。
656 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:02:58 ] >>655 だけど、少なくとも、俺の環境(Vista 64bit + VS2008 SP1) では、 Windows フォームアプリケーションでツールボックスに Windows Media Player を追加して、 それをフォームに貼り付けて、プロパティウィンドウから PlayStateChange イベントが追加できるよ。 そんで、↓みたいな感じでイベントも取れてる。 private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e) { System.Diagnostics.Debug.WriteLine(e.newState); }
657 名前:634 mailto:sage [2009/11/15(日) 20:07:58 ] >>655 AxWMPコンポーネントをデザイナで配置し、 AxWMPLibのPlayStateChangeEventHandlerを使い、曲が終了すれば、 次の配列にある曲を再生、というプログラムを作ってました。 先日、機能拡張を図ろうと、幾つかの機能(次曲移動等の簡単なもの)を制作した後、 プログラムを起動してみると、曲の終了が検知できていなく、これに気がつきました。 それまではちゃんとイベントも捉えられていたのですが、どこを編集したのかも分からなってしまい・・・
658 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:09:49 ] もう一度最初っから作り直せよ。