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


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

C#, C♯, C#相談室 Part58



1 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 21:35:10 ]
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ 
C#, C♯, C#相談室 Part55 (実質56)
pc12.2ch.net/test/read.cgi/tech/1260111240/

Visual C# 2008 Express Edition 日本語版
www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

その他テンプレ>>1-5くらい

331 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 03:24:13 ]
>>329
異常終了するのはSystem.Threadの方みたいです。
EndInvokeも使わない方向で。

Do(){ try{Do2();}catch{} }についてDo.BeginInvoke(null,null)して、
本来ならDo2の例外をDo内でcatchできると思う…のですが、
Do2内でInvokeによってUIスレッドを呼び出しているせい(?)か
Doごと死んでしまう、のです。

332 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 03:32:57 ]
もう少し正確に書け。


333 名前:328 mailto:sage [2010/04/11(日) 03:33:04 ]
>>330
助かりました。ありがとうございます。

334 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 03:38:31 ]
>異常終了するのはSystem.Threadの方みたいです。
System.Threadってなんだ?
みたいってのはどういうことだ?

>EndInvokeも使わない方向で。
使わない方向ってのはどういうことだ?
BeginInvokeとかじゃないから元々使えないのか、
あえてEndInvokeを呼ばない糞コードにする気なのか?

>Do(){ try{Do2();}catch{} }についてDo.BeginInvoke(null,null)して、
>本来ならDo2の例外をDo内でcatchできると思う…のですが、
>Do2内でInvokeによってUIスレッドを呼び出しているせい(?)か
>Doごと死んでしまう、のです。

ControlのInvokeはちょっとまた話が違うからな。
UIスレッドでの例外はUIスレッド内でキャッチする必要がある。
しなければ、普通にUIで例外をキャッチしなかったのと同じ状態になる。


335 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 03:52:25 ]
>>334
> BeginInvokeとかじゃないから
とかってなんだ?

> UIスレッドでの例外はUIスレッド内でキャッチする必要がある。
> しなければ、普通にUIで例外をキャッチしなかったのと同じ状態になる。
ご飯を食べる必要がある。食べなければご飯を食べなかったのと同じ状態になる

336 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 03:55:27 ]
で?
意味が通じない書き方と意味が通じる書き方じゃ全然違うんだけどな。


337 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 03:58:51 ]
で?といわれても、揚げ足を取ってるレスがあまりにもひどかったのでつい。

338 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 03:59:50 ]
>>334がどういう風にあげ足なのか言ってみろ。
お前は>>334で言ってることがちゃんと分かるのか?


339 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 04:00:33 ]
お前は>>334で言ってることがちゃんと分かるのか?

お前は>>333で言ってることがちゃんと分かるのか?
だった間違い。




340 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 04:01:49 ]
System.Threadなんて名前空間はない
BeginInvokeとEndInvokeは対になるべき
別スレッドの例外を補足できない

だと思うんだが違うのかな
そもそも>>333で解決していることに対して面倒なレスをつけるなよ

341 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 04:04:17 ]
え。
>>333の言ってることは理解してるつもりだよ
てか、それ以外にどう読めばいいの

342 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 04:05:19 ]
>お前は>>334で言ってることがちゃんと分かるのか?
>↓
>お前は>>333で言ってることがちゃんと分かるのか?
>だった間違い。

お前は>>331で言ってることがちゃんと分かるのか?
の間違い。
間違いまくり。


343 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 04:06:14 ]
勘弁してください寝てください

344 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 04:06:48 ]
>>335
上げ足とりに突っ込んでるつもりで見当違いのことを言ってることに気づいてるの?


345 名前:328 mailto:sage [2010/04/11(日) 04:09:15 ]
>>334
申し訳ありません。私がいい加減なのはわかりますが、
ただ、あまり攻撃的に反応されても…。

System,Threading.TimerまたはThreadの方ですね。
らしいってのは↓見ただけなのと、理解が適当かもしれないので。
ttp://gushwell.ldblog.jp/archives/cat_50041244.html
実際には、BeginInvokeではなくてTimers.Timerの方を使っているのですが、
BeginInvokeのほうが書くの楽そうだったのでそれを書いて、
EndInvoke使わない方向で云々は話題をずらしたくなくて、です。
例外キャッチの心得は参考になりました。

ぐだぐだ言い訳みたいで申し訳ないのですが、
最後くらい誠実にレスしてみました。
姉歯設計に苛つかれるお気持ちはわかりますが、仲良く行きましょう^^

346 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 04:09:19 ]
>>334は伝わる書き方をすべき。
そもそも>>328で解決すべきは
> どこが問題箇所なのかわかりません
であり、BeginInvokeがどうとかは枝葉。

だから>>330で解決してんじゃん。

347 名前:328 mailto:sage [2010/04/11(日) 04:11:02 ]
本当にすみません。私のせいでこんな深夜に荒れてしまった。
仲良く行きましょう。なんかおもしろい話題ないですかね。。。

348 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 04:15:12 ]
疑問に対して何故かの話を進めた方がプラスになると思ったんだがな。
>>331で疑問に思ってるみたいだから何故かが気になってるんだと思ったんだが。
まあ>>329だけでよかったならもう言うことはない。

>BeginInvokeがどうとかは枝葉。
って言ってるけど、例外が行方不明になることと
BeginInvokeはめちゃめちゃ重要な関係がある話だよ。
まあ>>331の疑問がそのままでいいなら確かにどうでもいい話だが。


349 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 04:15:17 ]
気にせずがんばれ



350 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 04:20:18 ]
うぜえwどんだけ俺のレスの方が有意義だアピールをする気だよw
>>329で解決してんじゃなくて、>>330によって、例外発生箇所が分かったことがよかったんじゃないの?

351 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 04:21:59 ]
ついでに言うと>>334を書いてる途中に>>333が書かれてたんで、
入れ違いにもなったんだよ。
>>330で一度答えた後だしな。


352 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 04:22:16 ]
まじめだから>>329に分からないながらも、分かる範囲でレスしたんだろうな。
これに懲りずまた質問してね。

353 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 04:24:32 ]
言っとくが>>329>>330も俺だ。
答えた上で>>331が来たから>>334を書いた。
その書いてる時点では>>333はまだ書かれてなかった。

ってことだよ。


354 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 04:25:54 ]
まあ基調が攻撃的だったのは悪かったよ、気にしないでくれ。
2ちゃんだから平気でこういう書き方する時がある。
別にそこまで恐縮してもらう必要はない。
ってか書いといてなんだけど基調をいちいち気にするな。


355 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 04:26:59 ]
基調じゃなくて口調だすまん。

あと荒れたとしても最初の書き込み者がそれを気にする必要なんかない。

356 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 05:16:27 ]
深夜に何騒いでんだ?

357 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 05:36:19 ]
ttp://ideone.com/I94e3

これ実行すると期待通りの結果が出たんだけど、何が問題なんだ?
もしかして、キャッチ出来ない例外が飛んできてるとか?

358 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 09:22:14 ]
UnHanldedException ハンドラーていぎせぇよ

359 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 09:53:09 ]
異常終了時の対応はmain()の中全部tryで囲うの?
でもこれだとmain()が異常終了したときはどうすればいいの?



360 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 10:02:34 ]
お前は何を言ってるんだ

361 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 10:11:50 ]
すでに例外が出ているようです(´・ω・`)

362 名前:デフォルトの名無しさん mailto:sage [2010/04/11(日) 10:22:45 ]
retrun 0; してないから、ではないのか?


363 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 12:19:07 ]
Action<T>型でBeginInvokeした時に、AsyncCallbackの受け口を一本化したいんだけど上手い手はないかな
普通にやるとAction<int>とAction<string>とで別の受け口用意しなきゃならん
AsyncDelegateはキャストしないと使えないし
単にEndInvoke呼びたいだけなんだからもちっと簡便にならないかと

364 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 14:18:02 ]
ジェネリックでAction<T>にキャストしたら?

365 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 16:19:13 ]
なるほど
ジェネリックメソッド定義してキャストに使うと
いい感じサンクス

366 名前:デフォルトの名無しさん mailto:sage [2010/04/12(月) 23:15:40 ]
まじでEndInvoke()呼ぶだけなら、無理にまとめる必要ないと思うが

action.BeginInvoke(obj, action.EndInvoke, null);

これでも十分簡潔なのに、これ以上何を求めるのか

public static void AsyncInvoke(this Action action, T obj) { ... }
public static void AsyncInvoke<T>(this Action<T> action, T obj) { ... }
public static void AsyncInvoke<T1, T2>(this Action<T1, T2> action, T1 arg1, T2 arg2) { ... }
// 以下<T1,...,T16>まで同様 (.NET 4.0)

ここまでしないと不満とか?

367 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 17:50:30 ]
Int16からUInt32へビット数を保持したまま
変換する関数ってありますか?

368 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 17:52:54 ]
>>367
意味がわからん

369 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 18:12:45 ]
 わかりにくくて申し訳ない。
Int16の0xFFFFをUInt32の0x0000FFFFに
変換したいという意味でした。
 そのまま0x0000FFFFの論理和で出来るみたいですが
正式なやり方あるのかなと。




370 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 18:15:24 ]
uncheckedでいったんUInt16にキャストすれば

371 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 18:28:35 ]
>>370
ありがとう。試してみます。

372 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 20:34:00 ]
すいません。相談にのってください。
UIスレッドとタスクスレッドの2つのスレッドで
構成されているアプリケーションを作っています。

タスクスレッドにて例外が発生した時、
適切な例外処理ってどんなもんなんでしょうか?

Thread.GetDomain().UnhandledException
にて例外を集約させるところまではgoogle先生で調べれたのですが、
このイベントハンドラ内で、アプリの強制終了を行うしか手が無いのかな?
//UIスレッド
try{
//タスクスレッド起動
UI.ShowDialog()

//タスクスレッドJoin
}finally{
//UI後処理
}
本当は、UIスレッドの後処理(finally節)も確実に実行したいのですが・・

373 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 21:14:09 ]
>>372
タスクスレッド側で処理する

374 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 21:25:57 ]
タスクスレッドって初めて聞いた。

375 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 21:26:30 ]
普通に UI 側に通知して終わればいいんじゃね?

376 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 22:27:22 ]
decimal.Tryparse の 第1引数て、どんなの渡せばいい?
"1.00E+4"を渡しても変換結果が0なんだわ。+外しても駄目だった。

377 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 22:39:40 ]
>>376
試してないけど NumberStyles.AllowExponent フラグをたてなきゃいけないんじゃね?

378 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 23:07:01 ]
double.TryParseでパースしておいてdecimalに変換すれば。

379 名前:デフォルトの名無しさん mailto:あs [2010/04/14(水) 00:26:35 ]
>>377-378
ありがとう、明日確認してみる



380 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 01:01:16 ]
>>379
うむ。

381 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 12:40:56 ]
C#2.0でツールパレットを実装するのに簡単な方法は無いでしょうか?
アプリの状態によってボタンが変わるので、List系コントロールが使えればいいのですが
ボタンをタイル状に敷き詰めるのはどうやら無いっぽいので・・・
FlowLayoutPanelにRadioButtonを自力で詰め込んでいくしかないのでしょうか?

382 名前:デフォルトの名無しさん [2010/04/14(水) 12:44:39 ]
ツールパレットってのがどういうのかわからん
ざっくりしたイメージ画像とかない?

383 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 12:50:22 ]
ないない

384 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 12:51:33 ]
聞いたこと無い用語なのでググってみたがどうやら
ドッキングツールバーのことのようだ
homepage.mac.com/mkino2/sketchBp/modification/toolPalette.html

385 名前:デフォルトの名無しさん [2010/04/14(水) 12:52:13 ]
ツールパレットでぐぐるとそれなりにヒットするので何かのソフトが
ツールパレットと呼んでる物があってそれと同じような物が実装
したいんだろうから、そのスクリーンショットでもいいんだがな

386 名前:381 mailto:sage [2010/04/14(水) 12:52:59 ]
>>382
こんなのです↓
ttp://home.riise.hiroshima-u.ac.jp/~nagato/Linux/img150.png

ドローツールで良くある、ペンとか選択モードを指定する奴ですね

387 名前:デフォルトの名無しさん [2010/04/14(水) 12:53:23 ]
>>384
それならC#にあるやん
あとはツールバーへコントロールを動的に増減してやればいいだけだよ

388 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 13:09:47 ]
>>386
Form1.cs
ideone.com/KrGyF
Form1.Designer.cs
ideone.com/aQKxZ

389 名前:381 mailto:sage [2010/04/14(水) 13:26:24 ]
>>388
ありがとうございます
なんとかやってみます



390 名前:デフォルトの名無しさん [2010/04/14(水) 20:05:51 ]
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
backgroundWorker2.RunWorkerAsync();
backgroundWorker3.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while(){重い処理}
}
backgroundWorker2_DoWork,backgroundWorker3_DoWorkも1と同じような処理。
これを実行すると、初回起動時に1,2は同じタイミングで始まるんだが、3だけ遅れて始まる。
一旦停止して、再スタートするとすべて遅れなく始まるんだが、初回から、1から3すべて遅れなく始める方法ない?

391 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 20:19:42 ]
なぜ開始タイミングを揃えなければならないのか

392 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 20:30:49 ]
>>391
各スレッドの処理結果を呼出しもとで使用するのに、
タイミングが揃っていた方が都合がよいからです。

393 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 20:36:06 ]
内部で同期させる仕組みを作れよ

394 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 20:42:29 ]
>>392
同時に開始しても同時に終了するとは限らないんだけど。
結局は、終わったかどうか個別にチェックしないと。

395 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 20:42:39 ]
>>392
処理結果を呼び出しもとで使用するときに処理が終わってるかどうかは見ないのかい?
見てるなら別にいつ始まっていつ終わってもよかろ

396 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 20:42:59 BE:2861222786-2BP(0)]
>>392
なんで3つ全部終わるのを待てないの?

397 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 20:45:47 ]
終了タイミングが揃うことを前提にした実装なんか怖すぎるだろ
実際にだいたい揃ってるとしても必ず待つように作るわ

398 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 20:48:41 ]
処理が終わったかどうかはチェックしています。
すべての処理が終わってからメインのスレッドで次の処理をしています。
ただ、初回は3番のスレッドだけ遅れてスタートし、2回目以降は遅れなくすべてのスレッドが
スタートするという現象が気になったので、質問しました。

399 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 20:51:27 ]
スレッドプール使う以上は黙って任せるしかない
嫌ならThreadクラスを直に使えばいいよ



400 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 20:52:11 ]
>>398
ならCPU増やすかThreadPoolの設定変えるか

401 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 21:04:07 ]
答えてくださった方々ありがとうございました。
試行錯誤してみます。

402 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 21:32:23 ]
ThreadPoolでは、CPUが空いてなければ処理は投入されない。
もうひとつ、CPUが空けばプロセッサ数以上のスレッドも投入されるが、
その際は0.5秒に一つずつスレッドが開始される。
例えばThreadPoolの最小スレッド数はデフォルトでプロセッサ数になっているが、
これを増やしてやれば必要になった時点でスレッドを作成するときの0.5秒のタイムラグがなくなる。
ただ、どっちにしても基本的にはCPUが空いてるときに動く仕組みだからその辺は注意。


403 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 21:37:02 ]
0.5秒って宇宙刑事ギャバンじゃあるまいしw
そんなに遅いわけないだろ常識で考えて。
どんな妄想だよそれ

404 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 21:54:21 ]
>>402
ありがとうございます。
ThreadPool..::.SetMinThreads メソッドを使用して、最小スレッドを変更したらできました。

405 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 22:07:33 ]
>>403
msdnライブラリから抜粋

スレッド プールは、最少数のアイドル スレッドを維持します。
ワーカー スレッドでは、この最少数の既定値はプロセッサ数です。
GetMinThreads メソッドを使用すると、最少数のアイドル ワーカーと
I/O 完了スレッドを取得できます。

スレッド プールのすべてのスレッドがタスクに割り当てられている場合、
スレッド プールは新しいアイドル スレッドの作成をすぐには開始しません。
スレッドのスタック領域の不要な割り当てを避けるために、
新しいアイドル スレッドは間隔を置いて作成されます。

"この間隔は現在 0.5 秒です"が、.NET Framework の将来のバージョンでは
変更される可能性があります。

スレッド プールの多数のタスクがキューに置かれて
アプリケーションのアクティビティが急激に増加した場合は、
SetMinThreads メソッドを使用してアイドル スレッドの最少数を増やします。
この操作をしないと、新しいアイドル スレッドの作成が遅延するこの組み込み
の設定が、ボトルネックになる可能性があります。

406 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 22:09:47 ]
>>403
ttp://msdn.microsoft.com/ja-jp/library/system.threading.threadpool(v=VS.90).aspx
スレッド プールのすべてのスレッドがタスクに割り当てられている場合、スレッド プールは新しいアイドル スレッドの作成をすぐには開始しません。
スレッドのスタック領域の不要な割り当てを避けるために、新しいアイドル スレッドは間隔を置いて作成されます。この間隔は現在 0.5 秒ですが、
.NET Framework の将来のバージョンでは変更される可能性があります。

>この間隔は現在 0.5 秒ですが

なんで最近何も知らないくせいに下らんことばっか言う奴が多いのかね。

407 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 22:11:31 ]
こういうのみてるとスレッドとかバカをふるい落とす壁になるのがわかる・・・

408 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 22:11:37 ]
しかしまあ正直言って0.5秒はちょっと待ちすぎのようには思ったりする。


409 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 22:12:59 ]
細かいな



410 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 22:28:09 ]
0.5秒おきに起動されるのを目の当たりにしたときは何かの間違いかと思うよな。
で、MSDN見てびっくりして設定変える、と。

411 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 22:29:40 ]
逆にあれが50msecくらいの遅延だったりしたら、その遅延の存在に気付かない恐れがあるから
もっと遅くてもいいかも知れん

412 名前:デフォルトの名無しさん [2010/04/14(水) 22:47:02 ]
C#じわじわきてるな

bit.ly/9xp451

413 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 23:10:06 ]
短縮URLはんなカス

414 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 23:13:58 ]
ドキドキしちゃった

415 名前:デフォルトの名無しさん [2010/04/14(水) 23:15:12 ]
>>413
黙れゴミ。誰にたてついてるんだ?コラ。あ?シバキアゲタルゾこのクソが。

416 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 23:18:02 ]
ウンコがいきがってんなよ

417 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 23:20:24 ]
>>415
しゃべった!うんこがしゃべった!

418 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 23:46:34 ]
>>415
じわじわきてますよね///

419 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 05:27:29 ]
Visual C# 2008でwindowsフォームアプリケーション作成中です。
テキストボックスで文字を反転した際の色を変更したいのですが、SystemColors.Highlightは読み取り専用で変えることが出来ません。
どのような方法を取ればいいのかご教授お願いします。



420 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 07:09:50 ]
SystemColors.Highlight.Value=

421 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 13:06:52 ]
自作ジェネリッククラスを型付コレクションにするのは無理かな
class A<T>
{

}
List<A<T>> a_list;    ←コンパイルエラー

ArrayListでキャストしてやればいいっちゃいいんだけど、可能なら型付がいい
あ、Tは違うのが混在するんでList宣言のところで固定はできない

422 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 13:17:07 ]
試さないでいうけど A<T>のスーパークラスを作って List<Super> a_list じゃだめなん?


423 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 13:30:22 ]
>>422
それよくやる
インターフェイス使う方が多いかな

424 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 13:45:15 ]
スーパークラス!!そういうものもあるのか
それで行こう
THX.

425 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 15:36:31 ]
>>420
Valueメソッドが無いです。

426 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 15:53:30 ]
ふーん

427 名前:デフォルトの名無しさん [2010/04/15(木) 16:00:48 ]
SystemColorsってBrushesなんかと同じであくまで
システムデフォルトなんかの塊なんじゃないの?

やるとしたらwindowsその物の設定をいじるとかになりそうな予感

428 名前:デフォルトの名無しさん [2010/04/15(木) 16:03:07 ]
アプリ単位では変えられないって事ですか。分かりました諦めます。
ありがとうございました。

429 名前:デフォルトの名無しさん [2010/04/15(木) 16:08:38 ]
予感ってだけね
ttp://tsushima.2ch.at/s/news2ch58652.png
たぶんSystemColorsってこの辺の情報を持ってるだけのような気がする

たんなる隠しになってるだけだと継承して・・・とかやれるんだろうけど
ソースが手元に無いのでわからん



430 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 16:47:43 ]
┐(´д`)┌ヤレヤレ

