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


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

C#, C♯, C#相談室 Part53



1 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:11:11 ]
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C#, C♯, C#相談室 Part52
pc12.2ch.net/test/read.cgi/tech/1238548552/

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

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

427 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 06:05:48 ]
>>425
それ本当に1msの精度求められてるの?
仕分けでそこまでの速度を要求されるとは思えんのだが。


428 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 06:47:49 ]
>>393
intよりdoubleが早い環境なんて少数派だぞ

429 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 06:58:29 ]
PCでそんな制御やるのがそもそも間違えてる
カーネルから優先度の高い命令が割り込んだら何ぼでも処理落ちするぞ

430 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 08:05:16 ]
動かないと思ったらWindowsUpdateでリブートしてるんですね。わかります。

431 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 12:06:08 ]
>>427
初めに書いたとおり1mSecまでは求められてはいませんが
自分がWindowsで制御するなかでは初めての精度になります。

まぁごくまれに処理抜けする程度ならリターンしてもう一度処理をすればいいのでそれはそれで何とかなるわけですが
その為、処理負荷をできるだけ下げつつ処理時間間隔を短くするために可能な範囲で試行錯誤してみています。

>>426
>>429
そうなんですよね
何というか・・・GUIがほしいのはわかるんですが・・・

ちなみに現在実機でタイマ精度変更後に一日動作させた感じ1処理は停止含めて15mSecを超えていない(StopWatch調べ)感じです。
CPU負荷も常時高い位置にあったものが時々大きく上がる程度まで抑えることができている感じです。

でもぶっちゃけ実運用になったら・・・ちょっと怖いかも

432 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 12:17:58 ]
実際のとこ、全力でぶん回してもリスクは変わらないから。


433 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 12:31:00 ]
全くもってそのとおり
”ずーっと確実に最長1msの周期で観測する”という要件しか聞いていないから,PCの電源が落とされた時点でアウト,
PCの電源落とさないってんなら,たった一日の観測(>>431)くらいで何か分かるわけでもないし.
おとなしくデバイス作ってUSBかシリアルで接続したほうが安心.

GUIはC#でいいだろうが

434 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2009/07/29(水) 12:39:49 ]
>>433
なんかPC障害でラインが暴走しそうな悪寒もする。
ちょっとした機能追加で制御不能になったりとか

担当者さんのデスマーチが目に浮かぶ

435 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 12:44:55 ]
今思った

GC時間考慮してねー



436 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 13:02:29 ]
まあ書かれてた処理内容なら大丈夫だろ。
もち注意して作る必要はあるけど。


437 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 19:25:38 ]
>>425
その説明だと、そもそも「目的地」のところにセンサをつけ、
その出力を「流れているものを矢印の方向へ稼働させる機械」に直結すれば
PCなんか要らないように思えるけど。

それにどうしてエンコーダが必要になるのか意味がわからない。
わざわざ目的地じゃなくてその手前なんかにセンサを付けるから、
目的地を検出するためだけにエンコーダが必要になるんじゃ?

438 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 20:39:38 ]
>>425
目的地にセンサつけたらだめだろw
目的地はn通りあるから事前に振り分ける処理が要る。
FAの機械ってのは大抵が独自のプロトコルで通信する。
だからPCなりPLCなどの中継が必要になる。
ここまでは皆理解していて、その先の精度や耐久性について語ってるのだよ。



439 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 22:02:36 ]
>>438
よくわかんない発想をする人だなあ。

仮に目的がN通りだとする。
それって何を基準に振り分けるの?

その仮説と>>425の説明をあわせれば、恐らく物体の高さか何かによって
ONするセンサが変わるから、それを基準に振り分けることになる。

だとすると、それってN個の目的地の直前で、対応するセンサと
「矢印の方向へ稼働させる機械」を直結することと等価でしょ。

440 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 22:37:57 ]
まあ、質問主が詳細を明らかにしてないのに細かいこといってもしょうがないか。
なんとなくセンサの設置法さえ工夫すればビジーループでポーリング、
なんてことしなくてもPCでもこなせそうな仕事にも思えるけど。

DIOの付属のライブラリって、たいてい入力のイベントでコールバックする
機能がついてると思うから、そのあたりとあわせればできるんじゃないのかな。


441 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 06:33:12 ]
>>439
バーコード、QR、RFIDなんかは普通に使うぞ?素人か?

442 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 19:46:27 ]
もうどうでもいいよ。
さっさと上司と拳闘しろ。

443 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 20:16:21 ]
>>441
そういう問題か。
そんなことは>>425の文章からは読み取れない。
余程の馬鹿じゃなければ、そんな重要なことは最初に明確に書くだろう。

444 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 20:42:16 ]
>そんな重要なことは最初に明確に書くだろう。

うーん
そんなこと無いケースが多々あるが・・・

445 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 20:48:45 ]
そういうスレでやれ



446 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 12:41:04 ]
EventHandler eh += delegate { };
EventHandler eh += (sender, e) => { };

sender, eを使わない場合ラムダ式にしない方がいいの?

447 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 12:49:58 ]
使いもしないのに書くのは気持ち悪い

448 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 20:20:09 ]
関数でシステム作る様な言語でもないんだし
LINQの目的に使わないのなら俺は使ってないなー

449 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 01:35:08 ]
>>446
ラムダ式使うなあ。
別に引数を使わないのはLinqでもあることだし。

450 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 08:27:42 ]
使ってると関数式が分散しちゃって管理しづらくない?

451 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 12:16:38 ]
複数箇所で使うならメソッドにしとけ。その場限りならラムダにしとけ。
作ったメソッドをシグネチャ合わせるためにラムダ使うとかも良くあること。

452 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 13:20:59 ]
はい匿名関数使います。

453 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 13:29:18 ]
delegate { }の形の匿名メソッドはそのうち「今後は使用しないでください」ってお達しが出るかもね

454 名前:デフォルトの名無しさん [2009/08/02(日) 01:07:34 ]
C#って内部クラスをどういうときに使うの?
関連の強いクラスでも、内部クラスにするメリットがわからない。
Javaならすごいはっきりしてるけど・・・


455 名前:デフォルトの名無しさん [2009/08/02(日) 01:08:10 ]
>>1の本文は「飲み過ぎた・・・」と予想したが見事にはずれた



456 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 01:13:55 ]
>>454
javaだろうがc#だろうがインナークラスの使い道なんて一緒だと思うけど…。
よくわからん疑問だな。

457 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 01:32:22 ]
>>454
おまえはおれかw
今日ふと気になってそれ調べてたよ。
外部クラスのprivateフィールド、関数にアクセスできるのが一番のメリットだろうね。



458 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 01:32:42 ]
>>454
わざわざ外に書くほどでもないとき
スコープ的にそのクラスの外に見れないようにしたりしたいし

459 名前:デフォルトの名無しさん [2009/08/02(日) 01:49:07 ]
>457,458
こんな遅い時間にサンクスコ!
>外部クラスのprivateフィールド、関数にアクセスできるのが一番のメリットだろうね。
ああ、なんか勘違いしてました。外部クラスのインスタンスは渡してやらなきゃいけないけど
privateにアクセス可能なんですね。馬鹿な漏れですみません。

C#ってJavaに似せてはいるけど、かなり別モンですね。
スコープっていうかアクセス権については、
Javaのパッケージプライベートに相当するものが欲しい・・・
でもプロパティは素晴らしいです!(JavaのBeansは最悪。)

460 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 02:26:21 ]
プロパティはすばらしいとおれも思う。直観的だし、見やすい。

461 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 02:59:27 ]
そして書きやすいしね。VB.NETのプロパティはマンドクサだけど。

462 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 03:00:55 ]
プロパティとデリゲートは自慢できる機構だな。
いつJavaが逆輸入してくれるかと期待してるんだが、無理なのか。

463 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 04:01:16 ]
プロパティはいいとしても、
delegateはVJ++時代の歴史的ないさかいがあるからあれだなぁ。

464 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 04:02:34 ]
プロパティはJavaの新機能の候補にまで入ったんだけど・・・駄目だった
デリゲートはありえなさそうだ

465 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 07:55:22 ]
C++の将来はどうなりますか?



466 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 09:19:43 ]
C++の将来はC++0x、2015年までに何とかしてくれるらしい。
そろそろスレ違いだな。

467 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 10:36:21 ]
>>459
パッケージスコープはinternalがある。
「名前空間」っていうのはそもそもクラスライブラリを使う側のためにあるものだから
作る側の実装の都合によるパッケージスコープとは明確に区別されてる。
どっちがいいかは別にして,考え方の問題。

468 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 10:48:31 ]
.NETでCollectionを返してくるやつがあるけど何でジェネリック使ってないの?

469 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 11:03:03 ]
.NET1.xのころはジェネリックが使えなかったから。
3.0〜のWPFで非ジェネリックコレクションが一部使われてる理由は,
WPFはけっこう型にルーズで,突っ込まれたいろんな型のオブジェクトを
適当に自動的に変換したりするから

470 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 11:46:54 ]
>>467
考え方がどうとかはしらんが、
internalはexeやdllレベルのアクセス制限だから、Javaのpackage privateとは別モンだろ。
適度なアクセス制限かけたい時に、いちいちdllに分けるとかありえんwww

471 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 12:59:45 ]
?:でelse側要らない時あるから、何もしないで辞めるという予約語cancelを追加してほしい

x = x > y ? 10 : cancel;

Open(Exist(path) ? path : cancel);
引数にcancelが入るとそのメソッドは実行されない

472 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 13:05:42 ]
素直にif使えよ

473 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 13:14:30 ]
Exec(a(), Open(b(), Exist(path) ? path : cancel, c()), d())
じゃあこれでExist(path)がfalseになったときはExecも実行されないの?
aやbやcやdは?
無駄に複雑になりすぎる

474 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 13:33:32 ]
x = x > y ? 10 : x;

475 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 13:38:21 ]
x = x > y ? 10;

こう書けりゃいいのにな



476 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 13:57:46 ]
>>473
あー、なんか無理っぽいね
全部実行されないで欲しい感じはするものの

477 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 13:59:24 ]
無理して三項演算子使わなくてもいいのに。

478 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 14:38:47 ]
>>475
代入式なのに代入されない場合があるって、すんごいキモイと思うんだけど
どうだろうか

479 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 14:41:25 ]
タイプ数そんなに変わらん
if(x > y) x = 10;

cancel導入だとむしろ多くなるじゃないか

480 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 14:53:24 ]
>>479
これでいいじゃん
三項演算子にこだわる必要どこにもないし

481 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 14:53:48 ]
全メソッドが毎回cancelチェックするらしいぜ!

482 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 14:57:36 ]
なんで阿保の思いつきを開陳しようとする気になったの。

483 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 15:22:10 ]
おまえというド阿呆をおびき寄せるため

484 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 16:35:49 ]
本筋ではないけど、>>471のOpenの例はテストせずにモードOpenでtryして、
FileNotFoundExceptionなどをcatchでしょ。
ファイルは存在さえすれば開けるというものじゃないから、
どのみちtryする必要あり。それならばExistで存在確認するのは無駄。

485 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 16:38:23 ]
例外は重たいから事前にチェックできるのならばチェックすべし



486 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 16:40:16 ]
チェックから開くまでに、ファイルが消される可能性があるから無意味。

487 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 16:40:50 ]
チェックした方がいいのは確かだが
ファイルを開こうとして失敗するなんて秒間何千回起こるようなものでもないんだから
重たいとか別に関係ない

488 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 16:42:34 ]
例外は重いからチェックするってのは正か否か

これもよく揉める議題だよね。
頻度を考慮したらそんなに避けるべき問題でもないという結論に。

489 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 17:03:41 ]
平均的には、チェックする方が遅くなるだろうな
どっちみち頻度考えたら問題にはならないけど

490 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:04:04 ]
例外が思いからファイルを開くときにチェックしない
→ファイルを開くアクションを起こすと時々アプリケーションが終了
→作業内容が喪失
→作業意欲低下
→業務が滞る
→会社の収益が低下
→GDPが減少
→犯罪発生率の上昇
→本国崩壊
→朝鮮半島がなにかを主張し始める ←ここまで1年半

つまり例外処理反対派は反日親韓ということ?

491 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:10:37 ]
>>490
それを言うなら、
例外が思い(ママ)からファイルを開くときにチェック<する>

だろ。
いつも思うんだが、ネタっていうのは分かってる奴がやるから面白いんであって、
何もわかってない奴が無理してやるネタなんて面白くもないともないんだよお馬鹿さん。

492 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:14:21 ]
プログラムがファイルが存在しない状況について想定していることが伝わるからチェックはすべきでしょ

493 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:14:51 ]
>>491
??

494 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:17:53 ]
必要な処理を必要なだけやるわけであって
重いから処理しないのはゆとり

495 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:18:03 ]
ファイルが存在しない状況について想定していることが伝わればいいのなら
FileNotFoundExceptionを別にcatchするだけで十分じゃねーの



496 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:19:40 ]
はげどう

497 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:25:50 ]
まあFile.Existなんて気休めだよな。

498 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:56:25 ]
ところで
Try(() => Open(path)).Catch<FileNotFoundException>(ex => Console.Write(ex));
とか書けたらいいなと思ってるのは俺だけじゃないはず

というか多分書けるな
今から作ってこよう

