1 名前:デフォルトの名無しさん [2009/01/20(火) 21:47:33 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。
320 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:25:30 ] >>318 hProcessがnullなんじゃね? Process.Startの戻り値は >プロセス リソースに関連付けられた新しい Process コンポーネント。 >プロセス リソースが起動されなかった場合は null (既存のプロセスを再利用した場合など)。 シェル(explorer.exe)の場合、新しいフォルダを新規プロセスで開く設定にしてないと プロセスは作られないよ
321 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:26:05 ] だっふんだ!m(__)m
322 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:27:54 ] 2つ以上の評価をするときに使えそうだな
323 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:34:01 ] >>316 これだけど、糞味噌に書かれててワラタ ttp://www.amazon.co.jp/C-%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3-%E3%82%B8%E3%82%A7%E3%83%BC%E3%83%A0%E3%82%BA%E3%83%BBW-%E3%82%AF%E3%83%BC%E3%83%91%E3%83%BC/dp/4822281698/ref=sr_1_1?ie=UTF8&qid=1233066091&sr=8-1 アレな感じのコメントもいくつかあるけどw
324 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:43:52 ] >>323 たしかにレビューはあれだw でも書名出してくれてありがとう
325 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:49:35 ] >>320 おお。なるほど。explorerを新規プロセスで開く方法は?
326 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:53:26 ] (´・ω・`)しらんがな
327 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 00:12:24 ] >>244-250 レスサンクス。参考になった。
328 名前:デフォルトの名無しさん [2009/01/28(水) 05:02:41 ] C#でのExcel操作(自動化)について質問をさせてください。 dataGridViewから入力した内容を取り出し、Excelに出力をしたいのですが 以下のコードの時、数値を入力した場合のみ、「数値が文字列として保存されています」と表示され、エラーが発生します。 どのようにすれば文字列ではなく数値で出力をする事ができるのでしょうか? string[,] table = new string[10,1]; for (int c = 0; c < 10; c++) { table[c, 0] = dataGridView1.Rows[c].Cells[0].Value.ToString(); } sheet.get_Range("A1", "A10").Value2 = table;
329 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 08:15:48 ] object[,] tableにしてToString()しなきゃいいんじゃね?
330 名前:初心者 [2009/01/28(水) 14:28:58 ] C#.NETについて質問させてください。 MVCアーキテクチャでWebサイトを構築していますが、XMLファイルより、 使用クラス名を読み取り、動的に使用クラスのインスタンスを生成する為に、リフレクション 機能を使用したいのですが、Type.GetType()メソッドやAssembly.GetType()メソッドなどの 戻り値がNULLになってしまいます。GetType()メソッドを使用するクラスと同じファイルに、 インスタンス生成したいクラスのクラス定義を書くとうまくいくのですが、別ファイルにすると、 うまくいきません。 詳しい方ご教授お願いします。
331 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 14:41:07 ] 完全限定名で書いてないとかそんなんだろ 初心者名乗る奴がリフレクションとかどうよと思うけど
332 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:31:31 ] Dictionary<Key, Value>と同様な追加/削除/検索が行えて ValuesプロパティがObservableCollectionみたいに変更通知機能がある そんなコレクションってありませんか?
333 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 16:52:04 ] Dictionary<,>とObservableCollection<>の両方をラップした IDictionary<,>の実装クラスを作ればいいよ ほとんど丸投げだからそんなに手間はかからない
334 名前:デフォルトの名無しさん [2009/01/28(水) 17:22:34 ] パラメータをバインドする機構がない ってどういう意味ですか?初心者にはさっぱり
335 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 17:31:18 ] コンテクスト(文脈)って知ってる?
336 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 17:51:08 ] 文脈って意味じゃないでしょうか?!!!!
337 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 20:22:00 ] そういえばインデクサやStreamのサイズ指定はint型だけど 64bit環境だとどうなるの? アドレス空間が64bitになっても4GBに縛られるの?
338 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 20:37:22 ] >>337 uintでないから2Gだな。 しかし、ストリームなら2GBずつRead/Writeすればいいし、 List<T>でもTが例えば16バイトの構造体なら全部で32GBまでいける。 もっとも、そんな大量のメモリを一度に扱おうというのなら、 まだまだネイティブなコードのほうがいいだろうと思うのは俺だけか?
339 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 20:43:20 ] インデクサはどんな型でも使えるだろ。
340 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 21:49:42 ] 配列の添え字はlongでいけなかったっけ?
341 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 22:02:41 ] NativeIntなんで64bitプロセスなら可能のはず
342 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 01:22:12 ] >>340 配列の添え字にはlong型の値も使える。 そのため、配列にはint型のLengthプロパティに加えてlong型のLongLengthプロパティもある。 32bit環境でも一応、 int[] arr = new int[ long.MaxValue ]; と書けるし、コンパイルもできるのだが、>>341 の言うとおり、NET.Framework内部では配列の 添え字をNativeIntで処理しているので、実行するとOverflowExceptionが発生する。 内部でNativeIntの範囲を超える添え字を扱えるようにしても、そんな配列を確保した時点で メモリ不足に陥るのは自明なので、合理的な仕様なんじゃないだろうか。
343 名前:テラ初心者 [2009/01/29(木) 17:01:11 ] 引数・・・メソッドを呼び出す際に渡す情報のこと。 なんのことかサッパリわかりません。メソッドもなんかの処理なんだろうなあ位にしかわかってません。 何がなんのために何に何の情報を渡しているのですか????
344 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 17:04:07 ] まず@ITのC#入門でも読め
345 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 17:05:56 ] 釣りでしょ
346 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 17:41:47 ] TVのリモコンでチャンネルの上下は引数なしだが、一発選局はチャンネル数が引数といえる。
347 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 17:46:24 ] tv.SelectChannel(-1, CURRENT) とか書きうるわけだが
348 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 17:51:56 ] せっかくメソッドにしてるのだから Up() Down() だろ。 なんで使いにくくするんだ。
349 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 17:52:47 ] リモコンのボタンで、CURRENT、-1、チャンネルチェンジと押すわけですね、その形式だと。
350 名前:デフォルトの名無しさん [2009/01/29(木) 17:55:29 ] ほむほむ。ありがとう。Voidとかで引数を返さないっていうのはどういうメリットがあるというか、どういうときに使うのでしょう? チャンネルでいうと、8ちゃんボタン押しても数字が入っていないので何も起こらないのかな。
351 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 17:57:23 ] voidで値を返さないメリットがあるかじゃなくて 値を返すメリットがないからvoidなんだろ
352 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 18:04:06 ] それ引数じゃなくて戻り値では
353 名前:デフォルトの名無しさん [2009/01/29(木) 18:10:46 ] private void CalcButton_click(object sender,EventArgs e) { } 作って覚えるC#の本より引用なのですが、これからVoid取っちゃうと何か不具合ありますかね?
354 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 18:11:34 ] やってみればわかる
355 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 18:11:51 ] イベントから学習しろ
356 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 18:12:01 ] >>353 戻り値が分からなくてエラー出る
357 名前:デフォルトの名無しさん [2009/01/29(木) 18:15:19 ] なるなる。ありがとう。やっぱり読むだけじゃ覚えれなそうですね 6年前のPCにVisualStudio入れたら重くなって挫折してしまいました
358 名前:デフォルトの名無しさん [2009/01/29(木) 18:17:08 ] デフォルトのvoidさんは無いのか。 2CHよりひでーな。
359 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 18:18:33 ] >>357 csc.exeのあるディレクトリにPATHだけ通せば あとはコマンドプロンプト+エディタで最低限の環境が揃うぞ ネットで適当に調べてやってみるといい
360 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:40:32 ] 頻繁に呼ばれる関数で newを使うのって速度かなり落ちますか? 画像データ用の領域で、一度に640*480*4バイト確保します。
361 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:42:02 ] 関数を呼ぶのに new は必要ない。
362 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:44:47 ] >>361 日本語読めますか?
363 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:45:07 ] 落ちますか? ってやってみればいいじゃない newを使うかどうかよりも1MBを頻繁に確保するのは重いかもね ワーキングセットも大きくなるだろうし
364 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:48:19 ] コンピュータの性能が良すぎて問題ないという可能性もある。 まずは率直な書き方で作ればいい。
365 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 21:49:23 ] キャッシュしても問題ない構造ならとりあえずキャッシュするようにしといてもいいとおもうよ 手間かかるものでもなし
366 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 01:03:05 ] >>362 日本語で書いてどうする?
367 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 01:18:14 ] >>366 日本語通じてなくてワロタ
368 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 08:50:41 ] >>366 アイちゃん乙
369 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 08:52:34 ] 安価ミス >>361 な
370 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 10:57:19 ] ArrayListやList<T>において、 list.Add(new T()) といった感じで配列に追加している場合、 削除系メソッド(Clear、Remove、RemoveAllなど)実行したときに配列内のクラスのインスタンスは 開放されないのでしょうか?
371 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 11:01:05 ] その要素を他が参照してなかったらGC対象になる
372 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 11:09:48 ] >>371 そういうことなのですね。ありがとうございました。
373 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 15:09:36 ] "バイト"や"キログラム"のような単位を表す文字列を 設定されたカルチャに応じて取得できるクラスないですか?
374 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 15:22:26 ] 標準ライブラリには無い 複数形とか考えると多分作るのは不可能に近い
375 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 18:15:54 ] 不可能ってこたねえだろ
376 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 18:46:52 ] >>375 渦中って読めますか?
377 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 18:51:34 ] 俺もそんなクラスほしい 標準であってもいいよね 関係ないけど「OK」「キャンセル」「適用」 とかも欲しかった
378 名前:デフォルトの名無しさん [2009/01/30(金) 19:14:29 ] ってか、C#おもろいけど、GUI案件がないからモチベあがんないんだよね。言語的にはいいんだけど。 しょうがないから、ASP.NETもじもじやってる。
379 名前:デフォルトの名無しさん [2009/01/30(金) 19:47:32 ] C#とついでにSilverLigitもやったんだけど、案件が全然ねえ(;´д`)俺は馬鹿だったのか?
380 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 19:54:31 ] わざわざ.netを指定してくる企業って皆無では・・・
381 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 20:20:23 ] おれずっとc#でやってたよ。MSとちょっと関係ある会社だけど
382 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 20:21:56 ] VS2008 + .net2.0 dirフォルダ内のサブフォルダの中身も含めたファイルの個数を出したいです。 using System.IO; string[] files = Directory.GetFiles( dir, "*", SearchOption.AllDirectories); として、files.Length を数えてるんだけど、ファイル数が5000とかあるフォルダを 検索しなくちゃならないので、さすがに遅いです。 この段階ではファイル名のstringは使わないので、個数だけで良いのですが、 サクっと出せるような方法ありませんか?
383 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 20:48:30 ] ないよ 遅いのは結局IOであってファイル名とかはほぼ関係ない
384 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 20:49:49 ] >>383 了解しました。 我慢します。
385 名前:デフォルトの名無しさん [2009/01/30(金) 21:01:30 ] Rectangle rect; rect = null; としたところ、Rectangle 型なのでnullは入れられないと言われました! VB.NETだと、どんな型の変数にも Nothing を入れられるのでつい同じかと 思っていました。どうやったら同等の処置が可能でしょうか、よろしくお願いします。
386 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:04:19 ] VBでも本当にNothingを入れることはできないよ Rectangle? rect; rect = null; ※使うときはRectangleにキャストすること
387 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:05:31 ] >>385 Rectangleは値型だっけか。これでどうだ。 Rectangle? rect = null;
388 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:13:03 ] >>385 VB の Nothing は null じゃなくて Zero Fill な値(既定値)だからな C# 的には null と既定値は区別される。C# 的には VB の Nothing は default(T)。 なので VB の Nothing 代入に近いのは var rect = default(Rectangle); だぁね
389 名前:デフォルトの名無しさん [2009/01/30(金) 21:15:16 ] >>386-387 どうもです。やってみましたところ、キャストを入れた上で一応解決かと思った のですが、一つだけ問題がでました。Contains()メソッドを使っているところで 'System.Nullable<System.Drawing.Rectangle>' に 'Contains' の定義がありません というエラーとなりました。これは if ((Rectangle)rect.Contains(e.Location)) {・・・} のように使ってみたのですが、他の書き方しないとだめでしょうか。
390 名前:デフォルトの名無しさん [2009/01/30(金) 21:18:27 ] >>388 ご教示どうもです、知りませんでした。 >なので VB の Nothing 代入に近いのは >var rect = default(Rectangle); こういうのもあるんですか!この場合は if (rectG != null){・・・} のように使えるでしょうか。そうだ、やってみます。
391 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:19:56 ] ((Rectangle)rect).Contains >>390 できません rectG!=default(Rectangle)ならできるけど(0, 0, 0, 0)とは区別できないよ
392 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:23:29 ] defaultはgenericで使うことを前提に作られているんで若干癖がある。 Rect(0,0,0,0)に初期化することが目的なら var rect = new Rectangle(); 未初期化のRectangleが欲しいのなら Rectangle rect; でいい。
393 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:24:41 ] >>390 おおっと。 いや VB 使っているうちは VB の流儀でいっていいと思うんだが C# に来たんだから C# の流儀にあわせて区別しような。 Rectangle? val = null; のほうを使えってことだけど。 >>389 のほうは rect.Value.Contains(e.Location) な。 null だったら例外出るが。例外がいやなら if( rect.HasValue && rect.Value.Contains(e.Location) ) かね。
394 名前:デフォルトの名無しさん [2009/01/30(金) 21:24:56 ] >>391 >((Rectangle)rect).Contains 早速ありがとうございます、これで大丈夫でした、助かりました。 >rectG!=default(Rectangle)ならできる わかりました。いろいろご教示ありがとうございました! 皆様本当にありがとうございました!またよろしくお願いします!!
395 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:26:18 ] うぽ! (rect ?? new Rectangle()).Value.Contains(
396 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:26:39 ] っていうかVBでも値型をNothingと比較するのはダメだろ ゼロ初期化されたものと同じとわかっててやるならいいけど,>>394 はわかってなさそう
397 名前:デフォルトの名無しさん [2009/01/30(金) 21:31:15 ] >>392 >>393 >>395 C#の凄い表現のバリエーションにびっくりです、またこれから勉強致します。 >>396 わかってなかったです。すみません・・・。 ではまた。
398 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:33:38 ] Rectangleをnullと初期化したあとにどう使うんだろう・・・
399 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:40:02 ] フラグ代わりだよ Rectangle rect; bool isRectAssigned; みたいなのってよく出てくるだろ これを一つにまとめたのがnullable
400 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:43:05 ] IList<T> list = new List<T>(); とかやってたら、IListの方にはForEach()がなくて涙目なんだけど、そういうもんなの?
401 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 21:55:52 ] ForEachぐらい自分で書けばって
402 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 22:07:07 ] nullable ってキモいからまだ使ったことがないな すこし慣れてみるか……
403 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 22:09:46 ] 拡張メソッドで自作するのは簡単 でもEnumerable.ForEachが無いことを考えると,素直にforeach書けということなんだろうと思う
404 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 22:26:01 ] WPFではShowDialogの戻り値がbool?になってたりするね
405 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 22:48:24 ] 正確に20msで処理をしてFORMのPictureBoxを触りたいときは、 BackgroundWorker+System.Timers+AutoResetEventでいいですか? 他にもっといいやり方があるんなら教えて欲しいのですが…orz
406 名前:デフォルトの名無しさん [2009/01/30(金) 22:57:49 ] >>405 > 正確に20ms まずこれが難しい。timeBeginPeriod か MMCSS 使えば ある程度いけるかもしれないけど、あくまである程度。 さらにいいやり方となると Forms 使うのが間違ってる。
407 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 22:58:20 ] 20msは厳しいんじゃないの 更新間隔は20msよりも長くして, そのつど経過時間を計測してそれから計算してその結果をもとにしてPictureBoxを更新したほうが
408 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:06:23 ] コールバック間隔は,Application.Idleイベント使うなり自分でメッセージループ回すなりして その中でStopwatch使って時間計測すればある程度正確にできるけど フォームの更新が20msでは絶対無理
409 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:27:55 ] 20msってどこから来たの? 測定機械のタイミングとか? GUIの更新は後回しにした方がいいんじゃね?
410 名前:デフォルトの名無しさん [2009/01/31(土) 00:53:40 ] 20msってWindowsのインターバルタイマーで拾えるの? 割り込み上がっても、処理が間にあわん気がするんだけどね リアルタイムOSでというのなら分からんでもないけど。 #組み込み用が対象なのかな? 割り込み->データをFIFOQueueに追加->queueのデータをGUI処理 になるんだろうけど(sharedメモリ経由か) #割り込みコンテキストってWinにはあるのかな?
411 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 02:40:33 ] いつも思うんだが、なんか2chって日本語として成立してない質問でも適当にESPを働かせて、 (というより、回答する側も他人の文章を正確に読解する能力がないだけ、という方が より真相に近いと思うんだが)回答する奴が多すぎないかね。 >>405 「正確に20msで処理をして」とはどういう意味? 正確に20ms間隔でイベント処理をしたい、って意味なの? いずれにしても、「正確」という表現はもっと定量的な表現にする必要があるだろ? 仮に20ms間隔でGUIを更新したい、って意味だとしたら、 今時のPCなら単純にSystem.Timers.Timer使っても±5ms以内の誤差で可能だと思うけど。 少なくとも、平均速度として50回/秒が実現できればいいということなら (意味があるかどうかは別として)ほぼ確実に出来ると思う。 もちろん糞重い描画処理をしてたらあっという間に破綻するけど。 いざとなったらスレッドでThread.Sleep(0)と、Stopwatchをポーリングして 20msごとにControl.BeginInvoke()を実行する無限ループで実装したっていいし。
412 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 04:51:35 ] えらい自信だからためしに作ってみたけど System.Timers.Timerなんて無茶苦茶ばらつくじゃないか
413 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 09:07:32 ] エスパーで解釈すると、 20msecでコントロールのアップデートはありえないから、 CreateGraphics()で得たGraphicsで直接描こうとしている。 CreateGraphics() + GDI+メソッドは別スレッドからでも使える。 こういう用途にはFormかPanelが適当なのだけどVB6以来の伝統かPictureBoxを使いたがる人が多い。 Timers.Timerはタイマーイベントの処理時間分、間隔がずれてゆくはずだからその分の解消をしたい。 そんなとこだろ。
414 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 11:17:09 ] >20msecでコントロールのアップデートはありえないから、 >CreateGraphics()で得たGraphicsで直接描こうとしている。 じゃあオフスクリーンにも20msecで描画する必要ないじゃん
415 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 11:41:59 ] へっぽこエスパーばっかりだな とくに>>411
416 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 11:52:58 ] >>414 オフスクリーン というのはどこから出てきたんだ?
417 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 11:58:29 ] まあ>>405 が来るのを待とうじゃないか
418 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 11:58:36 ] どうやってもGDI+で20msは厳しいでしょ
419 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 11:59:47 ] オンでもオフでも問題の本質は一緒でしょ >20msecでコントロールのアップデートはありえない のなら20msec間隔で描画する必要がない
420 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:01:13 ] そのオン、オフというのを説明してもらいたいのだが・・・
421 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:02:12 ] ダブルバッファリングじゃないの
422 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:06:59 ] へっぽこエスパーダブルバッファリングも知らないのかよ
423 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:09:33 ] やっぱりダブルバッファのことね。それを使うとは一言も言ってない。 フォームにパネルとSystem.Timers.Timerはって、20msecに設定でこれ。 Font stockFont = new Font(FontFamily.GenericMonospace, 14); int locs = 0; private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { using (Graphics g = panel1.CreateGraphics()) { g.FillRectangle(Brushes.Blue, new Rectangle(8, 8 + 28 * locs, 14 * 20, 28)); g.DrawString(Environment.TickCount.ToString(), stockFont, Brushes.Yellow, 10, 10 + 28 * locs); locs++; if (locs >= 5) locs = 0; } }
424 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:24:11 ] Direct3Dでも使わないと描画間に合わないだろ
425 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:24:57 ] へっぽこエスパー ありえないとか言いながら20msecでコントロール(panel)のアップデートしてんじゃねーよ
426 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:33:10 ] なんか子供だなぁ。 ありえないのは、Control.Invokeを使うこと。 他のスレッドからだからPanel1.Update()も使えない。 Timers.Timerをフォームに貼り付けてと書いたけど、実際はコードでnewしてる。 フォームに張りつけた場合は、ここだけthisからnullに変更してくれ。 this.timer1.SynchronizingObject = null;
427 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:36:52 ] WindowsXP、VisualC#2008環境で質問があります。 フォルダの[ツール]-[フォルダオプション]で表示できるフォルダオプションのウィンドウを開くには、なにを呼び出せばいいですか? 可能なら、表示オプションのタブをクリックした状態にしたいです。 どなたかご教示ください。よろしくお願いします。 この中身を編集するということは、レジストリをいじるということかと思いますが、その場合、どのような方法を取ればよいでしょう? 違っていたらご指摘いただけないでしょうか。
428 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:37:52 ] だから描画間に合わなかったらどうすんの? >>423 くらいの処理なら間に合わないこともないかもしれないけど一時的に遅れることだってあるだろ
429 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 12:46:55 ] >>428 それで>>405 がAutoResetEventと書いてるのだと思うよ。 つまり間に合わなかった場合は、その分間隔を遅延させるか1回か数回とばすか。 実現する方法はいくつかあるが、AutoResetEventを使うのはとばす方のロジックで使える。 この辺は普通にゲームの描画のアルゴリズムだと思うんだけどな。
430 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 13:17:19 ] >>427 Vistaだったら ::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{6DFD7C5C-2451-11D3-A299-00C04F8EF6AF} なんだけど。これをShellExecute。 XPはシラネ あとはRegistryクラスで編集、WM_SETTINGCHANGEDをブロードキャストとかかのう
431 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 14:38:10 ] で20ms間隔で描画できたかい?そんなコードだと無理に決まってるけどw
432 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 14:41:32 ] Expression Treeで動的生成されたメソッドって一回作ったらそのまま解放されないの? 頻繁に式木作って評価するならインタプリタ作った方がいいのかな
433 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 14:50:43 ] クラスデザイナの関連付けってなにしてくれるの? 関連付けされたクラスのコンストラクタが、 関連元クラスに追加されるみたいだけど、何につかうんだべ。
434 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 14:56:27 ] System.Threading.Timer使ってConsoleアプリケーションで、 コールバックは、 ・1000回呼ばれたら終了イベント上げる ・開始前と最後のコールバック時に時刻表示 メインは ・1秒後から20msecでコールバックするようにタイマーセット ・終了イベントが上がってきたらタイマーをdisposeして終了 という事実上タイマーが使われるだけで何もしないサンプルをためしに 作ってみたが、32秒かかるよ。最初の1秒待ち差し引いても、平均31msec 呼ばれるのにかかってる。
435 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 15:36:14 ] >>434 20msecといってるのは>>405 でTimers.Timerにこだわる必要もないのだが。 ただ1000回で31秒かかるというのはおかしいな。 長いがコードはるね。Celeron1.4G WinXPで00:00:20.0493193だった。 using System; using System.Threading; class Startup { void Test() { using (var timer1 = new System.Timers.Timer()) { timer1.Interval = 20; int counter = 0; timer1.Elapsed += (o, e) => { if (++counter >= 1000) lock (this) Monitor.Pulse(this); }; var sw = System.Diagnostics.Stopwatch.StartNew(); timer1.Start(); lock (this) Monitor.Wait(this); timer1.Stop(); sw.Stop(); Console.WriteLine(sw.Elapsed); } } static void Main() { new Startup().Test(); } }
436 名前:デフォルトの名無しさん [2009/01/31(土) 16:30:27 ] Directoryを外部から隠蔽したいのですが、どんな感じに実装したらいいですか? private Directory<int,int> _dic; public Directory<int,int> dic{ get ... set ... } みたいにそのままプロパティにしちゃうと、外からdic[key]=1;って叩けないですよね?
437 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:37:42 ] >436 public int this[int key] { get { return _dic[key]; } } みたいに隠蔽して必要な値を取得できるメソッドとかだけ公開すれば操作はしようがないので堅いよ。
438 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:47:53 ] >>436 外から叩けちゃうと隠蔽にならないんだが、そのコードなら別に外から叩けるな。
439 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:48:30 ] 内部にラップしてるDictionaryをそのままの型で公開しちゃったら隠蔽にならないから
440 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:58:52 ] >>435 >ただ1000回で31秒かかるというのはおかしいな。 >長いがコードはるね。Celeron1.4G WinXPで00:00:20.0493193だった。 ハードウェア割り込みタイマーの周期次第じゃないの? この周期はどこかのアプリがtimeBeginPeriodを使うだけで 簡単に変わるから、単純にOSとCPUだけ並べて おかしい/おかしくないとは言えないよ。 Windowsだとデフォルトの割り込み間隔が16msecってのはよくある値だし 20msecのタイマーを仕掛けたら32msecごとにコールバックされていた と考えればむしろ辻褄があう。(32msec×1000で約32s) >>434 の環境でメディアプレイヤーなんかを同時に起動してるだけで 結果は変わるんじゃないかね。
441 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:05:31 ] 単に終了イベントを待つのにビジーループさせてるんとちゃう
442 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:12:00 ] C#で、書き方を迷っているんだけど、ちょっと相談に乗ってくれないか 例えば、ファイルコピーをするメソッドで、コピー元が無ければ例外を発生する場合 public bool CopyTo(string fromFileName, string toFileName) 1) if (!this.GetIsFileExistsfromFileName, throw new FileNotFoundException(); System.IO.File.Copy(fromFileName, toFileName, true); return true; 2) if (this.GetIsFileExists(fromFileName), { System.IO.File.Copy(fromFileName, toFileName, true); return true; } else throw new FileNotFoundException(); 上下のどちらがいいのかな。
443 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:13:15 ] それを踏まえて、さらにコピーの上書不許可時にコピー先にファイル名存在でfalseを返すとき public bool CopyTo(string fromFileName, string toFileName, bool canOverride) 1) if (!this.GetIsFileExists(fromFileName)) throw new FileNotFoundException(); if (!canOverride) { if (this.GetIsFileExists(toFileName)) return false; } System.IO.File.Copy(fromFileName,toFileName, false); return true; 2)//ビルド時にエラーになるかも if (this.GetIsFileExists(fromFileName)) { if (canOverride) { System.IO.File.Copy(fromFileName,toFileName, false); return true; } else { if (this.GetIsFileExists(toFileName)) return false; } } else throw new FileNotFoundException();
444 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:13:52 ] 3) if (this.GetIsFileExists(fromFileName)) { if (!canOverride) { if (!this.GetIsFileExists(toFileName)) { System.IO.File.Copy(fromFileName,toFileName, false); return true; } } } else throw new FileNotFoundException(); return false; こんな書き方があると思うんだけど、見やすいというか、わかりやすい書き方が思いつかない。 なんかいいアイデアないかな・・
445 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:14:35 ] 引数チェックは上にまとめたいから1
446 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:15:19 ] bool返す必要があるのか疑問ではある
447 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:18:02 ] 説明がないとわからないようなbool値を返すな
448 名前:434 mailto:sage [2009/01/31(土) 17:21:02 ] んじゃおれも貼ってみる。ヘルプのサンプル改変だけど、どこかおかしい? using System; using System.Threading; using System.Collections.Generic; class TimerExample { static void Main() { AutoResetEvent autoEvent = new AutoResetEvent(false); StatusChecker statusChecker = new StatusChecker(1000); TimerCallback timerDelegate = new TimerCallback(statusChecker.CheckStatus); Timer stateTimer = new Timer(timerDelegate, autoEvent, 1000, 20); autoEvent.WaitOne(60000, false); stateTimer.Dispose(); } } class StatusChecker { int invokeCount, maxCount; public StatusChecker(int count) { invokeCount = 0; maxCount = count; Console.WriteLine(DateTime.Now); } public void CheckStatus(Object stateInfo) { AutoResetEvent autoEvent = (AutoResetEvent)stateInfo; if(++invokeCount == maxCount){ Console.WriteLine(DateTime.Now); autoEvent.Set(); } } }
449 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:27:03 ] >>435 のコードを実行してみた Pentium4@2G WinXP .NET 3.5SP1 結果 00:00:31.2455778 というわけで31秒かかる環境はここにもある。
450 名前:434 mailto:sage [2009/01/31(土) 17:34:00 ] >>435 のコードは31.193秒だった。同じだね。 Vista Home Premium Core2 Duo T7300@2.00GHz
451 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:38:53 ] >>448 こちらは、21-22秒で完了。起動時の1秒待機があるから20.5秒くらい。 >>440 の説が正しいなこりゃ。
452 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:45:43 ] 戻り値と例外モデルが混在してるのがイライラする。
453 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:50:32 ] リアルタイムOSじゃないんだから無理ってのが出ないのはそこまでの正確さは求めていないってこと?
454 名前:434 mailto:sage [2009/01/31(土) 18:08:02 ] しつこいが、System.Windows.Forms.Timerでも試してみた。 private void timer1_Tick(object sender, EventArgs e) { label3.Text = (Convert.ToInt32(label3.Text) + 1).ToString(); } というカウントアップをリアルタイム描画。 1000回回して31.24秒だった。 もういいや。 >>453 それは、(ひょっとすると元質問者以外は)百も承知でしょ。
455 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 18:47:05 ] >>445-447 ごめん、例が悪かったね。返り値が必要/不必要という点でなくて、 そういう返り値を出したいとき、どう書くのがいいのかなと思って。 別の例を出したほうが理解してもらいやすいのかな。 public int GetType(string word) 例えばword=="nullpo"の時0で、それ以外1を返すとき、 わかりやすいのはどれだろう。 if (word == "nullpo") ■1 return 0; else return 1; if (word == "nullpo") ■2 return 0; return 1; int type = 1; if (word == "nullpo") ■3 type = 0; return type;
456 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 18:48:24 ] それを踏まえて、canAcceptNullpoがTrueの時には、1を返したいとすると、 public int GetType(string word, bool canAcceptNullpo) if (word == "nullpo") ■a if (canAcceptNullpo) return 1; else return 0; else return 1; if (canAcceptNullpo) ■b return 1; else if (word == "nullpo") return 0; else return 1; if (canAcceptNullpo) ■c return 1; if (word == "nullpo") return 0; else return 1; などあると思うけど、もしわかりやすいアイデアあったら頼みます。
457 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 19:02:09 ] うぽ return (word == "nullpo") ? ((canAcceptNullpo) ? 1: 0) : 1; というのは冗談として、 事前条件的なものは早めにチェックして単独でreturnしたほうがいいと思いますよ。 引数の検査、つまりnullチェックのや範囲チェック的なものはそれ。
458 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 19:05:44 ] 正直、「それを踏まえて」の人が何を主張したいのかよーわからん。 どうでもいいだろそんなの。 そもそも最初の質問者の質問意図と全然違うこと言ってるのに「それを踏まえて」 ってどういう神経?
459 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 19:11:33 ] 戻り値と例外モデル混ぜるなってアドバイスは 素直に受け止めておいたほうがいいとおも 例外の役割のうちに一貫したエラー処理メカニズムの提供があるんだから >>455-456 よりよほど重要だ
460 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 19:12:19 ] エラー処理じゃないか。通知だね
461 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 21:02:03 ] Visual Studioで質問 デバックなしで実行。 開いたウィンドウをクリックすると そのウィンドウが最小化されてしまう。 つまり最大化やら最小化ができない。 複雑でも何でもないんだが教えてくれ…
462 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 21:03:23 ] で、どこに質問があるの?
463 名前:デフォルトの名無しさん [2009/01/31(土) 21:09:12 ] >>461 フォームのプロパティを確認しろ
464 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 22:13:49 ] みんなありがとう。なんか釈然としなくてね。 >>457 単独で、returnできるうちにしてしまうってのが正解なのかな。やっぱり。 >>458 >どうでもいいだろそんなの。 それならいいんだけどね。なら動けばなんだっていいみたいな感じが自分ではするので、 何か可読性がよく、わかりやすい方法が内かなと思って。 「それを踏まえて」の前はif文によって異なるreturn値を返す方法についての方法論を示したということ。 「それを踏まえて」の後は、その異なるreturn値に、さらに例外がでてきた場合の例なんだけど、 書いていて旨い例が見つからず、何かもっと言い例がないかなと思ったの。 >>459 了解、心にとめておきます。 ただ、手近にあってソースで例を書いたので、戻り値と例外が一緒くたの例になってしまった。 例が悪かった。すまない。よければ、>>455 と>>456 の書き方で、 自分はこうしてるみたいな理由があったら教えてほしい。
465 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 22:25:50 ] だからそんなことどうでもいいって。 もう、そんな些細なことに固執して宗教論争してても飯が食えるような 牧歌的な時代じゃないんだから。 もっと他に理解したり習得したりすべきことが山ほどあるだろ。
466 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 23:21:19 ] >>464 そういう些細なことまで書いてあるCode Completeって本がある 複数リターンについても記述があったはずだからまずは立ち読みで
467 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 23:49:29 ] >>465 どうでも良くないだろ。こういうのは大事だぞ。 生産性や可視性の観点から重要。 最近はPCの性能が良くなったからか、 同じスコープでインスタンスを返すループを伴うメソッドやプロパティを、 何の資源も消費せずに、いくらでもインスタンスが出てくる 打ち出の小槌みたいに簡単に使う傾向があるしな。
468 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 00:12:10 ] 命名規則で質問ですが 動詞に対する結果を示すbool型変数の名前はどうしてますか IsCreated IsClosed 等、Is○○○だと英文法的におかしいので
469 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 00:14:59 ] おかしくないですよ。
470 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 00:15:53 ] IsCreated IsClosedなんて.NET Frameworkのクラスライブラリにいくらでもあるし 英文法的にも別におかしくない
471 名前:468 mailto:sage [2009/02/01(日) 00:25:58 ] そうですかありがとうございます
472 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 02:31:40 ] ja.wikipedia.org/wiki/%E6%84%9B%E9%96%93%E3%81%BF%E3%82%8B%E3%81%8F
473 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 03:09:39 ] Process.Startで起動した外部プログラムからの 戻り値を受け取ることは出来ますか?
474 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 03:10:50 ] ExitCodeプロパティ
475 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 05:30:49 ] >>468 引数やインスタンス名まで含めて一つのセンテンスと捉えると、寧ろ自然なことが多い
476 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 10:03:38 ] HashSetがなぜか見つからない言われるなーと思ったら Genericの中でこいつだけdllが違うのか しかもSystem.Coreはデフォルトでは参照設定に追加されてないという罠。
477 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 10:24:45 ] 3.5で追加されたもんだから仕方ない 一応csc.rspには入ってるけどな
478 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 11:21:44 ] HashSetってなんに使うんだ?
479 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 11:30:00 ] >>476 >しかもSystem.Coreはデフォルトでは参照設定に追加されてないという罠。 プロジェクトテンプレートの設定次第。 デフォルトで参照設定に追加されている人も結構多いはず。 LINQ用のクラスもSystem.Coreに含まれてるから。 LINQを使うのにいちいち参照設定が必要だったって人はあんまり見ないよね? そういう人ははHashSetも最初からIntelliSenseに表示されるように見えているはず。
480 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 11:36:44 ] >>468 bool型のプロパティの名前をisやhasで始まるのは定番中の定番。 isなしで形容詞or過去分詞のみのパターンも、それはそれで定番。
481 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 11:55:08 ] 過去分詞のみなのはイベントの名前にしていただきたいところだがな
482 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 12:37:39 ] Javascriptから来た子は、OnClickとかがイベント名じゃないことに文句言ってた
483 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 12:39:36 ] VBAもOnClickってあったな
484 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 13:18:35 ] ちなみに.NETでClickedとかClosedみたいな名前のイベントがあったら 過去分詞じゃなくて動詞の過去形(ガイドライン参照)
485 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 15:50:10 ] Putはどっちですか><
486 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 17:28:11 ] 複数判定する場合はAreなんちゃらにすんの?
487 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 17:49:53 ] 複数?コードで書いてみて。
488 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 18:15:04 ] C#でフォルダを開くProcessについて質問があります。 (1) this.openProcess = new System.Diagnostics.Process(); this.openProcess.StartInfo.Arguments = @"C:\略\My Documents\"; this.openProcess.StartInfo.FileName = @"C:\Wnidows\explorer.exe"; openProcess.Start(); (2) System.Diagnostics.Process openProcess = System.Diagnostics.Process.Start(@"C:\略\My Documents\"); (3) System.Diagnostics.Process.Start(@"C:\略\My Documents\"); (2)と(3)では、My Documentsを開くことができます。 (1)の場合は、引数をうまくとれず、C:\が開いてしまいます。 この理由と、引数としてフォルダを指定する方法を教えてください。
489 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 18:15:51 ] ○ is △? → ○.Is△で○が複数になることって無いんだよね ○がコレクションの場合は一つのコレクションとみなす
490 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 18:19:21 ] >>488 半角空白を含む引数は" "で括る 基本だよ
491 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 18:28:18 ] >>490 えっ? this.openProcess.StartInfo.Arguments = @"C:\略\My Documents\"; と""でくくってあると思うんですけど…。 違ってたらごめんなさい。 というか、C:\Windowsとかの半角空白を含まないフォルダも開けないのです。
492 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 18:34:02 ] >>491 そのダブルクォーテーションはC#の文字列を作る意味しかない。 その中身の文字列にダブルクォーテーションを入れないといけない。 "\"C:\\略\\My Documents\\\""のように。
493 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 18:53:58 ] >>492 なるほど! そうでしたか。できました。ありがとうございました。
494 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 20:46:31 ] >>484 BegunかBeganか迷った末にStartedでお茶を濁すのですね。わかります。
495 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 22:18:17 ] >>494 あるある
496 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:07:25 ] 文字列の定義にstaticクラスを使ってるんですが public static const Define{ public const string Type0 = "hoge0"; public const string Type1 = "hoge1"; .... } これだと文字列と比較するときにで string temp = "bar"; if( bar == Define.Type0){ ... } else if( bar == Define.Type1){ ... } といちいち書かなくちゃならんのです。 かといって public static const Define{ public const int numofNames = 10; public const string[numofNames] Names = { "hoge0", "hoge1", ...., "hoge9"}; } みたいな定義はstaticクラスないでは出来ないみたいだし・・・ 何か良い方法ないですかね
497 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:10:46 ] 「かといって」以前と以後で話がまるでつながってないんだが?
498 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:11:37 ] constを諦めて、static readonlyにしたらだめなの?
499 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:11:58 ] 配列にしたいけどなんかできないみたいだから Type0, Type1, ... みたいにしてるけど、 何かいい方法ない? って聞いてる、 と、よく分かるけど
500 名前:デフォルトの名無しさん [2009/02/02(月) 00:17:42 ] >>499 497 じゃないけどお前の説明でやっと意味がわかった。 それなら、 public static readonly ReadOnlyCollection<string> Type = new ReadOnlyCollection<string>(new [] { "hoge01", "hoge02", }); こういうことかな?ReadOnlyCollection<string> は本当は継承したクラスにしたほうがいいんだけども
501 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:23:04 ] public static const Define{ public static readonly string[] Names = { "hoge0", "hoge1", ...., "hoge9"}; } じゃだめなのか? これだと、文字列との比較は if(bar == Define.Names[ "hoge0" ]) のように書くことになる。
502 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:29:23 ] >500-501 おー、どっちもできました。 constだとnewできなくて、readonlyだとnewできるんですね。
503 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 01:18:52 ] Visual C# 2008をインストールして使い始めたんですが、 テキストエディタでコーディング中に表示されるポップアップヘルプの中身が英語なんです。 前使ってたヴァージョンでは日本語だった気がしますが、どうやったら日本語化できますか。 ちなみにメニュー等は全て日本語です。
504 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 01:24:35 ] >>503 blogs.msdn.com/dd_jpn/archive/2008/11/26/9143673.aspx これか?
505 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 01:56:30 ] Visual C# 2008環境のデバッグについて質問があります。 開発環境をインストールしていないターゲットマシン(XP)で、 エラーメッセージをファイルに落とすには、 どのようにコンパイルしたらよいのでしょう?
506 名前:デフォルトの名無しさん [2009/02/02(月) 04:05:05 ] Visual Studio C# 2008で質問があります。 コンパイルをしてexeファイルが出来上がるのですが、 これの会社名や著作権の情報を変更するにはどうすれば良いのでしょうか?
507 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 04:12:29 ] propertiesのAssemblyInfo.csを修正
508 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 05:34:26 ] ありがとうございました。
509 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 05:39:50 ] どういたしまして。
510 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 06:53:14 ] DirectryクラスのGetFilesより早く一覧を取得する方法ないすか 再帰で一覧取得しようとしてるんだけど たかだか3000ファイル程度でもAPIのFind***Fileに比べて遅くてたまらねえっす
511 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 07:06:31 ] ならAPI使えばー
512 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 07:27:01 ] 身も蓋も無いこと言わないで下さい>< …最終的に解決しなきゃそうします多分
513 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 09:59:53 ] データベースからとってきたdatetime型の日付形式の時間部分だけを抜き取って、 XX:XXではなくXX時XX分と表示させたいのですが、簡単な方法ありますでしょうか?
514 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 10:15:19 ] MessageBox.Show(DateTime.Now.ToString("HH時mm分")); ってやってみ
515 名前:デフォルトの名無しさん [2009/02/02(月) 10:27:10 ] XmlsAa.AaRow B =(XmlsAa.AaRow)C.Rows[0]; って何をやっているんですかね?Rowってのはテーブル1行分使う意味らしいのですが ()とかRows、[0]がわかりません。配列?
516 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 10:33:41 ] (XmlsAa.AaRow)はキャスト [0]はインデクサ 元が何型かは知らんけど Rowsコレクションの最初の要素をXmlsAa.AaRow型にキャストしてるだけ 分からんならキャストとインデクサでググれ
517 名前:513 mailto:sage [2009/02/02(月) 10:34:17 ] 普通に抜き出して置換することにしました。 無駄な書き込み申し訳なかったです。
518 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 10:35:49 ] ええ!? 514ガン無視!?
519 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 10:36:27 ] エエエエエエ(AA略)
520 名前:514 mailto:sage [2009/02/02(月) 10:37:15 ] ____ / \ / _ノ ヽ、_ \ / o゚⌒ ⌒゚o \ | (__人__) | \ ` ⌒´ /
521 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 10:44:28 ] >>510 >DirectryクラスのGetFilesより早く一覧を取得する方法 >再帰で DirectoryInfoクラスのGetFiles使ってるよね? 再帰で取得することよくあるけど、そんなに差はなかったような気がするが
522 名前:513 mailto:sage [2009/02/02(月) 10:45:00 ] MessageBoxに表示したいわけではありませんので。
523 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 10:48:40 ] エエエエエエエエエエエエエ(AA略)
524 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 10:50:20 ] 何この流れ・・・
525 名前:デフォルトの名無しさん [2009/02/02(月) 11:07:55 ] >>516 ぐぐったけどよくわかりませんでした。ぐぐり続けてみます。C#というかプログラムは単語が理解できなくてつまずくなぁ
526 名前:デフォルトの名無しさん [2009/02/02(月) 11:43:29 ] 環境 WinXP SP3 C# 2.0 今度デルファイで作られたソフトkらソケット通信(TCP)を利用してデータの受信を行うことになりました。 相手は1情報を512バイト固定で送信してくるそうです。 例えば相手が以下のようなデータを送信してきて受信完了した場合 どのように受信したデータを展開すればよいのでしょうか? 形式はなんでもかまわないので受信データをひとまず展開できれば構わないのですが・・・ 一応受け取ったデータを同じような構造をもったクラスに展開して内部で処理用と考えています。 i1 integer; i2 ・ ・ 25回(100バイト分) d1 double d2 ・ ・ 8回(72バイト分) yobi : array[0..339] of shortint (340バイト分) 計512バイト こんな感じなのですが、なにかこういう展開のヒントや情報でも構わないのでお教え願えませんか?
527 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 12:07:35 ] 構造体にしといてbyte[]からMemoryStream作ってBinaryFormatterでDeserializeとか?
528 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 12:22:27 ] C#でゲーム作って配布すると、 ソースコードを見られてしまうの?
529 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 12:27:34 ] それがなにか?
530 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 12:30:01 ] みんなで公開羞恥プレイですよ さああなたも御開帳
531 名前:デフォルトの名無しさん [2009/02/02(月) 12:55:11 ] >>527 そんな感じで出来るんならやってみようと思います。 ありがとうございました。
532 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 12:58:59 ] >>526 形式は何でも構わないってことはDelphiで作られたソフトってのも変更可能なわけ? その割に512バイト固定とか言ってるけど .NET的にはバイナリの塊を処理するのは BinaryReaderで読み取っていったり一つずつBitConverterで変換していくのが基本
533 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 13:21:48 ] nslookup.exeで調べた相手のSMTPサーバーに直接メールを送る事って出来なくなったのね・・・
534 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 13:27:35 ] 何年前の話だよ
535 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 14:34:06 ] >>534 今日の話ですけど?w
536 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 14:43:26 ] さすが初心者スレだ
537 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 14:45:40 ] まあ取り敢えず独り言はチラシの裏に書いてろ 質問したいなら質問の体裁を取れ みたいな
538 名前:デフォルトの名無しさん [2009/02/02(月) 14:47:43 ] >>532 変更は可能と言えば可能なんですが・・・ 出来るだけデルファイ側は変更しないようにとのことなので…orz 例えばa1,a2辺りを処理するのは おとなしく受け取ったバイト配列を BitConverter.ToInt32 で一個づつ自分用にばらしていくのが妥当という感じでしょうか?
539 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 15:14:40 ] そうだよ 直接構造体に当てはめるなんてメモリイメージに縛られすぎ というのがC#の方針 .NET間ならBinaryFormatterのシリアライズとかで十分だからな
540 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 15:31:15 ] エンディアンやバウンダリの問題もあって テキストベースのプロトコルにすることが多くなった。 固定レコードは流行らなくなったな。
541 名前:デフォルトの名無しさん [2009/02/02(月) 15:33:40 ] Visual Studioやってたら、'private'は無効です。のエラーが 毛テスタ
542 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 15:35:44 ] 'private'を削りなさい
543 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 15:37:30 ] 前の行の最後にセミコロンが無い
544 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 15:39:40 ] メソッドの中で private 宣言した
545 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 15:43:21 ] 24時間働いているなら労働基準監督署へ
546 名前:デフォルトの名無しさん [2009/02/02(月) 15:49:38 ] private 削ると、使ってる変数が全部定義がありませんってエラーきますた。 セミコロンはありまふ メソッドの中で宣言・・・これかもです。ありがとう。 Protected voidなんちゃらの処理の中の変数宣言で、privateはダメなのですかね
547 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 15:53:37 ] ∧∧ ヽ(・ω・)/ ズコー \(.\ ノ 、ハ,,、  ̄  ̄
548 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 16:10:49 ] ∧∧ ヽ(・ω・)/ ズコー \(.\ ノ 、ハ,,、  ̄  ̄ ∧∧ ヽ(・ω・)/ ズコー \(.\ ノ 、ハ,,、  ̄  ̄
549 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 16:59:36 ] ふらっとC# 503です。 ターゲットマシン(XP)でのFormアプリケーションのデバッグ方法、助言お願いします。 いまのところMessageBoxでいくつか変数を表示しようとしているます。 問題はMessageBoxさえ表示されないことで、ということはその前でエラーが起きていることはわかるのです。 かといって頭からぜんぶMessageBoxというのもなかなか途方にくれる話ですし。 デバッグのときに表示されるような情報を、一括してテキストファイルに落とせれば楽だと思うのです。 そういう方法ってあるんですか?
550 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 17:04:05 ] msdn.microsoft.com/ja-jp/library/system.diagnostics.debug (VS.80).aspx
551 名前:デフォルトの名無しさん [2009/02/02(月) 18:07:36 ] >>539 なるほど その方向で進めていくことにしました。 確かにマネージド同士なら楽なんですが・・・ そうでないものは初めてでちょっと色々 orz
552 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 18:26:36 ] 1行目に#define DEBUGと追加して、Debugフォルダにexeファイルができました。 ありがとうございました。 がっ。 エラー情報やいずこ!?
553 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 18:51:48 ] >>552 構成ファイルのapp.configにこれをぶち込んどけ <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.diagnostics> <trace autoflush="true"> <listeners> <add name="Text" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\log\TraceSample.txt" /> <!-- <add name="Text" type="System.Diagnostics.ConsoleTraceListener" /> --> <!-- <remove name="Default" /> --> </listeners> </trace> </system.diagnostics> </configuration>
554 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 19:19:38 ] >>522 ワロタ
555 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 20:10:05 ] >>535 今日知ったんなら今日の話だよなw >>534 の負けww
556 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 20:12:09 ] >>552 それじゃDEBUGの意味がないだろ TraceクラスとTRACE使え
557 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 21:59:35 ] C#ってクラス名に漢字使えたよね?
558 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 22:01:47 ] うん
559 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:11:00 ] >>557 やめろ!やめるんだ! そ、そんなソースは認めないぞ #define ノシ throw calss 三旦 : System.Exception {..} if ( this.Value < this.Min ) ノシ 三旦;
560 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:14:17 ] #define がないし。
561 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:14:37 ] >>559 C# で define は値を定義できないぞ
562 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:19:06 ] abstract class A { public abstract int Hoge { get; } } というクラスがあり、これを継承したBでgetの実装をします。 そしてクラスB内から値をセットするのにprivate setを追加したいのですが CS0546になりできません。 こいうことはできないのでしょうか? class B : A { public override int Hoge { get { 〜 } private set { 〜 } // CS0546 } }
563 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:19:48 ] カルス・・・
564 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:29:26 ] インターフェイスならできるけどクラスではできません
565 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 01:23:41 ] WindowsXP C# 2008で質問です。 ビューアーを作り、それをデフォルト起動アプリケーションにしました。 string[] args = Environment.GetCommandLineArgs(); if (args.Length != 1) {Title = System.IO.Path.GetFileName(args[1]);} で、ファイル名をタイトルにしてウィンドウに表示しようとしています。 exeファイルにデータファイルのアイコンをドラッグするとファイル名を取得できますが、データファイルを単独でダブルクリック起動する場合には取得できません。 デフォルト起動の場合、データファイルのファイル名は、exeファイルにどのように渡されていて、exeからはどのように取得できるのですか? ご教示願います。
566 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 01:44:01 ] >>553 ありがとうございます。 app.configがなかったので、新規項目の追加で構成ファイルを追加してApp.configを作り、そこに追加しました! で、早速exeを作成し、相変わらずエラーが出ていますが、ログは記述されず…。 ログファイルも作成されていません。 >>556 ありがとうございます。 Traceクラスについて勉強してみます。 いま www.atmarkit.co.jp/fdotnet/dotnettips/757debugview/debugview.html を読んでます。
567 名前:Charles Petzold mailto:sage [2009/02/03(火) 02:36:35 ] YO, YO, YO. Good midnight, Japanese C# programmer. My name is Charles Petzold.I write one book. That name is Windows programming by C#. This book cover most part of Programming Windows by C#.So if you read this book, you can write many system. By the way, I have three words for Japanese Programmer. [Don't use Linux.] Do you understand? Good bye.
568 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 02:51:16 ] Feel free to write in English.
569 名前:デフォルトの名無しさん [2009/02/03(火) 02:57:20 ] petzoldにはお世話になったなあ でも今見ると古いかもなあ
570 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 06:07:37 ] >>565 レジストリにどういう風に登録されてるかによる。 普通、「アプリのパス "%1"」 なんで、そのまま取れるけどね。
571 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 07:55:20 ] オンラインヘルプを自PCに持ってくるにはどうすればいいのでしょうか? いちいちネットに繋ぎに行くんでウザいのですが…
572 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 08:03:55 ] ローカルで見られるヘルプがあるよ。日本語版と英語版 探せば見つかるだろうけど親切な人が教えてくれるかも
573 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 09:34:12 ] VisualStudioをインストールすればインストール可能 Expressだとサブセット版だけども。 あとはWindowsSDKインスコ。
574 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 10:09:43 ] >>571 ヘルプを既にインストールしているならヘルプ(Micorosoft Document Explorer)の 「ツール」->「オプション」->「ヘルプ」->「オンライン」で「オンラインではなくローカルのみで実行」にチェック。 インストールしてなくて、必要最小限で良いなら >>573 。 全部入れたいならコレ。2GBちょっとあるけどね。 MSDN Library for Visual Studio 2008 SP1 (2008年12月更新版) www.microsoft.com/downloads/details.aspx?FamilyID=7bbe5eda-5062-4ebb-83c7-d3c5ff92a373&DisplayLang=ja ISO イメージなのでインストールするには、仮想ドライブが使えるソフト(CloneDrive や DAEMON とか)も必要。
575 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 11:16:28 ] msdn.microsoft.com/ja-jp/library/afadtey7 (VS.80).aspx PropertyInfo.GetAccessors()を呼び出すと、 getアクセサ、setアクセサ、およびその他のアクセサが返ってくるとありますが その他のアクセサってなんですかね
576 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 11:20:19 ] 初めてプログラム言語に触れたのですが intとかparseとかその他もろもろ、何て読むのですか? 読み方サイトみたいのってありますか? 読めなくても構わないんですがなんとなく喉の骨が取れない感じです。
577 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 11:24:54 ] >>576 ttp://dictionary.goo.ne.jp/search.php?MT=Integer&kind=ej ttp://dictionary.goo.ne.jp/search.php?MT=Perse&kind=ej 本質的には通じりゃいい
578 名前:576 mailto:sage [2009/02/03(火) 11:31:04 ] >>577 みんなそんなもんなんですね 適当に脳内処理しときます。 今仕事が開店休業状態で暇つぶしにC#ってものを勉強始めたけど 突き詰めたらどんな高度なwindowsアプリでも作れるようになれるのですか? たとえばosとかofficeとかw このままだと会社が倒産しそうだから、C#勉強してそっちに働き口みつかるかなぁ・・・
579 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 11:33:04 ] OSの上で動作するフレームワーク(.NETとかMonoとか)のさらに上で動作してるから フレームワークより下にはいけない
580 名前:576 mailto:sage [2009/02/03(火) 11:37:12 ] >>579 たしかにos-.net上で動くって事ですもんね 具体的に言うと、リッピングソフトとかofficeアプリまでなら作れますか?
581 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 11:42:16 ] それはそれは途方も無く努力すれば
582 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 11:57:21 ] C#も極めれば空も飛べるよ! ハ_ハ ('(゚∀゚∩ 飛べるよ! ヽ 〈 ヽヽ_)
583 名前:デフォルトの名無しさん [2009/02/03(火) 13:18:52 ] そうだね・・・ねてなくて浮いてる気分だ
584 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 13:23:03 ] 寝ろよ 寝不足は生産性も減退させる
585 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 13:25:25 ] うまく動いてたイベント処理をもうちょっと効率良くしようと思って手を加えて 一週間くらいほったらかしといたら、うまく動いてたときのコード忘れてしまた orz 全く思い出せない
586 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 13:27:28 ] そうかそうか
587 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 13:38:59 ] svn
588 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 16:50:25 ] 大規模な改良前にはコード保存しとけば?? おかげさまで「〜〜実装前.txt」が10個以上あるが。
589 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 17:01:44 ] >>575 おそらく、VB6/COMで、setアクセサ相当が値のLetと参照のSetに分かれていた名残。 Letが.NETのsetアクセサで、Setがその他に対応すると思う。
590 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 17:16:13 ] >>585 >>588 バージョン管理システム使って履歴残せ。
591 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 17:16:35 ] >>575 言語によっては他の種類のアクセサを定義することもできるということじゃないの プロパティって複数のアクセサメソッドの情報をまとめたメタデータにすぎないから
592 名前:デフォルトの名無しさん [2009/02/03(火) 17:26:52 ] Form1上にSplitContainerを配置して ・Panel1にテキストボックスとボタン ・Panel2にデータグリッドビュー を置いてあるんすけど、テキストボックスとボタンってどのコレクションになるんすかね? this.Controls だとコレクションは SplitContainer しか入ってないし this.SplitContainer.Panel1.Controls だとコレクションは Panel1 しか入ってない this.SplitContainer.Panel2.Controls ってやるとちゃんと DataGridView1 が入ってるのに わけわかめ
593 名前:592 mailto:sage [2009/02/03(火) 17:31:47 ] SplitterPanelにPanelを入れ子にしてた orz
594 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 17:32:54 ] >>592 Panel1.Contols に Panel1 が入ってるわけねーだろ。
595 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 17:38:18 ] >>593 あわてんぼさんめ
596 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 19:20:41 ] さぼてんあわめん
597 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 19:30:32 ] わあさんぼんめて
598 名前:風来坊 mailto:sage [2009/02/03(火) 20:48:10 ] 質問です。 C#にて 音声録音の機能を実装したいと思っています。 .NET 1.1,2.0,3.5は問いません。 デフォに設定されている出力(再生)デバイスの音声信号を wav(wavにこだわる必要は無い)ファイルとして保存したいのですが、 どうすれば実現できますか? どなたかご教授ください。お願いします。
599 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:22:40 ] ぐぐる
600 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:35:08 ] 遮断機をくぐる
601 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:36:45 ] 首をくくる
602 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:42:39 ] せっかくC#でAPI直接もなんだし、MCIかMDXあたりでどうかな。
603 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:46:32 ] riffを自分で書くなんてどうかしら
604 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:50:21 ] DirectShow.NET
605 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 21:55:42 ] DirecxShowは推奨されないらしいですよ
606 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:03:05 ] このスレって質問者じゃなくて答える側が初心者っていうオチ?
607 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:06:26 ] ○×したいんだけど、どうすれば実現できますか? ↓ (´・ω・`)しらんがな こうやったんだけど上手くいきません。どうしたらいいですか? ↓ (´・ω・`)オジサンが教えたるがな
608 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:21:14 ] Vista + Visual Studio 2008 Express Edition + C# を使っています。 Debugモードでは問題なく動くのにReleaseモードではフリーズする場合、 どういった原因が考えられますでしょうか? 大量の計算を連続してさせているプログラムで、フリーズする箇所は毎回違うようです。 調べようにも取っ掛かりすらなくて困っています。 よろしくお願いします。
609 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:21:52 ] CPU休めてますか
610 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:26:04 ] >>609 100万行くらいのtxtファイルを読んできて、数分間延々と処理させてます。 CPUに負荷がかかりすぎるのが問題なんですかね?
611 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:28:31 ] ぱそこんもたまにはやすみたがっているんだよ。
612 名前:608 mailto:sage [2009/02/03(火) 22:36:59 ] タスクマネージャで眺めてたら、 処理開始から1〜2分はCPU使用率50%前後で、メモリ使用量が徐々に増加。 メモリが180MBくらいに達したところでCPU使用率が0%になってフリーズしました。 メモリ食いすぎってことでしょうか? debugモードでは動くのに。。。
613 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:38:25 ] デッドロックしてない?
614 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:38:37 ] そのデバッグモードってデバッグビルド? リリースビルドでデバッグでも同じ?
615 名前:デフォルトの名無しさん [2009/02/03(火) 22:44:20 ] >>603 Thunder Forceの戦闘AI?
616 名前:571 mailto:sage [2009/02/03(火) 22:45:47 ] >>572-574 ありがとうございます。 VMwareでLive版のLinux立ち上げてISOイメージをマウントしてから、 ローカルディスクに全コピーしてみます。
617 名前:608 mailto:sage [2009/02/03(火) 23:00:46 ] >>613 マルチスレッド処理なので可能性はあるかもしれません。 ただ、デバッグで起こらないのでどうやって調べればいいのか。。。 >>614 >リリースビルドでデバッグ なんてことができるんですね。 試してみましたが、問題なく動きました。 \Releaseフォルダ内のexeを直接起動したときだけフリーズします。
618 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:03:37 ] 一般的には排他処理のところっしょ
619 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 00:49:06 ] 排他制御に不備があって、微妙なタイミングの差で動いたり動かなかったりするのかね。 いずれにせよ質の悪いバグだ。詳しく設計がわからないとアドバイスのしようがない。
620 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 01:32:14 ] >>570 レジストリですか。 すこし見てみたものの、まったく手がかりがありませんでした。 情報サンクスです。
621 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 02:01:40 ] 別にレジストリ見なくてもわかる エクスプローラのメニューからツール→フォルダ オプションを選択 ファイルの種類タブで、データファイルの拡張子がどう登録されているか確認
622 名前:デフォルトの名無しさん [2009/02/04(水) 04:07:18 ] コンボボックスで質問があります。 コンボボックスに二つの項目があり、項目1を選ぶと変数+変数、 項目2を選ぶと変数-変数といったような処理をしたいのですが if文でどのようにコンボボックスを設定すればそのような処理ができるのでしょうか?
623 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 07:57:00 ] はい
624 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 08:20:10 ] >>622 ComboBox.SelectedIndexChangedでSelectedIndex見て判断しろ
625 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 10:06:23 ] ComboBoxニdelegate突ッ込ンデ自前デ描画シナサイ
626 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 10:39:03 ] >>621 どうやって関連づけやったのよ? 関連づけやってるところのソース見せて
627 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 10:47:57 ] >>626 ↓でも読んでろ ttp://dobon.net/vb/dotnet/system/associatedapp.html どうせ実行ファイルのパスに空白が混じってるとかそういうオチだろうけど
628 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 11:37:58 ] C#2005で開発したアプリをVistaで動かしてみたところ、 パネルに配置したボタン色がパネルの色に同化してしまいました。 xpでは正常に表示されます 対処方法などあれば教えてください。
629 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 12:09:00 ] >>627 おマイには聞いてないってw レジストリを触ったこと無い人がどうやって関連づけしたのかな〜っと それに実行パスに空白があるからどうなるの?
630 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 12:14:36 ] 普通にファイルを開くプログラムの選択で関連付けしたんで無いの。
631 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 14:02:29 ] >>629 なんで粘着してんの?親切に教えてるだけじゃない そもそもの質問者も、プログラムで関連付けをしたいなんて書いてないし 回答者も、レジストリを触ったこと無いとも書いてない 実行パスの空白はCUIのOS触ったことあるなら解るだろ
632 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 16:05:30 ] felicaのシステムを作っているのですが、 felicap = felica_polling(pasorip, (ushort)systemcode, 0, 0); この処理でfelicapに値が入るのですが、この処理の意味が根本的にわかりません。 ここではどういった処理が行われているのでしょうか?
633 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 16:09:18 ] FeliCa でソフトを作りまくるスレ 2ブロック目 pc11.2ch.net/test/read.cgi/tech/1210717455/
634 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 16:18:21 ] felicaのシステムを作っているのですが、 felicap = felica_polling(pasorip, (ushort)systemcode, 0, 0); この処理でfelicapに値が入るのですが、この処理の意味が根本的にわかりません。 ここではどういった処理が行われているのでしょうか? 連続で同じカードの読み取りができなくて困っています。
635 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 16:19:31 ] >>633 すみません。 該当スレに書き込むつもりが同じところに書き込んでしまいました。
636 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:28:30 ] 生まれて半年の者です。他のクラスの変数に関して質問です。 クラスAとBがあります。 クラスAにStack型stackがあります。 クラスBにString型stringがあります。 クラスBでクラスAをインスタンス化して、stackにstringをpushします。 そして変更されたstackをクラスAに戻して作業を進めたいのですが、 クラスAではstackは元のままになっています。 どのような問題があるのでしょうか?
637 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:30:18 ] クラスAに戻すとか言われてもよく分からんのでコード貼ってくれ
638 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:32:05 ] AがStackをそのまま外に晒すのはよくない(別のクラスにした意味がない) pushするメソッドをAに定義するべき
639 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:34:00 ] Stackを晒してるなら、Pushしたのが反映されてるはずだがな。 たぶんnewして渡してるとかじゃないかw
640 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:40:32 ] >>637 戻すじゃなくて戻したいの意味でした。すみません。 ClassA { public void ClassA() { } public Stack stack = new Stack(); } ClassB { public String string = 〜; ClassA a = new ClassA() a.stack.push(string); } これだけだとクラスAでは変更できてないです。 pushしたあとにどのような作業が必要でしょうか?
641 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:41:50 ] 意味不明すぎる
642 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:43:05 ] たぶんクラスとインスタンスの関係が分かってないんじゃない? 生まれて半年だし
643 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:43:28 ] staticだな〜説明は誰かに任す
644 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:44:38 ] そこでstaticにしろと言うのは教育的じゃないと思う
645 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:45:02 ] もうちょっと勉強進めればわかるよ staticにすればいいのかもしれないけど実際は絶対やっちゃダメなパターン
646 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:47:02 ] つってもなあ 「○○したいんだ」 って言ってる奴に勉強しろっても回答になってない気がするぜー
647 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:47:08 ] ClassB { public String string = 〜; ClassA a = new ClassA() //↓これメソッド内だよね? a.stack.push(string); } ↑でインスタンス化された a の stack にはちゃんとPushされている。 ただそのせっかく作ったClassAのインスタンスaは参照されないまま消えてしまっただけ
648 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:10:59 ] C#で質問があります。 timeが11:00と入力されなかった場合(たとえば1100と入力された場合)、コロンを追加しようとしています。 string time; if (!(time.Contains(":"))) { time = time[0] + time[1] + ":" + time[2] + time[3]; } で、この値を見ると、11:00ではなくて98:00になっちゃうのですが、なんでこんな数字になっちゃうんでしょう。 原因と改良方法をご示唆いただけないでしょうか。
649 名前:636の者です。 mailto:sage [2009/02/04(水) 18:15:02 ] windowsフォームのボタンを押したときの動作をプログラムで書きたいときは、 ボタンをダブルクリックすれば、プログラムを書く場所を自動で作ってくれますが、 クラスBにあるボタンを押したときの動作を、クラスAに書くことは可能でしょうか?
650 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:17:59 ] >>648 char同士の文字コードの加算になってるから time = '1' + '1'; でやってみるとわかるよ time = time[0].ToString() + time[1].ToString() + ":" + time[2].ToString() + time[3].ToString(); にすればいい >>649 +=を使ったイベントハンドラの登録方法が理解できていればできる
651 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:23:58 ] > time[0].ToString() + time[1].ToString() + ":" + time[2].ToString() + time[3].ToString(); くどすぎる。 StringBuilder つかおうぜ。
652 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:27:28 ] じゃあString.Format("{0}{1}:{2}{3}", time[0], time[1], time[2], time[3])で
653 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:27:30 ] >>647 あ〜昔同じ失敗したな〜
654 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:27:37 ] >>650 早速ありがとうございました。 ToString()でできました。
655 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:28:11 ] >>651 そこで、StringBuilderは使わないだろ。 time = time.Substring(0, 2) + ":" + time.SubString(2, 2);
656 名前:636の者です。 mailto:sage [2009/02/04(水) 18:31:41 ] >>650 なんとなくいけそうです。 >>653 お〜友よ〜
657 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 18:44:37 ] >>621 ツール-フォルダオプションは、真っ先に見ました〜。 >>626 、636 というか、ここで手動で関連づけを登録しました。 そうしたら、登録したとたん、「詳細設定」のボタンが消え、「元に戻す」というボタンに変化しちゃったのです。 詳細設定のボタンがあれば、アプリケーションの挙動を見れるかと思ったのですけど。 たとえば、txtの詳細設定のopenアクションを見ると、アクションを実行するアプリケーションの項目に、「C:\Windows\system32\NOTEPAD.EXE %1」とあり、これを修正すればよいことがわかります。 ところがなにしろボタンがないから、手も足もでない…。 空白かな〜。う〜〜む。 アプリケーションじたいはデータファイルのダブルクリックで起動しているのですが…。 ま、C#とはあまり関係なさそうなので、この件はこれで。 お騒がせしました。ありがとうございました。
658 名前:デフォルトの名無しさん [2009/02/04(水) 18:57:25 ] お願いします(゚ω゚) System.Text.RegularExpressions.Regexを使って [ok] 100 [ok] 0.001 [ng] 00 → 0 [ok] 0.1000 前ゼロ入力をReplaceで""に置き換えたいのですが、正規表現が上手く書けませぬ 教えてエロい人
659 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 19:00:35 ] >>658 正規表現 Part5 pc11.2ch.net/test/read.cgi/tech/1212498448/
660 名前:デフォルトの名無しさん [2009/02/04(水) 19:02:22 ] あーd>>659 ここで聞きたかったぜっ♪
661 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:49:44 ] >>645 他クラスからアクセスする変数には手当たり次第static使ってるんだが… 何を勉強すればいいんですか?
662 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:52:53 ] 構造化プログラミング
663 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:55:56 ] オブジェクト指向プログラミング
664 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:57:38 ] staticフィールドはダメだがstaticメソッドはいいぞ privateなstaticメソッドが最高だ
665 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:58:06 ] 構造化プログラミングを理解してない奴が、オブジェクト指向を学んでも無駄。 構造化プログラミングを学んだら、中規模以上のプログラムをたくさん書く。 それからでもオブジェクト指向は遅くないよ。
666 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:59:25 ] static メンバ変数なんて ただ1個しか存在しないもんな。 2つ作りてええええええええ!!!! と思っても 1つしか存在できない。 不便過ぎ。
667 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:02:02 ] C言語等の非OOA出身者はstaticをメモ帳や定数保管庫程度に考えてない
668 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:02:42 ] しか が抜けた
669 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:02:49 ] オブジェクト指向も関数型プログラミングも 深いとこに行くと実用的じゃない宗教じみたものがうじゃうじゃ出てくるから そこに行ってしまわないように気をつけないと
670 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:12:08 ] むしろいきなりOOPでいいと思うよ。 >>665 みたいな意見はありがちだけど、構造化プログラミングなんて 中身のないスカスカな話で馬鹿でなければ「畳の上の水泳」で十分だと思う。 っていうか、俺も含めてたかがOOP理解したぐらいで鬼の首とったように語るのは とても恥ずかしいよなw
671 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:16:29 ] 物事をオブジェクトに切り分けるというのは大成功した考え方だと思うけど 継承は失敗だしインターフェースの実装もそんなに上手くない感じだと思う そういった抽象化はクロージャにした方がシンプルで分かりやすい
672 名前:デフォルトの名無しさん [2009/02/04(水) 22:19:30 ] >>636 > 生まれて半年の者です。 おいおい、生後半年でプログラミングかよ。 たいしたもんだな!
673 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:21:38 ] どんな天才だよw
674 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:24:22 ] >>671 使いこなせない人にとって上手くないだけなんだろ
675 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:26:16 ] 母国語より先にプログラム言語を覚えたんだな いったいどんな子に育つやら
676 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:28:11 ] 今さらオブジェクト指向だデザパタだインターフェースだってやるのは 正直違うかなと思うよ 今のC#にはもっとよい道具があるから ただオブジェクト指向の基本的なところは抑えておかないとまずいけど
677 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:29:44 ] だまれ若造
678 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:31:19 ] お年寄りは静かにしてください
679 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:32:17 ] >>676 それはC#が、最近になってより初心者向けの機能を実装をしてるってこと?
680 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:33:25 ] >>676 >今のC#にはもっとよい道具があるから ないってw 知ったようなこというなよ。 クラスベースのOOPが万能じゃないのは確かだけど、現時点でそのオルタナティブが C#に限らず発案されているとは思えん。
681 名前:デフォルトの名無しさん [2009/02/04(水) 22:33:31 ] >>679 クロージャはインターフェースよりも初心者にとって使いやすいと思うよ 直観的だし
682 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:35:26 ] なんでクロージャーとインターフェイスを対置するんだ? クロージャーとインターフェイスって「代替財」か? わけがわからんよ。
683 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:37:16 ] 覚え方なんて人それぞれだし。 自分が通ってきた道についてしか語れないだろ。
684 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:38:00 ] >>680 クロージャは実際には一つのメソッドを持ったインターフェースを 実装したオブジェクトを簡易に作り出す機能だけど それさえあればオブジェクト指向の抽象化は全部出来る オブジェクト指向の継承にまつわるややこしいところはすっ飛ばして そっちに行くのが今は正解なんじゃないかねえ
685 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:39:36 ] また変な主義者が来ましたねw
686 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:44:52 ] >>684 それって、昔の1ファンクション1機能の構造化プログラミングと同じじゃないの? 静的なメソッドとは何がちがうのけ?
687 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:53:45 ] 相談があります。 C#でプログラムを作り始めて半年くらいになります。 ようやく身の回りのソフトは、だいぶ自作できるようになってきました。 ところで、それをリリースしようと思うと、プログラムのなかに直接書いてあるパスワードなどを設定ファイルに移動したり、自分用のディレクトリ構造にあわせて作った部分を汎用にする必要が出てきます。 それはまあやる気になればできそうなのですが、設定不要のかんたんなソフトを知人10人ほどにテストしてもらったところ、だれひとりとして.NETを入れていないため、動作しなかった、ということがわかりました。 ひょっとして、.NETやC#って、すごくマイナーなんでしょうか。 このままC#をつづけた方がよいのか(けっこう使いやすくて気に入ってます)、それとも別の言語に移ったほうがよいのか。 移るとしたら、もっとメジャーな言語ってなんですか? Webベースのプログラムとか、Ajaxとかですか? .NETを組み込んだ状態でコンパイルするとかできないんですかね〜?
688 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:55:38 ] WebでできるようなことならSiilverlightというのがある イメージ的には「C#で書けるFlash」 ランタイムは超小さいので配布が手軽
689 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:57:55 ] だからクロージャとインターフェイスは代替関係にないってw ただ一部の機能が競合関係にあるだけ。 たぶん従来ICompareをわざわざ用意していたようなのがデリゲートでスッキリ 書けるようになった、みたいな例を見て短絡したんだろうけど。
690 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:03:14 ] >>687 .netFrameworkをインストールしないって人は多いよね vista以降は.netはインストされてるから、ある程度は問題なくなると思うけど なんのインストもなくて利用可能なのは、VisualStudioのC++のネイティブコードか、 Delphiぐらいじゃないのかな。
691 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:13:21 ] しつもんです。 クラス内のメンバの初期化はどこでしてますか? 宣言時に初期化してしまうか、コンストラクタ内で初期化するか迷ってます。 ///以下抜粋 internal sealed class 通信 { private UdpClient UDP; private Thread スレッド; private List<byte[]> 受信リスト= new List<byte[]>();///宣言時か private List<IPEndPoint> クライアントリスト= new List<IPEndPoint>(); public 通信(int ポート) { UDP= new UdpClient(ポート);///コンストラクタ内か スレッド = new System.Threading.Thread(new System.Threading.ThreadStart(受信)); ///抜粋以上
692 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:18:16 ] >>691 基本は宣言時じゃないかな。 コンストラクタでもいいけど、コンストラクタをオーバーロードしているときには、 複数のコンストラクタで初期化しなくちゃいけなくなるから。 別のメソッドを用意して、そこで初期化してもいいけど、意味ない気がするし。 条件によるけど。
693 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:18:50 ] C#, C♯, C#相談室 Part50 pc11.2ch.net/test/read.cgi/tech/1229661915/ 埋まったけど立てられなかった。 誰か頼む。
694 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:22:33 ] ホスト規制のためNGですた。
695 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:22:51 ] >>693 あっちは相談室と名乗りながら、 質問の揚げ足を取って悦に浸っている常連ばかりだから嫌い
696 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:23:14 ] >>686 Cとの比較で言うと、クロージャは「状態のある関数ポインタ」といえると思う Xの値が欲しい時に void Hoge(Func<int> getX){ int x = getX(); } C#ならこう書ける。getXにはintを返す関数がなんでも入れられるしその場で作れる Cで書くと struct Func_int{ int (*func)(void*); void* args; }; void Hoge(Func_int fi) { int x = fi.func(fi.args); } こんなんだけど引数の型も作らなきゃいけないし関数はvoid*をとらなきゃいけないしで大変だ オブジェクト指向で書くと class Func<int> : IFunc<int> { int x, y; public Func(int x, int y){ this.x = x; this.y = y; } public int Method(){ return x + y; } } クロージャだと Hoge(() => x + y); こうだ。 これが進化だよ。
697 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:25:53 ] >>695 でも作っとかないと、そういう人らがここに常駐されたら困る
698 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:31:25 ] >>691 その前になんちゅうソースだコレ。
699 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:31:36 ] >>697 心配無用 既に常駐してる
700 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:36:15 ] まあとりあえず立てた。 C#, C♯, C#相談室 Part51 pc11.2ch.net/test/read.cgi/tech/1233757615/l50
701 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:36:42 ] >>696 その例だと従来の方法でもStaticなメソッドを使えば int x = Class.Method(a, b); で代用がきくから同じことだと思うんだけど。何が違うの?
702 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:37:33 ] 読解性
703 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:40:36 ] >>690 VC++ も今は CRT が DLL 推奨だから配るならインストーラ作るべき なんやけどな。msm があるしサイズも小さいので格段に楽だから .NET と比べるレベルじゃないけど。
704 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:42:54 ] 自分の場合は固定長バッファ持たせる時とか、ソース直書きのデータを持たせる時以外は宣言の所に初期化コードを書かないようにしてる。 基本的にはできるだけコンストラクタに書いたほうが、読みやすいコードになるよ。 #regionと組み合わせるとなお良い。 指すものがコンパイル時点で決まっていて、利用者側のコードに左右されない要素(リテラル的なもの)は宣言と初期化を一緒にしてもいいと思う 上の固定長バッファはあてはまらないけど…
705 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:44:00 ] >>687 「.net Frameworksインストールしてね」で終わりじゃないか? むしろ、Windows Updateで配布されてるんじゃないのか?.netぐらい
706 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:45:31 ] >>700 乙
707 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:47:58 ] >>687 「めんどくせえなぁ・・・なんでこんな糞プログラムを・・・。そうだ!インストールしてない事にすればいいんだ!」
708 名前:デフォルトの名無しさん [2009/02/04(水) 23:49:28 ] >>701 void Hoge() { int x = Class.Method(a,b); } これだとxはMethod(a,b)から返ってくる値しかとれないでしょ。 void Hoge(Func<int> getX) こうしておけば Hoge(() => x + y); Hoge(() => x * y); 外部から自由な演算を入れられる。 ハッシュテーブルのキーが欲しいということになっても Dictionary<TKey, TValue> CreateDictionary<TKey, TValue>(TValue[] array, Func<TValue, TKey> getKey) { Dictionary<TKey, TValue> dic = new Dictionary<TKey, TValue>(); foreach(var item in array) { dic.Add(getKey(item), item); } return dic; } var dic = CreateDictionary(array, item => item.Name); その型のKeyにしたいものを自由に選べる
709 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:52:03 ] .NET Frameworkは再頒布可能だからその自作ソフトとやらに含めて配布すればいいんだよ。 msdn.microsoft.com/ja-jp/library/xak0tsbd.aspx ちなみにWindows Server 2003、Windows Vista、Windows 7にはリリース時点で最新の.NET Frameworkが入っている。(より新しいバージョンが出て、それが必要な場合は更に入れる必要がある)
710 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:53:57 ] はやくXPが駆逐されればいいんだがなあ
711 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:57:24 ] デザインパターンは関数型っぽいことを無理やり手続き型OOPLでやるための工夫が主だから かなり簡単に実装できるよな
712 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:58:26 ] >>708 それみると、君の主張するところの直感的でもないし、 初心者にもわかりにくいと思うよ
713 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:02:11 ] >>712 じゃあオブジェクト指向や構造化でもっと直感的に、 初心者に分かりやすく書ける?
714 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:04:46 ] スレ違い よそで存分に議論してくれ
715 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:05:14 ] 初心者ではないが、何が書いてあるかさっぱりだw
716 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:07:06 ] 人の揚げ足取りと議論厨は相談スレにお引き取りください
717 名前:デフォルトの名無しさん [2009/02/05(木) 00:07:42 ] すみませんコレは仕様なんでしょうか 1:public class Foo{ 2: private readonly int[] test = new int[]{1,2,3,4,5}; 3: public Foo(){ 4: int[] test2 = test1; 5: test2[0]=2; 6: Console.WriteLine(@"test[0]=" + test[0].ToString()); 7: } 8:} 上記 2行目readonlyにしてるtestが、5行目で書き換えられてしまいます。
718 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:09:03 ] >>708 じゃねーけど知りたいんならレキシカルクロージャとかで ぐぐった方がいいと思うよ。 >>708 2ch で説明するのはさすがに難しいと思う
719 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:09:15 ] 4: int[] test2 = test; のまちがいです
720 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:09:37 ] 配列の要素がreadonlyになるわけではありません
721 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:14:31 ] >>718 2chで説明するのが難しいことが、初心者向けなの?
722 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:15:02 ] >>718 ググっても関数型言語ユーザーの宗教じみた言論に圧倒されるばかりだと思う
723 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:18:22 ] >>701 匿名関数は生成したスコープの変数をそのまま取り込める(環境を渡してるって言うんだっけ?) 副産物的な物だけど、遅延評価的な振る舞いも持ち合わせてる
724 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:19:56 ] この辺の議論からもう13年か。 ttp://java-house.jp/ml/archive/j-h-b/001955.html ttp://www.google.co.jp/search?hl=ja&q=%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%B8%E3%83%A3+interface+site%3Ajava-house.jp >>718 むしろ近年のクロージャブームはLLの方が先に火をつけた気もするけどね。 JavaScriptの無名関数とかやっぱり初心者泣かせなのかねぇ?
725 名前:723 mailto:sage [2009/02/05(木) 00:21:07 ] ごめんさっきの >>718 あてじゃなくて >>722
726 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:31:46 ] 何々、これでいいじゃん? public static class Class { static int i; public static int Method() { return i++; } }
727 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:37:50 ] >>726 でもさ、C#でクラスそのものを引数に渡すって面倒事が多いでしょ。 だからデリゲートでもインタフェースでもインスタンスを生成して引数に渡していたのに。
728 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:41:24 ] クラスそのものって引数に渡せるの?
729 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:41:29 ] >>727 staticだからclassそのものを渡す必要なんてないよ どこでも自由に this.label1.Text = Class.Method().ToString(); でいいんじゃない?
730 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:43:56 ] >>728 private void button1_Click(object sender, EventArgs e) のobjectはクラスじゃん?
731 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:48:04 ] objectはインスタンスだろ
732 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:48:56 ] ocjectはクラス名だ
733 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:49:27 ] object
734 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:50:41 ] この場合は話の流れからインスタンスってことじゃねーの?
735 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:51:26 ] public class Class { int i; public int Method() { return i++; } } これの方がいいだろ たくさん作れるし
736 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:54:51 ] >>734 この流れって話の本筋なわけ?
737 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:56:27 ] >>729 それだと元のコードの引数を変えれば動作を変えられるという点が失われているじゃないか。
738 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 01:34:39 ] >>737 その引数を、Staticなメソッドで渡してあげればいいじゃない public static class test { static int i; public static int Method1() { return i++; } public static void Method2(int k) { i = i + k; } }
739 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 01:36:47 ] >>738 いや、>>708 とか足し算が掛け算になったり、辞書引いたりするような変化なんだけど。
740 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 01:45:46 ] >>739 つまり >だからデリゲートでもインタフェースでもインスタンスを生成して引数に渡していたのに。 というのは >708とか足し算が掛け算になったり、辞書引いたりするような変化なんだけど。 と同義ということ?
741 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 01:58:26 ] C#でCreateToolhelp32Snapshot関数を使いたいのですが、どう書けばいいのか分かりません。 .NET Frameworkに似たようなクラスライブラリはありませんか?
742 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 02:41:42 ] >>741 89.234.50.65/default.aspx/kernel32/CreateToolhelp32Snapshot.html
743 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 02:43:11 ] pinvoke.net/default.aspx/kernel32/CreateToolhelp32Snapshot.html
744 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 03:24:45 ] >>740 いや、同義というより1つの具体例と言うべきかな。 >>696 みたいに別の場合だってある。
745 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 04:17:38 ] >>732 objectはキーワードだ
746 名前:デフォルトの名無しさん [2009/02/05(木) 06:18:49 ] C#でアルファベットをfor文のループにかけてAからZまでを表示したいのですが、うまくいきません。 どのようにすればfor文でアルファベットを数値のようにAからZを表示する事が出来るのでしょうか?
747 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 06:20:05 ] >>746 一番分かりやすいのは配列にすればいいと思うよ
748 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 06:22:37 ] for(int i=0;i<26;i++) Console.WriteLine((char)('A'+i));
749 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 06:47:26 ] for(char c = 'A'; c <= 'Z'; c++) Console.WriteLine(c);
750 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 09:26:15 ] >>740 > >>739 > つまり > > >だからデリゲートでもインタフェースでもインスタンスを生成して引数に渡していたのに。 > > というのは > > >708とか足し算が掛け算になったり、辞書引いたりするような変化なんだけど。 > > と同義ということ? >
751 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 09:31:27 ] >>740 インスタンスを作ることでコンテキストの別な関数オブジェクトができる(イベント処理の時にstaticだとマズいだろう) 値を変えるのと振る舞いを変えるのとでは大違いだし… デリゲート(委譲)はその名の通り、実行するタイミングを相手に委ねてる 渡すことを意図しているのは値(狭義の)ではなく動作
752 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:00:29 ] Form1からForm2をShowDialogした場合、 Formが描画される際に画面の上から順に 貼り付けてあるコントロールが表示される感じで、 Closeする場合も同様にもっさり感があるのだが、回避する方法はある? ちなみにForm2がLoadされるとDataGridViewにMDBから データを読込んで表示させているのだけど。
753 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:15:24 ] それはビルドした実行ファイル?デバッグ?
754 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:17:26 ] >>753 デバックでも実行ファイルでも描画速度にあまり変化がない感じ・・・
755 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:20:02 ] 実行環境は?
756 名前:デフォルトの名無しさん [2009/02/05(木) 14:20:35 ] >>752 描画を手動でやる ↓ソース開始↓ [コントロール名].SuspendLayout() //コントロールの描画停止 //(この間に処理を書く) [コントロール名].ResumeLayout() //コントロールの描画再開 ↑ソース終了↑ コントロール名をthisにすればForm全体の描画を停止できる
757 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:20:44 ] それはGUIの設計に問題があるね フローレイアウトパネルにコントロール配置してFillしたりAnchorしたり 推奨されてないことやってないだろうね?
758 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 14:21:41 ] 素人発言だけどSuspendLayoutとResumeLayoutとか?
759 名前:752 mailto:sage [2009/02/05(木) 14:36:21 ] 実行環境はXPでCelelon2G・メモ1G VS2008でつ。 GUIの設計はVB(.Netじゃないヤツ)みたいに Formにコントロールを貼り付けるだけではダメなのかしら? Formにあるのは、DataGridViewとButtonとTextBoxとLabelだけ。 DataGridViewコントロールを外して純粋にFormだけでShowすると 幾分早く描画されるって事はDataGridViewの処理が適切でないのかな? 今から756氏と758氏を参考に試してみます。 みんな優しいな。ありがたい!
760 名前:デフォルトの名無しさん [2009/02/05(木) 14:47:04 ] DataGridViewに対してデータセットをバインドさせると早くなるよ〜 それでも遅いのならSQL文を見直すしかない
761 名前:752 mailto:sage [2009/02/05(木) 15:01:31 ] SuspendLayoutはあまり変化がなかった・・・ _| ̄|○ 今は、OleDbConnection使ってMDBへ接続しているんだけど、 もっと早い方法はあるんですか? SQL文に関しては単なるSELECT文なのでどうにもならないと思われ。。
762 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:02:32 ] データのバインドを直接じゃなくBindingSourceに任せてみたらどうだろう こういう症状はあまり経験も聞いたこともないけど
763 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:08:40 ] あれ?もしかしてDataSetなし?
764 名前:752 mailto:sage [2009/02/05(木) 15:09:40 ] >>762 早速試してみる! VB6から移行してきた口なんだが、勝手が違い過ぎて戸惑いすぐる。
765 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:14:45 ] DataSetはあります。 コードはこんな感じ(抜粋) strSelectSQL(変数)へSELECT文を入れてます。 dba = new OleDbDataAdapter(strSelectSQL, dbc); OleDbCommandBuilder builder = new OleDbCommandBuilder(dba); dba.Fill(dtset); dataGridView1.DataSource = dtset.Tables[0];
766 名前:752 mailto:sage [2009/02/05(木) 15:15:47 ] >>765 名前入れ忘れたが、752です。
767 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:18:28 ] CommandBuilderからdatasetまで全部動的か
768 名前:752 mailto:sage [2009/02/05(木) 15:36:30 ] bindingSourceを追加してみたけど、速度は劇的に早くならなかった。 実行速度はこの位って事で満足したことにまつ。 なんか引っかかるけど・・・ ところでbindingSource下記で使い方間違ってない?? dba = new OleDbDataAdapter(strSelectSQL, dbc); OleDbCommandBuilder builder = new OleDbCommandBuilder(dba); dba.Fill(dtset, "TEST"); bindingSource1.DataSource = dtset; bindingSource1.DataMember = "TEST"; dataGridView1.DataSource = bindingSource1; 教えて君で非常に申し訳なかったです。
769 名前:760 [2009/02/05(木) 15:36:38 ] 動かしてないんでご両所くださいw すべて妄想ですw ↓ソース開始↓ OleDbConnection odc = new System.Data.OleDb.OleDbConnection(); OleDbDataAdapter odda; DataSet ds = new DataSet("GetData"); //データセットの名称を指定 //接続情報を指定 odc.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + @"\DUMMYDATA.mdb"; //実行SQL文と接続先情報を設定してアダプタを作成 odda = new OleDbDataAdapter("SELECT * FROM DUMMYDATA", odc); //データを取得しテーブルを作成 //テーブル名称を設定(任意) odda.Fill(ds, "tm_DUMMYDATA"); //データソースに設定 dataGridView1.DataSource = ds.Tables["m_DUMMYDATA"]; //インデックス値でもいい ↑ソース終了↑ いろいろ勘違いしてたらごめんね 反省はしないけど
770 名前:752 mailto:sage [2009/02/05(木) 15:44:25 ] >>769 ソースまで書いてもらって、しかもコメント付で!! ほんとに親切にありがとう。 素直にうれしす。
771 名前:636の者です。 mailto:sage [2009/02/05(木) 16:40:08 ] コンストラクタについての質問です。 クラスが3つあります。クラスBは3つコンストラクタがあります。 ClassA { ClassB b = new ClassB(〜); } ClassB { public ClassB(N n){} public ClassB(N n, M n){} public ClassB(N n, M m, O o){} } ClassC { ClassB b = new ClassB( ); b.〜 } クラスAからクラスBを呼び出すときは、if文で分けてコンストラクタを1つだけ呼び出すことが できたのですが、クラスCからクラスBを呼び出すときはどのように呼び出したら良いでしょうか?
772 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 16:42:45 ] こっちが聞きたい ClassAとClassCは何が違うんだ
773 名前:636の者です。 mailto:sage [2009/02/05(木) 16:47:41 ] >>772 クラスAのwindowフォームからクラスBのwindowフォームを呼び出すんですが、 そのクラスBのフォームの選択欄を別のクラスCで使いたいのです。
774 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 16:49:37 ] それがどうした >>772 の答えになってないだろ
775 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 16:51:35 ] だったら class A() { public B b; C c; public A(){b=〜;c=C(this)} } public class C() { public C(A a){} } とかじゃだめ?
776 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 16:52:32 ] >>771 逆に聞く。 ClaaAからClassBを呼んだときと同じように、ClassCからClassBを呼ぶとどうなったんだ?
777 名前:636の者です。 mailto:sage [2009/02/05(木) 16:59:15 ] >>776 コンパイルエラーはでないのですが、 クラスCでは、クラスBの変数を呼び出しても未定義となってしまいます。
778 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:02:16 ] いいから失敗したコードを晒せ
779 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:03:42 ] >>777 確認だが、同一form(B)の情報をAとCで共有したいってことでいいの? だったら両方でnewしてるから 今のコードだったら、AとCがそれぞれ別のform(B1,B2みたいな)を持ってることになる。 違うなら、そもそもやりたいことが分からん。
780 名前:636の者です。 mailto:sage [2009/02/05(木) 17:13:57 ] >>779 クラスAで入力したテキストの個数によってクラスBのコンストラクタをShow()を使って 1つ呼び出すだけですが、クラスBではリストボックスなどをSelectedItemで選んで、 その選んだ項をクラスCで使いたいのですが、クラスCでクラスBの変数を使いたいときに、 クラスBのインスタンス化を行うときに、どのコンストラクタを選択すればよいのかが分かりません。
781 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:25:00 ] 禅問答みたいw
782 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:33:58 ] たぶんVB脳、それも極上のやつなんだと思う
783 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 17:47:52 ] 小文字は大文字クラスのインスタンスだとする。 (1) a → b1 c → b2 (2) a → b ← c どっちなんだ ちなみに(1)はフォームが2つできる。そしてb1とb2は別物だからリストボックスなんかの情報は共有できない。 俺には(2)を実現したいのに(1)のコードを書いちゃってるように見えるんだが・・・
784 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:16:59 ] なんか、他のクラスを呼び出すときはNewしなきゃいかんという間違った固定概念をお持ちなのでしょう
785 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:32:58 ] ×固定概念 ○固定観念
786 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:46:17 ] もう少し勉強しましょう、としか言いようがない。 >クラスBのインスタンス化を行うときに、どのコンストラクタを選択すればよいのかが分かりません クラスBは自分で書いたんでしょう? だったら自分で知ってるはず。 そうじゃなくてたぶんあなたの質問は、 「データをどうやってクラス間で渡したらいいですか?」というやつではないのかい? なんか書いても書いても返答がないので手応えのない質問者だ
787 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:54:38 ] 馬鹿がバレるのを恐れてるんじゃないの。
788 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:54:43 ] きょうもしつもんです。 「時間計るときに、System.Environment.TickCountを良く使うけど、 24.9日たったら一周しちゃうから、なんとかならないかなー」 なんて書き込みがよくありますが、 なんでSystem.Diagnotics.Stopwatchを使わないんでしょうか? 数十日間もパフォーマンスカウンタ取得し続けたら、CPUとかハード的に 負担(たとえばやりすぎたら故障しやすいとか)があるんでしょうか? もしそうだとしたら、なんとかSystem.Environment.TickCountを64bit化する コーディング方法はあるんでしょうか?
789 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:59:27 ] >>788 一周したかどうか、チェックすればいいんじゃないでしょうか。
790 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:01:24 ] フレームワークのバージョンのせいじゃねーの
791 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:05:27 ] じゃあやっぱりSystem.Diagnotics.Stopwatchでもいいんですかね。 なんかCPUのクロックからどうのこうのって言われるとCPUに悪そうなきがして。
792 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:05:45 ] はあ?
793 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:09:02 ] >>788 Vista/Server2008なら、API関数のGetTickCount64()が使える。 まあ、System.Environment.TickCountで間に合う程度の精度での時間計測なら、 DateTime.Now.Ticks / TimeSpan.TicksPerMillisecondでも問題ないだろうけど。
794 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:10:39 ] ローカル時間使うとプロセス起動中にBIOS時計触ったら狂ってしまいますよね。
795 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:23:05 ] まあ、NowだとNTPで同期入ったらずれるだろう。 Stopwatchの中身QueryPerformanceCounterだよ。
796 名前:デフォルトの名無しさん [2009/02/05(木) 19:58:46 ] >>788 はいこれ使ってくれ つSystem.Diagnotics.Stopwatch .NET Framework1.0「おkおk」 .NET Framework2.0「そんな古臭いコード保障できねーからいらねーよ」
797 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 20:05:51 ] ストップウォッチ使ってfor文の処理の時間とかをPCごとに幾らになるか計ったらダメなん?
798 名前:デフォルトの名無しさん [2009/02/05(木) 20:35:48 ] >>796 System.Diagnotics.Stopwatchって2.0からじゃなかったっけ
799 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 20:42:39 ] >>742 遅くなりましたが、ありがとうございました。
800 名前:デフォルトの名無しさん [2009/02/05(木) 20:47:57 ] >>798 ごめん 間違えた 訂正 はいこれ使ってくれ つSystem.Diagnotics.Stopwatch .NET Framework2.0「おkおk」 .NET Compact2.0「サポートしてませ〜ん」 申し訳」ない
801 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:31:23 ] private void catalogDataGridView_CellContextMenuStripNeeded(sender,e) { } DataGridViewCellEventArgs(e.RowIndex,e.ColumnIndex)で どこがクリックされたかは取得できるのはわかるのですが クリックした場所が選択中(SelectedRows)かどうかを調べる方法はないでしょうか? 選択中の行の上でクリックしたときだけカスタムストリップを表示したいのですが と書いてるうちに自己解決しました。ありがとうございます。
802 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:33:57 ] どういたしまして。
803 名前:デフォルトの名無しさん [2009/02/05(木) 21:36:48 ] System.Diagnotics.Stopwatchは1年くらいプロセス起動したまま使い続けても大丈夫なの?
804 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:38:17 ] パフォーマンスカウンタなんて常に参照されてるんだから気にするなよ タスクマネージャの情報ほぼ全部そっから取ってんだぞ
805 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:55:05 ] byte[100]の中から、任意のデータの並び(0x112233とか)を検索するにはどうすればよいですか?
806 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:57:20 ] >>803 システムの起動(CPUの電源ON)からのカウント数だから、プロセスの起動時間は関係ない
807 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:59:57 ] >>805 BM法
808 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:01:24 ] >>805 byte境界を越えてるのも探したいの? ビットパターンを頭から見てくしかないんじゃね?
809 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:02:42 ] ちょっと、スレ違い気味な事で申し訳無いのですが・・・ 適切なスレがありましたら指摘して下さい。 VisualStudio2005 C# で Webアプリケーション 及び Webサービス を作ろうとしていたのですが、 パケットをキャプチャする為にはIIS上で動かさなければいけないのでしょうか? 「とりあえず動かすのが先だ」と考えて、VSを複数立ち上げて.NET開発サーバー間でやりとりしていたのですが、 いざパケットを見ようと思ったら見方が解らなく、ネットも自分の解る範囲で検索してみたのですがそれらしい情報を 見つける事が出来ませんでした・・・ localhost内でやりとりする(?)パケットを見る事は出来ないのでしょうか・・・?
810 名前:デフォルトの名無しさん [2009/02/05(木) 22:04:03 ] >>805 byte[100]ならBM法でもたいしたコストかからないよ
811 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:05:53 ] >>809 WinPCap
812 名前:805 mailto:sage [2009/02/05(木) 22:11:43 ] やっぱり自力でやるしかないんですね。 便利なクラスが用意されていればと思ったのですが…
813 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:13:34 ] >>809 ローカルじゃ無理じゃね? 無料の VirtualPC でも使いなよ。
814 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:18:46 ] >>812 Array.Find()
815 名前:デフォルトの名無しさん [2009/02/05(木) 22:19:02 ] public int BytesBytes(byte[] src, byte[] target) { StringBuilder sbSrc = new StringBuilder(src.Length); for (int i = 0; i < src.Length; i++) { sbSrc.Append(src[i].ToString(@"X2")); } StringBuilder sbTarget = new StringBuilder(target.Length); for (int i = 0; i < target.Length; i++) { sbTarget.Append(target[i].ToString(@"X2")); } return sbSrc.ToString().IndexOf(sbTarget.ToString()); } (∪^ω^)わんわんお!
816 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:24:33 ] >>814 勘違い
817 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:26:12 ] >>809 elend.sakura.ne.jp/?p=117
818 名前:デフォルトの名無しさん [2009/02/05(木) 22:26:55 ] >>814 Array.Find()だと任意の並びは検索できないんじゃね 原文01122334 ↓ 検索対象112233 だとヒットしない
819 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:31:58 ] public static int Find(byte[] src, byte[] target) { return System.Text.Encoding.ASCII.GetString(src).IndexOf(System.Text.Encoding.ASCII.GetString(target)); }
820 名前:815 [2009/02/05(木) 22:33:29 ] >>819 に負けた・・・ ASCIIにするの思いつかなかった
821 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:36:00 ] >>820 いや、君の見て思いついた。
822 名前:デフォルトの名無しさん [2009/02/05(木) 22:36:07 ] あ、でも>>819 だと4ビットずれてたら検索できないね
823 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:37:47 ] ん、ビット単位でずらして検索するのか?
824 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:45:45 ] ASCIIだと0x80以降が0x3Fになっちまうっていう
825 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:47:21 ] 文字列にして検索してるのは馬鹿?
826 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:49:51 ] ネタをネタと(
827 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:50:39 ] コストを考慮しなくて良い場合は手抜き実装としてアリだと思う
828 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:51:47 ] >>524 そうか UTF7でどうだ?
829 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:52:30 ] >>828 はアンカミス >>824 へのレス
830 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:52:43 ] >>524 まったくだ・・・
831 名前:809 mailto:sage [2009/02/05(木) 22:55:46 ] >>810 試してみたいと思います。 >>813 どうも自分も調べていてそうなのかもと思い始めた所でした・・・ OSが内部で処理しているみたいですね。 今日中に解決できなければその方法で行こうと思います。 >>817 ありがとうございます。 そのサイトは自分も行ったのですが、 ARPの追加が出来なくて諦めました(汗 (エントリを追加できませんでした:5って奴です) もう少し知識があれば色々突っ込んでやりたい所なんですが、 勝手にARPをイジっても大丈夫なのかよくわかってないので、 その方法はやめておきます・・・。 みなさんありがとうございます。 とりあえず今日中は頑張ってみようと思います。
832 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:58:06 ] >>805 =>>809 ?
833 名前:809 mailto:sage [2009/02/05(木) 23:03:45 ] >>805 != >>809 です。
834 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 23:11:10 ] class Helper<T> { IEnuemrator<T> e; public Helper(IEnumerable<T> e) { this.e = e.GetEnumerator(); e.MoveNext(); } Result{ Accept, Reject, 保留 } public Result Add(T item) { if(e.Current.Equals(item)) { if(e.MoveNext() == false) return Result.Accept; return Result.保留; } return Result.Reject; } } こんなんを自作して、一つめが合っていたらこれを作って入れるみたいな感じじゃない?
835 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 23:15:34 ] 何それ
836 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 23:37:16 ] 誤爆?
837 名前:817 mailto:sage [2009/02/05(木) 23:40:31 ] >>831 該当の記事には要点しかなので、そのまま説明内容を打ち込んでも ダメなのは理解してるのかな? 事前に blogs.yahoo.co.jp/akio_myau/34370200.html とかで説明してるようなMicrosoft Loopback Adapterを追加してやらなければ ならない これはローカル通信専用の仮想のネットワークカードのようなもの するとネットワークが1つ追加されるので、これにIPなどを設定することで、 初めて817の記事内容にあるarpコマンドを受け付けるようになる デフォルトのローカル通信はキャプチャできないけど、追加した仮想ネットワークは ローカル通信には違いないけど仕組みが若干違うのでキャプチャできるってことだと思う なお、arpテーブルはアドレス解決のキャッシュみたいなものなので自分で 設定する分には特に心配はない
838 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:02:27 ] >>835-836 >>805 へのレスだよ
839 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:03:35 ] 誤爆の方がよかったね
840 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:07:11 ] ええええ、まさかとは思ったが・・・
841 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:08:23 ] こんなに素直なコーディングを見てそんな感想かよ
842 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:17:39 ] ∩___∩ | | ノ\ ヽ | / ●゛ ● | | | ∪ ( _●_) ミ j 彡、 |∪| | J / ∩ノ ⊃ ヽ ( \ / _ノ | | .\ “ /__| | \ /___ /
843 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:19:15 ] じゃあ>>805 の解をもっと素直に書いてくれや
844 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:20:41 ] 揚げ足取りの時間です
845 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:21:58 ] どうでもいいけど、バグってんだよなそれ >>834 IEnumerator<T> が何を実装しているかもう少し見たほうがいい foreach 使わないと無駄に長くなる理由でもあるんだけど
846 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:29:48 ] IDisposableにしろって話? 嫌だよめんどくさい
847 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:32:39 ] | | ∩___∩ | | ノ _, ,_ ヽ (( | プラプラ / ● ● | (=) | ( _●_) ミ _ (⌒) J )) 彡、 |∪| ノ ⊂⌒ヽ / ヽノ ヽ /⌒つ \ ヽ / ヽ / \_,,ノ |、_ノ
848 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:34:56 ] お取り込み中すいません。 Windows Forms1.1(VS.NET2003)のLabelのTextに "‐"(シフトJISの815D)を設定すると表示されなくて困ってます。 仕様なんでしょうか? WinForms2.0やVB6.0(Label.Caption)では表示されます。 Buttonとか、"&"のアクセスキー処理ができるコントロールでは みんなこの現象が出るようです。.NET1.1はSP1入れています。 "‐"や"815D"で検索しても情報がなくて。。。
849 名前:809 mailto:sage [2009/02/06(金) 00:36:08 ] >>837 ipconfigにloopbackというのが無い事に気づき、インストールしてarpまではたどり着けました。 ただ、routeするとすでに登録されているとの事で、route PRINTで確認したのですが登録されてました。 これでキャプチャできるのかな?と思ったのですが、やはり見れませんでした・・・ これは見ながらやった設定が間違っていたのか、もしくは自分がNetworkMonitorの使い方を正しく把握していからかのどちらかではないかと思います。 ためしにブラウザにloopbackと入れるとIISのページが表示されたので、loopback == localhost???とか、正常にloopbackされているという事?と、色々頭に?が浮かんでます笑 後一息の様な気がするのですが、明日朝もう一度試してみてダメならダメでまた時間のある時に試してみようと思います。 私の様な初心者に細かに解説していただき、本当にありがとうございました。
850 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:46:46 ] >>848 これだな。Shift_JISの0x815D == U+2010 Windows Server 2008、Windows Vista、Windows Server 2003、および Windows XP で GDI+ API 関数を使用するアプリケーションを使用すると、Unicode ハイフン文字 (U+2010) が描画されない support.microsoft.com/kb/956807/ja .NET 1.1はコントロールの描画にGDI+を使う。 .NET 2.0で標準だとそこにはGDI+を使わなくなったので、.NET 2.0だと問題が起こらなかったというわけ。
851 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 00:48:28 ] >>848 www.atmarkit.co.jp/fdotnet/vblab/appqa_04/appqa_04_01.html support.microsoft.com/kb/956807/ja