431 名前:デフォルトの名無しさん [2010/04/17(土) 10:34:39 ]
過疎ですな

>>430
何にあきれててるの?
それともそれは某バーガーさんを模したAA?

432 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 18:47:48 ]
.NET 3.5 から .NET 4 へプロジェクトを乗せ替えるのって何か弊害になることあるんですか?

433 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 18:50:57 ]
動かすのに.NET4が必要
Windows7ですらそのままでは動かん

434 名前:デフォルトの名無しさん [2010/04/18(日) 03:06:21 ]
sliverlightでゲームループ作るにはどうすればいいんだ
検索結果の上にくるところは書いてる人の能書きばっかりが目立つし
能書きよりサンプルコード晒してくれた方がよっぽど役に立つのに・・・

435 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 03:35:00 ]
www.google.co.jp/search?q=sliverlight+%E3%82%B2%E3%83%BC%E3%83%A0%E3%83%AB%E3%83%BC%E3%83%97&ie=utf-8&aq=t&hl=ja

436 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 03:50:07 ]
>>434
能書きですみません。
あなたの技術レベルが分からないと教えようがないので、今までの実績を教えてくれますか?

437 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 04:18:19 ]
>>434
お前が理解出来ないことは全て相手の能書きか

438 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 06:51:24 ]
あるクラスを継承してoverrideしたメソッドを持つクラスが
さらに継承されたときそのメソッドをoverrideして欲しくないときってどうすればいいですか?


439 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 09:30:39 ]
sealed



440 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 09:34:42 ]
>>434
SilverlightにはDoEventsみたいなのがないのでいわゆるゲームループは作れない。
CompositionTarget.RenderingやDispatcherTimerやStoryboardでコールバックかける。

441 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 22:50:51 ]
>>439
ありがとうございます

442 名前:デフォルトの名無しさん [2010/04/18(日) 22:59:40 ]
日本語の解説なくていいのでコードを乗せてくれれば勝手にやるよってことでしょ
プログラマーはコードで会話する

日本語で語ろうとする=能書き

443 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 23:01:52 ]
>>435で理解できないなら何使ってもできないと思うよ
コードあっても理解できないだろうね

444 名前:デフォルトの名無しさん [2010/04/18(日) 23:04:23 ]
>>443
うーん
sliverlight初心者だとサンプルソースをプロジェクトごと眺めてみたいってのもあるだろうから
>>435ででてくる日本語ずらずらコードは一部で説明されると能書きだけに見えるよね

日本語はいいコード出せって感じで

445 名前:デフォルトの名無しさん [2010/04/18(日) 23:18:46 ]
ゲーム作ったことある俺でC#もできるが>>435は日本語多すぎだな
サンプルプロジェクトと一緒にその説明だと親切だなあと思うが
そのままだと重いつたこと書き散らしただけのチラシの裏に書いておけ
でしかないような気がする

446 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 23:20:54 ]
>>445
日本語少しおかしいよ・・・・・・

447 名前:デフォルトの名無しさん [2010/04/18(日) 23:25:40 ]
>>446
言いたいことは俺も能書きが多くみえるということだ
検索してこの手が一番迷惑なんだよね

448 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 23:27:15 ]
必要な情報を取捨選択する能力にかけてるってことですね

449 名前:デフォルトの名無しさん [2010/04/18(日) 23:28:19 ]
>>448
開く時間も持ったないと言ってる
ツイッターが引っかかるくらいうざい



450 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 23:31:35 ]
ageてるから自作自演バレてるぞ

451 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 23:32:51 ]
そうだぞ

452 名前:デフォルトの名無しさん [2010/04/18(日) 23:34:36 ]
そうだぞ

453 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 23:35:41 ]
Silverlightなんかまだまだマイナーだしゲーム用でもないんだから情報があるだけマシ

454 名前:デフォルトの名無しさん [2010/04/18(日) 23:36:20 ]
そうだぞ

455 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 00:43:56 ]
>>445
>ゲーム作ったことある俺でC#もできるが

今更だがこれって「能書きたれてるのはお前の方だ」っていうツッコミ待ちだったのでは?
みんな気づいてあげろよ……。

456 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 09:11:54 ]
>検索してこの手が一番迷惑なんだよね
>開く時間も持ったないと言ってる
>ツイッターが引っかかるくらいうざい

検索したら自分の欲しい物だけが与えられると思っているのは、いかにもゆとりらしい考え方だな。


457 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 11:14:53 ]
ゆとりでなくてもはてなウゼーとかよく言ってるのを目にするが

458 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 11:37:48 ]
でたらめ書いてあるのは迷惑と思ったりもするが、
そうでないなら何様だとしか言いようがない。


459 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 11:47:06 ]
うざいならスクリプトでも書いて除外すればいいじゃん
プログラマなんでしょ



460 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 22:49:42 ]
ttp://tore.vestues.no/2009/01/05/creating-a-dynamic-xml-reader-with-c-40/

これみたいなXMLをdynamicにする奴で
ちゃんと動くのってどっかにないですか

461 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 00:37:19 ]
最近本当にうざいのは、はてなよりもウィキペディアのコピペサイト

462 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 00:43:10 ]
俺は別のブログ記事へのリンクだけの広告ブログが本当にいやだ

463 名前:デフォルトの名無しさん [2010/04/20(火) 00:43:48 ]
スパムでいいじゃん

464 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 12:40:23 ]
>>460
どれも技術サンプル程度
昔のDOMはともかく今はLINQ to XMLという優秀なライブラリがあるから
dynamicで使えてもそんなに変わらないよ

465 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 23:35:52 ]
htmlやデータなどからURLを抜き出すクラスの名前は何がいいでしょうか?
抜き出すメソッド名はGetURL()にしようかと思っています

466 名前:465 mailto:sage [2010/04/21(水) 23:50:50 ]
スレ間違えました

467 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 14:55:11 ]
C#というよりXAML(3D)についての質問ですが、専用質問スレがないのでここで
お願いします。メタセコイア形式mqoからXAMLに変換するプログラムを
つくりたいのですが、カメラの変換手法をご存じの方いらっしゃませんか。
既存の変換ソフトウェアでは、
Scene {
pos 0.0000 0.0000 1494.2412
lookat 4.5152 74.7634 0.3124
head 0.3000
pich 0.3100
ortho 1
zoom2 6.6503
amb 0.250 0.250 0.250
}
から
<PerspectiveCamera x:Name="Camera_blueknight"
Position="-244.763901,513.030212,1388.125000"
LookDirection="0.163176,-0.342020,-0.925416"
UpDirection="0.000000,1.000000,0.000000" FieldOfView="20.000000"
NearPlaneDistance="1" FarPlaneDistance="10000" />
に変換されているのですが、数字に関連性を見つけられなくて
やり方の見当がつかないのです。

468 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 20:52:33 ]
WPFの3Dって触ったことないけどプロパティ名見る限りDirect3Dそのまんまなんだなw
Direct3Dのドキュメントとか解説サイトとか見たらわかるよ

469 名前:467 mailto:sage [2010/04/23(金) 21:10:59 ]
自己解決しますた。



470 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 23:53:42 ]
>>469
他人になりすますのって意味があるのでしょうか。
自己解決したならおしえてほすぃです。
>>469
Direct3D方面で調べます。ありがとうございました。

471 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 23:55:52 ]
mqoからXあたりにコンバートしてさらにってのは駄目なのかね?
MDXとかXNA関連であさればコンバートライブラリとかでてきそうだな

472 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 01:21:20 ]
作者がmqoは互換性考えていないと言い切ってるから、やるならプラグイン
じゃね?C++だからスレチになっちゃうけど。

473 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 21:13:32 ]
XMLってソフトウェアからすると読みやすいかもしれないけど
人間には読みづらい
もっと人間寄りのいいアイディアないものかね

474 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 21:14:17 ]
あ、ふらっとの方に書いたつもりだったのに、まぁいいか

475 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 21:15:49 ]
>>473
ツールで編集できるようにするしかないね
XMLをGUIで編集するツールあるでしょ

476 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 21:25:34 ]
XMLスキーマとかメモ帳で書ける奴いるんだろうか
VSならインテリセンス頼みでなんとか書けるけど

477 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 22:30:22 ]
>>473
lisp があるじゃない


478 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 23:05:39 ]
スキーマはRelaxNGでしか書けない。
XSDじゃ書けない構造があるんでまともな変換ツールがないとかあって、C#じゃ
使ってないが・・・良いライブラリとか無いかな?

479 名前:デフォルトの名無しさん mailto:sage [2010/04/24(土) 23:10:30 ]
結局諦めてXSD使ってる
スキーマ指定してXML編集するときにインテリセンスが効いたりとかサポートが強力すぎる



480 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 19:04:37 ]
質問させてください:

MenuStripをカスタムドローしようとしているのですが、
OnRenderItemTextでDrawThemeTextEx()を使って
文字を描画しようとすると、
真っ黒な四角が表示されてしまいます。

Graphic.DrawString()を使えば描画は出来るのですが、
ウィンドウにAero Glassを適用したとき、ClearTypeのフォントを描画すると
周りにアンチエイリアスのゴミが表示されるので、敬遠してます。

メイリオ使うなw とか言わずによろしくお願いします。

481 名前:480 mailto:sage [2010/04/25(日) 19:06:48 ]
protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
{
base.OnRenderItemText(e);
if (e.ToolStrip.IsDropDown)
{
return;
}

using (var img = new Bitmap((int)e.Graphics.VisibleClipBounds.Width, (int)e.Graphics.VisibleClipBounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb))
{
using (var g = Graphics.FromImage(img))
{
var hDC = g.GetHdc();
var hMemDC = IntPtr.Zero;

var rect = new RECT();
rect.left = e.TextRectangle.Left;
rect.top = e.TextRectangle.Top;
rect.right = e.TextRectangle.Right;
rect.bottom = e.TextRectangle.Bottom;

var pb = BeginBufferedPaint(hDC, ref rect, BPBF_TOPDOWNDIB, IntPtr.Zero, out hMemDC);
//BufferedPaintSetAlpha(hMemDC, IntPtr.Zero, 255);
DrawThemeTextEx(hTheme, hMemDC, 0, 0, e.Text, -1, DT_NOCLIP | DT_CENTER | DT_SINGLELINE | DT_VCENTER, ref rect, ref option);
Uxtheme.EndBufferedPaint(pb, true);

g.ReleaseHdc(hDC);
e.Graphics.DrawImage(img, g.VisibleClipBounds);
}
}
}