499 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 00:05:20 ]
醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い
醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い
醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い
醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い
醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い
醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い醜い

500 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 00:10:24 ]
try〜catchじゃない意味あるの?
こんなオナニーコード見せられたら卒倒しちゃうよ。

501 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 00:14:51 ]
吐き気がするw

502 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 01:43:51 ]
>>498
賛同者はごくまれだろうな・・・・・

503 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 02:18:06 ]
if(auto ex = collectException(new File(path))) writeln(ex);

504 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 03:17:30 ]
RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup
みたいのはあるけどな。
もちろん理由があって。


505 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 05:05:40 ]
Util.TryCatch(()=>hogehoge...,e=>hoge....);
というのは作った。



506 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 05:10:59 ]
何の役にもたたなそうだな

507 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 07:06:19 ]
きもい流れになってるな・・・

508 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 12:01:36 ]
C#を見にくいコードにする友の会か?

509 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 12:47:28 ]
使う気にはなれないが、総称型をcatchに使えることは分かった。
public static T Try<TEx,T>(Func<T> func) where TEx : System.Exception {
 try { return func(); } catch (TEx ex) { Console.WriteLine(ex); return default(T); }
}


510 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 13:08:02 ]
これがラムダ厨の威力だというのか。

511 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 13:12:37 ]
もうクラス使わずに全部クロージャだけで書こうぜ

512 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 13:20:44 ]
一部のラムダ基地外をどうにかしてくれ。

513 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 13:27:07 ]
短かく書きたい病ってのは誰でも一度は発症するもんだよ

514 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 15:10:12 ]
ありすぎて困る

515 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 15:19:57 ]
短く書きたい自体は分かるが、
短くなってない、見にくくなってるだけが多いのはなんでだ。




516 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 15:20:14 ]
短く書きすぎて可読性落ちたらいみねぇwww


に気付くのにPGはじめて数年かかった

517 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 15:21:54 ]
try-catch-finallyをラムダで書くのに何のメリットがある。

518 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 15:48:42 ]
テストコードやアサーションとかなら使い道があるかも
思いつかないけど

519 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 18:00:32 ]
>>515
同感、未だ短く書きたい病発症してますけど、つか冗長コード書くやつ死ね派ですが
Tryは間違ってるだろと思うわ

520 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 18:05:09 ]
俺は冗長コードは可読性とパフォーマンスはかりにかけて許容範囲ならOKな派

521 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 18:34:03 ]
C#は文法自体が冗長だから短く書いてもたかがしれてるんだよな。
とりあえずPerlとかRubyは糞。

522 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 18:36:49 ]
冗長にも種類があって、この修正いったい何か所なおしゃいいんだよボケっって冗長タイプは大嫌い

523 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 18:52:04 ]
特定の人間しか読めないようだとそれはそれで冗長といえる気がする

524 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 19:00:18 ]
>>498みたいなのはともかく,さすがにラムダが全く分からないのは問題外

525 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 19:30:49 ]
いつも思うけどこのスレって程度の低い盛り上がり方するよね
ラムダ式なんて書けて当然読めて当然
ラムダ厨も叩いている奴も意識しすぎできもいよ



526 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 19:37:50 ]
と、>>498が言っております

527 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:08:43 ]
2chブラウザみたいに動的に分割するウインドウって作れるでしょうか?

528 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:17:19 ]
2chブラウザっていろいろない?

529 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:18:54 ]
それよりも
TryってVBじゃねえの

530 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:20:22 ]
どう考えてもjavaだろう

531 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:23:11 ]
いや そこはNullでしょ

532 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:27:53 ]
書けて当然読めて当然濫用も当然

533 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:33:24 ]
俺の書くコードが一番!
お前らの書くコードは二番!

534 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:37:40 ]
1人で書いてる限りは好きなように書いていいよ

535 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:59:43 ]
さんじのおやつはぶんめいどー



536 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 21:00:33 ]
534 おまえねーじゃますんなよw

537 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 21:09:53 ]
俺の言った設計通りに動いてくれるならどんな書き方したっていいよ
保守するのはお前らだし

538 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 21:46:04 ]
>保守するのはお前らだし
そう思ってたころもありました・・・


539 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 22:39:59 ]
Enum.ToStringはメタデータ検索するから遅くなるって言ってるけど
じゃあEnum.GetNamesとかはどうなの?遅くならんの?

540 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 22:48:22 ]
ウダウダここに書いてる間に試せると思うんですが…

541 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 22:49:04 ]
俺とお前じゃ時間単価が違うんだよ

542 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 22:49:59 ]
GetNamesやGetValuesは中でキャッシュされてるからそんなに遅くない
といっても配列の作成とコピーは毎回行われるので注意

543 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 22:51:32 ]
ToStringよりはずっと速い。


544 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 23:14:44 ]
全然関係ないけど、プロパティをリフレクションで取得したりするコードで、
リフレクションは遅いからプロパティ情報をキャッシュするのだ!って言って
DictionaryとかにPropertyInfoやMethodInfoをキャッシュしてるサンプル見るんだけど、
どうせキャッシュするならデリゲートにしとけっつの。
圧倒的に速いしリフレクション特有の問題も起きない。


545 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 23:29:47 ]
GetMethodとかは中でキャッシュされるからPropertyInfoやMethodInfoを
キャッシュするのはあまり意味がないとかいうのをMSDN Magagineあたりで読んだ覚えがある。
パフォーマンスのためなら>>544の言うようにデリゲートをキャッシュする。



546 名前:545 mailto:sage [2009/08/03(月) 23:34:54 ]
www.microsoft.com/japan/msdn/msdnmag/issues/05/07/Reflection/default.aspx
あった

547 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 23:47:28 ]
メンバの検索には結構時間がかかったりもする(条件によってことなる)ので無意味ではないけど
デリゲートをキャッシュする効果に比べたら全く無意味と言っていいレベルだな。


548 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 23:55:42 ]
>>541
だったらなおさら時間を大事にしろよ。
頭悪いのかね。

549 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 00:46:07 ]
うん

550 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 01:20:09 ]
くだらねー

551 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 01:53:58 ]
うん

552 名前:デフォルトの名無しさん [2009/08/04(火) 18:11:07 ]
質問です。

領域を確保したbyte型の配列を以下の関数Funcに渡したいのですが、
どうすればいいのでしょうか?

byte[] bytes = new data[640*480];
Func(????)


void Func(ref byte data){
}



553 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:14:22 ]
int n = 0; //好きな数字を入れてね!
Func(ref bytes[n]);

554 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:14:40 ]
void Func(byte data[]){
}

何でこうなるのか考えてから次に進めよ

555 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:18:01 ]
cじゃねえんだから

void Func(byte[] data)



556 名前:デフォルトの名無しさん [2009/08/04(火) 18:26:09 ]
>>553,554,555さん
レス有難う御座います。

この場合、関数の型を以下で定義するべきなのは重々承知しております。
void Func( byte [] data)

ただ、この関数は他社提供のクラスライブラリの為、替えることができません。

これってやっぱり、関数の定義ミスでしょうか?

ちなみに、この関数は某大手電卓メーカの提供しているクラスライブラになります。
 

557 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:27:03 ]
>>556
それなら使い方をサポートに問い合わせるのが一番だろ

558 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:31:21 ]
>>557さん
恥ずかしながら、保守契約が切れていてけないのです

・・・ちょっと見落としていたけど、553の案で行けそうな気がしてきた

559 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:33:58 ]
553の方法でアクセスできました!!!!!
すいません。 有難うございます。

3時間ぐらいハマってた・・・

皆様有難う御座いました。

560 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:34:14 ]
なんじゃそりゃあ。

561 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:35:35 ]
なんつうライブラリだ・・・・
要は配列の中の1バイトを書き換えるプログラムってことか…?

562 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:37:30 ]
まさかのネタがマジレス

563 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:48:06 ]
ネタじゃないです。

ネイティブコードのラッパライブラリみたいです。
サンプルさえあれば、こんなにハマることは無かったのですが、

本当に助かりました。感謝!!!!

564 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:52:54 ]
中でえげつないことしてそうだなあ

565 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:57:52 ]
なんというか・・・・
これはひどそうな匂いがぷんぷんしてくるな



566 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 19:26:21 ]
ライブラリの機能や仕様が不明なんだから何とも言えん。
ぱっと見た感じで怪しいのは確かだが。


567 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 19:36:16 ]
C++ の

 void Func(byte* data)

を、C# に持ってくるときに

 void Func(byte[] data)

にするべきはずのところを

 void Func(ref byte data)

にしただけだと思う
まあわかりやすい間違いだな

568 名前:デフォルトの名無しさん [2009/08/04(火) 19:57:55 ]
こんばんわ
文系のプログラムわからないぼくですが
仕事の兼ね合い覚えないといけないことになりました。

やはり先に本をかって進めていったほうがよろしいですか?

569 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:01:21 ]
あたりまえ
いくらPCに詳しくても,プログラミングでは「なんとなく触ってたら使える」というのはありえません

570 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:03:09 ]
>>568
それってC#でなきゃいけないの?

571 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:08:39 ]
>>570
はい、C#で開発なんで
それでないといけないと思います。

本で初心者用って書いてあればなんでも平気ですかね。


572 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:10:16 ]
C# とだけ書いてある本ではなく,Visual C# と書いてある本を選びましょう。
いきなり前者に挑むと挫折します。

573 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:12:58 ]
しかし門外漢を使おうなんて余程手が足りないのね
ここからが本当の地獄だ

574 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:17:23 ]
>>572
助かります。
2種類あったのか・・・

visualstudio2005を使うんですが、C#って書いてあったようなきがしたけど
visualC#ってことでいいのでしょうか?

575 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:22:36 ]
VisualStudio2005は複数のプログラミング言語が使える。
その中でC#を使うならVisualC#2005を使うことになる。
二種類あるっていうのは,例えるなら>>572の前者は英文法の本,後者は英会話の本だ。



576 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:23:44 ]
>>575
なんと・・・・
VisualC#で探します、ほんと助かりました。

前者後者で差が結構ありますね¥・・

577 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:30:01 ]
>>574
プログラミング未経験者がいきなり本で独学でC#とか俺は無謀だと思う。
特別地頭がいいなら別だけど。
こういうスレの連中は変な見栄と気取りがあるから認めないと思うけどねw

いきなりC#でも人に直接教えて貰えばなんとかなるかもしれんけど、
そういう訳にいかんのかな。

578 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:30:59 ]
だから地獄の始まりだと言ってるだろ

579 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:32:57 ]
>>577
うちの会社教えてくれる人いないんですよ・・・
これやってねって言った人も始めてだし。

今まで仕事・・・まぁ新入社員だけど
プログラミング教えてもらったことなど一度もないんです。
本渡されてどうぞ?しかないです。

580 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:37:02 ]
まあとりあえず触ってみりゃいいんじゃない
「VisualC#入門」みたいな本買ってきて一通り打ち込んで動かしてみてそれからだな
プログラミング自体に興味が持てれば次は文法の本に行けばいいし無理ならキャリアスクールへどうぞ

581 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:45:10 ]
そのレベルの初心者なら、最初は研修に行かせてもらったほうが早いんだけどな。
最初は入門書は定番の有名なのより、
手取り足取りタイプの超入門書を2〜3冊読み漁るのがいい。
物足りなくなったら定番に移行。

582 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:55:54 ]
>>577
C#が無謀なら何ならいいの?

583 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:56:17 ]
研修とかスクールって行った事ないけど意味あるの?
実際に仕事したことのない講師が教えてそうで怖いわ。

584 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:10:35 ]
研修とかプログラム受けると
お金になるとききました
(経理的な意味で)

585 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:34:40 ]
msdn.microsoft.com/ja-jp/library/ms229043%28VS.80%29.aspx

>複数の単語で構成されるパブリック メンバ、型、および名前空間の名前には、常に Pascal 形式を使用してください。

ってあるけどプライベートなメンバの命名規則はどこにあるの?



586 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:35:54 ]
公式には原則自由
それ「クラスライブラリ開発者向け」のガイドラインだからアセンブリの外から見えないメンバについては
どうでもいいの

587 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:37:02 ]
すばやい返答ありがとう

588 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:49:37 ]
ちなみに非推奨のアンダーバー始まりを使ってます。

589 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:52:15 ]
Cじゃないんだから取り立てて禁止というわけじゃないよ。

590 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:55:53 ]
むしろMSが公開してるC#で書かれたコードでは _camelCase が多数派

591 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 22:29:41 ]
C#って結構とっつきやすい方だと思うんだけどなぁ。


592 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 22:32:20 ]
他の言語の経験がある人にはね
もともとそういうコンセプト

593 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 22:38:09 ]
他の言語使ったことないと結構きつい気がするよ

594 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 22:40:13 ]
他のってCとjavaだけだろ。

595 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:07:54 ]
delphiから移行したけど結構簡単だった



596 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:09:54 ]
delphi とは腹違いの兄弟みたいなものだからなぁ

597 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:12:02 ]
>>590
そうなんだけど非推奨なんだよw

598 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:16:02 ]
ああ・・・種は一緒だからな
確かに腹違いだ

599 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:18:45 ]
お下品。

600 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:32:40 ]
他の言語の経験なんているか?
どの辺が?

601 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:42:45 ]
>>600
誰に向かって反論してるわけ?
「どの辺」にそんなこと書いてあるの?

