[表示 : 全て 最新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/

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



659 名前:634 mailto:sage [2009/11/15(日) 20:15:33 ]
>>656
実際に試して貰ってありがとうございます。こちらの環境でも、新しくプロジェクトを作成すると、
void Form1_Load{axWMP.PlayStateChange += new AxWMPLib._WMPOCXEvents_PlayStateChangeEventHandler(ax);}
void ax(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
これでちゃんとイベントは取れています。
>>657のソースでも同じように記載してありますが、何度そこを書き直しても駄目でした。
今気がついたのですが、>>657のプログラムだと、新しくWMPのコンポーネントを生成しようとするとエラーが出て生成できませんでした;
コンポーネント 'AxHost' を生成できませんでした。エラー メッセージ:

'System.Reflection.ReflectionTypeLoadException: 要求された型のうち 1 つまたは複数を読み込めませんでした。詳細については、LoaderExceptions プロパティを取得してください。

場所 System.Windows.Forms.Design.DocumentDesigner.AxToolboxItem.CreateComponentsCore(IDesignerHost host)

場所 System.Drawing.Design.ToolboxItem.CreateComponentsCore(IDesignerHost host, IDictionary defaultValues)

場所 System.Drawing.Design.ToolboxItem.CreateComponents(IDesignerHost host, IDictionary defaultValues)

場所 System.Windows.Forms.Design.OleDragDropHandler.CreateTool(ToolboxItem tool, Control parent, Int32 x, Int32 y, Int32 width, Int32 height, Boolean hasLocation, Boolean hasSize, ToolboxSnapDragDropEventArgs e)'

>>658
かなり膨大なプログラムになってしまいましたので、書き直すのは本当に最終手段にしたく思いまして;

660 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:19:36 ]
なんか参照とかその辺がおかしくなっちゃってるんかな。
ソース管理を使ってれば、機能拡張以前にロールバックするところだけど・・・。

変に直すより、最初っから作り直した方が早いかもよ。

661 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:28:38 ]
>>660
ですか。。
取りあえず参照周り弄ってみて、
駄目そうなら書き直すことにします。。

ソース管理?なるものがあるんですね。調べてみます。

662 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:36:02 ]
つーか、デザイナから配置したなら、わざわざコードでイベント書かなくても、プロパティウィンドウから
追加できるだろ?

実際に配置したコントロールと別のものを使っちゃってるんじゃないの?

663 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:37:48 ]
初めてなら TortoiseSVN あたりが無難かと>ソース管理

664 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:42:02 ]
>>662
それも考えましたが、そこから書いても同じでした。
現時点でwmpコンポーネントは1つしか使ってないので、
間違うというのも無いはずなので・・・

665 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:51:41 ]
廃棄周りの処理の流れを追うと何かヒントがあるかもしれなかったり

知らない内に廃棄してる、あるいは廃棄と同等な処理を呼んでしまってる
あるいはそこら辺の動きが理解できていなくておざなりになってる

とか

666 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:56:10 ]
あるいは意表を突いてイベントのハンドラをRemOveしと再設定してる処理がある、とか
曲再生の度にDisposeやHandleの解放もせずに新たにnewしてたりして、そっちにハンドラAddしてないとか

こういう謎な時は「それはありえない」って部分含めて丸ごと疑ってみるしかない

667 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:04:32 ]
>>665,666
それはないと思います。
StateChangeのイベントハンドラでプロジェクト全体に検索かけましたが、
問題有りそうな箇所は見つけられませんでした。
dispose、new周りも確認しました。
曲再生はただURIをwmpに与えているだけなので、問題は無いと思います。

これでも数日間ソースとにらめっこしてたので、
もう新しくソース書くことにしました。。

668 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:09:08 ]
QuartzTypeLibを使用して動画再生をさせているのですが、動画表示部(Panel)のクリックを拾ってくれません
クリックイベントを拾う方法を教えてください



669 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:09:51 ]
>>668
できますん

670 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:32:07 ]
>>644
日本語になってねぇぇぇ。
リッチテキストボックスの内容を書式込みで印刷するのは出来る。
support.microsoft.com/kb/812425/ja

「1つのRectangle構造体の中に」がイミフ。


671 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:53:02 ]
>>669
ど、どっちなんでしょうか?
可能であれば方法を教えていただけないでしょうか?

672 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:57:33 ]
try{
>> 1-671
} catch {
//確かに重い
}


673 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:15:08 ]
>> 1-671
何でスペース入れてんの?w

674 名前:デフォルトの名無しさん [2009/11/15(日) 23:17:41 ]
>>670
ありがとうございます!

会社の各店舗がお客さんに配布する広告を作成しようとしています。
大半は、DB登録済みの商品内容を表形式で印刷するだけなのですが、
用紙の左下部分に、店舗ごとのフリー記載欄を設けたいんです。