482 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 19:12:08 ]
TextRendererは?

483 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 19:30:20 ]
>>481
Win32詳しくないんで違ってたらごめん。
普通にBitmapの背景を塗ってないから、なんて間抜けなオチじゃないよねまさか。

484 名前:480 mailto:sage [2010/04/25(日) 19:37:12 ]
>>482
ありがとうございます。
試してみたところうまくいきましたが、
DwmExtendFrameIntoClientArea()でAeroにしたら
Color.FromArgb(255, 0, 0, 0)でも文字が透明になりました。。

>>483
ありがとうございます。
それは確認してます。
背景をあらかじめ描いておいても、
上書きで黒い四角が現れます。

485 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 19:43:24 ]
>>484
くどいようだけど、

>背景をあらかじめ描いておいても、
これって、ちゃんと>>480のコードのimgのGraphicsに対して行ってるんだよね?

どうもe.Graphicsに対して描画してるようにも聞こえるけど....

486 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 19:58:47 ]
for (int i = 0; i < 10; i++)
{
textBox1.Text = "実験";
Thread.Sleep(500);
textBox1.Text = "";
//Thread.Sleep(500);
}

487 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 20:00:14 ]
テキストボックスの文字を点滅させたくて
ためしに上のようにしたのですが処理が終わるまで固まったように
なります。
簡単に点滅させられないのでしょうか

488 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 20:01:49 ]
//Thread.Sleep(500);

//があるのは間違いです。ごめん。

489 名前:480 mailto:sage [2010/04/25(日) 20:04:15 ]
>>485
はい。 e.Graphics ではなく、Graphics.FromImage(img) でつくった g にです。

あっ…
でも、hMemDCには何も描いていませんでした。
DrawThemeTextEx() の直前に FillRect(hMemDC, ref rect, GetStockObject(LTGRAY_BRUSH))
を入れてみたところ、
灰色の四角が現れました。

でも、文字は描画されません…
文字の色を白にしてもみてもダメでした。



490 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 20:24:19 ]
>>486
そのコードはどう見ても10秒間一切操作ができなくなるけど

for()ループを使うんじゃなくて、
System.Windows.Forms.Timer クラスを使うべきなんじゃない?

491 名前:467 mailto:sage [2010/04/25(日) 20:28:37 ]
>>486
dobon.net/vb/dotnet/vb2cs/event.html

492 名前:480 mailto:sage [2010/04/25(日) 20:51:49 ]
メイリオをあきらめてフォントをMS ゴシックにしたら、
「ファイル(F)」が「ブアゥレ(F)」に文字化けしたwww


だれか、Aero Glassのメニューに綺麗に文字が描ける方法を知りませんか?

493 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 20:54:03 ]
>>490
タイマを使うとテキストボックスの文字を点滅できました

forを使うとなぜ10秒間、「実験」の文字すらでてこなくなるのか
教えていただけるとありがたいのですが。
テキストボックス以外が固まるのはそうだろうなと思うのですが。

494 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 20:56:13 ]
>>492
VisualStyleRenderer.DrawText使えば?

495 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 20:57:10 ]
>>493
> forを使うとなぜ10秒間、「実験」の文字すらでてこなくなるのか
描画するのも同じスレッド
ところがそのスレッドがループで詰まってるから描画もできない

496 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 21:08:49 ]
>>495さん
ほえー
ありがとう。今日ずっと悩んでいたんです。
.AppendTextなら文字がでてくるのに
なんで.textでは出てこないのかなーと。
本当にありがとう。

497 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 21:12:32 ]
for (int i = 0; i < 10; i++)
{
textBox1.Text = "実験";
textBox1.Refresh();
Thread.Sleep(200);
textBox1.Text = "";
textBox1.Refresh();
Thread.Sleep(200);
}
としたらちゃんと点滅できました。ありがとう。

498 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 21:14:29 ]
>>497
お前は何もわかっていない
Thread.Sleepはマルチスレッドなど非同期で動かしたりする場合に使う
シングルスレッド、ましてやFormクラスで使うべきじゃない

499 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 21:21:45 ]
>>498さん
そのとおりです
今、マルチスレッドをやっているところなんです。
通信を別スレッドで受けている間
文字を点滅させられないかなと悩んでました。
怒らないで。



500 名前:480 mailto:sage [2010/04/25(日) 21:23:45 ]
>>494
ありがとうございます。
やってみましたが、やっぱり文字が透明になりました。

501 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 21:24:58 ]
で、通信データは別スレッドからテキストに固まらずに表示されるのに
なぜ、点滅みたいな簡単なことで固まるのかわからなかったので。

502 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 21:28:35 ]
>>501
それはマルチスレッドじゃなくて
ただのスレッド処理だから
もう一方が処理している間、他のスレッドは割り込めない
割り込みたいならlockキーワードを使うべし

503 名前:490 mailto:sage [2010/04/25(日) 21:32:36 ]
「メッセージループ」でぐぐるといいよ。

504 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 21:53:10 ]
>>492
ブアゥレ 噴いたww

505 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 22:10:01 ]
>>502-503さん
ありがとう。しばらく悩んでみます。

506 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 22:33:15 ]
そう言えばスレの流れとあんま関係ないんだけどさ
BitmapとかGraphicsとか、巷のサンプルだと必ずDisposeしてるじゃん?
GC来るまで残りっぱなのは理解してるけど、マネージリソースなんだから
そんな明示的にせんでもいいような気がするんだけど
なんか理由あるん?

507 名前:デフォルトの名無しさん mailto:sage [2010/04/25(日) 22:51:33 ]
GraphicsもBitmapもどっちもアンマネージリソース抱えてるよ
Bitmapなんか実体はほとんどアンマネージメモリに置かれてるわけだし

508 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 02:28:31 ]
>>507
ソースある?

509 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 05:25:18 ]
>>480
少なくともVistaまでのAPIで透明の上にClearTypeで描画することはできない。
これはClearTypeの技術上仕方がない。
だからIEとかグラスの上に乗せるテキストはClearTypeじゃなくてただのアンチエイリアシングになっている。

直接の解決策ではないが.NET 4.0のWPFでは自己責任で透明の上にClearTypeで描画できるようになった。
Direct2Dは調べてないので知らないができるかもしれない。



510 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 05:54:41 ]
>>508
ReflectorでSystem.Drawing.dllを逆アセンブルしてみると分かるが、
これはGDI+のラッパーだから。

511 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 06:07:00 ]
ハンドル持ってる時点で分かると思うんだがなぁ

512 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 06:18:24 ]
IDisposableが継承してるならDisposeしろ。
GCで解決するならIDisposable継承しない、するな。

513 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 08:53:14 ]
IDisposableってのは、「Disposeしろ!」っていう開発者からのメッセージだから。

514 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 11:18:15 ]
アクションゲームなのだとスターを取ると無敵とかありますよね
他にもフラワーをとったら火が出たりするのとかメタル化したりとか
こういうのをやるときにそのキャラクターのクラスにフラグを持たせる方法もあると思いますが
そうしないで外からそのキャラクターのインスタンスに機能を拡張するのはどうすればいいでしょうか

まあ、上の例位だと、あたり判定の部分にデリゲードを使って
その部分を差し替えるとかでもいいかもしれませんが
はじめからyを押された時の処理を描くつもりがなくてそういう関数を用意していない時とかに
フラワーとったらどうしたらいいでしょうか。


515 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 11:19:40 ]
>>514
IronPython

516 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 11:29:06 ]
>>515
ありがとうございます
今ちょっとぐぐってみました
.Netから使えるスプリクト言語みたいなものですか?
ちょっと調べてやってみます.

517 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 11:30:53 ]
オブジェクト指向を勉強したら>>514みたいに考えたくなるのはよくわかるけど
特にゲームは実際やってみるとやっぱり上から神様が管理しないと難しいよ

518 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 11:34:04 ]
>>517
そうですね痛感してますw
でも趣味の勉強なのでいろいろ試してみたいと思います。

519 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 12:10:47 ]
ゲームはソース読んで勉強するのが一番わかり易いと思う



520 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 14:05:19 ]
DataTableに自作のクラスを入れることができますか?
入れようとするとToStringの中身が入ってしまうようですが。

521 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 14:14:59 ]
できますん

522 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 14:40:23 ]
>>514
継承できなければ委譲。拡張メソッドで行ける場合もある。

523 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 14:58:42 ]
>>514
has-aでいいんじゃない?
Marioをコンストラクタで受け取る
FlowerMarioクラスを作ってやればいいと思う
と、どう考えても回答者側の知識量ではない俺がいってみる。

524 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 14:59:52 ]
>>520
できるよ
単に表示されるときにToStringが呼ばれてるだけでしょ

525 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 15:04:26 ]
>>523
それは無意味
MarioとFlowerMarioの間に継承関係が無いなら
アプリケーションがFlowerMarioをあらかじめ知っていないといけない

526 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 15:07:05 ]
>>525
ああそうだね、じゃあ両方にインターフェースをつけるとか

527 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 15:07:30 ]
>>512
Disposeできない時のためにFinalizeがあるんじゃないの

528 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 15:09:56 ]
>>514
ステートマシンを内部に持てばいいんじゃないの、と適当言ってみる
それをオブザーバーパターンで外から操作とか

529 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 15:13:24 ]
Decoratorとか?
まあゲームだったら結局仕様をきっちり決めて決め打ちが一番いいと思うけど



530 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 15:21:44 ]
ゲームの場合、一度納品してから仕様変更なんて、基本的にはないだろうしな。

531 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 15:26:41 ]
ゲームのキャラクターなんか激しく周りの環境に依存するんだから
プラグイン的な拡張をやろうとすると結局グローバル環境的なものを丸ごと渡すことになって
あんまり意味が無さそう

532 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 15:38:43 ]
ありがとうございます
>>519-531
Decoratorパターンていうんですね>>526さんの
方法は一応考えたんですが、羽と花をとったときに
両方の効果を使える用にしたいなと思いまして。

>>528
調べてみます

拡張性に意味はないかもしれませんが勉強なので。

533 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 16:04:32 ]
>>521,524
ありがとう
次のようなコードで試したんですが、使い方間違ってますか?
foreach( DataRow row in table.Rows )
{
row["col1"] = new MyClass();
MyClass obj = row["col1"] as MyClass; //失敗する
}

534 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 16:16:39 ]
それ、col1列のDataColumnのDataTypeがStringになってる

535 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 16:19:26 ]
>>523
重要なことだからつっこませてもらうと、MarioがFireFlowerを取るとFireMarioになるんです。
Luigiクラスはいりません。バグの元ですから。

536 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 16:21:04 ]
>>530
最近はオンラインアップデートがあるからなんとも言えなくなってきたかも。
追加要素という名のアンロックは別としても、修正パッチあたるよ。

537 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 16:29:22 ]
てか、MODだろ

538 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 16:50:34 ]
>>534
おぉ、できました。
ありがとう

539 名前:536 mailto:sage [2010/04/26(月) 17:00:05 ]
ああ、家庭用ゲームだと思い込んでレスした



540 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 18:32:54 ]
>>523
has-aならStateをキャラクターとアイテムが持ったらいいんじゃね?
FireStateを持ったFireFlowerをMarioがとるとMarioがFireStateを持つようにする

541 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 20:14:52 ]
正直、マリオ程度のゲームなら
愚直にステート値でswitchするコードを書くほうが結局分かりやすいと思う。
こういうの、最近はすっかり「不吉な臭い」扱いになっちゃてるけどw

デリゲートやインターフェイス使ってストラテージパターンみたいなことしても、
自己満足以上の効果はないと思う。

542 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 21:59:06 ]
風マリオと雷マリオと闇マリオと土マリオとマリエと・・・
stateの量の問題?

543 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 22:01:16 ]
実際のゲーム機の開発でそこまで綺麗にクラス使ってるのかね?

544 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 23:01:59 ]
ゲーム機のゲームも結構な規模になってるだろし
それなりに綺麗な設計せざるを得なくなってるんじゃないかね?

545 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 23:18:51 ]
家庭用ゲームのソースコードなんて見る機会無いからね。
このスレに業界人は居るのかなぁ。

546 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 01:35:19 ]
テートスとかジーラテはスーコーあげあげだからねー
ウィチスーでスーケーしてるほうが現実見てるってyou know?

547 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 01:45:26 ]
日本語でおk

548 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 02:25:00 ]
StateまたはStrategypatternは時間がかかります。
switch caseを使用するのは現実的です。理解?

549 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 02:54:50 ]
把握した



550 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 06:59:08 ]
スーコーあげあげいいなw
スーコーマシマシ!

551 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 21:27:43 ]
object同士でプリミティブ型であれば
ある程度大小比較してくれる関数ってありますか?
具体的に言うとstringとint(byteなど)で比較を
正しく行いたいのですが。

552 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 21:39:01 ]
"a"と100のどっちが大きいかなんか定義次第なんだから正しい比較も何もないだろ

553 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 21:41:11 ]
どうやって"one"と5を比較できると思うんだ?
数値に変換できる文字列なら、数値に変換して比較するしかなかろう。

554 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 21:49:10 ]
int.Parse

555 名前:551 mailto:sage [2010/04/27(火) 21:56:06 ]
書き忘れました。
型が同じことが前提です。

>>552-554
ありがとう
やはりParseが一般的ですか。
DataViewもParseで比較してるのかな。

556 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 22:04:26 ]
型が同じって、Objectに入ってるInt32同士を比較したいってことなのか?
ならComparerクラスとか

557 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 22:13:55 ]
もう、自分がやろうとしていることを意味的に把握してないから人にうまく説明できないわけで、
その時点でちょっと.....

558 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 22:15:50 ]
関係ないけどstringやobjectは組み込み型だけどプリミティブ型ではないよ

559 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 22:55:53 ]
>>502
なぬ?

>>512
残念ながら一貫してそうはなってない。




560 名前:デフォルトの名無しさん mailto:sage [2010/04/27(火) 23:55:42 ]
まあ確かにWin9xでなきゃ目くじら立ててDisposeする必要がないものでもIDisposable
実装してたりするし

関係ないけどインターフェイスを「継承」する、って言い回しはJava方面の方言?
それとも単にありがちな誤用ってだけなのか。

561 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:03:00 ]
ありがちな誤用

562 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:03:04 ]
>>560
C#方言。

インターフェイスの概要
インターフェイスには、次の特徴があります。

インターフェイスは抽象基本クラスに似ています。インターフェイスを継承する非抽象型は、すべてのインターフェイス メンバを実装する必要があります。

インターフェイスは直接インスタンス化できません。

インターフェイスには、イベント、インデクサ、メソッド、およびプロパティを含めることができます。

インターフェイスには、メソッドの実装が含まれません。

クラスと構造体は、複数のインターフェイスを継承できます。