どうでもいいけど、こんなちっちゃいことで自分を大きく見せたい奴は
大概その意図に反して無能な奴だわな。

602 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:46:25 ]
C/C++やってた俺には最初ヘッダが無いのが気持ち悪くて仕方なかった

603 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:47:37 ]
>>597
非推奨と書いてある箇所は何処でしたっけ?MSDNみてるけど出てこない。

604 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:48:08 ]
#defineが無くて幸せ

605 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:49:24 ]
マクロには使えないが一応あったような。#define



606 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:49:36 ]
あ、#defineマクロのことな

607 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:59:12 ]
条件付きコンパイルはもうちょっと言語を壊さない形で実現できなかったのかな
conditional (DEBUG) { }とか

608 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 23:59:40 ]
プリプロセスを無くすのはいいが、ファイルのインクルードまで無くしたせいで
条件付コンパイルがやり難くてしょうがないと思うんだけど。

とくに条件が複数のプロジェクトを横断的に規定するようなものだった場合。

609 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 00:02:52 ]
>>601
うわっ、キモっ

610 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 00:03:40 ]
>>579
悪いことは言わん。明日の退社後にでも、夜でもやってるパソコン教室へ、せめて1日(2時間)だけでも行ってこい。
最低限のとっかかりがないと、参考書のコードをそのまま入力するのも大変だろうし、ぐぐることもできんはず。

つーか、俺を雇ってくれよ…

611 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 00:09:54 ]
なんか変な妄想ふくらませてるのがいるなw
習得に相当時間がかかったのだろうか。

612 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 00:12:26 ]
>>610
悪いことは言わん。明日の朝にでも職安へ行ってこい。

613 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 01:17:30 ]
>>568
明日の朝、退職願出して、ハローワークに行って、事務か介護か土方の仕事探しな。
お前みたいな奴が居ると迷惑だ。

614 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 06:32:24 ]
>>603
msdn.microsoft.com/ja-jp/library/ms229045.aspx
アンダースコア (_) やハイフン (-) など、英数字以外の文字は使用しないでください。
ハンガリー表記法は使用しないでください。


読み直したらこれはプロパティのことだけに言ってるのか一般的なことに言ってるのかがわからんようになった。


615 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 07:25:28 ]
>>614
>>586の見解で正しいと思う。

自メンバーのアクセスには全部this.つけろより、
前か後ろにアンダーバーのほうが好みだ。



616 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 08:43:36 ]
日本語使ってるコード見たことあるな

617 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 09:27:46 ]
○○○○○○ToolStripMenuItem_Click(object sender, EventArgs e)
これの前に日本語つくよねw

618 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 09:42:06 ]
インテリセンスの都合で、後ろに _ の方が好き。
アンダーバーってキーボードの位置的に押しづらくて、先頭に持ってきたくない。

619 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 09:46:47 ]
private readonly stringのメンバー変数名って大文字から始まるの?

620 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 09:58:36 ]
privateは好きにしろと何度も出てるだろ

621 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 10:18:09 ]
今はC#だからメソッド名とか大文字にしてるけどF#始めるから小文字になる予感。
そのあとC#使うときはどっちになるんだか・・・

622 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 10:24:36 ]
正直どうでもいいな。

623 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 10:25:16 ]
F#ってC#と比べてどんなメリットあるの?

624 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 10:54:16 ]
>>617
エンティティフレームワークなんて、Hogesってテーブルがあったらデフォルトで

エンティティ=Hoges
エンティティセット=Hoges設定

だぜ。

625 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 11:12:59 ]
ワロタ



626 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 12:05:34 ]
プログラミングで初めての言語が C# だとクラスとか
よくわからないままになるかもしれないかな。
C++ から入るとあまり問題にならないような気がする。

627 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 12:08:04 ]
C++こそクラスから逃げられないと思うんだが…

628 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 12:18:26 ]
C# をはじめてのプログラミング言語にすると Main メソッドをもつクラスの意味がわかりづらい。
いきなりおまじないから始まるのはちょっと考えもの。

629 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 12:30:56 ]
>>627
逃げられないからこそよくわからないままでいられないってことでしょ?

630 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 12:51:18 ]
クラス設計が難しい

631 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 14:33:24 ]
>>608
プリプロセスのうちヤバイとされる物の一つだからそりゃなくなるだろ。
また、define の方は、Conditional アトリビュートを使えとのいうがC#流。
これによって、マクロ機能等をライブラリ化する時に捨てず、きっちりdllまで維持して再コンパイル等を防止している。

632 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 15:14:12 ]
ファイル横断的にやりたいなら、
csc /define:HOGE ... やMSBUILDのスクリプトで指定するのが原則。

633 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 17:17:09 ]
C#でのスレッドセーフなプログラミングに関する簡単な質問なんですが
あるクラスインスタンスの値を取得する部分

work = myClass;

と、クラスインスタンスの参照をセットする部分

myClass = new MyClass();

これってそれぞれクリティカルセクション化しないとまずいですか?
内部で何をやっているのか分からず不安なんですが、何でもかんでもlockするのは嫌なので…

また、intなどの値型でも同じことが言えるんでしょうか。お願いします。

634 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 17:57:08 ]
前提が抜けすぎてて答えようがない。もう少しシナリオをしっかり書こうよ。

635 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 18:42:23 ]
そこだけをロックしなけりゃならないことはあまりない



636 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 18:50:18 ]
念のため、なんでもかんでもロックしたところでそれでもスレッドセーフになるわけじゃないぜ

637 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 18:59:04 ]
普通は想定される複数スレッドからの使われ方というのがあって、
その時にどのように動作させるという設計があって、
その上で内部のデータや動作が不正にならないための条件を導いて、
それを壊さないようにロックなどで保護するんだよ。

だから何の前提もなくただスレッドセーフなんてのはない。


638 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 21:49:32 ]
// どちらが実行されるでしょうか?

bool a = true, b = false, c = true;
if ((a = b == c) == (a == b == c))
 d();
else
 e();

639 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 21:53:46 ]


640 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 21:53:47 ]
宿題か?

641 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 21:55:20 ]
貼りつければ分かるから宿題じゃないです
クイズです

642 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 21:58:15 ]
不適切な問題じゃね

演算子の優先順を問う感じだろうけど=と==をどっち優先にしてもdになる気がする

643 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 22:01:08 ]
d?


644 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 22:03:05 ]
>>642

(a = t == f) == (f == t == f)
(a = f) == (f == t)
(f) == (f)
t

(a = t == f) == (f == t == f)
(t == f) == (f == t)
(f) == (f)
t

ホントだw

645 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 22:17:53 ]
あほやのう



646 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 22:26:34 ]
>>644
(f == t == f) が (f == t) ?
なんで?


647 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 22:33:06 ]
安産してeだと思った15年目の俺・・・orz

基本的に優先順位とか気にしたくないのでかっこでくくってますが( ゚Д゚)ナニカ?

648 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 22:34:56 ]
なんだろうねぇ

649 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 22:39:14 ]
なにいってんの?
eだろ

650 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 22:53:01 ]
>>644
(f == t == f) の出所は?

651 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 23:18:16 ]
(a = b == c) == (a == b == c)
=> (a = (F == T)) == (a == b == c)
=> (a = F) == (a == b == c)
=> F == (F == (F == T))
=> F == (F == F)
=> F == T
=> F

なので e が正解

652 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 23:21:37 ]
==演算子って左結合じゃなかった?

653 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 23:28:05 ]
>>651
まて結合の優先順位と、実行される順序は別だ。

(a = b == c) == (a == b == c)
=> (a = (F == T)) == (a == b == c)
=> (a = F) == (a == b == c)

1)
=> F == (F == (F == T))
=> F == (F == F)
=> F == T
=> F

2)
=> (a = F) == (T == (F == T))
=> (a = F) == (T == F)
=> F == F
=> T