例えば
「横浜西口店ではこんなキャンペーンを行っています!」←MSゴシック太字
であったり、
「三宮店ではこの商品がお得!!!!」←MS明朝の赤字
など、店舗ごとのオリジナルコメント登録フォームを設け、
リッチテキストボックスにコメントの内容と書式を設定してもらっておき、
その書式内容をそのまま、帳票の左下部分に反映させたいんです。

PrintDocumentコントロールなどの中で、
そのようなことを実現するにはどうすればよいでしょうか。

675 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:58:02 ]
>>674
printメソッド見ると分かるけど、GraphicsのHDCの中に印刷領域決めてその中に
リッチテキストをEM_FORMATRANGE送ってレンダリングしている。
そこいら辺をゴチャゴチャと直して使えばなんとかなると思われる。
また印刷領域がGraphicsで来ることから分かるけど、普通にg.DrawXXXXとかで
他の部分も描ける。ヘッダとかフッタとか。

676 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 00:00:45 ]
その辺のメソッド流用すれば印刷プレビューが作れることも確実。俺やったもの。

677 名前:デフォルトの名無しさん [2009/11/16(月) 00:42:08 ]
>>675
ヘッダとかフッタ…
印刷可能領域外に描けるということ?
ちなみに、印刷可能領域が用紙の端から何インチか知りたいのだけど、方法が分からない
(>_<)。

678 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 03:58:09 ]
ReleaseモードのときとDebugモードのときで
出力する実行ファイルの名前を変えるにはどうすればいいですか?




679 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 04:05:47 ]
プロジェクトでReleaseモードのときとDebugモードのときで
出力する実行ファイルの名前を変えておけばいいよ

680 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 04:27:55 ]
馬鹿はレスしなくていいよ

681 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 04:52:27 ]
バカはレスしなくていいけど
初心者相手に意味不明な専門用語をならべるベテランもレスしなくていいよ

682 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 04:54:41 ]
馬鹿は質問しなくていいよ

683 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 05:06:44 ]
なんだよジェネリックって!中で足し算できないのかよ!ファック!

T func<T>(T x,T y)
{
return x+y;
}

intでもdoubleでも使える関数作るとおもったらできねー!ゴミ!考えたやつ死ね!

684 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 05:11:12 ]
つ dynamic
.NET 4.0からだけどね。

685 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 05:26:19 ]
>>683
すんげー微妙だけど一応逃げ道はあるww
T func<T>(T x, T y)
{
 return (T)Microsoft.VisualBasic.CompilerServices.Operators.AddObject(x, y);
}
まあ、このコードもゴミだなw

686 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 06:40:39 ]
T Func<T>を.net2.0でも使えるようにしたいんだけど何か方法無い?

687 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 07:27:23 ]
Generic自体は2.0からサポートされてるんだから
自分で定義したらいい。

688 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 07:53:04 ]
>>678
つ [ビルド後のイベント コマンド ライン]



689 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 10:26:58 ]
完成したアプリを大幅に変更したいのですが、
現時点でバックアップを取りたいです。

出来れば毎日バックアップが残ればいいのですが、
プロジェクトのフォルダごとコピーしておく以外に良い方法はありますか。


690 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 10:53:23 ]
>>689
バージョン管理ツールを使う
VisualStudioがStd以上ならフリーのアドインが使えるsvnがいいかも。
まあEEでもツールや文献の多いSubversion(svn)から使い始めるのがいいかな。

691 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 10:58:59 ]
git が流行ってる?

692 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 11:01:13 ]
>>689
VisualSVN+AnkhSVNオヌヌメ


693 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 11:22:44 ]
>>688
ありがとうございます
解決しました


694 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 11:29:00 ]
>>683 定義の段階ではTが何の型かわからない訳だから
たとえ中で足し算が出来ない仕様だとしても仕方無いような

渡される型にオペレータオーバライドでもできて「自型+自型と書かれた場合はどうする」が
定義出来るならテンプレ中で + が使えないとおかしいとは思う


695 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 12:34:56 ]
>>691
git流行ってるけどあれは個人で使ってもあんまり旨みがなさそうな気が・・・

696 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 12:38:58 ]
IComparable みたいに加減乗除もインターフェースあったらよかったのにねえ。


697 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 12:44:36 ]
>>696
それって演算子のオーバーロードじゃ

698 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 12:58:12 ]
ドングルみたいなUSBメモリを自分で作りたいけどハード的な知識がやっぱ必要だろしC#なんかでは作れないよね?




699 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 12:59:57 ]
プロテクトするんだったら
通常アクセスしない特定のセクタに特定のデータ書き込んでおく


700 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 13:04:06 ]
>>698 ハードのドライバは難しいかもしれない。
結局C/C++などでI/O処理書いてDLLにする形になると思う。


701 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 13:19:07 ]
>>697
いや、インターフェースがあったら
T max<T>(T a, T b) where T : IAddable, ISubable, .....
みたいなことできるよねーみたいな。
もちろん IComparable と同様に Int32 とか Double が実装してること前提だろうけど。