インターフェイス自体が複数のインターフェイスを継承できます。


563 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:06:37 ]
>>555
型が同じなら、IComparableにキャストしてCompareToするとか。
codepad.org/m37TS28P

564 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:09:13 ]
かと思ったら、Javaでも使ってるな。 interface inheritance

言語規定より。
This (multiple) interface inheritance allows objects to support (multiple) common behaviors without sharing any implementation.
この(多重)インタフェース継承は,オブジェクトがいかなる実装も共有せずに(多重の)共通的な振る舞いをサポートすることを可能とする。


565 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:14:38 ]
インターフェースはインターフェースを継承できる

566 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:15:28 ]
>>565
なるほど、それが「実装」だったら確かにおかしいな。

567 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 00:38:38 ]
Javaだと、implements と extends とキーワード異なるけれども、C#だと、どっちもコロンだから用語を忘れてしまうんだな。

568 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 02:12:26 ]
クラスがインターフェースを継承している時点で実装があるはずなんだから、継承だけ使えば意味通じるでしょ

569 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 02:19:02 ]
>>565




570 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 07:58:33 ]
>具体的に言うとstringとint(byteなど)で比較を
>正しく行いたいのですが。

>型が同じことが前提です。
どっちだよw

571 名前:デフォルトの名無しさん [2010/04/28(水) 08:01:22 ]
>>551
遅レスだけどこんなのダメだっけ
if (obj1 is IComparable)
{
return (obj1 as IComparable).CompareTo(obj2);
}

572 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 11:06:44 ]
インターフェースて使った事ないんだけど
どういうときに使うの?

573 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 11:40:01 ]
>>572
継承関係にない型の間に共通の機能を持たせて、同じように扱いたいとき。
>>563,571がまさにそれ。

C#の言語仕様(foreachだのusingだの)とも密接に結びついているので、
知らず知らずのうちにインターフェースを活用しているはず。
たとえば、IEnumerableを実装しさえすれば、どんな型でもforeachで列挙できる。

574 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 11:53:40 ]
>>563
>>571
これって文字の比較であって、数値の比較じゃないでしょ?

575 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 11:55:54 ]
>>574
何を言ってるんだ

576 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 12:02:44 ]
>>574
冷静になるんだ

577 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 12:34:27 ]
あるクラスを継承してメンバ関数だけオーバーライドして使いたい場合
元のクラスで扱っても大丈夫でしたっけ?

578 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 12:36:13 ]
>元のクラスで扱っても大丈夫でしたっけ?
インスタンスを作った後も元のクラスで扱っても大丈夫でしたっけ?

579 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 12:38:51 ]
元のクラスで扱うってのはどういうことなんだ?
継承元のクラスにキャストするとかそういうこと?



580 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 12:41:53 ]
>>579
ゲームの中にでてくる物体(障害物、自機、敵など)はすべて座標系など特定の
情報を持つという部分では共通ですが、動きだけが違うので管理上は継承前の
クラスで管理して、動きに関連するメンバ関数だけを差し替えを実現したい・・
という感じです

581 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 12:46:35 ]
オーバーライドしなくてもいいんじゃないか?
継承先で個別に実装すれば

100%書き換えることが前提になってる感じだからむしろIFとかにしてみるとか・・・
いや・・・いろいろ方法はあると思うが 継承元で関数書いてもどうせ空の実装とかにしかならんだろうし
オーバーライドしなけりゃ元の動作のまんまになってしまうのはバグの元だと思うんだ・・・

582 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 12:47:23 ]
>>580
普通にできるが

583 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 12:49:39 ]
>>581
むかーしgcc上で書いた物を移植中なので.netなりの方法はないかなあと模索してたりします。
C時代は関数ポインタのテーブルを用意して・・・とかやってたんですけどね

>>582
どんな感じでやればいいですかね?

584 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 12:54:08 ]
>>583
いやだから基本クラスで動き意外の関数作って
継承したクラスで新しく動きの関数作ればいいだけだけど
何が問題なの?

585 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 12:58:17 ]
class 物体
{
public void 動き以外の処理(){}
}

class 自機:物体
{
 public void 動きの処理(){}
}

586 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 12:58:27 ]
>>584
Hogeクラスを継承したHogeA,HogeB・・・・・HogeZとかあったとして
管理はList<Hoge>として全体をまとめたいんです・・

587 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 12:58:42 ]
抽象クラス使えば?

588 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 13:03:24 ]
>>586
>>573

589 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 13:13:10 ]
関数ポインタ使っていたなら、そのまま構造体を抽象クラスにして、関数ポインタを仮想関数にしたら、完成のように思うが。



590 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 14:47:22 ]
>>577
やってみたらいいのに何でわざわざ面倒な手順を踏んでるんだ?

591 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 15:27:18 ]
まあvirtualでググればいいんじゃないかな!かな!
>>577

592 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 18:20:03 ]
模索している割には他の提案を聞き入れようとしない件について

もし判ってないならそれは技術力不足以外の何物でもないな

593 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 18:47:36 ]
>>592
聞き入れないわけではなく聞いた上で調べた結果実装を考えた際に
こういう時どうしようとか悩んでるわけなんですよ

たとえばクラスを継承してインスタンスを作る際は確かに一つの
メンバ関数をオーバーライドですれば済みますが状態がわかった際に
インスタンス化されてしまってるクラスのメンバ関数を状態遷移に応じて
さらにオーバーライドできるかとか

できないなら、昔書いたように関数ポインタもどきを実装するしかないのだろうかとか

でもクラスに関数ポインタぽいことを実装すると関数ポインタのテーブルを
もったインスタンスがいっぱいできる?・・・とか

594 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 18:48:18 ]
>状態がわかった際に
この記述は無しで

595 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 18:57:23 ]
>>593
デリゲート

596 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 19:00:03 ]
頭の中が混乱してるみたいですね。
デザインパターンのテンプレートメソッドとストラテジーあたりを勉強するといいかも。

理解できないならIF文で押し切れw

597 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 20:05:06 ]
以下のようなメソッドを用意して、データをネットワーク越しに通信するプログラムを書いています。

private byte[] CompressBytes(object rawData)
{
  using (MemoryStream stream = new MemoryStream())
  {
    using (DeflateStream compressedStream = new DeflateStream(stream, CompressionMode.Compress, true))
    {
      BinaryFormatter formatter = new BinaryFormatter();
      formatter.Serialize(compressedStream, rawData);
    }
    return stream.ToArray();
  }
}

598 名前:597 mailto:sage [2010/04/28(水) 20:06:16 ]
private object DecompressBytes(byte[] compressedData)
{
  using (MemoryStream stream = new MemoryStream(compressedData))
  {
    using (DeflateStream decompressedStream = new DeflateStream(stream, CompressionMode.Decompress))
    {
      BinaryFormatter formatter = new BinaryFormatter();
      return formatter.Deserialize(decompressedStream);
    }
  }
}

単一のプログラムでテストする場合は問題なく動作するのですが、
クライアント・サーバのプログラムにそれぞれメソッドを組み込んで通信をしていると、
return formatter.Deserialize(decompressedStream);
の部分で、「デコード中に無効なデータが見つかりました。」というエラーが出ます。

具体的にはNetwork Streamに対してbyte配列を書き込み、
相手側で読み出すという作業をしているだけなのですが、ローカルとネットワークの場合で挙動が変わるのかよくわかりません。
# ネットワーク越しといっても、サーバプログラムで127.0.0.1に対してポートを開いて、クライアントプログラムで127.0.01にアクセスしているので、マシンスペックに違いは無いはずなのですが…

もし何か注意することがあれば教えていただけないでしょうか?

599 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 20:10:35 ]
www.sherwooddungeon.com/SherwoodDungeon.htm
こんな3Dネトゲが4M程度で実現できてるんだけど
C#でやるにはwebdeveloperとかsilverlightが必要?



600 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 20:14:07 ]
俺的に3Dゲームはudkやsource modを使うのが一番現実的だと結論付けた

601 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 20:22:13 ]
>>599
inしてみたが週末Flashスレで貼られる戦車のゲームとエリア規模は似てるな
まあ4MBってのも圧縮した状態だと小さくなるしなあ

602 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 20:26:47 ]
気軽に対戦ゲーム作りたくてもサーバーが難しいよね

603 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 20:32:16 ]
↓ここで簡単厨のターン

604 名前:デフォルトの名無しさん [2010/04/28(水) 21:17:01 ]
まぁ俺にかかったら1日で何でもできるけどね

605 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 22:22:27 ]
>>598
そのエラーが出てるとこのデータの中身はどうなってるんだ?
ちゃんと送りつけた時と一緒になってるか?
まずはそこからだ

606 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 22:30:49 ]
>>602
ほとんどのレンタルサーバーはゲーム禁止だからな
ATPAGESではOKだが、負荷をかけすぎるとアカウント自体止められる

607 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 22:34:13 ]
>>583
abstract class foo
{
 foo(){}
 abstract bar(){}
}
class xxx : foo
{
 override bar(){}
}
とやって、xxxのインスタンスをList<foo>にでも突っ込めばいける

608 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 22:36:24 ]
あと、遷移ごとにfooを継承したクラスを作って突っ込めばいい
詳しくResponserパターンでくぐってみろ

609 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 22:45:58 ]
デザインパターンなんてみんな覚えてるの?



610 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 23:24:35 ]
>>609
そりゃデザパタから入った人は「覚える」って意識になるんだろな。


611 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 23:46:55 ]
趣味で一人でプログラミングするなら、無理にオブジェクト指向を意識する必要はないけどな。
下手にクラス設計に凝るくらいなら、ひたすらstaticでプログラム組んだ方がましだと思う。
どうせ誰かにソースを見せたり、過去の資産を利用したり、誰かから仕様変更を言い渡されたりはしないんだろ。

612 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 23:48:17 ]
>>611
妄想で語るな

613 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 23:51:44 ]
いや、正しい

614 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 23:55:35 ]
いや、過程に過ぎない
つまり妄想

615 名前:デフォルトの名無しさん mailto:sage [2010/04/28(水) 23:58:52 ]
構造体の配列で回して、キャラのタイプIDでswitchしまくりで別に問題ない

616 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 00:10:33 ]
趣味なら作ってて楽しければいいし、どんなソースでも動けばいいんだよ。

617 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 00:12:40 ]
正解

618 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 00:39:40 ]
うん。
でもね、べつにクラス設計とかって伊達で導入されてるわけじゃないんだけどな。
規模が大きくならないとあんまり意味がないってことなら同意だけど。

619 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 01:19:21 ]
>>616
動いたけどsbyteで済むようなただのフラグ用の変数すらintで書いていて起動しただけで10MB超のメモリを食ったのは恥ずかしい経験w
やっていくうちに分かるってのはあるが、どんなソースでもとかいう気持ちだといつまで経っても向上しないような気はする。



620 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 01:38:49 ]
まあ目的と手段を間違えないことだな

621 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 01:41:56 ]
ゲームの場合オブジェクト指向が有効そうにみえるんだが
案外そうでもなかったりするんだよな・・・
もうちょっといい方法があればいいんだが

622 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 01:56:24 ]
>>598
受信途中のデータの後ろが欠けてるんじゃない?
MemoryStreamじゃなくて、直接NetworkStream渡せば?

623 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 13:22:01 ]
>>620
それはあるねー。
もっとも趣味プログラマの場合、楽しく正しく書くってのも目的に入ってる人は多いんじゃね?


624 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 15:04:41 ]
WPFやっててバインディングがものすごくよかったんだけど
WinFormでも同じようなことできましたっけ?

625 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 15:12:13 ]
バインディングの仕組み自体は似たようなもんだけどUIが貧弱なんだよ
コレクションへのDataTemplateを使ったバインディングのようなことをやろうとすると大量のコードが必要になる

626 名前:624 mailto:sage [2010/04/29(木) 15:19:16 ]
>>625
そうなんですか・・・
残念

627 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 15:23:23 ]
>>623
プログラムのプロをプロフェッショナルとかけたダジャレで
昭和生まれは素人プログラマのことをアマグラマって言うんだぜ

628 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 15:24:38 ]
>>625
WPFだとTreeNode.TagにList<>なんかが入ってても
簡単に取得できるの?

629 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 15:26:28 ]
WPFではTreeNodeみたいなのは直接扱わないんだよ
元々ツリー上になってるオブジェクトグラフからバインディングだけでノードを生成する



630 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 15:28:44 ]
>>628
WPFのサンプルみた感じだとTreeNodeじゃなくてツリーを形成するための
クラスを自分で作ってTreeViewにぶっこめば勝手に表示してくれてたな

631 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 15:35:31 ]
C#で作られたものをWPFに移植しようとしたら
また1から作り直し?

632 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 15:37:38 ]
>>631
WinForm依存のデータ格納クラスはそうなるかも
でも最初から依存をなるべく避けたコード書いてればそれほど問題にならない

633 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 15:37:39 ]
ロジックからコントロールを直接触ったりするような馬鹿な造りにしていなければ修正はUIまわりだけ

634 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 15:38:01 ]
>>630
ほー
今メニューの項目をそのままTreeViewに表示しようとしているんだけど
激しく面倒くさい

635 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 15:50:17 ]
ツリービューの項目にボタンを付けてボタンの上にhoge.ImageUriプロパティの値をバインドしてアイコンを表示して
アイコンの右にhoge.Nameプロパティをバインドしてテキストを表示して
子プロパティとしてhoge.Childrenプロパティをバインドして再帰的に展開して…
みたいなことがXAMLだけでできる

636 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 15:52:11 ]
とにかくすごいわ

C++からC#でかなり楽になったけどさらにWPFで楽できそうな感じ

637 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 15:53:22 ]
MSはWinFormよりWPFに力入れてるの?
おれもやってみようかな

638 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 15:55:40 ]
WinFormsは完成放置状態
Silverlightに力入れててWPFはそれに合わせてる感じ

639 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 16:42:59 ]
2008expressはもうダウンロード出来ないのかよ



640 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 16:47:07 ]
www.microsoft.com/downloads/details.aspx?FamilyID=94de806b-e1a1-4282-abc5-1f7347782553&displaylang=ja
これISOかな?

641 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 17:22:18 ]
銀光はApacheとかがMIMEタイプを標準で持つようにならないと普及しないと思う
窓鯖でもIIS7でないと標準で対応してないのがもうね
これ、意外と高い壁だよ

642 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 17:26:31 ]
>>641
おいおい
.netにはおさるさんがあるじゃなか
銀光とセットで月光あるしLinux上で.net動くぞ
完全互換とは言いがたいが

643 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 18:05:26 ]
WinFormで出来てWPFでできないことって何?

644 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 18:21:38 ]
>>643
wndprocのフック
コモンコントロールがないに等しいので自作しないといけない

645 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 18:27:08 ]
お客さんに売り込み辛いんだよな、WPF・・・


646 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 18:29:15 ]
短期納品、コストさげろ

これって生産性あげろってことなのにWPFだめって言われるとねえ・・・

647 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 18:31:14 ]
WPFって実際生産性高いのか
xamlが手間かかりそうなんだけど

648 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 18:32:18 ]
最近コンソールとかサーバーサイドばっかりで、UIのあるアプリ作ってないなぁ。