654 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 23:32:29 ]
大漁ですな(;´Д`)

655 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 23:34:36 ]
式は右辺からと思っていると、
(a = b == c) == (a == b == c)
-> X == Y
の右辺Yからやることになり、地獄行きになるんです



656 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 00:13:44 ]
(==)((a = b == c), (a == b == c))

657 名前:651 mailto:sage [2009/08/06(木) 03:03:09 ]
>>652
すまん4行目は F == ((F == F) == T) だな。
結果は一緒。
ttp://msdn.microsoft.com/ja-jp/library/aa691323(VS.71).aspx

658 名前:633 mailto:sage [2009/08/06(木) 09:04:57 ]
>>634-637
遅くなってすみません。

たとえば、スレッドAとスレッドBで変数myClassを共有している

スレッドAでは、myClassに新規インスタンスをセットする

while( 1 )
{
myClass = new MyClass();
}

スレッドBでは、myClassを作業用変数に確保し、さまざまな処理を実行する
while( 1 )
{
MyClass work = myClass;
workに対しての様々な処理
}

代入演算子はオーバーロードしていません
ちょっと何をやりたいかわかりにくいかもしれませんが、これだけを見た場合に問題はありそうですか?

内部的に参照カウント関係の処理が走っていたりして、危険だったりしますか?お願いします。

659 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 09:10:07 ]
ダメダメ絶対ダメ
スレッドBのループが一回回る間にスレッドAのループが何回回るか全く分からないんだよ?
それにいくらメモリを意識しなくていいといったってさすがにノーウェイトでnewしまくったらGCの負担になる

660 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 09:21:04 ]
スレッドAとスレッドBの周回数は同期がとれていなくていいです
GCの負荷は考慮しないとして、スレッドセーフかっていう質問なんですが・・・

要するに
myClass = new MyClass();

MyClass work = myClass;
のところをロックしないとメモリを壊したりしますか?ってことが聞きたいんです

C言語なら問題無いはずですがC#だとどうなのかな?って

>>635 の言うようにこれ自体はロックしなくても問題ないんですかね^^;

661 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 09:28:22 ]
myClassが共有されてると言うことでおけー?
ロックされる云々の前に多分それ意図してるように動かないよ。エスパーしてみるとw

662 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 09:29:44 ]
必ずしも間違った扱いではないけど問題あるかどうかは別だな
AでMyClassのコンストラクタが呼ばれた後に,Bで古いインスタンスが使われる可能性はある

663 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 09:32:02 ]
ロックするならスレッドBの書かれてない処理のところじゃね?

664 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 09:36:37 ]
参照やintへのアクセスはアトミックと規定されている。
つまり、myClassが32bitだとすると16bitだけ新しい値に書き換わってるという状態は存在しない。
一方doubleやlongはそういう状態が発生しえる。

ただしマルチCPUの場合はもう少しややこしくて、
スレッドAが書き換えたmyClassの内容がスレッドBに反映するまでにタイムラグが発生する場合がある。
これが問題になるならlockを使用するかmyClassをvolatileで宣言する。
Cのvolatileとの違いに注意。

665 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 09:44:52 ]
あと、C#のGCは参照カウントじゃないよ。



666 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 09:58:55 ]
ま、確実性という意味なら、volatileつけとけば確実。
ただしなくてもメモリが壊れるとかのレベルの問題はない。

実質的にはCLR2.0以降のメモリモデルと86系CPUのメモリモデルから、
事実上はvolatileなくても問題ないはず。



667 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 10:02:26 ]
あ、確実というのは、可能な限り最新のインスタンスを使うという意味でね。


668 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 10:13:30 ]
Interlocked.Exchangeでも使えば

669 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 10:40:47 ]
volatileを使わない場合はもうひとつ問題があって、
MyClassの初期化が終わる前にスレッドBに参照が渡ってしまう可能性がある。
ただし、これが起きるのはMSだとItatiumの場合だけ。
原理的には有名なダブルチェックロッキング問題と同じ。

myClassをvolatileにしない場合のスレッドA
while( true ){ 
 MyClass tmp = new MyClass();
 Thread.MemoryBarrier();
 myClass = tmp;



670 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 11:15:28 ]
おまいら詳しいのな

671 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 11:20:35 ]
それもCLR2.0以降では大丈夫でそ。
ついでにその問題を出すなら、Aのメモリバリアだけじゃだめ。

なぜなら、Bスレッドのワーク変数が目的通りに動かないから。
ワーク変数への各アクセスで、新しい参照を読んでしまう危険がある。
かなり直感に反する動作だと思うけど。

結局この場合もvolatileつけるのが最も簡単確実。

672 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 11:58:19 ]
>>671
いや大丈夫でないから.NET2.0で.MemoryBarrier()が追加になってるわけで。

myClassからworkの参照コピーは1回限りのようだから問題ない。
work変数はローカルなんだし、
MyClassはスレッドAでセットしたあとは放置状態なのだから、
途中で新しい参照を読み込むことはありえない。
workは一貫したクラスを参照できてれば、MyClassのバージョンは問わないという前提だよ。

673 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 12:00:37 ]
C# 2.0で質問です。

List<int> _list = new List<int>();

//(本当はintではなくクラスなんですが説明しやすいようにintで・・・)

_list.Add(1);
_list.Add(2);
_list.Add(3);
_list.Add(4);
_list.Add(5);

foreach(int data in _list)
{
 Console.WriteLine(data);
}

このような感じで記述した時に
List<int>はインデックス0からデータを順番に必ず返すのでしょうか?
やってみた感じ必ず返っては来ているようなんですが、保障されているというような感じの文章がヘルプから探せなかったので質問させていただきました。
よろしくお願いいたします。

コレクションやソーテッドリストなんかはその並び順は勝手に変わるようですがListオブジェクトはどうもみあたらない・・・orz

674 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 12:11:22 ]
foreach が配列の要素を走査する順序は、次のように定義されます。
1 次元配列の場合、要素はインデックス 0 から始まってインデックス Length ? 1 で終わるインデックスの昇順に走査されます。
多次元配列の場合、要素は、最初に右端の次元のインデックスが増加し、次にその左側の次元のインデックスが増加し、さらにその左側の次元のインデックスが増加する、というように走査されます。

675 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 12:37:54 ]
>>674
int のコレクションとして考えれば0〜インデックスの最後までの順序で処理される
それでもってListコレクションの中身も同じように処理されるということでしょうか?

ということであればすっきり処理を続けることができます。
ありがとうございました!



676 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 13:09:05 ]
>>672
違うよ。
メモリバリアはCLIの標準仕様では必要。
CLR2.0以降の実装では不要だとしても、互換性の為には必要になる。
だからある。

あとソースコード上はワーク変数に1回だけ取得してても、
実際にはワーク変数を削除して毎回実体にアクセスするという、
直感的でない最適化が行われる可能性があるんだよ。

共有してる変数をvolatileにすればそれを防げる。


677 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 13:11:03 ]
この辺はいつだったかのMSDNマガジンに詳しく書かれてる。


678 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 14:05:33 ]
>>676
ありがと、勉強になった。MSDNマガジンで確かに見た気がするがスルーしてた。

679 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 14:46:29 ]
ごめんもう一つ補足。
CLR2.0以降では書き込みアクセスでのvolatileは事実上不要だけど、
読み取りでは必要な可能性もあったと思う。
書き込み順序と回数はデフォルトでvolatileのように保証されるが、
読み込みは場合によっては省略されることがある。
ただ、その他諸々の事情により、実際に問題が出るパターンはあまりなかったと思う。


680 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 17:20:59 ]
C#からUnmanaged-DLLを利用する場合についての質問です。

DLL側でThread Local Strage(__declspec(thread)を付けた静的変数)を使用し
ている場合、(DLL内の関数がC#から呼び出され)DLL内でこれにアクセスしよう
とした時にSystem.AccessViolationExceptionになるようです。(エラー画面.PNG)
DLL側を修正せずに、C#側の修正もしくは他の手段でこれを回避する方法はあ
りませんでしょうか?

www1.axfc.net/uploader/Sc/so/24967.zip&key=Test
は問題を再現する簡単なコード例です。
Test\MyDll\MyDll.cpp の18行目が__declspec(thread)を付けた静的変数で、
これを、N:\Test\MyCSApp\Program.cs の29行目から呼び出されたMyFunc(5)の
処理でszMyLastErrorにエラー情報をセットするところで例外が発生します。

Test\MyC++App は同じ処理をC++で記述した場合で、これは問題なく動作しま
す。

以上、よろしくお願いいたします。

681 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 17:43:07 ]
>>680
ttp://msdn.microsoft.com/ja-jp/library/2s9wt68x(VS.80).aspx
の一番下

682 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 17:57:52 ]
C++/CLIあたりでlibを使ってラッパ作れば何とかなるかもね

683 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 21:44:03 ]
レスありがとうございます。

>>681
症状からして、そのページに書かれていることが起きている(C#はDLLを動的にローディングしている)
のだろうな、とは思っていたのですが、それを回避する方法がなにかあるのではないかと質問させてい
ただきました。

>>682
MangedなラッパDLLを作成し、これにMyDll.libをリンクしてみましたが、ラッパDLLがC#アプリからは
動的にローディングためか結局ダメでした。

何か、裏技がありませんかねえ??

684 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 21:52:25 ]
別 Exe にしてプロセス間通信するしかないだろ。

685 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 21:57:02 ]
C++/CLIから起動してC#側を動的ロードするとか



686 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 22:23:54 ]
DLLのほうを触っていいならTlsAllocを使えばいいはずだけど。


687 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 23:40:08 ]
COMのアウトプロセスサーバーでラップすると何とかなりそうだが、
激しくめんどい。
インプロセスサーバーだと駄目だった。

688 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 02:56:45 ]
一番現実的なのは>>685だろうな
マネージ側は参照だけでいいんで動的ロードとか言わんけど

689 名前:デフォルトの名無しさん [2009/08/07(金) 08:47:30 ]
.NETのWindowsアプリケーションで作成したプログラムにおいて、
ネットワークPCのドライブにあるフォルダをアクセスしようとした時、
たまたまそのPCが立ち上がっていなくてネットワーク上に見つからない
場合に長く待たされていました。このタイムアウト時間はたぶんOS
の設定で変えられるものとは思うのですが、タイムアウトにならない
うちにプログラムでアクセスを中断してしまうことは可能でしょうか?

690 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 10:09:55 ]
C#でパケットキャプチャしたいのですが、サンプルありますか?

691 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 10:18:07 ]
www.stackasterisk.jp/tech/program/howtosniff01_01.jsp
sourceforge.net/projects/sharppcap/files/SharpPcap/

692 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 11:42:39 ]
>>691
ども、でもなんかよくわからないです
エラー 2 型または名前空間名 'NetDefineSet' は名前空間 'StackAsterisk' に存在しません。アセンブリ参照が不足しています。
とか

693 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 12:04:49 ]
お前にはまだ早いということだね

694 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 12:16:19 ]
>>689
別スレッドでチェックしに行って適当にタイムアウトとかできるんじゃ?

695 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 13:22:57 ]
>>692
そういやなんかサンプルそのままじゃビルドできなかった記憶があるな

>The Code Projectによいサンプルがあったので拝借させていただき、それを元に書いてみました。
>元となったのは 「RawSocket Class-Create Network Monitoring (Packet Sniffing) Apps」 というものです。

って書いてあるしそっちも参考にするといい



696 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 14:39:34 ]
スレッド分けるのに一票

697 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 14:49:45 ]
Process.Start()で存在しないフォルダを起動したら、FileNotFoundExceptionじゃなくてSystem.ComponentModel.Win32Exceptionというのが来る
Frameworkが吸収するところじゃないのか

698 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 15:34:45 ]
あなたはそれがいいと思うかもしれないが、
大多数の他人はそう思わない

699 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 16:48:15 ]
いやそうでもない

700 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 16:59:52 ]
Frameworkが吸収すべき所のような気がするけど
実害は無いからとやかく言わない

701 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 17:06:23 ]
>>697
つうかふつうに固まるだろ・・・・
問題はみに行く時に固まるつうのが問題なわけで

なにかボタン押したときにチェック

チェック中ですのダイアログ的なものと共に強制キャンセルボタン

チェック開始(バックグラウンドワーカーでもなんでも)

バックグラウンド終了前にキャンセルされたら
ナックグラウンドワーカー停止

こんなんでいいんじゃね?

成功のときはバックグラウンドの完了イベントかなんかで処理するとか

色々あると思うけど

702 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 17:25:47 ]
Microsoftの決めたことなんだから正しいお

703 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 18:37:58 ]
>>697
吸収してどうしろって?
別プロセスからの例外をプロセス間通信で受け取るの?
それをフレームワークでやれって?

704 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:01:23 ]
なん…だと…

705 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 20:19:40 ]
Windowsフォームで質問。

Form2 _form2 = new Form2(_form1);

としたとき、_form2.FormClosedのイベントハンドラで_form1.Close()するコードを書くと、
Form2.OnFormClosed()が何度も呼ばれる(つまりFormClosedイベントが何度も発生する)
ようなんだけど、これは仕様?バグ?

仕様だとしたらどう理解したらいいんだろう?



706 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 20:25:45 ]
OwnerはCloseするときOwnedFormsを全部Closeする
って言えば分かる?

707 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 20:34:10 ]
>>706
そのレベルの話はOK

708 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 20:53:58 ]
普通に再帰呼び出しになってるだけっしょ
止まるのはハンドルが消えるから

709 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 20:59:15 ]
>>708
現象の説明としてはそれでいいと思うんだけど、
俺が聞きたいのはそういうことじゃなくて、それが仕様なのか、
仕様だとしてそれに何らかの意味があるのかってこと。

FormClosedイベントの意味は、「Close()が呼ばれました」ではないはずだよね。

710 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 21:06:03 ]
> FormClosed イベントは、ユーザー、Close メソッド、または Application クラスの Exit メソッドによって
> フォームが閉じられた後に発生します。
「Form.Closeが呼ばれました」でも大体いいんじゃないかな

ま、おいらはMSの人じゃないので意味とか答えられないけど

711 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 21:09:46 ]
>>710
それはさすがに読解力マズいんじゃないかと思うけど。。

712 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 21:50:30 ]
何度も呼ばれるって何度?

713 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 21:52:55 ]
バグだよ、>>705のプログラムのね

714 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 21:55:57 ]
Closed≠Disposedと理解すれば良い

715 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 22:07:36 ]
>>710-711
MSDNの説明から読み取れるのは

・ユーザ操作、Close()、Application.Exit()で発生しうる
・FormClosedが発生した時点ではフォームは閉じられている

の2点だけじゃね?

てか、説明が怪しいと感じたら英語版を読むといい
それでも怪しいときも多いけどな



716 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 22:20:48 ]
ちなみに何回くらい呼ばれるの?
また毎回同じ回数なのか場合によって変わるのかどんな感じ?


717 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 22:33:34 ]
>>716
以下が問題を再現する最短のコード。
コンストラクタは省略してある。

public partial class Form1 : Form
{
  Form2 _form2;

  protected override void OnLoad(EventArgs e)
  {
    base.OnLoad(e);
    _form2 = new Form2();
    _form2.FormClosed += new FormClosedEventHandler(_form2_FormClosed);
    _form2.Show(this);
  }

  void _form2_FormClosed(object sender, FormClosedEventArgs e)
  {
    Close();
  }
}

public partial class Form2 : Form
{
  int _count = 0;
  protected override void OnFormClosed(FormClosedEventArgs e)
  {
    base.OnFormClosed(e);
    Console.WriteLine("Form2.OnFormClosed Called ! // count = {0}", _count++);
  }
}

718 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 22:53:53 ]
>>717
とりあえずDisposedイベントでForm1.Closeやるように変更したら
現象回避出来たぞ

719 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:00:06 ]
>>718
うん、それはわかるけど、
俺が知りたいのはこういうコードを書くと「何故」そんなことになってしまうか、なんだ。

普通に考えれば、OnFormClosedが何度も呼ばれるのは理解に苦しむと思うんだが。

720 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:00:45 ]
Form2ClosedでForm1Closeして新しいClosedが発生するのがおかしいと言ってるの?
何がおかしいのかよくわからない

721 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:02:44 ]
>>719

まあ所持関係にあるForm同士として呼び出してるんだから
>    _form2.Show(this);

Form1閉じる→Form2閉じる
っていうのは標準動作として組み込まれてる

逆方向の動きを追加したい場合(Form2閉じる→Form1閉じる)は
標準の動作と競合しないようにしなきゃ不具合が起きて当たり前

FormClosed()の時点ではForm同士の所持関係を破棄していないようなので
無限ループが起きる
Disposed()の時点でForm同士の所持関係を破棄しきったので
やりたい動作が実現できる

722 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:07:42 ]
FormClosedイベントなんだから、「完全にフォームが閉じた後」に発生しないとおかしい
と言いたい訳か。
んで_form2が完全に閉じた後だから、_form2_FormClosedが呼ばれても子フォームのCloseが呼ばれるのはおかしい、と

723 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:15:06 ]
Close()をこうやって呼べばいけるっちゃいける。
this.BeginInvoke((MethodInvoker) (() => Close()));

親フォームが子フォームを閉じるための参照のコレクションを持ってて、
親フォームから登録を抹消するタイミングがFormClosedの後なんだろうな。

724 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:16:44 ]
>>722
>_form2が完全に閉じた後だから、_form2_FormClosedが呼ばれても子フォームのCloseが呼ばれるのはおかしい、と
いや、そこは必ずしもそうは思わないけど、>>717のコードの動作が「おかしい」と思う点は、
何度も言うけどOnFormClosedの呼ばれ方が、MSDNに書かれたFormClosedイベントの仕様に
反するように思える点。

725 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:17:10 ]
>>723
なんかそれタイミング次第で
うまく行ったり例外おきたり
危険な動作しそうな気がする



726 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:18:43 ]
例えば、Form.Show()は何度でも呼べるけど、
その都度Shownイベントが発生したりはしないよね。

727 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:19:47 ]
>>724
Formのオーナーシップの関係で
Formクラスから子FormのCloseが呼び出されるってことでしょ
何も反してないよ

728 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:23:40 ]
>>727
だから、FormClosedイベントの意味、つまり仕様は、「Closeメソッドが呼ばれました」
ではないよね。少なくともMSDNライブラリを詠む限り、そうは読み取れない。

729 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:26:58 ]
お前が明示的に呼んだときしかCloseメソッドが呼ばれないと思ってるということか

730 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:37:46 ]
>>729
こんなこと言いたくないが、馬鹿はすっこんでてくれよ。
二重の意味で日本語も読めないのかまったく……

731 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:40:59 ]
>>730
どう見てもお前の方が馬鹿だが

732 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:41:33 ]
むしろMSDライブラリを読み取れないレベルの馬鹿がやめた方がいい
お話になりません

733 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:59:09 ]
横やりだが>>728とかの言ってることは別にそんなおかしくないぞ。
Closeを何度呼ぼうが、実際に閉じたタイミングで一度だけ発生する
と期待するのは普通の感覚。
MSDNの説明も普通に読めばそうだと期待する。

一度しか呼ばれない、とは明記されてないし結局仕様なんだろうとは思うけど。


734 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 01:05:38 ]
1度テストしてみて理解できないようなら方法は無い

735 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 01:14:25 ]
MSDNのクラスのドキュメントって
クラス単体の動作を説明してるのが基本であって
フレームワークの中でそのクラスがどう扱われてるかは
オマケ程度にしか説明されていない

っていうことをわかって無いから的外れなこと言い出すんだよね



736 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 01:28:44 ]
>>735
ほほう、「的外れ」とは?
具体的に何がどう「的外れ」だ、と?

いや、無理しなくていいよ。
そんな自分の頭で理解していることを表現しているとは思えない、
悪いけど意味不明な文章を書いているようじゃたぶん正面からの回答は無理だと思うから。

しかし、別に初心者が悪いと思わんけど(誰だって最初はそうだし)
知りもしないことに口出しして挙句に相手をいきなり罵倒する奴っていうのは
迷惑以外の何者でもないな本当。

初心者どころか自分でイベントを生成するコードすら書いたことすらないのが、
言っちゃ悪いがミエミエなのに。
まあそれ以前に日本語もまともに読めていないようだけどw

2chでこんなこと言ってみても仕方ないのは分かっているが、あまりに腹が立ったのでね。

737 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 03:20:05 ]
ここでクダ巻いててもしょーもねーだろw

738 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 04:57:36 ]
長文書いたら負けですよ

739 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 06:37:29 ]
閉じられる理由位見ろ
_form2_FormClosed() の処理が
if (e.CloseReason == CloseReason.UserClosing)
  Close();
じゃないの点が問題なんだよ

何度も Form2 に FormClosed が送られてくるのも
あくまでも Form2.FormClosed イベントが終了していない段階で
Form1 を改めて閉じようとしているからループしてるに決まってるだろ

ユーザ操作以外ではどうせ親から Close が送られてくるから無視でいい

740 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 16:24:06 ]
Form 1 の中で生成した Form2 を破棄しようとして起きるんじゃないの

741 名前:デフォルトの名無しさん [2009/08/08(土) 18:41:56 ]
テキストボックスやパネルの境界線の色をグレーや薄いブルーなどにするにはどうすればいいですか?
また、
ラベルの上に小さめのテキストボックスを重ね、一つのコントロールにすることはできますか?

調べましたが分かりませんでした。
どなたか教えてください
(T_T;)。




742 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:08:28 ]
WPFをつかっとけ

743 名前:デフォルトの名無しさん [2009/08/08(土) 19:45:28 ]
>>742
WindowsフォームアプリケーションでWPFのコントロールを使えるんだっけ…。

744 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:50:05 ]
>>740
ユーザ要求により Form2 に WM_CLOSE が送られ
その処理中に Form2 から Form1 に WM_CLOSE が送られ
Form1 が閉じる際に子ウィンドウに対して WM_CLOSE が送られ
その処理中に Form2 から Form1 に WM_CLOSE が送られ……

WM_CLOSE から発生する一連の処理が終了してない間に
改めて WM_CLOSE を流したらループするだろ

745 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:51:38 ]
>>743
Windows Forms の編集時にツールボックス見たら
WPF 相互運用機能グループに ElementHost あるでしょ



746 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:56:57 ]
>>717の場合は、別にWin32のウィンドウメッセージの水準で連鎖が起こってるわけじゃなく、
あくまで.NET Frameworkの、いわゆる「イベントの連鎖」が起こってるだけ
(しかも仕様というよりバグが原因ぽい)だから、ちょっとその説明は違うと思うけど。

747 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:57:05 ]
なんでElementHost なんてわけわからん名前にしたんだ?

748 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:09:08 ]
至って普通の名前だと思うが・・・

749 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:11:01 ]
わけわからんって。
Element(UIElement) を Host するから ElementHost。


750 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:14:18 ]
WinFormだけでやるなら、
TextBoxやらはボーダーなしにして、
その親としてPanelを用意して、
そのPanelのPaintで枠を描画

751 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:15:37 ]
このスレはMS信者に乗っ取られているようだ
嘆かわしい

752 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:31:56 ]
まぁC#使ってる奴の99.9%がMS使いだと思うよ(´・ω・`)
だれかC#でiPhone開発してる人来ないかな・・・