702 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 13:24:05 ]
VC# .NET3.5、 VS2008、WinXPProで開発を行っております。

あるファイルに、下記のような列挙型が定義されています。コメントの通り、近い将来何かの値が追加される予定の列挙型です。
このような列挙型を別のファイル・別の場所で使用する場合、予定された仕様変更に備えて、Exceptionを吐いたり、何かしら忘れないような処理を入れたいと思うのですが、どのような処理がよろしいでしょうか?
一応、思いついたのは下記のようにif/elseで分けた場合には、throw new XXXXExceptionすることでしたが、これでは列挙型が変更された後、実際にプログラムを動かさない限り、追加されたことに気づけません。
できれば、コンパイル時に忘れを防ぐような方法があればいいと思っているのですが……

よろしく御回答お願いいたします。

//あるファイル。
enum Hoge
{
  abc, def, ghi
  //近い将来、 jkl(?)が追加される予定。
}

----

//別のファイル
Hoge hoge = Hoge.abc;
if (hoge == Hoge.abc) {
  //何かの処理
} else if (hoge == Hoge.def) {
  //何かの処理
} else if (hoge == Hoge.ghi) {
  //何かの処理
} else {
  //仕様変更により、Hogeに値が追加された場合、変更を忘れないようにするための備忘録?
  throw new NotImplementedException();
}


703 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 13:28:24 ]
>>699-700
ナイスな情報サンクス!

なるほど・・・
C++とかでローレベルI/O書いて.NETから呼び出せばいいのか
でその書込みアドレスは普段使わない(これまた調査が必要そうだけど・・・)位置に書き込んでおけばいいだけなのか・・・

なんとなく方向性はつかめた気がする!
やれるだけやってみよう!!


704 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 13:37:08 ]
>>703
汎用IOドライバ使えば読み書きできるとおもわれ。
ただし、バルク転送に限られるけど(確か)

705 名前:デフォルトの名無しさん [2009/11/16(月) 14:32:59 ]
C/C++やってました。
VS2008買ってC#を勉強しようとしていますが、
エディタの設定がデフォルトでタブが空白になるような設定になっています。
タブを空白にするメリットって自分には思いつかないのですが、どうなんでしょうか。

タブをスペースにするメリットってなんですか?
またそういう人は結構多いんでしょうか?

706 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 14:38:29 ]
ハードタブは環境によって見かけの桁数変わるから嫌う人もいる
コマンドラインでダンプする時も調整利かないから見づらい
半角空白はUnix系の人に多い気がする


707 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 14:44:44 ]
あとタブ文字は元々見たままの空白文字では無いから(機能文字/プリンタの制御コードだから)、
単にソースの見栄え整えるのに処理系で変わる機能文字使いたくない/使わない
って言う文化もある。

タブ文字に別の意味割り当ててる処理系もあったはず


708 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 14:46:42 ]
>>706
なるほど、納得です。ありがとうございます。



709 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 14:52:45 ]
VisualStudio2010ただでロードしたwww
なにこれwwwインテリセンスの強さとかマジヤバくてVC#2008Expとかウンコに見えるんですがwww

機能制限とか使用期限とかあんの?

710 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 14:57:02 ]
VisualStudioのスレなら誰か答えてくれるんじゃね

711 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 15:28:19 ]
ttp://www.dotup.org/uploda/www.dotup.org363416.jpg

これを広告したかっただけでしょう

712 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 15:43:08 ]
ちょっと和んだ

713 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 16:39:58 ]
2つのListboxにContextMenuStripを関連付けた場合。ContextMenuStripのメニューがクリック
された時にどちらのListboxから呼び出されたのか調べる方法はありますか?。

714 名前:713 mailto:sage [2009/11/16(月) 16:44:07 ]
SourceControlで取れるのかな
ちょっと行ってきます

715 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 18:35:17 ]
>>709
バージョン情報の右上に残り日数が出てるだろう。

716 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 18:44:22 ]
>>711
厨房仕様だな・・・・・


717 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 20:06:26 ]
>>711
おー、いいねえ
コードに詰まった時の気分転換になるな

718 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 20:13:13 ]
>>698
USBデバイスはVendor ID(メーカー固有)、Produce ID(製品種固有)、
シリアルナンバー(個体固有)の3つの識別子を持っているから、
これらを使えばどんなUSBデバイスでもドングルとして使えそう。
(正確には、シリアルナンバーを持ってないUSBデバイスもあるんだけど、
USBメモリのように一人のユーザーが複数個使用する可能性があるデバイスでは
まず間違いなくシリアルナンバーを持っているはず。)

これらのIDの取得方法は、ここが参考になりそう。
ぱっと見た感じマネージドコードだけで意外と簡単に出来そう。
supermab.com/mikan.html



719 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 20:14:10 ]
ソースに目がいかない

720 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 20:21:41 ]
無意識に長いコードを書いてしまいそうだな






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

前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