649 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 18:34:49 ]
>>647
なれるまでが面倒かな
XAMLその物はHTMLでwebページ作成するような感じなので
慣れが必要かなあ



650 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 19:00:35 ]
>>641
MIMEタイプが問題になるのはSilverlightより、WPF/XBAPやClickOnceだな。


651 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 19:07:54 ]
htmlはコード見ただけで拒絶反応

652 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 19:08:36 ]
ルーズXAML
application/xaml+xml
XBAP
application/x-ms-xbap
ClickOnce
application/x-ms-application

このくらいかな。IEは無くても処理してくれるが、firefoxの.NET Assistantアドオンを使う場合に必要。


653 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 19:12:43 ]
.htaccessをいじらせてもらえなくても、perlは使えるところが多いので、
こんな感じで無理やり対応できる。
#!/usr/local/bin/perl
# -- hoge.cgi --
print "Content-type: application/xaml+xml\r\n";
print "\r\n";
open(INF,"<hoge.xaml");
for (<INF>) {
  print $_
}
close(INF);


654 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 19:24:42 ]
>>644
>wndprocのフック
blogs.msdn.com/nickkramer/archive/2006/03/18/554235.aspx

>コモンコントロールがないに等しい
WPF Toolkitが便利。DataGrid/DatePicker/Calendar/Visual State Manager(VSM)は.NET 4に取り込まれた。

655 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 19:51:18 ]
とりあえず画像ビュアー的なのを作ろうと思うんだけど
皆さんだとWinFormとWPFだとどっちが速く作れます?

サムネイル一覧表示
書庫から画像読み込み
各種フィルタ機能
画像の変換
を予定してます

656 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 20:10:13 ]
>>654 >wndprocのフック
こりゃありがてえ!

657 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 20:13:39 ]
>>642
いやそう言う話じゃなくて
.xapのMIMEタイプを指定してやらんと貼っても認識しない
>>653みたいなことも出来なくはないけど、それじゃあFlashの代わりとしては敷居が高すぎる

658 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 20:14:24 ]
>>657
ああすまん
httpヘッダのあれか・・

659 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 20:30:34 ]
xapを直接クリックでも起動できたっけ?
普通はHTMLLからsilverlightControlHostやsilverlight.js経由で
読み込むからMIMEの登録は不要なはず。

video再生くらいならxapなしで書けたりする。
ttp://www7a.biglobe.ne.jp/~fbsoft/test/BinaryStar.html




660 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 20:34:14 ]
あれ・・・yahoo移管後のGyaoってSLのプレーヤーだな・・・
どうやってるんだろ

661 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 22:04:42 ]
>654
できるのか。知らんかった

>WPF Toolkitが便利。DataGrid/DatePicker/Calendar/Visual State Manager(VSM)は.NET 4に取り込まれた。
コモンコントロールあるのか・・・
そのキットにはコモンダイアログもついてるのか?
フォントダイアログを自作する作業はもう嫌だよ・・・
せめてそのくらいつけてくれ>MS

662 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 22:06:41 ]
ファイルダイアログくらいは仕方ないとしても、
コモンダイアログは本質的にWPFの範囲外だから付けたくないんだろ

663 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 22:34:35 ]
フォント選択ダイアログはこの辺参考に自分で作るか、WinFormsの利用するしかないかな。
ov-p.spaces.live.com/blog/cns!39D56F0C7A08D703!253.entry
blogs.msdn.com/text/archive/2006/11/01/sample-font-chooser.aspx

664 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 22:36:51 ]
>>661
WPFだとFont列挙してListboxにでも入れてしまえばいいような気がする

665 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 00:21:52 ]
C#に限ったことではないのですが
ループする項目に対していろいろな条件によって
continue;するプログラムを書いていると
ついループが長くなりがちでなんとかしたいのですが
コツのようなものはありますでしょうか
すぐ思いつくのは
・ループ内からメソッドを呼ぶようにして
結果をboolで返すとか(処理結果を他で使いたい場合に問題)
・例外でループまで戻ってくる
(処理コストの面と意味的な面で例外を使うのはどうか)
と言った辺りですが思いつくことありましたらご意見を。

666 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 00:26:02 ]
>ついループが長くなりがち
なったことないのでわからん
どんな処理書いてるのか見せてもらえると一番なんだが・・・

コード晒す場合は>>4の※コードの量が多い場合・・・のところを使ってね

667 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 00:34:08 ]
>>665
bool返すメソッドをデリゲートに設定すれば
一つのメソッドで複数のメソッドを呼び出すことができる
一つのif文で済む
あとはその処理用にデータ構造を設けてコードが短く済むようにする

668 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 01:47:47 ]
よく分からんが、ループ内をごっそり他の関数にするとか大きな処理にまとめるとか?

669 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 01:56:16 ]
多態使うとか



670 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 02:02:16 ]
↓な感じでPictureBoxのサイズ変更時にImageのサイズも
変更しようとしてるんですけどImageのサイズが変わりません。
この方法まずいでしょうか。
※PictureBoxはフォーム全体にアンカーを貼っていてフォームサイズが変わると
 連動するようになっています。

Private void pictureBox1_Resize(object sender, EventArgs e)
{
  pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
}


671 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 02:23:50 ]
なにをしたいか知らんがpictureBoxはこんなことができる
ideone.com/Cs4gU

672 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 02:23:58 ]
変更したサイズのImageが実際に欲しいのか、
Pictureboxのサイズに合わせて表示も拡大したいのか良く分からんけど、
後者ならプロパティに設定するだけ。
SizeModeをZoomかStretchImageにすればいける。

673 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 02:31:27 ]
それよりぶち抜きでcontinueとかbreakしたいのは俺だけか
一番内側から最外ループまで一気に戻りたい時とか面倒で仕方ない

674 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 02:33:28 ]
そんなのはケースによるしな
どんなコードの状況になてて>>665なのかわからんし
当たり障りの無い回答しかできないのも事実

675 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 02:51:11 ]
>>672
SizeMode設定で出来ました。
ありがとうございます。

別のGraphicsの画像をPictureBox.Imageに拡縮貼り付けしていて
PictureBoxのサイズが変わったら貼り付ける座標も変わるだろうということで
PictureBox.ImageのサイズをPictureBoxのサイズに変えたかったんですけど
PictureBoxはPictureBox.ImageをStretchBltしてくれるみたいなイメージなんですね。

>>671
なんだか・・・いろいろやってくれるんですね.NETは
今までWin32APIでしかウインドウズプログラミングしたことなかったので
勉強になります・v・


676 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 17:10:33 ]
次は、縮小画像がガタガタなんですけど…という質問が来るにちがいない。

677 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 17:17:39 ]
>>676
ファミコンの画像を縮小したら変に滑らかになって困ります。RGB接続した時のようなまま縮小したいです

678 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 17:26:09 ]
>>677
Bitmapオブジェクトを直接弄るしかない

679 名前:665 mailto:sage [2010/05/01(土) 01:05:49 ]
意見ありがとうございます。
実物はアレなので話のネタにサンプルコードとしますがこんな感じ

IEnumerable<T> e = xx;
foreach (var x in e)
{
bool a = this.A(x);
if (a)
{
continue;
}
bool b = this.B(x);
if (!b)
{
continue;
}
string c = ExtLibC.C(a, b)
if (c == null)
{
continue;
}
DD d = ExtLibD.D(x, a, b, c)
if (d == null || d.D == null || d.DD == null) {
continue;
}

// こんな処理が数十行続くとか
// もっとネストが深いとか
}



680 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 01:54:42 ]
適当な粒度でメソッドに分ければ?
この例だと有効なdを取得したいんだろうから、こんな感じかね

foreach(var x in e) {
  var d = D(x);
  if (d == null || d.D == null || d.DD == null) continue;

  // 処理
}

--
DD D<T>(T x) {
  if (A(x) || !B(x)) return null;
  string c = ExtLibC.C(false, true);
  return (c != null) ? ExtLibD.D(x, false, true, c) : null;
}

681 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 03:02:05 ]
>>679
まあ分かって聞いてるんだと思うけど、そんなの汎用的な方法論なんてあるわけないよね。

冗長なコードが悪なのは誰も異論がないとしても、
それは全ての処理はコンパクトな記述が可能だってことを意味しないわけで。

682 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 04:10:07 ]
ListViewのLargeIconモードでD&D並べ替えがしたいんだけど、スクロールが出来ない
DragDropEffects.Scroll指定するだけじゃダメなの?

683 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 16:40:31 ]
DataGridViewってセル結合出来ないのね・・・

684 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 17:55:36 ]
>>683
諦めるんだ・・・
サードパーティが売れなくなるだろ?

685 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 19:22:19 ]
できないことはないけど、コードガリガリ書くの面倒だよ

686 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 13:10:14 ]
面倒なんでhtmlにしてWebBrowser貼付けた
楽すぎるw

687 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 13:22:41 ]
>>686
ブラウザで代替出来る程度のことなら、素直にTableLayoutPanelでも使った方が
もっと簡単なんじゃないかと....

688 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 14:48:35 ]
>>687
中の文章でセルサイズを自動調節したいんで、
TableLayoutPanelでは難しいです

689 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 18:17:07 ]
if(a == 1 && a == 2 && a == 3)
{
}
こんな感じのコードをもっとスマートに書く方法ってないですかね。
例えば
if(a == (1 && 2 && 3))みたいな感じで。
「かつ」ではなく「もしくは」ならswitch文で代用できるんですけど。

よろしくお願いします。



690 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 18:18:44 ]
if(false)

691 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 18:20:36 ]
すみません。間違えました。確かにこれはおかしいですねw
if(a != 1 && a != 2 && a != 3)
{
}
こんな感じのです。

692 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 18:22:36 ]
また「スマート = 文字数が少ないこと」と勘違いしている人かな。

693 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 18:23:27 ]
switchとか!(new[] { 1, 2, 3 }.Contains(a))とか

694 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 18:28:22 ]
>>691
用途上 a >= 0 に限定できるなら
if (a && a > 3)
{
}


695 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 18:43:52 ]
>>692
今回例に出したのは数値型でしたが、文字列型だった場合には条件式の組み合わせが非常に多くなってしまって鬱陶しかったんで。
個人的なことですが、if文等の括弧の途中で改行挟むのが嫌いなものの、改行しないでいると横スクロールが面倒になるという始末。
まぁ比較用のbool変数に対して予め比較を終わらせておくって手段もあるんですがね。
要はわがままです。

>>693-694
ありがとうございます。配列に対してContainsを使う方法は思いつきませんでした。
文字列型の場合にも有効活用できそうですね。

696 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 18:58:05 ]
>>695
いずれにせよ、値の評価関数(ようはintならintを引数にとってboolを返す関数)
をつくるベタなやり方の方がいいと思うけど。

ifの()の中の記述に場当たり的な技巧を凝らすのは時間の無駄だし馬鹿っぽい。


697 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 19:13:09 ]
実行速度を計測してみたところまぁ当たり前な気もしますが、単純に比較するのとContainsを使う方法では前者のほうが圧倒的に速かったです。
実行速度を気にしなくて言い場合にはContainsは有効ですね。

>>696
上記の理由より、予め比較を終わらせておく手段をとるのが最善のようですね。

698 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 19:13:41 ]
数が多くなるならリストを予め作っといて>>693の後者の考え方で判定するのがきれい

699 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 19:34:51 ]
>>695
>>まぁ比較用のbool変数に対して予め比較を終わらせておくって手段もあるんですがね。

俺もこうするかな


bool b1 = a != 1;
bool b2 = a != 2;
bool b3 = a != 3;

if( b1 && b2 && b3 )
{

}



700 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:21:29 ]
俺は状態を管理するクラスを作るかな。

701 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:24:30 ]
var b = a != 1;
b &= a != 2;
b &= a != 3;
if (b)
{
}
だろ

702 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:24:47 ]
ただ条件文自体は普通に書くのが一番分かり易いし取り回しもいいと思う。

703 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:25:45 ]
>>702
まあ状況によりけりだが素直に条件式書く方がスマートだったりするよな

704 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:31:55 ]
拡張メソッドでNotIn作れば良いよ

705 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:34:00 ]
素直に条件式書いた方がコンパイラ的にも最適化しやすいと思うし。

706 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:40:56 ]
業務アプリならifのパフォーマンスなんかどうでも良くて人間が見やすいことが優先されることが圧倒的に多いけどな

707 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:50:31 ]
業務アプリなら他のプログラマが見ることもあるだろうから普通に書いた方がいい。
個人なら好きにすればいいよ。

708 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 20:57:54 ]
>>695
つまらないこだわりはよせ
月にロケットを飛ばすプログラムが一行で書けたところで
何の意味もない

709 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:07:20 ]
あれ?2010からはヘルプはドキュメントブラウザじゃなくてウェブブラウザになったの?
しかもオンラインのみ?
ローカルに設定したんだけど・・・



710 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:13:25 ]
あ、失礼w
ローカルアドレス参照になってましたorz

711 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:18:03 ]
>>708
意味あるだろ

712 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:32:35 ]
>>711
どこに?

713 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:36:39 ]
俺ルールだと
if ( a != 1
&& a != 2
&& a != 3
) {
}
条件の追加削除が楽だし、&&なのか||なのかが前に並んで、俺が分かりやすい。
後ろに置くとチェック変数の変数名長でガタついて見間違えやすいから。
横並びなんて誰得。複合条件ならカッコつけてインデント。複雑なら変数方式。
これを部下に押し付けてる。

途中で||とか変な条件入ったら693なんてどーすんの?

714 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:38:20 ]
大昔のパソコン雑誌(確かASCII)にはその手のコンテストがあったな。
一行プログラムコンテストだっけ?

オッサンの独り言でした

715 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:40:59 ]
>>713
これとか、カンマを文頭に書くのは好きになれないなぁ。
確かに見やすい&わかりやすいけどね。

716 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:52:31 ]
>>713
途中で||が入ったとしても、&&で括れるグループ毎にまとめるとかはできるでしょう。
それに様々な条件が入り交ざったモノってそこまで条件式自体は長くないのが多いし、仮に長かった場合には関数なりなんなりでわかりやすく分離すればいいかと。

717 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 21:57:35 ]
>>716
分解したら今度は読み解くのにあっちこっち見に行かなければならない

718 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 22:02:28 ]
神経質な人はやりたくなるのは分かるけど、
手作業でコードの整形とか時間の無駄なんだよな。

719 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 22:15:44 ]
そんなことよりswitch文で必ずbreak入れなければならない仕様は改悪だと思うんだ



720 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 22:18:14 ]
caseの中身書かなければ並べられるので不便だと感じたことはないな

721 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 22:28:38 ]
>>719
少数意見だろうな。

722 名前:デフォルトの名無しさん [2010/05/02(日) 22:30:54 ]
1.bp.blogspot.com/_GxQVDnAyExw/SsNvlU5GFAI/AAAAAAAAAAU/4ir3g-WMg1E/s1600/meat2.jpg

723 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 22:33:40 ]
フォールスルーの読みづらさは凶悪
フォールスルーが言語でもめったに使われてないからたまに使われてるとほぼ確実に見落とす

724 名前:723 mailto:sage [2010/05/02(日) 22:35:15 ]
フォールスルーが許されてる言語でも の間違い

725 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 22:38:46 ]
>>722
交通事故かな

726 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 00:51:47 ]
まさかプログラム板でグロ画像見るとは思わなかった。

727 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 01:27:07 ]
病んでるんだろ
ほっとけ

728 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 01:33:15 ]
>>726
まあ休みの深夜だしw

729 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 03:27:15 ]
長期休暇は変な人があちこちに出没するなぁw



730 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 09:47:15 ]
>>723
フォールスルーするならコメント書いとけ

731 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 13:15:11 ]
これもヘンな人?

ameblo.jp/ryujiohta/entry-10524500598.html

732 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 13:24:51 ]
削除ガイドライン違反

8. URL表記・リンク
宣伝・罠・実行リンク
・明らかに宣伝を目的としたリンク・クリックや訪問で課金が発生するもの等は、宣伝掲示板以外では削除します。

733 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 14:23:53 ]
コピペ君も同類だけどな、まで読んだ。

734 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 00:25:02 ]
このプログラムなのですが、どうしてもエラーが消えません。
どこがおかしいのでしょうか?

C:\Documents and Settings\tutomu\My Documents\Visual Studio 2008\Projects\gomokuproguram\sironoisi.cs

735 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 00:30:23 ]
>>734
知りません。
答えようがありません。

736 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 00:31:21 ]
キチガイの相手すんな

737 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 00:32:48 ]
知らんがな。つとむくん。

738 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 00:58:19 ]
うお、うpろだにあげるの忘れてた

739 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:01:27 ]
つとむくん
忘れてたってレベルじゃねぇぞ!

ところで
gomokuproguram

GomokuProgram
ではないか?



740 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:04:52 ]
もうやめて!つとむくんのライフゼロよ!

741 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:07:32 ]
つとむくんは盲点だったわww
確かにwwww

742 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:10:06 ]
山口さんちのツトム君
このごろ少し変よ どうしたのかナ

743 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:12:46 ]
何歳だよお前

744 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:20:32 ]
うpろだにつながらなくなってしまった
なんで名前知ってるの・・・?

いちようウイルスソフトは入れている
2chになんかカキコするんじゃなかった

745 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:24:02 ]
誰だよお前

746 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:26:50 ]
例え私が滅びようが第二、第三のツトムが五目プログラムを作るであろう・・・

グフッ

747 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:34:27 ]
>>744
ウイルスソフトなんて入れてるから駄目なんだと思います。
>>746
ワロタww

748 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 01:39:30 ]
ツトム君の人気に嫉妬した

749 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 02:25:23 ]
プログラム一通り見たけど、設計がなってない



750 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 02:44:44 ]
シロノイシ

なんか小説でも書けそうなタイトル

751 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 09:32:12 ]
つとむ君のスレになりそうだな
【五目】C#相談室【白の石】

752 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 09:50:42 ]
こうだろ
【五目】C#相談室(ツトム君専用)【白の石】

753 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 10:07:25 ]
OSに頼らずにジェスチャーを実装することって可能かなあ・・・
マウスだとボタンとポインター移動部分が独立してるけど
タッチパネルとなるとタッチした瞬間にカーソル移動+
MouseDownとかイベント発生しそうだし・・・

754 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 10:25:11 ]
>>753
戦車ゲームが難しいな
タッチしたら旋回して即発射
つねに振り向きざま即発射

755 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 11:09:10 ]
白の意思・・・か・・・
ついにはじまるのか・・・

756 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 11:46:18 ]
燃え尽きた・・・真っ白に・・・

757 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:38:42 ]
原因がわかりました
iとjをまちがいていました
変数名をtateとyokoにすることによって解決。
forの変数はiから順に使うとならったけど
名前を使ったほうが分かりやすいと思う

あと名前をカキコするのはやめてください。
どこで知ったのかわかりませんが
ちゃんとうpろだに成功してたのかな?



758 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:41:08 ]
"つとむ" はローマ字だと"tsutomu"だよ。
"tutomu"じゃないよ。

759 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:41:58 ]
>>757
ネタなのかマジなのか
>>734で自分で晒してるよ

IDEのデフォルトの保存場所にするとマイドキュメントになるので
下手にプロジェクトとか晒すとユーザーネームまるばれなんだよw



760 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:42:48 ]
>>758
僕はtutomuって書くことが多いですね
最近はローマ字で名前書いたことないですけど

761 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:44:00 ]
>>759
はぁー!
フォルダに名前使ったおぼえないのに
C#が勝手に作った!?_

762 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:45:34 ]
>>761

お前面白いなwww

763 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:45:42 ]
>>761
プロジェクト保存するときに保存先を聞いてくるので
見逃してたら自己責任だろうw

764 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:47:14 ]
>>758
訓令式というものがあってな

765 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:55:48 ]
だめだフォルダの名前が変えれない
名前フォルダの中にデスクトップがあるし訳が分からない
デスクトップの中にエクスプローラーがあってその中にデスクトップがある。
でも普通にファイル開けた


766 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 12:59:30 ]
もうやめてあげて!ツトムくんが人間の形を留めていられなくなっちゃう!

767 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 13:07:42 ]
鼠人間ツトム

768 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 13:12:11 ]
そろそろ板違いだから。
これ以上やりたければ、パソコン初心者板でも行こうな。つとむくん。

769 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 13:14:15 ]
>>768
既に聞きに行っているみたいだぞwww
pc12.2ch.net/test/read.cgi/win/1267768729/828



770 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 13:26:27 ]
ネタじゃなくてマジだったのかw

771 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 14:08:40 ]
板を超えた釣りだろ

772 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 16:53:13 ]
>>769
予想の斜め上www

773 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 17:02:31 ]
プログラム作る前にやることあるだろ

774 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 17:56:23 ]
「白の石」って響きがすごくかっこよいんですけど。

775 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 20:02:39 ]
でも、黒の石と別にする合理的な理由が思いつかない

776 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 00:20:35 ]
黒の意思か・・・
・・・風が吹いてきたな・・・

777 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 03:14:02 ]
本人だけじゃなくてパソコンの先生にも問題があると思う
無条件に変数をiから使うとか教えてるっぽいし

778 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 08:52:18 ]
パソコンの先生wwwww

779 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 09:26:18 ]
VS2008を使ってます。
httpでHEADリクエストを送るにはどうすればいいでしょうか。

WebRequest, WebResponseを使うとGETで全部取ってきてしまうので・・



780 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 09:33:54 ]
>>779
Method プロパティに "HEAD" 入れりゃいいだけの話。
"POST" したことあるならやり方わかるよね?

781 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 09:54:38 ]
>>780
Method指定でできましたー
どうもありがとうございます

782 名前:デフォルトの名無しさん [2010/05/05(水) 15:10:58 ]
VS2005なんですが、デザイナで自動生成されるコードで、
プロジェクト規定の名前空間を含めないようにすることはできますか?

規定の名前空間が'hoge'で、コンパイル時に
型名'hoge1'は型'hoge.hoge'に存在しませんとなるのを避けたいのですが・・・

783 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 15:29:35 ]
テンプレートをいじればいけるかも。

784 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 18:29:47 ]
C#をやってみようと思いますが、
Visual C# 2010 Expressというのは製品版と比べて
どんな制限があるんでしょうか?

785 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 18:43:22 ]
>>784
普通にやる分には、全く制限が無いと思ってもいい。

786 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 18:52:04 ]
>>785
えーっすごいですね!
早速参考書を買いに行ってきます。

787 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 18:53:26 ]
そういやC#部分だけ見たらほとんど制限ないな

788 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 18:54:40 ]
ところで、どこかに比較表とかありますか?

789 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 18:58:45 ]
2010の比較表はまだ無いようだ。
参考書はとりあえずやめとけ。ネットで調べたらいくらでも出てくる。



790 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 18:59:40 ]
MSのサイトにあるだろ。

791 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 19:07:52 ]
>>789
勉強時間が移動中か寝る直前ですし、
本のほうが集中して読めるので。。

>>790
www.microsoft.com/express/Windows/
このページの右の「Compare Express Products」ですか?
読んでもよくわかりません…(英語がわからないのではなく)


792 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 19:08:56 ]
出来ること
www.microsoft.com/japan/msdn/vstudio/2008/product/express/aboutexpress.aspx

これは広告だから制限は書いていない。
重要な制限としてはテスト周りが制限されている。
・ 単体テスト機能が無いので、外部ツールの NUnit を使う必要がある。
・ アドインが使えないので、TestDriven.Net を使うには工夫が必要がある。
・ C++ とか C# とか言語別製品になっているため、言語の混在したソリューションが作れない。
→ C++で作ったDLLを参照して使うC#のプロジェクトのデバッグでC++のソースは見えない。
えーと、間違いとか校正よろしく。

793 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 19:18:27 ]
> 1. 無償
> Visual Studio 2008 Express Edition は無償で提供しています。さらに作ったアプリケーションは商用利用が可能です。

これすごいですね

794 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 19:21:14 ]
>>789
オヌヌメのサイトある?

795 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 19:21:40 ]
初心者スレ行けば?

796 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 19:25:04 ]
ちょいと行ってくる

797 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 20:10:15 ]
>>793
すごくない
当たり前のこと

798 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 20:13:23 ]
C# Builder Personalとか、商用利用はダメじゃなかったっけ?
それを考えれば「当たり前」とは言えないでしょ。

799 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 20:33:50 ]
何でも人の逆を言ってみたいだけのガキを相手にしてくてもいいのに



800 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 20:35:21 ]
天邪鬼か

801 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 21:22:35 ]
「天邪鬼」とは言えないでしょ。

802 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 22:20:26 ]
C#ExpressはFormだけで完結するアプリ作るんなら必要十分だが
DB絡むと途端に使えない子になる
まあ無償だからしょうがないが

803 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 22:30:24 ]
>>792
>・ アドインが使えないので、TestDriven.Net を使うには工夫が必要がある。

どうすれば使えるんですか?
ご教示ください。

804 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 23:47:48 ]
>>803
スマンやり方を忘れてしまった。
project.iifp.biz/modules/mydownloads/
から拾ってきたテンプレートでごしょごしょやった気がしたが・・・

NCover単体でやってたのかな?カバレッジのために使ってたし。

805 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 05:58:35 ]
>>802
そんなことないよ。

806 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 14:59:05 ]
スレッドの意味がよくわかりません。
デリゲートと比較すると引数もコールバックも渡せない。
敢えてスレッドを選択するのはどういう場面なんでしょうか。

807 名前:682 mailto:sage [2010/05/06(木) 15:03:43 ]
自力でなんとか調べて、InsertionMark.NearestIndexとEnsureVisibleで
ある程度D&D時のスクロールは実現出来た
ただ、上方向へはスクロールするけど下方向がスクロールしない
マウス近くのアイテムが表示範囲に入ったところで止まってしまう
下方向へもスクロールするにはどうしたらいい?

808 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 15:08:32 ]
>>806
常にバックグランドで待ち構えていなければならないような用途かな
例えばアーカイバプロジェクトDLLはほとんどがマルチスレッドに対応していない
だからアクセス専用スレッド待機させて、生産者消費者パターンでシリアル化する、みたいな

まあUIスレッドのために存在する、って言っちゃってもいいんだけどw

809 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 15:34:01 ]
>>808
なるほど。
スレッド=タスク分散のためのマルチスレッド処理に使う物
と勝手に思い込んでたのでなんでこんな糞仕様なのかと疑問だったのですが
そもそもそういうことに使うものじゃないんですね。
もやが晴れましたどうもありがとうございました。



810 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 17:48:37 ]
>スレッド=タスク分散のためのマルチスレッド処理に使う物

これはこれで合ってるんじゃね?

811 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 17:50:49 ]
デリゲートの非同期呼び出しやスレッドプールはスレッドを使って実装されてる
ややこしい手続きを引き受けてくれる代理店みたいなもん

812 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 20:19:22 ]
非同期呼び出しのおかげで明示的にスレッドを使う機会がめっきり減った。

813 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 21:10:36 ]
ExcelやVisualStudioのタブみたいなTabControlが使いたい件。

814 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 21:20:29 ]
メールのタイトル?

815 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 21:21:39 ]
つWPF

816 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 22:17:45 ]
コードプロジェクト行けばそういうサンプルなんて何ぼでもあるぞ
とくにそれは見掛けたことがあるから絶対になるわ

817 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 22:25:55 ]
>>816
You've got my 5!

818 名前:デフォルトの名無しさん [2010/05/07(金) 03:39:53 ]
てs

819 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 02:12:36 ]
ThreadPoolもどきを実装してるのは俺だけでいい



820 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 07:42:37 ]
CCRもどきを実装するのも俺だけで十分だ( ^ω^)・・・

821 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 08:56:32 ]
時間で消えるメッセージボックスもどきを実装させられるのも俺だけで十分だ

822 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 10:49:32 ]
それは割とよくあるな。

823 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 11:39:24 ]
そんなもん非同期にしなくてもWinFormsのタイマで頻繁に時間調べればいいだけじゃね
5分で作れる

824 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 12:20:56 ]
>>823
安価付けろタコ

825 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 13:30:30 ]
User32.dllに MessageBoxTimeout という関数があってな。

826 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 13:56:24 ]
>>825
当然それじゃ要求に満たないわけでな。

827 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 14:36:21 ]
>>823
メッセージボックスの場合はDialogResult返さないといけないから、
普通はそう単純にはいかない。

あと数値だけ受け付けるTextBoxとかComboBoxなんかも
かなりの頻度で車輪の再発明されてそうだな。

828 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 14:46:23 ]
入力内容の制限は本来はバインディングでやるべきだな
WPFでは実際にそうなってるが

829 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 14:56:51 ]
>>828
それって「馬鹿の一つ覚え」でしょ。
そういう方法論もあるとは思うが、それが「べき」なんていえる万能な方法なわけがない。

だいいち、入力を弾くなんていうGUI寄りの泥臭い処理を
データを持ってるオブジェクトが担当するなんて、どう考えても悪い設計にしか思えない。



830 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 15:06:09 ]
>>829
「入力を弾く」のはロジックであって、そもそもGUIの仕事ではない。
逆に入力ルールをUIに持たせようとする神経を疑う。
UIは、あくまでデータの見せ方を定義するもの。ロジックは他に任せろ。

831 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 15:07:39 ]
いい加減スレ違い。

832 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 15:13:47 ]
>>830
話が噛みあってないな恐らく。
同じ「入力を弾く」という言葉を使っていても、
君は例えば設定範囲外の数値を弾くようなことを想定しているんだろう。

俺はそんな話はしてないの。(>>827)

833 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 15:46:18 ]
C#ってもしかしてJavaにそっくり?
Javaが使えれば、何となくC#もできちゃう?

834 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 15:47:25 ]
よくわからんな、入力書式のチェックの話でしょ?別に勘違いはしてないと思う。
指定したキー(文字)以外の入力は受け付けない、という機能であればViewの仕事だと
思うけど、そういう話?

# 単にキーで入力制限すると、数値しか入力させないつもりが"1.1.0-"なんて
# 入力ができちゃったりするから、個人的にはあんまり意味ないと思うけど。


835 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 15:56:58 ]
>>834
そうそういう話。
君自身言ってるとおり、そんなのはViewあるいはGUI部品の仕事でしょ。

1個以上の小数点の入力を抑止したり、先頭以外の-の入力を抑止(あるいは、初めて
-が入力された時、先頭に-を表示する)するのは別に難しくない。というか普通そうする。

836 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 16:00:08 ]
>>833
Javaよりだいぶ洗練されてるけど、まあ、似てるっちゃ似てる。

元々が「SUNがあまりに要領得ないからうちでJavaに似た別言語創るよ」みたなノリだし。
今やJavaよりかなり高機能になってるけど、逆にJava側がC#の機能を輸入してたりするし。


837 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 16:03:23 ]
Javaより良いのか!
今まで興味なかったけど、何だか急に興味が沸いてきちゃったじゃないか。

838 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 18:11:36 ]
ただ最近ちょっと言語仕様太りすぎじゃね?って気もしてきたけど
IDEが優秀だからあんまり気にならなかったり

839 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 18:18:31 ]
>>837
後発で MS が作ってるものが悪いわけないじゃん。
MS が Java の仕様をあれこれ改善しようとして、それを SUN が断固拒否しなけりゃ
今頃 Java はいい言語になってただろうにねぇ。

>>838
IDE 抜きでもなかなかきれいにまとめてると思うよ、あれだけの高機能を。



840 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 18:19:42 ]
実際はVJ++で改悪しようとしてたけどな

841 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 18:33:44 ]
VJ++のどこら辺が悪いかな?
Write once, run everywhere. でなくなることぐらいだったような。
いろいろ便利なので、JDK1.1で成長を止められてしまったのに、長々と使われていた(日本ではほとんど使われなかったけど)。

842 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 18:35:06 ]
テキストボックスに開いたCSVを、1次元配列に入れていこうとしたのですが
配列の要素数が後ろに増えていくと思ったのですが
1行分の要素しか格納されていきません
要素全てを格納したいのですがどう直せばいいのでしょうか?

// 変数の宣言
string Str = "";
string[] stArrayData = {};

// テキストボックスの1行単位処理
for(int i=0;i<textBox1.Lines.Length;i++){
Str = textBox1.Lines[i]; // テキストボックスから1行取得
stArrayData = Str.Split(','); // カンマでsplit
}




843 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 18:35:39 ]
> Write once, run everywhere. でなくなることぐらいだったような。
それ駄目だろ、最大のウリだったのに。

844 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 18:42:31 ]
カンマでSplitした配列をListにAddすれば?

845 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 18:46:33 ]
>>841
当時 Pure Java とか言ってたくらいだし、
亜種作ることを SUN がとことん嫌ってたから。
なんか係争に発展してなかったっけ?

846 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 18:49:19 ]
>>841
Write once, run anywhere.
Write once, debug everywhere.

混ざってないか

>>842
stArrayData = textBox1.Lines.SelectMany(s => s.Split(',')).ToArray();

847 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 18:50:11 ]
>>844
すみません。頂いたヒントからググっても
どうにも上手くいかず

上のコードをどう直していけばよいのでしょうか

848 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 19:02:26 ]
C# の欠点はオープン系のみで構築したいなんて案件だとちょっと辛いってとこぐらいかな。
MONOってどうなの?業務で使った人居る?

849 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 19:39:02 ]
GPLが混入した時点で全く使い物にならないだろ
.NET関連のオープンソースプロジェクトってGPLより緩いライセンスがほとんどだし
サードパーティのライブラリとかも全滅



850 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 19:41:02 ]
>>847

// 変数の宣言
string Str = "";
List<string> arrayData = new List<string>();

// テキストボックスの1行単位処理
for (int i = 0; i < textBox1.Lines.Length; i++)
{
Str = textBox1.Lines[i]; // テキストボックスから1行取得
arrayData.AddRange(Str.Split(','));
}

// string[]に変換
// arrayData.ToArray();


851 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 19:52:00 ]
>>850
ありがとうございます!できました
…C#難しいよ…Perlのが楽だよ

852 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 19:54:14 ]
面倒というならわかるが難しいならそりゃPerlもわかってないんだよ
オブジェクト指向してないでしょ

853 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 20:03:39 ]
2002年以前の情報のままの奴がいるな。
GPLじゃなくなってから8年もたつのに。

854 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 20:09:30 ]
>>850
Strの場所おかしくないか?(そして何故大文字)

855 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 20:13:44 ]
>>854
元のソースで、とりあえずそのままでもいいところは
そのままにしているだけ、だと思う。

856 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 20:14:16 ]
本家もできてないけどな

857 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 21:14:17 ]
Perlでもあのロジックじゃ上手く行かないと思うのは俺だけか

858 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 22:20:25 ]
Perl はぶっちゃけオブジェクト指向する必要ないと思うぜ

859 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 23:47:15 ]
Perlでオブジェクト指向するくらいならRubyがいいな。



860 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 00:01:58 ]
スレ違い。

861 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 20:52:45 ]
enum を作るときって、関連するクラスの中に作ります?
それとも同じ名前空間内のクラスの外側に作ります?

862 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 20:54:41 ]
そのクラスの外に見せるならクラスの外に作らないとガイドライン違反

863 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 21:35:19 ]
>>862
ソースは?

864 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 21:38:28 ]
>>862
何のメリットが

865 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 21:54:25 ]
msdn.microsoft.com/ja-jp/library/ms229027%28v=VS.100%29.aspx
msdn.microsoft.com/ja-jp/library/ms182162%28v=VS.100%29.aspx
公式には完璧にアウト

866 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 22:06:36 ]
キリ

867 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 22:09:19 ]
クラス内のenumを使うユーザーコントロールがデザイン時にエラーになってかなり困ったことがあるよ。
あんまり想定されてなくて危ないのでやめたほうがいい。

868 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 22:27:07 ]
わかりにくいし使いにくいし探しにくい

869 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 22:28:07 ]
>>862,865,867
なるほど。
確かに名前空間の分離で充分賄える内容でした。

とはいえ流石に enum 用の名前空間分けるのも変なかんじなんで
"Foo"StatusType みたいにそれっぽいプリフィクス付けて対処してみます。

ありがとうございました。





870 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 11:51:30 ]
めんどくせーからpublic classの中にpublic enumでつくってもごもご。

871 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 12:00:24 ]
namespace HogeProject
{
  public class HageClass
  {
    //(ry
  }
}
namespace HogeProject.HageClass
{
  enum StatusType
  {
    hoge = 0,
    hage = 1,
  }
}

872 名前:デフォルトの名無しさん [2010/05/10(月) 12:02:19 ]
禿ワロタw

873 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 12:04:06 ]
if(this.Status == HogeProject.HageClass.StatusType.hage)
{
  MessageBox.Show("禿");
}

874 名前:デフォルトの名無しさん [2010/05/10(月) 12:46:53 ]
C#は糞2.0
pc12.2ch.net/test/read.cgi/tech/1272608727/

875 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 13:27:17 ]
>>871
using HogeProject;

var hage = new HageClass(); // <- 名前空間はnewできない

って書けなくなるじゃん

876 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 05:38:15 ]
www.itmedia.co.jp/enterprise/articles/1004/30/news051.html
これってどうよ?

877 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 06:07:53 ]
C#で文字解析をしたいのですが、
なにかいい方法はあるでしょうか?
例えば、テキストボックスにある
文字列が
"A B" C | D -E
という場合は、
A B AND C OR D ANDNOT E
という文字列に置換したいです。
今は文字列を1バイトずつ調べて
いますが、なにかmethodを使い
よい方法があればと思い質問します。

C#は初心者ですが、よろしく
お願いします。

878 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 06:38:39 ]
正規表現とか

879 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 07:45:43 ]
ぶっちゃけいうとF#でFslex,yacc使った方が幸せになる



880 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 10:04:31 ]
C#でExcelシートを読み込む処理を作っています。
OleDbで接続して読み込むことはできるのですが、
どうしても読み込むことのできない列があり、その列の値だけは
何行目でも空になってしまいます。
試しに他のExcelファイルに変えてみましたが、最初のファイルとは別の
列がまったく読み込めませんでした。
Excelファイルに問題があるのでしょうか?
それともOleDbでDBのように読み込むには何かの制限があるのでしょうか?

よろしくお願いします。

881 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 10:17:39 ]
で、それはどんな列なんだ?

882 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 10:22:23 ]
>>881
商品一覧のようなシートで、読めない列には金額が入っています。
他の列にも同じような値が入っているのですが、一部の列だけ読めないんです。
やはりこれだけの情報では厳しいでしょうか?

883 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 10:26:28 ]
じゃぁその読めない列と読める列の適当なサンプル提示してみれば?
個人情報が残らないようにしてソースの一部とともに公開すれば親切な誰かが見てくれるかもしれんよ


884 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 10:35:27 ]
接続文字列に IMEX=1とか?

885 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 10:59:30 ]
皆さんありがとうございます。
>>884さんの仰るとおりIMEX=1を追加したところ
動作しました。

C#に全然関係ない質問しちゃって失礼しました。

886 名前:デフォルトの名無しさん [2010/05/11(火) 11:09:52 ]
>>883

いつもソース要求しかしないアホ丸出し


887 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 11:13:01 ]
どっちにしてもソース晒すのが礼儀

888 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 11:20:25 ]
>>886
予想が当たったけど、データがなければ分からんのだから、指摘変だよ。

889 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 11:38:01 ]
接続文字列の情報があれば
IMEX=1
が無かったは明白だったわけだから解決は早かったかもしれんの



890 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 15:56:07 ]
C#2010で2008のプロジェクトを変換すると
プロジェクトプロパティにビルド構成が表示されるように
なったんですが、2008と同じようにする方法はありますか?
2010の新規プロジェクトを作ると2008と同じになるようですが・・。


891 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 19:54:46 ]
上の件で、どうも元のソリューションのプラットフォームがAnyCPU
だと変換後に2008と同じような表示にならないようでした。
(テキストエディタでslnとcsprojのAnyCPUをx86に書き換えて確認)
書き忘れましたが環境はC# 2008 Express(一度削除)→C# 2010 Expressです

2010ExpressだとAnyCPUは推奨されないーとか、AnyCPUのときは手動で
ビルド構成の切り替えが必要ーとか、何か関連がありそうな事があれば
教えていただきたい。

892 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 21:47:27 ]
>>891
メニューの「ツール」ー「設定」に基本設定と上級者設定があるからそれで切り替える。
変換元が基本設定でカバーできない範囲だったら上級者設定になるんじゃねーか?
その他の微調整はカスタマイズ、オプションで。


893 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 22:02:23 ]
VisualStudioのエディタのデフォルトエンコードを UTF-8 から ShiftJIS に
したいのですが、何かレジストリとかで設定できないでしょうか?
保存オプションの詳細設定でいちいち変更するのが面倒になりました。
UTF-8でいいじゃないかという意見もあるでしょうが、UTF-8 をサポートしない
ツールにソースをコピーペーストすると文字が化けるので。
例) かちゅ〜しゃ
/// <summary>
/// 繝繧ケ繝
/// </summary>


894 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 22:11:27 ]
一旦メモ帳にペーストして再コピーすると良いよ

多分無いんじゃないかな

895 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 22:18:08 ]
テンプレートを修正するんだったかな。

896 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 22:26:34 ]
そもそもファイルの文字コードと関係なくクリップボードはUnicodeでコピーされる。



897 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 22:30:15 ]
つまり、vsのファイルはシフトJISだから、そのファイルを他の
エディタで開けば読めると思うが、コピペだと文字化けする、
ということか。

898 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 22:34:14 ]
>>896は大嘘だけどな

899 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 22:44:03 ]
嘘と言い切ることもできないが(CF_UNICODETEXTも付いてるから)
しかしCF_TEXTにUTF-8とか止めて欲しいもんだ



900 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 22:45:28 ]
UTF-8 をサポートしないツールを捨てよう

901 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 22:48:49 ]
WinDiffのことかー!

902 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 22:57:29 ]
windiffはもうずっと使っていないなぁ。WinMerge便利だし。
変な文字コードのクリップボードはxyzzyでクリップボードエンコーディングを指定して貼付けがいいよ。
xyzzyは貼付けの文字コード自動判別もできると楽なんだけどなぁ。

903 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 23:01:33 ]
秀丸はOK

904 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 23:07:10 ]
>>893
そんな問題に対応するクリップボード拡張ツールがあってもおかしくないな、
と思って検索したら、ベクターにこんなのあったよ。

www.vector.co.jp/soft/win95/util/se285480.html

使えるかどうかは確認してない。

905 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 23:59:26 ]
/// <summary>
/// テスト
/// </summary>
うん、Windows7で動作。
オプションでShiftJISに変換するのとどちらが便利か比べてみる。
ありがとう。

906 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 08:11:27 ]
C#の本でVisualStudioのGUI操作を主に取り扱ってる、お勧めな本ありますでしょうか?
C#の言語仕様や文法については他の言語を知っているので詳しく書いてなくてもいいのですが。
特に、GUIコンポーネントの継承、VSS、外部参照方法など
エンタープライズ向けの操作方法が乗ってるのがありましたら教えてください。

907 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 08:20:31 ]
www.amazon.co.jp/dp/4891005009

908 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 12:06:03 ]
>>892
 ありがとう。色々いじってみました。
2010ってデフォルトがAny CPUからx86に変わったんですね。
とりあえずは32ビットwinだとx86じゃないと必ず表示されるという結論
に達しました。
 これに関連してか、Any CPUだと「プロジェクトおよびソリューション」
の「ビルド構成の詳細を表示」をOFFにしても「ソリューションのビルド」
でリリース構成としてビルドされないっぽい事がわかりました。

また何か情報あったら教えてください
ありがとうございました。



909 名前:デフォルトの名無しさん [2010/05/12(水) 12:22:26 ]
>>908
AnyCPUで作っちゃうといろいろ問題が起きるから2010では
デフォルトをx86つまり32bitにしておくことになったはず
この辺はAnyCPU vs2010とかググるとでてくるよ

まあこちらで経験した中ではブラウザコアを使った件はもろこれにあたったな
AnyCPUでブラウザコアを使うアプリ組むと64bitOS上だと64bitのIEが呼び出され
Flashまわりも64bitの物を要求するらしいんだけどないのでエラーになるとか
まあそれ以外にもいろいろあるようだけど
radikoのアプリ書いたときもろこれになった

そういう問題があるので2010ではデフォルトをx86にしてWOW64を当てにして
動かすようにしたとか



910 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 12:28:57 ]
>>909
あれから開発は進んだ?

911 名前:デフォルトの名無しさん [2010/05/12(水) 12:30:02 ]
>>910
誰と勘違いしてるのか知らないけどradiko関連は最初に作った以上はやらないよw

912 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 13:43:14 ]
普段から64bitOSで作業してるからこれにすぐ引っかかる
コーディングしてデバッグ開始して外部DLLの初期の時にもう落ちるからねえ

913 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 18:38:59 ]
>>845
亀だが、係争に発展した挙句SUNが負けたような

914 名前:デフォルトの名無しさん [2010/05/12(水) 18:40:53 ]
>>912
.netとかいっても内部はネイティブDLLなんかの単なるラッパーだったりするからねえ

915 名前:デフォルトの名無しさん [2010/05/12(水) 19:52:30 ]
よろしくお願いします。

VSC#2008です。

int.Parseに続くカッコ内に2バイト文字の数字を入れると、挙動がおかしいのですが
デバッグ付実行でエラーでず、素通りしてしまいます。
2バイト文字の数字をint型にするには、どういった方法がよいでしょうか。


916 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 20:08:30 ]
2バイト文字をint型に入れようって考えるのがそもそもおかしいと思うが…
Parseする前にワンクッション、全角数字を半角数字に置換するようにすればいい。

917 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 20:11:08 ]
いったん半角にすればいいじゃん。

918 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 20:11:38 ]
むしろReplaceで充分。

919 名前:デフォルトの名無しさん mailto:sage [2010/05/12(水) 20:19:12 ]
その前に
>デバッグ付実行でエラーでず、素通りしてしまいます。 
の部分が変だな。どんなコードかいてるの?



920 名前:915 [2010/05/13(木) 12:34:06 ]
Microsoft.VisualBasic.Strings.strConvでNarrowにするのって、
半濁音のピは、ヒと゜に分解されるんですね・・・2文字になるのか・・・orz..

921 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 12:40:22 ]
濁点付き文字を別に用意したら文字数が増えすぎて文字コードの隙間に入りきらないだろ
視認性も確保できない
*作られた当時の話

922 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 12:40:42 ]
復活のじゅもんだって半濁音は2文字だろうが!

923 名前:915 [2010/05/13(木) 12:48:42 ]
そうでしたね、ありがとうございます・・・。
ファイル名から数字をChar.IsDigitを駆使して抜き出してから
strConvしたらうまくいきました・・。

便乗質問ですが、
int.Parseで変換しようとしている文字列が表現する数字の桁数が相当多くて、
intに入りきらない場合ってあるじゃないですか。
でね、そんなケースを実験してみたら、

return int.Parse(Microsoft.VisualBasic.Strings.StrConv(str.Substring(startindex, finalindex - startindex + 1), Microsoft.VisualBasic.VbStrConv.Narrow, 0));

デバッグ付実行なのに、何らエラー(バグったり凍ったりダイアログが勝手に出たり)でずに
素通りして、何食わぬ顔でシステムアイドル状態に戻るんですよね。

うーん。うまくいってんのかいってないのかわかんねーと悩んでいます。

924 名前:915 [2010/05/13(木) 12:51:02 ]
なるほど、
これを
OverflowException
s が MinValue 未満の数値か、MaxValue より大きい数値を表しています。
というんですね・・・。
try catch finallyで囲って強制的に例外を吸い上げる(何もしないとスルーしやがるので)しか
ないのでしょうかね・・・ORZ

msdn.microsoft.com/ja-jp/library/b3h1hf19%28VS.80%29.aspx

925 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 12:53:09 ]
COM系のイベント内でやってないか?

926 名前:915 [2010/05/13(木) 12:53:53 ]
>>919さん

わかった!INT.PARSEって明示的に例外処理を用意してやんないと
スルーするんですね?ってことであってますでしょうか。

で、厄介なのはスルー後、何事もなかったかのようにシステムアイドルに
戻るっていうこと。
何食わぬ顔で実行中のFOREACHから抜けだすし、それが記述されてるメソッドからも
抜け出す・・・。

927 名前:915 [2010/05/13(木) 12:54:42 ]
>>925
private void MainForm_DragDrop(object sender, DragEventArgs e)

内でやっています。
(MAINFORMはFORM1のことです)

928 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 13:02:35 ]
DragDropイベントもCOM系だな
.NETの例外はHRESULTに変換されてCOMの呼び出し元に返値として渡されるので
例外は外部に通知されない

929 名前:デフォルトの名無しさん [2010/05/13(木) 13:35:36 ]
>>928さん

まじでつか・・・ORZ
どうすりゃいいの変になりそう(byビース、ZEROより)



930 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 13:51:48 ]
いきなりParseせずチェック入れた後に変換すればいいのでは?
多倍長ライブラリでInt範囲にあるかチェック→変換
もしくは
文字数カウント→Decimal変換→Int範囲にあるかチェック→変換

931 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 14:02:07 ]
イベント内で例外処理すれば良いだけじゃん?

932 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 14:03:35 ]
>>915MSDNくらい読め、くそが。
TryParse

933 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 14:06:39 ]
TryParse()使えば

934 名前:915 [2010/05/13(木) 14:20:13 ]
>>932、933さん

ですね・・・クビ吊ってきます・・・ORZ

935 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 14:32:32 ]
お前は既に釣っている

936 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 15:29:06 ]
だれうま

937 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 15:31:15 ]
ついでに、intで範囲外ならlongを使えばいいじゃない
幾ら何でもlongを超えるような桁数扱う訳じゃないだろ
あ、先に言っとくがlong.TryParse()だからな?
intからキャストするとかマヌケなことはナシだぜ

938 名前:915 [2010/05/13(木) 16:06:38 ]
ファイル名に日付が入っている場合は、
例えば20100513で8桁。
更に時刻も入っていれば、
201005131606で12桁。

ファイル名から数字を抽出する作業でインチージャを使うのは
その時点ですでに無謀ですね・・・おrz

939 名前:デフォルトの名無しさん [2010/05/13(木) 16:09:11 ]
>>938
結局何がしたいの?
無理して数値型を最初の器にするからはまるんじゃないの?



940 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 16:09:19 ]
計算に使うんじゃないのかよw

941 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 16:19:58 ]
もういいから正規表現使えよwwwwww

942 名前:915 [2010/05/13(木) 16:26:38 ]
そんなにいっぺんにいろいろ言わないで下さい・・・滝汗

加工したいファイルをアプリにDDする。
DDされたファイルのファイル名を解析する。
ファイル名は、どのような形式か予測できない。
ファイル名は、おそらく少なくとも1文字の0でない数字が入っているものと想像する。
ファイル名の文字列のうち、頭から探っていって最初に0でない数字と出くわしたら、
そこから、数字の連続が途切れるまでシークし、
少なくとも1文字以上の数字列を抜き出す。

ということをしているんです。
抜き出した数字列をとりあえずイントにしていた、というだったんです。

シクシク・・・

943 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 16:46:58 ]
だったらなおさら正規表現使え
見た目難解とかの言い訳は聞かん

944 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 16:47:39 ]
(ノД`)シクシク

945 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 16:49:39 ]
おれもそれやるなら正規表現でやるわ。

946 名前:デフォルトの名無しさん [2010/05/13(木) 16:49:57 ]
>>943
難解かね?
最悪わからなければ正規表現スレで書いてもらえばいいだけだし
,netの正規表現はperl5互換だったのでその旨だけ書いておけば
人がいれば書いてくれるよ

947 名前:915 [2010/05/13(木) 16:53:47 ]
kwsk(ノД`)シクシク

948 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 16:56:10 ]
>>946
だな
とにかく>>942みたいなことをやりたいなら正規表現一択
そっから数値型に落としたいならVBのStrConv()をC#で使えばいい

949 名前:915 [2010/05/13(木) 16:57:59 ]
www.2shared.com/document/4s_FwtR1/915.html
(ノД`)シクシク



950 名前:デフォルトの名無しさん [2010/05/13(木) 16:58:18 ]
ところでたとえば>>938をどういう風に加工するの?
>例えば20100513で8桁。
>更に時刻も入っていれば、
>201005131606で12桁。
これをどうintの範囲に収めるか

ルールがないとねえ・・・

951 名前:デフォルトの名無しさん [2010/05/13(木) 17:00:30 ]
intの最大がこれか
2147483647

952 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 17:07:23 ]
>>950
いや日時って事前に解ってればDateTime型にするだろJK
例え日時と連番が混在してたとしても、正規表現で一工夫すればある程度分離可能

953 名前:デフォルトの名無しさん [2010/05/13(木) 17:09:32 ]
>>952
いやいや
事前にわかってない物をルール決めて
intの範囲に落とし込むんでしょ?

そのルールというか仕様を決めないとどうしようもないって話・・・

954 名前:915 [2010/05/13(木) 17:17:34 ]
とにかく949でアップしたおソースをゲットして、
諸先輩方からの辛口批判を希望します。

955 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 17:21:28 ]
この意図不明なソース見てどうしろと?
意味じゃなくて意図が不明
まず仕様をはっきりさせるのが先だ

956 名前:デフォルトの名無しさん [2010/05/13(木) 17:21:55 ]
>>954
本人だったのか
使い方わからんし、いろいろポップアップするしでスルーしてたわw
できれば>>4>>7のコード貼るサイト使ってくれ

957 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 17:22:52 ]
949は怖くてダウンロード出来ません

958 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 19:25:45 ]
>>942-943
new Regex("(\D*?(\d*?)\D*?)", RegexOptions.IgnoreCase)
要するにこうか?
未検証だからこのまま動くかどうかは知らん

959 名前:958 mailto:sage [2010/05/13(木) 19:27:11 ]
おっと最後の繰り返しが抜けてた
new Regex("(\D*?(\d*?)\D*?)*", RegexOptions.IgnoreCase)
こうだな



960 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 21:33:49 ]
なんのこっちゃさっぱり分からん。
915が説明すらまともに出来ないクズなのか、俺の頭が悪いのか

961 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 23:05:51 ]
さっぱり分かるけど、21億、または42億を超えるような数字が取れてしまった場合どうするのかと、
数字が含まれていない可能性もあると書いているのに、1文字以上の数字列を返すところ

後者は"0"返せばいいのかな。

962 名前:デフォルトの名無しさん mailto:sage [2010/05/13(木) 23:07:27 ]
そもそも数値が欲しいのか数字列が欲しいのかすら分からんわけで

963 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 01:45:28 ]
おまんこが欲しいです…

964 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 03:13:16 ]
だったらこんな板にいないで歌舞伎町にでも飛び出せ
早くしろ

965 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 08:40:37 ]
要するに文字列から「連続した数字文字列」を抽出したいといことなんだろう。
何に使用するかは知らないけど。

966 名前:915 [2010/05/14(金) 09:27:23 ]
>>965
そのとおりでつ!
ただし、数字文字列の先頭は0であってはならない。
抽出した数字文字列は1バイト文字に変換しなければならない。

でっつ!

967 名前:デフォルトの名無しさん [2010/05/14(金) 09:54:03 ]
あ、いや、むりして数字にしなくても、数字文字から成る文字列stringのままでもいいかも・・・。
でも、その代わり全角か半角か混在している場合はどちらかに統一するような処理をしたいけれどもでつ。

968 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 10:09:35 ]
ジョニー・デッツ

969 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 12:26:36 ]
でっつ奉公



970 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 13:28:59 ]
>>966
>>959

971 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 14:35:15 ]
>>966
間違っています。
以上。
はい次の方。

972 名前:967 [2010/05/14(金) 15:16:49 ]
915です、とりあえず戻り値をintじゃなくstringのままにしたら、全く問題ありませんでした。
諸先輩方、ありがとうございました。

973 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 15:31:59 ]
ゆとりらしい解決だったな

974 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 17:45:06 ]
結局設計意図がわからなかった

975 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 19:43:33 ]
ぽかーん

976 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 13:54:24 ]
f

977 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 20:23:26 ]
機械制御プログラムとかで、コマンド送信時にタイムアウト値を指定する必要があります。
それぞれのコマンドに推奨の最低タイムアウト値が存在するのですが、
こういうのは enum で定義した方がいいんでしょうか?
それとも const int の方が良いのでしょうか?

それぞれのコマンド送信メソッドではタイムアウト値は int で受けつける仕様にする予定です。
(最低タイムアウト値 +- αの値を指定する必要があるため)


978 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 20:25:11 ]
readonly int

979 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 20:27:42 ]
static readonly intに訂正
constはできるだけ使わない(値そのものに意味があるenumも同じ)



980 名前:977 mailto:sage [2010/05/15(土) 21:25:43 ]
値そのものに意味がある enum は NG ですか。
enum → 意味のある数字への変換メソッド等用意するのが正道ということでしょうか?

機械制御のコマンドも数値で表現されているのですが、想定していない数字を受けつけないよう
enum で型を作ってメソッドにわたすようにしていたのですが、
これは適当なクラスを作って定数を持たせるようにする方がいいのかな?

例)
class ControlCode {
public int Value { get; private set }
private ControlCode(int value) { Value = value; }

public readonly ControlCode Reset = new ControlCode(101);
.....
}

... public void SendControlCode(ControlCode code, int timeout);


981 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 22:08:30 ]
別にそのコマンドの数値自体には意味はないんだし
絶対にその値を変えることが無いと言い切れるならenumでもいいと思うけどな
値をラップする型を作る方法をとるのであればクラスじゃなくて構造体使うのが普通
==と!=とGetHashCodeは必ず実装すること
WPFなんかでは列挙体みたいな構造体は確かに多用されてる

982 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 09:07:14 ]
なるほど。

MSDN を再度見返してみましたが、後から変更がかかりそうな定数なんかは enum にするのは
よろしくないんであって、意味のある数字を持たせてはいけないってわけではなさそうですね。

今後の拡張や定数自体にプロパティを持たせる必要があるか等考えて再検討してみます。
ありがとうございました。

983 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 09:51:40 ]
enumにご執心のようだが、同じ数値セットできないことは認識してるのかな。
異なるコマンドでタイムアウト値が同じ状況は十分ありえそうだが。

984 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 11:53:12 ]
>>983
できるよ。

985 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 14:09:28 ]
んな馬鹿なと思ってためしてみたら本当に出来たでござる

986 名前:デフォルトの名無しさん [2010/05/16(日) 14:13:00 ]
enumって手抜き用みたいなもんでしょ

987 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 14:17:44 ]
>>984
んな馬鹿なとおもったけど>>985のレスでできるのだなぁと思い、そういやC#のenumはかなり変更されたんだったなと思い出した

988 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 14:25:01 ]
>>985
感謝しろ

989 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 14:36:10 ]
これが出来るって事?


public enum eSwich {
VALUE1 = 1,
VALUE2 = 1
}



990 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 14:37:13 ]
昔からできたでしょ

991 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 15:02:47 ]
これとかよくあるパターンだろ

enum Hoge { A, B, Default = A }

ついでに、別環境(Compactなど)で値が異なるとか

enum Hoge { A, B, Default = B }

>>982
・要素を追加/削除しない
・要素の値を変更しない
・利用者が値を意識する必要が無い

を守れないならenumは不適切

992 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 17:32:26 ]
>>991
ふーん

993 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 20:21:10 ]
列挙体といえば.NET4で今更Enum.HasFlagが追加されたわけだけどこんなの使う?
ものすごい遅そうなんだけど

994 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 20:45:44 ]
これから新しく書くものには使う。

995 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 20:51:43 ]
[Flags]が付いた列挙体に対してはコンパイラが
その型専用に最適化されたバージョンのHasFlagを生成するとかできなかったのかな
ボックス化+リフレクションだからビット演算に比べると途方もなく巨大なコストだよな

996 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 20:58:11 ]
using とか lock みたいな構文糖衣でもよかったよね。

997 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 21:10:16 ]
unko

998 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 21:18:05 ]
static bool HasFlag<T>(T value, T flag) {
return ((dynamic)value & flag) == flag;
}
こうしてみたらEnum.HasFlagの1/10くらいの処理時間になった
それでもビットマスクの数百倍だけどdynamic結構速いね

999 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 21:18:23 ]
o



1000 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 21:19:43 ]
C#最強

1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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