753 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:34:52 ]
というかどこから >>751 が出てきたんだ?

754 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:44:26 ]
何かのキーワードに反応するボットじゃない?

755 名前:デフォルトの名無しさん [2009/08/08(土) 21:12:16 ]
>>750
PanelにPaintができるの?
枠線入りの画像をパネルの背景にするってこと?



756 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 21:17:07 ]
普通にPaintできるだろ
もしWPFを使うなら,テキストボックス一つ一つをElementHostでホストするようなことはお勧めしない
ある程度の大きい範囲で丸ごとWPFにしてElementHostに乗せる

757 名前:デフォルトの名無しさん [2009/08/08(土) 21:28:28 ]
>>755
具体的にどうやるの?
panel1_iventが出てきたけど…。

758 名前:デフォルトの名無しさん [2009/08/08(土) 21:45:35 ]
paintイベントって、formをloadしたときに自動で発生するの?

759 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 21:51:23 ]
描画が必要なとき
もちろん初めにフォームを表示するときも呼ばれるな

760 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 21:51:35 ]
くれくれしすぎは

761 名前:デフォルトの名無しさん [2009/08/08(土) 22:14:24 ]
もしパネルやテキストボックスがたくさんある場合、
それらの全ての四辺を描画するならば、
重たくなりそう。


762 名前:デフォルトの名無しさん [2009/08/08(土) 22:16:19 ]
>>756
ラベルやテキストボックスにbordercolorがないのが困る。

763 名前:デフォルトの名無しさん [2009/08/08(土) 22:17:19 ]
>>756
エレメントホストはどれくらい重たいのかな。
今からやってみよ。

764 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:01:35 ]
>>741
なんかまともにレスする奴がいないんで見てられないからレスするけど、
そんなのは普通にTextBoxを継承してカスタムコントロール作ってやればいいんだよ。
class TextBoxEx:TextBox
{
  public TextBoxEx()
  {
    BorderColor = Color.Red;
    BorderStyle = BorderStyle.FixedSingle;
  }

  [Category("Design"), DefaultValue(typeof(Color), "Red")]
  public Color BorderColor { get; set; }

  [Browsable(false),
  DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
  public new BorderStyle BorderStyle
  {
    get { return base.BorderStyle; }
    set { base.BorderStyle = value; }
  }

765 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:02:47 ]
* 764続き *

  protected override void WndProc(ref Message m)
  {
    base.WndProc(ref m);
    const int WM_PAINT = 0xF;
    switch (m.Msg)
    {
      case WM_PAINT:
        using (Graphics g = CreateGraphics())
        {
          using (Pen pen = new Pen(BorderColor))
          {
            Rectangle rect = ClientRectangle;
            rect.Width -= 1; rect.Height -= 1;
            g.DrawRectangle(pen, rect);
          }
        }
        break;
    }
  }
}



766 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:09:41 ]
>>765
細かいことだけど、WndProcよりもOnPaintのオーバーライドのほうが簡潔では?
もちろんsuper.OnPaint呼ぶ手間含んで。

767 名前:デフォルトの名無しさん [2009/08/08(土) 23:09:50 ]
>>765
すごい。ありがとうございます。がんばって解読します。
この継承クラスをまた継承したら、命令を抑えてコーディングできますね。

※ なんで継承したら、bodercolorが出てくるんだろう---。


768 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:10:55 ]
>>766
やってみればわかるよ。

769 名前:デフォルトの名無しさん [2009/08/08(土) 23:12:08 ]
例えば50個のテキストボックスを表示させ、
それら全てに色枠線を描いたら、重たいのかな。

770 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:30:00 ]
>>768
ごめんなさい。言うとおりだった。

ググったらこんな記述も見つけた。PaintイベントがないならOnPaintもなくて当然か。
msdn.microsoft.com/ja-jp/library/system.windows.forms.textboxbase.paint.aspx
> TextBoxBase.Paint イベント
> コントロールが再描画されると発生します。このクラスでは、このイベントは使用されません。

771 名前:デフォルトの名無しさん [2009/08/08(土) 23:35:45 ]
panelならOnpaintも可能なんだろか。

772 名前:デフォルトの名無しさん [2009/08/09(日) 07:46:49 ]
>>765
さんの記事に、
「using (Pen pen = new Pen(BorderColor)) 」
という行がありますが、using句は名前空間の定義のみに使用するわけではないのですか?
どういうケースでusing句を指定するケースがあるのでしょうか。

773 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 07:47:50 ]
msdn.microsoft.com/ja-jp/library/yh598w02.aspx
MSDNくらい読めよクソタコ

774 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 07:54:42 ]
>>765
using (Graphics g = CreateGraphics())
{
 using (Pen pen = new Pen(BorderColor))
 {
 }
}

だとネストが深くなるから

using (Graphics g = CreateGraphics())
using (Pen pen = new Pen(BorderColor))
{
}

の方がいいな。

775 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 07:56:28 ]
}それならこれでいいだろ
using (Graphics g = CreateGraphics(), Pen pen = new Pen(BorderColor))




776 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 09:16:17 ]
>>775
そうやって並べると見辛くないか? >>774でいいじゃん

777 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 10:00:28 ]
わざわざ1行にする意味ないな

778 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 10:26:24 ]
「黄金分割」<副題> ピラミッドから ル・コルビュジェまで 柳亮著 美術出版社
1965年の出版でしかも純粋な美術書。でも、なぜフィボナッチ数の課題を
出されるのかピンとこないプログラマは一度目を通してみるとよい。

779 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 11:14:40 ]
黄金分割なんてうさんくさいと思うのは俺だけか?

780 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 12:15:28 ]
みんなが黄金といっているのだから黄金なんだろう

781 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 12:23:24 ]
僕には黄金はまだきついので聖水でいいです

782 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 13:30:33 ]
名前が胡散臭いだけで特別なものでも不可思議なものでもないけどね。

783 名前:778 mailto:sage [2009/08/09(日) 17:47:10 ]
>>779すみません。これ誤爆でした。

784 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:35:56 ]
>>775
コンパイル


785 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:08:36 ]
>>765
こうやると枠線だけ書いて、中の文字塗り潰してしまうイメージあったけど
これでいけるんだ

勉強になりました



786 名前:デフォルトの名無しさん [2009/08/09(日) 19:13:38 ]
このやり方で重たくならないならば、俺もやりたい。
みんな、なんでそんなに詳しいの?
頭脳を分けてほしいよ。

787 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:14:55 ]
もっと簡単にできたとおもうが。

788 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:23:35 ]
listviewのcustomdrowめんどくさー

789 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:27:50 ]
ユーlistviewつくっちゃいなYO!

790 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:33:28 ]
customdrow?


791 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:37:31 ]
カスタムドローで合ってるぞ
オーナードローじゃないぜ

792 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:44:39 ]
dr o w?

793 名前:デフォルトの名無しさん [2009/08/09(日) 21:05:54 ]
>>784
このロジックはどこに書くの?
デザイナーズcs?
それとも本体の方?

794 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 21:39:42 ]
いろいろ作ったらさ
SS見せてほしいんだけどw

795 名前:デフォルトの名無しさん [2009/08/09(日) 22:21:54 ]
>>794
SSってなに?



796 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:24:17 ]
Secret Service

797 名前:デフォルトの名無しさん [2009/08/09(日) 22:26:35 ]
SQLサーバーを借りてるんですが、直にSQLを書くのと、linqを使うのと、どちらがメリットが高いですか?

798 名前:デフォルトの名無しさん [2009/08/09(日) 22:28:15 ]
ボーリングのスコア表をC♯で作りたいんだけど、
膨大な数のテキストボックスを早く負担なく描くには何かいいテクニックはありますか?

799 名前:デフォルトの名無しさん [2009/08/09(日) 22:29:39 ]
>>798
なんでボーリングスコア表なんていんねん。

800 名前:デフォルトの名無しさん [2009/08/09(日) 22:31:47 ]
>>798
マウスを使って一つずつペタペタ描く。
それしかないだろ。
本を見てもそう書いてた。
間違っていたらごめん。

801 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:40:38 ]
手っ取り早いのはGirdじゃね

802 名前:デフォルトの名無しさん [2009/08/09(日) 22:45:24 ]
>>801
ジードって読むの?
初めて聞きました。
詳しく教えてください。
僕もマウスて配置していてくたびれました。

803 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:47:17 ]
1文字間違えるのが流行りなのか?
DateGridView

804 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:48:40 ]
>>800
その本は何個のテキストボックスをポトペしていた?
10個超えてたらダウト

805 名前:デフォルトの名無しさん [2009/08/09(日) 22:59:55 ]
>>804
5つのコマンドボタン。
揃える技は書いてたけど、大量描画についてはコメントなし。



806 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 00:37:08 ]
ストライクとかのアイコンはどうすんの?
結局自前で描画する予感
なら1枚絵で作ってしまえ!とか

807 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 00:42:53 ]
DataGridViewはアイコン置けるよー

808 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:34:20 ]
複数の定数を定義したクラスの中に存在する、
定数に要素に全てアクセスするにはどうすればよいでしょうか?
for each 的なコードがあればお教えください。

class TestClass
{

  public const string const_test_1 = "aaa1";
  public const string const_test_2 = "aaa2";
  public const string const_test_3 = "aaa3";
  public const string const_test_4 = "aaa4";
}



809 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:39:29 ]
設計から見直せタコ

810 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:41:46 ]
>>808
案1 人手で全て列挙を行う
案2 コンパイラの忠告を無視して後々のメンテナンスを全て投げきってもいいならリフレクション

後で人手で行った場合の数倍のツケを支払う覚悟があるなら
機械的にリフレクションを通してもいいかも

811 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:41:54 ]
配列で用意しとけよそんなん

812 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:47:17 ]
>>810
案2の方法をお教えください。



813 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:48:25 ]
>>812
c# リフレクション フィールド 列挙
で出てきたの↓
dobon.net/vb/dotnet/programing/typegetmembers.html

814 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:50:23 ]
>>813
ありがとうございました。

815 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 02:11:58 ]
リフレクションなんか馬鹿に勧めるな馬鹿。



816 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 02:29:09 ]
>>815
馬鹿のお前がいっても説得力がない。

817 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 02:31:24 ]
リフレクション使って全部実行時に行う必要もなくて

一旦リフレクション使って集計して
その後手作業でソース起こしてもいいかもね

818 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 07:04:01 ]
yieldでよくね?

819 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 09:10:28 ]
>>817
これはよくやる
自動生成しちゃえばいいんだよね

820 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 11:09:01 ]
リフレクションとか難しすぎて頭おかしくなりそう

821 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 11:26:49 ]
>>819
日本語としては「ひちがつ」が正しいがレッドブックの「なながつ」も間違いではない
ただ朝鮮人や関西人が良く使う「しちがつ」は明らかに間違い
これを使っていると日本人である事を疑われるので気を付けるように

822 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 11:31:29 ]
>>821
なんか最近BOT多くね?

823 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:27:14 ]
馬鹿ウヨ死ねや

824 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 20:20:39 ]
lex とか yacc を思いだした

825 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 00:07:46 ]
リフレクション使うならせめてconstではなくreadonly使おう
constとリフレクションは非常に相性が悪い



826 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 01:13:45 ]
>>825
もしかしてCLI時点でconst修飾の名前ってきえちゃうの?

827 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 01:29:13 ]
ビルドした時点でリテラルに置き換わるんじゃなかったか

828 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 01:31:13 ]
んだよ
だからリテラルにできない物はconst宣言できない

829 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 01:38:09 ]
使用した場所はリテラルに置き換わってるが、
型の定義としては残っているのでリフレクションで確認できる。

public static const field System.String const_test_1


830 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 01:40:05 ]
ildasmの表記のほうがいいな。

.field public static literal string const_test_1 = "aaa1"


831 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 01:57:24 ]
しょうがないんだろうけれど、Attributeのコンストラクタ?に普通のオブジェクト生成式とか書けるようになって欲しいお(´・ω・`)

832 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 02:26:21 ]
むちゃゆうな
まあ気持ちは分かる


833 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 08:30:52 ]
Expression<TDelegate>さえ書ければ解決なのに

834 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 02:27:35 ]
TDelegateってなんだ。

835 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 06:20:06 ]
Delegateは特殊クラスなのでこういう制約は作れないってことだと思う。
class F<T> where T : System.Delegate




836 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 20:09:48 ]
IL 上作れないわけじゃないよ。実際 ECMA335 には
一例として載ってる。
要するにわざと禁止しているものなので理由を考えて
みるといいと思うよ

837 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 15:52:09 ]
1日分のログを日付フォルダごとに分けて保存していて
一定期間経過したフォルダを
DirectoryInfo.Delete(true)で削除しているんだが
毎日少しずつ削除時間が延びていくんだが
なんか理由知っている人いない?
削除の他にも処理をしているんだが
なぜか削除だけ時間がかかる
IOの問題なのかな?

ちなみに、、、
OS:windows 2003 server R2
Enterprise x64 Edition
Service Pack2

838 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 16:39:00 ]
普通にコマンドで消した時は遅くないの?

839 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 20:45:04 ]
削除してる間にログを他者が見てるって事はないの?
そもそもログの量、大きさは同じくらいなの?

840 名前:デフォルトの名無しさん [2009/08/14(金) 00:23:18 ]
処理内容がわからんから何とも胃炎。
毎日一定時間に処理をしてるんじゃないのか。

削除終了時に終了後から一定時間をセットするなら
削除処理にかかる時間分ずれていくだろ。

841 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 00:45:25 ]
すいません
vista + C# express edition + excel2007です
参照設定で参照の追加でcom タブでmicrosoft excel5.0をみると
microsoft excel5.0 ?????????? と出てるんですけど・・・
これって一体・・・・2007以前のexcel入れれば治るのでしょうか?
とても不安です・・・
壊れてるのかなC#・・・(涙

842 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 02:03:58 ]
>>837
最初は断片化かな?とか思ったけど、メモリリークな気もする。
C#はジェネリクスとnewで管理されているけど解放されないメモリが
簡単にできちゃうから、仮想メモリにガリガリアクセスして時間が
かかってしまう可能性も否めない。
Process Explorerあたりで確認して、GCのジェネレーション2が
異常にでかいサイズなら解放漏れ(ジェネリクスのClearやDisposeのし忘れ)を
確認してみたらどうだろう。

843 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 02:06:10 ]
>>842
気になる
これってアンマネージドで管理されているメモリの話?
それともマネージドだが古すぎてpermanent(永久?)領域に直ぐに移されちゃう話?
それとも両方混ざった話?

844 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 02:13:25 ]
マネージドでしょ

845 名前:842 mailto:sage [2009/08/14(金) 02:35:11 ]
マネージドの話。
ちょっと怖い書き方をしてしまったけど、要は使わないクラスがどっかで
参照されてるので消されずにメモリが圧迫されてるかも、という事です。
ソートとかで一時領域として使ってたDictionaryに、そのまま参照が残っちゃってて、みたいな。
開発中、デバッガ終了後なかなか処理が戻ってこない時はこの現象が起きてるか
疑ってみたほうがいいかも。と、経験者よりorz



846 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 05:20:44 ]
DirectoryInfoのインスタンスは使いまわしてるか、毎回newしてるか。
Directory.Delete(String, Boolean)を使ったらどうか。

847 名前:841 [2009/08/14(金) 08:32:26 ]
初心板にまわります

848 名前:837 mailto:sage [2009/08/14(金) 11:20:52 ]
みなさん、ありがとうございます。

>>838
ディレクトリのサイズが32MBぐらいで
普通に"rmdir"コマンドで削除すると1分ぐらいです。

>>839
削除しているのは、数日経過したディレクトリなので
他の人は見てないです。

>>840
日付ごとにディレクトリを作成して
その配下に時間ごとのサブディレクトリを
作成してプロセスごとのログを出力しています。
"日付ディレクトリ"の日付を見て
数日経過していたら削除するという
処理を行っています。

>>842
自分も最初はメモリリークを疑っていました。
ページファイルが1日で5MBずつ増えていますが
そのせいで削除処理が約30秒も伸びるんでしょうか?
削除処理だけで、他の処理は遅くなっていないのも
気になっています。

>>846
毎回newしています。
解放処理は明示的に行っていないので
参照が残ってしまっているのでしょうか?

849 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 12:18:00 ]
>ディレクトリのサイズが32MBぐらいで
>普通に"rmdir"コマンドで削除すると1分ぐらいです。

850 名前:デフォルトの名無しさん [2009/08/14(金) 12:58:35 ]
削除の処理にかかる時間が延びてるってことか

851 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 13:54:14 ]
32MBで一分ってその時点で遅すぎねーか?

852 名前:837 mailto:sage [2009/08/14(金) 14:04:49 ]
>>850
そうです。
削除の時間が日々伸びています。

>>851
ディスク上のサイズは204MBでした。
遅すぎですかね?

853 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 14:07:13 ]
ファイル数くらい書けよ。
エスパーさせんな

854 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 14:08:40 ]
シャドウコピーとかは有効になってる?

855 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 14:42:25 ]
ファイル数がきっと膨大なはず
ファイルの数があまりに多いと関連の処理がどんどん重くなる

確かWindowsのファイルテーブルてツリー構造してるの見た目だけで
実際はドライブごとに一つの表があるだけだから
ドライブ内のファイル/フォルダの数が多くなる度に
ファイル/フォルダ絡みのあらゆる動作が遅くなる

間違ってたらごめん



856 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 15:14:19 ]
NTFSだったらB木使ってるからFAT32よりも格段に速いよ

857 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 15:22:48 ]
>>856
フォルダの中身ごと削除の時点で全スキャンだし

858 名前:837 mailto:sage [2009/08/14(金) 15:58:22 ]
>>853
すみません。。
フォルダ数:約9500
ファイル数:約52500
膨大な数ですよね。

>>855
毎回削除する"フォルダ数"/"ディレクトリ数"は
変わらないのですが
それでも段々遅くなるのでしょうか?



859 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 16:07:16 ]
>>858
数日でそんなに溜まるログとか設計が狂ってる

860 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 16:10:39 ]
いっその事DBにログ記録しろ

861 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 16:18:10 ]
単純に一日のログを1ファイルにまとめるだけでも
相当マシになるはず

862 名前:837 mailto:sage [2009/08/14(金) 17:51:15 ]
みなさん、ありがとうございます。
設計というよりも、そういう仕様なので
仕方ない部分もあるのですが・・・

アドバイスを参考にしたいと思います。

863 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 18:46:36 ]
それ、プログラム終了させて新たに起動したらあきらかに速度が違う
というのなら、今まで消したファイルもスキャンしてるとかないか?

864 名前:842 mailto:sage [2009/08/15(土) 01:15:55 ]
>ページファイルが1日で5MBずつ増えていますが
>そのせいで削除処理が約30秒も伸びるんでしょうか?
>削除処理だけで、他の処理は遅くなっていないのも
>気になっています。

その、今の所、日を追うごとに増えているデータってのが
ページファイルだけなら疑ってみる価値はあるかと。
ファイル削除とページングでハードディスクへのリクエストがかち合って
ガリガリ言ってる時間が長くなれば可能性はあるかと。

削除プログラムが常駐プログラムなら一度再起動してみて速度をみてみるのはどうだろう?
それ以前にgen2の値はどうなんだろう?これでリークか否かの答えは出ると思うんだけど。

毎回起動なら、そのページファイルを増やしている別のプログラムをつきとめた方がいいかも。
なんにせよ、そのサーバはリークを起こしているっぽいw

865 名前:デフォルトの名無しさん mailto:age [2009/08/16(日) 12:42:56 ]
webbrowserに表示しているHTMLを画像として保存するには、
どのような方法が一番妥当ですか?

クライアントの隠れている部分も含めて画像変換したいので、
PrintScreenではだめです。




866 名前:865 mailto:sage [2009/08/16(日) 13:00:41 ]
ネットで探してて最初は見つからなかったのですが、
書き込んでからいろいろ見つかってきました。

homepage1.nifty.com/yasunari/VB/VB2005/WebBrowserDrawToBitmap.htm

www.i-tribe.info/Blog/post/2009/06/08/e7b0a1e58d98e79a84e381abWebe38398e383bce382b7e381aee794bbe5838fe38292e4bf9de5ad98e38199e3828b.aspx

すみませんでした。

867 名前:865 mailto:sage [2009/08/16(日) 13:04:11 ]
ここが一番よさそうでした。

ufreyr.blog80.fc2.com/blog-date-200703.html


868 名前:837 mailto:sage [2009/08/17(月) 14:29:39 ]
>>864
遅くなりましたが、「Process Explorer」で見てみました。
削除しているプログラムの値です。

#Gen0 Collection 14,220
#Gen1 Collection 5,952
#Gen2 Collection 314

Gen0 Heap Size 3,145,728
Gen1 Heap Size 30,976
Gen2 Heap Size 64,076,116

これって、リークしているのでしょうか?

869 名前:864 mailto:sage [2009/08/17(月) 18:07:10 ]
Gen2を知らないなら、今だけはプログラムを起動中に常に必要なメモリサイズだと思ってください。
削除プログラムに常に必要とされているメモリが64M弱が正しいならリークしてないです。
これが削除処理を実行する度に増えているなら、かなり怪しいです。
個人的な見解としてはファイルが何ギガあっても削除するだけに64Mは異常です。
CLR Profilerで何にメモリを使っているのか調べます。
更にいうと、64M程度で体感速度に差が出るとは考えづらいです。
他のヒープも合わせ削除処理中にムチャなメモリ確保がある可能性も視野に入れます。
ただし処理時間の原因がメモリリークであり、それが改善された場合、
これ以上削除時間が延びる事は無いはずなのでクレームが来るまで放置しますw

870 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 23:10:33 ]
サーバーでPaythonスクリプトを実行し、
特定の命令が呼び出されたら割り込みが入るまで待機ということをしたい。
それを実現するために、スクリプトを実行するごとにスレッドを呼び出してイベント来るまで待機ということをしているんだが、
これだと多数のユーザーがスクリプトを実行したときにリソースが枯渇しそうなことに気付いた。
スレッドプールで書き直したいんだが、ブロックするような処理をするのはまずいとMSDNに書いてあった.

これってイベントが来るまで待機するような処理も含まれるの?

871 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 23:44:28 ]
どの辺にC#がw

872 名前:870 mailto:sage [2009/08/17(月) 23:55:18 ]
使用言語:C#3.0

873 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 00:22:37 ]
>>870
そのまえにペイソンとかいう言語はC#とどの程度相互運用できるんだ

874 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 00:28:52 ]
phython≠paython

875 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 00:59:19 ]
また変なエサを投下して・・・



876 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 01:07:01 ]
ふぁいそん?

877 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 01:46:04 ]
北米的にはぺいずぅぁん。

878 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 10:24:41 ]
SORPとかでWCF使うとか

879 名前:870 mailto:sage [2009/08/18(火) 16:49:05 ]
>>873
ironpaythonを使えば、楽に相互運用ができる。

880 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 17:25:17 ]
>>879
paythonって何だよ
ironpaythonって何だよ

881 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 17:36:43 ]
試しにググったらここのPart42が引っかかったw

882 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 20:44:15 ]
SORP?

883 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 20:46:14 ]
>>879
アイロンペイソンってサーバーで動かすPaythonスクリプトにもなれるの?

884 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 21:22:55 ]
おまえらペイトホンも知らねーのかよ。

>>870
マジレスしようと何度か読み直してみたがさっぱり意味が解らない。
とりあえず質問の内容は最後の2行のみ?
で、ブロックしそうなのはクライアント側?サーバ側?
っつか多分日本語でやりとりしてもらちがあかなそう。簡単なソース出して
これはおk?ってやった方が、キミとは上手くやっていけそうな気がする。

885 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 21:53:42 ]
boid mein() {
}

とかってコード期待w



886 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 22:35:00 ]
>>869
亀だが・・・

64M程度ならドトネトでは普通じゃないかと思う
結局メモリ量は予約領域でもあるはずだから純粋に使用しているメモリというわけではないだろうし

887 名前:870 mailto:sage [2009/08/18(火) 23:54:18 ]
>>884
ソースをさらします。
サーバーがRunScriptというパケットを受け取ると実行される
void talk()
{
Thread t = new Thread(executeScript);
t.Start(this.remoteip);
}
private void executeScript(object data)
{
PythonEngine pe = new PythonEngine();
pe.deliverVarible("_self", this);
pe.deliverVarible("_target", target);
pe.deliverVarible("_remoteip", (string)data);
pe.execute("foo.py");
}
//リモートIPとManualResetEventが対になってる
static Dictionary<string, ManualResetEvent> ManualEvent = new Dictionary<string, ManualResetEvent>();
//foo.pyがwaitForSignalを実行すると呼び出させる
public void waitForSignal()
{
if (remoteip == null) return;
ManualEvent[remoteip].Reset();
ManualEvent[remoteip].WaitOne(Globals.script_wait_time);
}
//別スレッドから呼び出し
public void setSignal()
{
if (remoteip == null) return;
ManualEvent[remoteip].Set();
}


888 名前:870 mailto:sage [2009/08/18(火) 23:55:49 ]
訂正
×//別スレッドから呼び出し
○//同じクライアントから特定のパケットを受け取ると呼び出される(パケットを受け取る部分は非同期ソケットを使ってます)

889 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 00:08:34 ]
Directory.Delete("パス",true);
これに64Mはありえない。それからgen2は回収に何度か失敗している領域。
現在使用中かつ長い間確保されている可能性が高い。

とまぁ、レスの情報と自分の経験からの推測な訳です。はい。
本当に64Mが適正か否かは>>837氏のみが知る所でしょう。

890 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 19:00:23 ]
質問です

今ちょっと頼まれて
テキストボックスとボタンのフォームだけがあります。
そしてそれに必須入力チェック、桁数チェック、書式チェックと言う条件を作らないといけないのですが

当方初心者でまるでわかりません。

まず、True,Falseの場合に出すメッセージボックスを作ります。
そしてIF文でどっちに行くかを条件付けるんですが
どのようにして記述していけばいいのでしょうか・・・・

891 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 21:30:38 ]
ググれ

892 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 21:31:42 ]
初心者向けの本でも買え。

893 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 21:53:52 ]
カスどもありがとう助かったわ

894 名前:デフォルトの名無しさん [2009/08/19(水) 22:19:58 ]
タブコントロールのタブなしってあるの?
アクセスではあるらしいね。

895 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 22:34:11 ]
フラットスタイルじゃなくて?



896 名前:デフォルトの名しさん mailto:sage [2009/08/19(水) 22:46:10 ]
ふらっとの方でもたずねたのですが、返事がないので
C#を始めて1年くらいで、2Dグラフィック周りを主にやってます。
最近、JAVAプログラムのオープンソフトでJDrafter(hhp://jdrafter.com/)とい
うソフトを発見したのですが、 このソフトは、イラレ感覚で2Dグラフィックを作成し、Javaの
オブジェクトとして保存できるため、Javaプログラムからの表示やアニメーションなどにも応
用できるようなのですが、 どなたか、C#でこんなプログラムをご存知の方いないでしょうか。
もしくは、オープンソフトなので、描画周りのクラスをC#に変換して利用できないか考え
ているところですが、どなたかその方法やこれに適したjava→C#変換ツールをご存知
の方があれば、ご教授をお願いします。

897 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 22:54:20 ]
何文字目?

898 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 22:55:30 ]
Java使えよ

899 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 22:56:59 ]
つJ#

900 名前:デフォルトの名無しさん [2009/08/19(水) 22:59:36 ]
>>895
フラットスタイル…
C♯にあるの?

901 名前:デフォルトの名しさん mailto:sage [2009/08/19(水) 22:59:48 ]
>>898
javaに変えてもいいのですが、今までの資産や、C#の将来性を考えると簡単に
は決断できません。
ググってもみましたが、どうしてもわからないのでお尋ねしているところです。

902 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 23:01:03 ]
つか xaml に変換できるもの、Expression とかがまさにそのまま
イラレ感覚がいいんならイラレ -> xaml のエクスポータ使えばー

903 名前:デフォルトの名しさん mailto:sage [2009/08/19(水) 23:17:21 ]
>>902
ありがとうございました。
xamlテクノロジーは始めて知りました。(勉強不足ですみません。)
xamlについて調べて、フリーの(金がないので) ツールなんかがない
かいググります。どうもありがとうございました。

904 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 23:36:49 ]
イラレってxaml生成できんのか。おどろいた。

905 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 23:49:29 ]
XPSじゃねーのと思って調べたらほんとにXAMLだった



906 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 00:11:20 ]
イラレ10でも出力できますか?

907 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 00:59:00 ]
プラグイン形式のやつはCS以降じゃないと無理なんじゃないかな?
Photoshop(.psd)やIllustrator(.ai)を直接取り込めるようになったBlend 3を使うのが楽だとは思うけど↓みたいなのもある。

XamlXporter for Illustrator
www.codeplex.com/Wiki/View.aspx?ProjectName=xamlxporter

>>903
Inkscapeがオススメ。日本語化されてて標準でXAML出力に対応してる。

908 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 02:14:50 ]
(´・∀・`)ヘー

909 名前:デフォルトの名無しさん [2009/08/20(木) 06:44:32 ]
イラレでコントロールを作成してWPFコントロールにすることは可能なの?

910 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 07:02:50 ]
仮にCanvasしか吐けなくても好きなルート要素で囲んでやるだけで
ユーザーコントロールでもコントロールテンプレートでも作れるはず

911 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 08:27:03 ]
へーへーへー

912 名前:デフォルトの名無しさん [2009/08/20(木) 11:35:37 ]
すいません。教えてくらはい。

VS2008のプロジェクトに*.iniファイルを含めて
プロジェクト出力として一緒に出力したいのですが、
クラスライブラリプロジェクトの場合うまくいきません。

これは仕様でなんでしょうか?

<<設定例>>
ファイルプロパティ
 ビルドアクション:コンテンツ
 出力ディレクトリにコピー:常にコピー


913 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 11:56:20 ]

質問ですが、遅延バインディングにてExcelの単一セルの中に入っている情報を取り出すにはどうすればよいでしょうか?
遅延バインディング レイトバインディング 実行時バインディング いろんな呼び方がありますね。

www6.atwiki.jp/we_hate_sunshine/pages/73.html にありましたコードの一部を参照させていただいております。

// セルデータを2次元配列にいっぺんに読み込みます。
objRange_Late = objSheet_Late.GetType().InvokeMember("UsedRange", BindingFlags.GetProperty, null, objSheet_Late, null);
Object[,] tmpTable;
tmpTable = (System.Object[,])(objRange_Late.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, objRange_Late, null));

↑上記コードはうまくいったのですが、
単一のセルを指定し(Rangeを使うのだと思います)そのセル内のデータを取得する方法がわかりません。

やりたいこと 例)
A1セル「hoge」 の文字列hogeを取得したいです。

試しに書いたコード(実行時にエラーが出たのでできませんでしたが)を乗せておきます。

parameters = new Object[] { "A1",Missing.Value };
objRange_Late = objSheet_Late.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, objSheet_Late, parameters);
Object tmpTable = new object[1];
tmpTable = (System.Object[,])(objRange_Late.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, objRange_Late, null));

こういう雰囲気でいけそうな気がするのですが、わかりません。よろしくお願いします。


914 名前:デフォルトの名無しさん [2009/08/20(木) 18:43:57 ]
Webサーバ機能を、作ってるアプリに付けたいのですが、
単一ループ内でkeep-aliveを処理できるお手軽なアプローチ無いでしょうか?


// listner起動

while (true)
{
 // Context取得 (ブロック)

 // Request処理

 // Response処理

 if (Connection == close)
 {
   break;
 }
}

と言う様な処理を行い、
要は、ソケットの接続〜切断のモデルと近似にしたいのです。

理由は、データ管理や前回のリクエスト/レスポンスに強く依存した処理の為、簡単に回したいと言う感じです。

アドバイスと慈悲を下さい。


915 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 18:52:23 ]
>>912
プロジェクト出力ってセットアッププロジェクトの話?
セットアッププロジェクトでDLLだけ配布するの?

>>914
プロトコルに何使うのさ

>>913
Excelの質問には答えられないけど、エラーの内容ぐらい書いた方がいいんでないか



916 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 18:55:59 ]
>>915
httpです

917 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 20:16:18 ]
>>916
HTTP で keep-alive でのみセッションが維持されるなんて
仕様外の特殊な事考えたりしてるなら
独自プロトコルでやった方がいい

918 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 22:27:31 ]
前回のリクエスト/レスポンスに強く依存した処理ってviewstateじゃだめなん?

919 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 22:37:11 ]
>>914
つまりソケットの接続〜切断のモデルと同じなんじゃね?
ソケットつかえばおk


920 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 23:46:05 ]
.net 3.5、 WinXP VS2008、C#で開発しています。
開発するアプリケーションの利用環境は、Win2003、Win2008、WinVistaなどを想定している開発です。

質問します。
C#でファイル名の整合性を確認する関数はあるでしょうか?
ファイル名に使えない文字を取得する、System.IO.GetInvalidFileNameChars()は知っていますが、これだと
CON, PRN, AUX, CLOCK$, NUL COM0, COM1, COM2, COM3……
のような文字列を調べることができません。

また、開発環境こそWinXP Proなんですけれども、開発するアプリケーションは
クライアント・サーバ方式のアプリケーションで、クライアントからサーバにファイルを作成する形式のものです。

サーバはWin2003かWin2008、クライアントはWinVistaかWinXPです。
そうなってくると、いったんクライアントでファイルを作成して、実際に有効なファイル名かどうかを
確認する手段もOSの差を吸収できるかどうかに疑問が生じます。

このような場合、一体どのようにしてファイル名として有効な文字列かどうか判断したらよいか
教えてください。

お願いいたします。

921 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 23:48:30 ]
最近C#をはじめました。ワケあってちょっと急いで基本を学ばなければなりません。
質問させていただきたいのですが、sqrtやsinなどの数学系の関数を使うとき
Math.Sqrt(2.0)
といちいちMath.をつけるのが(複雑な式をコーディングするときにMathだらけになる)
嫌なのですがこれを書かないでいいようにするにはどうしたらいいのでしょうか。
多分Console.WriteをWriteだけにしたいというのと同じ意味だと思いますが。
よろしくお願いいたします。

922 名前:920 mailto:sage [2009/08/20(木) 23:54:54 ]
ごめんなさい、よく考えたら権限の問題とかもあるので、サーバ側でディレクトリ作ってみて、失敗するかどうかで判断したほうがよさそうです。

質問を取り消します。

923 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 23:56:21 ]
>>921
Math.Sinを呼び出すだけのローカル関数でも作っとけば

924 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 23:56:42 ]
>>919
開発効率が悪いからもっと便利なクラスを使いたいです

925 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 23:58:21 ]
便利なクラスを作れ



926 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 00:00:06 ]
static import は?と思ってしまった・・・orz

927 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 00:16:18 ]
>>923>>925
それはそういうものなのですか。VC#で開発してるとあまりそういうことは
みんな面倒とは思わないためでしょうか?
いずれにせよ、手軽にできるわけではないんですね。ありがとうございました。

928 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 00:18:17 ]
>>927
Math って書くのが普通。とくに面倒じゃないよ。

929 名前:デフォルトの名無しさん [2009/08/21(金) 00:36:50 ]
>>927
オブジェクト指向というのはそういうもの。

930 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 00:52:29 ]
>>927
Math.Sinをコンパクトに記述することを考えるより、
式そのものを簡単にすることをまず考えるべきだろうね。

数学の数式だって同じだと思うけど、式が複雑だっていうなら
いくつかの部分に分けて部分ごとに一時変数に入れるとかね。

まあ数式の場合と違って、数値計算の場合は演算誤差に対する配慮は
必要になるけど。

931 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 01:25:51 ]
using使えば

932 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 01:29:53 ]
Func<double, double> sin = Math.Sin;
とかできねーの?

933 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 01:30:22 ]
>>927
VC#っていうか、フレームワークの関数がいくつあると思ってるん?
全部一発で書けるようトップレベルに置いたらとんでもないことになる。
Mathだけ特別扱いなんて出来ないよ。

934 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 01:37:07 ]
>>927
そういうのは学生のうちに卒業しよう。
プロジェクトメンバーが迷惑するから。

935 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 01:41:10 ]
>>932
できるよ



936 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 01:44:44 ]
>927 うるせーよ

937 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 02:17:22 ]
普段使わない関数がIntelliSenseでわらわら出られたらよっぽど面倒だわね

938 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 06:34:37 ]
ExpressionTree使え

939 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 07:35:53 ]
>>927
その書き方だと「面倒だなぁ……。よくみんな我慢してるよなw」って考えてるみたいだが、
こうやって分類されている方が、長い目で見れば便利なんだ。
このめんどくささはむしろ必要なめんどくささ。いずれわかるよ。

940 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 07:36:37 ]
>>932
Math.を省略したくなるような状況でそんなことしたら遅くなるからやめれ

941 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 08:03:24 ]
コードを書くときには面倒かもしれないけど
コードを読むときには何してるかわかるからいいと思うんだが。
というか実際のところたいした手間じゃないだろう。

942 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 08:07:18 ]
>>939がもっともだと思う

943 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 08:47:45 ]
F#でかけばMath.とか書かずにすむお

944 名前:>>913 mailto:sage [2009/08/21(金) 10:39:22 ]
>>913です。
自己解決したので解決方法を。

parameters = new Object[] { "A1" };
objRange_Late = objSheet_Late.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, objSheet_Late, parameters);
Object tmpTable = new object[1];
→tmpTable = (System.Object[])(objRange_Late.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, objRange_Late, null));

// 「→」行部分実行時に Error:型'System.String'オブジェクトを型'System.Object[]'にキャストできません のエラー

parameters = new Object[] { "A1" };
objRange_Late = objSheet_Late.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, objSheet_Late, parameters);
String str = string.Empty;
str = (System.String)(objRange_Late.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, objRange_Late, null));

MessageBox.Show(str);

無事A1セルに入力されていたValueを取得することができました。
無駄にキャストしていたことが問題だったのですね。エラーみろよっていってくれた>>915さんどうもです。


945 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 16:47:03 ]
Double型をString型に変換する方法を教えていただけませんか?




946 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 16:53:59 ]
ToString

947 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 17:43:13 ]
>>946
ありがとうございます。>>945です
doubleを無理やりstring型にキャストしようとしてました^^;

948 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 17:44:05 ]
キャストの意味を勉強しなおそう

949 名前:デフォルトの名無しさん [2009/08/21(金) 17:51:22 ]
DataGrid へ適当なクラスリストのバインドを考えています。
ただ、表示対象は対象クラスが保持するプロパティの一つに限定したいです。
後々にDataGrid から SelectedItems として、バインドしたクラスのデータを取得を考えます。

ここで、クラスをそのまま ItemsSource へ突っ込むと、クラス名が表示されてしまいます。
こういった場合、特に二行目の部分ではどんな風にすれば対象プロパティのみ表示可能でしょうか。

よろしくおねがいします。

950 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:04:56 ]
全体に意味が分からんが、まずそれはWPFか?

951 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:07:19 ]
>>949
>ここで、クラスをそのまま ItemsSource へ突っ込むと、クラス名が表示されてしまいます。
ここで、クラスをそのまま ItemsSource へ突っ込むと、突っ込んだリスト中のクラスが保持するメンバクラスの名前、でした。

class hoge
{
public int m_hoge;
public foo m_foo;
}

class foo
{

で言う foo です。

m_hoge | m_foo
------+------
 2   | m_foo
 2   | m_foo
 3   | m_foo
 4   | m_foo


952 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:10:29 ]
>>950
WPF というか、 Silverlight でやってます。



>>951 では途中で送信してしまったので、続きです。

class foo
{
public int m_x;
public int m_y;
}

ここで、 foo というクラス名ではなく、数字の x を出力したい。


953 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:10:59 ]
パブリックプロパティ用意すりゃいい

954 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:18:24 ]
XAML側でどのプロパティを表示するかの指定があったはず−。
それにしてもpublicなフィールドでm_って気持ち悪い命名規則だね。

955 名前:デフォルトの名無しさん [2009/08/21(金) 18:27:16 ]
>>954
ありがとうございますっ!
そういうのを探していました。
とても助かりました。



956 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:51:19 ]
アクセサを使いましょう

957 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:53:43 ]
XAMLのバインディングってわかりづらいよね
もとより人間が書くものじゃないんだろうけど

958 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 19:01:24 ]
>>956
アクセサって get とか set ですよね?
XAML と合わせて検索しても、どうにも分らないです。
すみません。

バインディングの記述に利用する識別子でしょうか?

>>957
未だにクラス名やそのメンバ名を直接 XAML ファイルに記述するのが気持ち悪くて仕方ありません。
慣れの問題でしょうか……。

959 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 19:20:53 ]
BindingのPathは . 使ってプロパティのプロパティを指すこともできる
つかフィールドってバインディングできたっけ? プロパティじゃないとダメな気が

> 未だにクラス名やそのメンバ名を直接 XAML ファイルに記述するのが気持ち悪くて仕方ありません。
XAMLに記述するのはViewModelのクラスのだから問題ない

960 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 19:23:48 ]
>>942
>>927の考えは>>939やチミが勝手に心配しているような意味じゃないと思うぞw
別にクラスの中にしかメソッドが存在できないのがウザい、
というような意味のことは言ってないだろう。

っていうか、複雑な計算式をベタにコーディングしたら
>>927のように思うのはむしろ普通のこと。
実際見難くくてかなわんよ。

だから>>930のようにアドバイスするのが正しい。

しかし、今に始まったことじゃないけど本当シロートがシロートに講釈垂れる
図式が多すぎるなここ。

961 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 20:55:24 ]
>> 未だにクラス名やそのメンバ名を直接 XAML ファイルに記述するのが気持ち悪くて仕方ありません。
>XAMLに記述するのはViewModelのクラスのだから問題ない
どうにもバインディングを勘違いしていました。
特に制約無く作ったデータでもバインディングは行えるものとして考えていました。
バインディングは特定のインタフェースを実装したクラスしか不可能なのですね。

962 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 21:01:05 ]
>>961
>バインディングは特定のインタフェースを実装したクラスしか不可能なのですね。
違う。
設計の問題で、バインディング自体にそういう制限は無い。

963 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 00:13:55 ]
>>960
このレベルの自分で頭使わないで文句言うタイプには「黙って書いとけ」が正しい。

964 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 00:39:36 ]
""(空文字列)との比較は以下のどれがいいですか?
それぞれのメリット・デメリットを教えてください。

@str.Equals("")
AString.Equals(str, "")
Bstr == ""
Csrt.Length == 0
D"".Equals(str)

965 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 00:45:34 ]
個人的には3
他は4以外objectで比較できちゃう
14はstrがnullのときを考慮しないといけない

でも大体はString.IsNullOrEmptyで片付けるかな



966 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 00:46:47 ]
あくまで個人的な意見だけど。
俺は「str==""」が一番シンプルかつ直感的でいいと思うね。

1. 参照アドレスの比較と差別化するという意味合いはご尤もだが…。ここまでする必要あるかなぁ。
2. 冗長。
4. 使う場面による。文字列自体に着目した流れで来てるのか、
  文字列の長さに着目した流れで来てるのか、というのが判断基準。
5. これは逆。どういう意図でこう書くんだろう。

967 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 00:58:15 ]
5の書き方はJavaかなんかでこうするのがイイ
みたいなのがどっかに載ってた気がする(そして当然叩かれてた)

C#だと3かIsNullOrEmptyだよね。

968 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 01:05:59 ]
fxcopにIsNullOrEmpty使えっていわれたような

969 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 01:14:50 ]
C#の世界でも割と「==使うなEquals()使え」っていう教条主義的意見は
見かけるね。

というか、俺の見解では、そもそも==がデフォで参照等価の検査なのが直感的じゃない。
少なくともこれに関してはVBの方がまともに感じる。
つまり、参照等価の検査用には別の演算子を導入することにして、==の方は
値等価用にオーバーロードしないと使えない方が分かりやすい。

まあそれを言うと、そもそもC由来の=と==からして逆なんじゃないのかとも思うが…

970 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 01:34:35 ]
しかし値の同一性ってのはデフォで定義できない

971 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 01:40:47 ]
Estr == string.Empty

972 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 01:42:52 ]
IsNullOrEmpty 派です。

973 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 02:14:56 ]
>>966
>5. これは逆。どういう意図でこう書くんだろう。
これはリテラルのequals()呼び出しだから、コンパイラが最適化してくれる
可能性がある、という説明で自分は納得した。
実際のところ本当かは検証したわけじゃないけど、どう再定義してるかわか
んないstrのequals()を呼び出すよりは速い可能性があるというだけで充分
に意味はあると考えてる。

974 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 02:22:55 ]
Javaでの話だけど、str.equals("")だとstrがnullのときにぬるぽの例外になるので、
"".equals(str)がいいんだって言っていた。
でも、まともな意見の人は"".equals(str)に否定的な人が多いという印象。

975 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 02:25:37 ]
君の印象ではなく「まともな意見」でどう否定したかが重要。



976 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 02:29:39 ]
つか str.Equals("") とほぼ等価でかつ str が null でも大丈夫だから
だろ。2 と 3 がほぼ同じ意味であることを除けば他は意味とか前提が
色々微妙に違う

977 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 02:57:02 ]
class Tuple<T1,T2>{ T1 _t1,T2 _t2}(アクセッサとか省略)みたいな奴で
Tuple<Hoge,HogeHoge> tuple1,tuple2の比較したいときに、class でなくstructなら_t1,_t2が各々==でtrueの時tuple1==tuple2になるんだっけ?
classでEqualsとかoverrideするのめんどくさいよ(´д`)ママン…
属性とかの指定一発でやってくれ・・・

978 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 03:46:49 ]
>>964
俺も>>971と同じ書き方するな。
でも null と空文字列で特別に違う意味がなければ IsNullOrEmpty を使う。

979 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 05:58:42 ]
str.Equals(string.Empty)か
String.Equals(str,stringEmpty)
だな。

javaと違って参照でも'=='が使えるのは知ってるんだけどね。


980 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 06:46:21 ]
String以外にも話を展開してみる。

Equalsはタイプセーフではない。
Equalsをoverrideするなら==、!=もoverrideしなければならない。
a.Equals(b)はnullチェックが面倒なので、Object.Equals(a,b)が有効。


981 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 06:50:49 ]
タイプセーフでないというのは事実だけど、型を意識しないで比較するのは個人的にはなしだ。
ライブラリ製作者と使用者で意見が食い違うところか。

982 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 07:22:05 ]
10.0と10は違うのか?→時と場合と人による
"a"と'a'は違うのか?→〃
10と10は違うのか?→〃

しかし”参照”としての比較はドメインが”参照”に固定されているので混乱しない
値の比較はドメインが固定できないので混乱する
値の比較であーだこーだ言っていてもはじまらね

983 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 07:35:17 ]
>>968はこれか
msdn.microsoft.com/ja-jp/library/ms182279.aspx

それはそうと次スレは?

984 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 08:59:39 ]
>>980
>タイプセーフではない。(
値型以外では使うことはまずないけど
IEquatable<T>.Equals(T o)
>Equalsをoverrideするなら==、!=もoverrideしなければならない。 
Stringのようにimutableでない限りは==や!=演算子のoverrideはするべきではない。

985 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 11:02:53 ]
なんで



986 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 12:31:41 ]
次ぎたててくる

987 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 12:34:22 ]
C#, C♯, C#相談室 Part54
pc12.2ch.net/test/read.cgi/tech/1250911923/

はい

988 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 12:44:02 ]
>>987
^^

989 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 13:00:55 ]
.NET 4では2.0の部分のパフォーマンスの向上とかあるのかな?

990 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 13:09:55 ]
BCL部分はC#4.0などにあわせて確実に手が入るけど
WinFormsはどうせ放置だろ

991 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 13:36:55 ]
>WinFormsはどうせ放置だろ
せっかく枯れてきたのに手を入れられてもねぇ…

992 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 13:40:42 ]
2005以降に追加されたコントロールのバグはしっかり直してくれないと
困ると思うけど…

toolstrip関連はバグ多過ぎなんだよ本当。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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