1 名前:デフォルトの名無しさん [2009/01/20(火) 21:47:33 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。
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