[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 07/02 11:43 / Filesize : 233 KB / Number-of Response : 945
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ふらっとC#,C♯,C#(初心者用) Part47



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 ]
もう一度最初っから作り直せよ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<233KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef