1 名前:デフォルトの名無しさん [2008/08/20(水) 17:15:27 ] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 前スレ ふらっとC#,C♯,C#(初心者用) Part29 pc11.2ch.net/test/read.cgi/tech/1216734995/
501 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 10:04:09 ] あれってデリゲートが今みたいに積極的にイベント以外に使われるようになることを 想定してなかったんだろうな 今作り直すならイベントハンドラは別扱いとかコンテナは別にするとかになりそう
502 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 19:31:30 ] >>501 なぜデフォでマルチキャストなのかって疑問は確かにあるけどそれはない。 だって関数ポインタの自然な発展形である以上、 その用途をイベントだけに見積もるなんてありえん。
503 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 19:34:08 ] また俺のわからない話をする
504 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 19:43:20 ] 最初はシングルキャストと厳密に分けてたけどうざいだけでメリットがあんまなかったからやめたのさ。
505 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 19:59:17 ] 関数ポインタを引数にとるアンマネージ関数にマルチキャストデリゲートを渡しても ちゃんと全部呼んでくれる。 神経質に使い分ける必要もないのかな。
506 名前:499 mailto:sage [2008/09/16(火) 20:13:47 ] どうも class Program { //計算を委託できる public Func<double, double, double> Calc; private double a, b; public Program(double a, double b){ this.a = a; this.b = b; } private double DefaultCalc(double a, double b){ return a + b; } public void Action(){ double result; if (Calc != null) result = Calc(a, b); else result = DefaultCalc(a, b); Console.WriteLine("計算結果:{0}", result); } } class Test { static void Main(string[] args){ Program program = new Program(12, 42); program.Calc += ((a, b) => a * b); program.Calc += ((a, b) => a / b); program.Action(); } }
507 名前:499 mailto:sage [2008/09/16(火) 20:14:33 ] ↑みたいなプログラムだとマルチキャストの意味が全くないし 間違えて+=で委託先を追加したら気づかずに余計な処理をさせちゃうこともあり得るので どうせならシングルキャストを作れればいいのにと思いましたが private Func<double, double, double> calc; public Func<double, double, double> Calc { get { this.calc = value; } } みたいなプロパティを追加すればいいだけだと気づきました、すみません
508 名前:499 mailto:sage [2008/09/16(火) 20:15:19 ] setだった
509 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 20:17:06 ] setオンリーのプロパティはガイドライン違反 SetCalcメソッドにしようね
510 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 20:20:36 ] >>509 そんなガイドラインあったっけ? VBなんて普通にWriteOnlyなんていう組み込みのキーワードまであるんだけど。
511 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 20:23:09 ] >>510 msdn.microsoft.com/ja-jp/library/ms229006 (VS.80).aspx
512 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 20:47:43 ] <>で囲まれてる文字列を最小一致で全部取り出すにはどうしたらいいですか? <html><body></body></html>なら、 html body /body /htmlを取り出してリストに突っ込むようなことです 最小一致なのでhtml><body></body></htmlが取り出されると困ります よろしくおねがいします
513 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 20:57:44 ] >>509 >>511 そうでしたか、 わざわざどうもです >>512 char[] separator = {'<', '>'}; string str = "<html><body></body></html>"; str.Split(separator, StringSplitOptions.RemoveEmptyEntries); っていうのはどうでしょう
514 名前:512 mailto:sage [2008/09/16(火) 21:17:12 ] >>513 うまくいきました 本当にありがとうございます。
515 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 22:15:33 ] >>512 ちなみに、.NET の正規表現的には \<.*?\> で行ける。 *? で最小一致。
516 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 22:55:41 ] >>515 ついでに先読み、戻り読みも入れて (?<=<).*?(?=>) で >>513 >>514 Split使うなら、ゴミが入らないようにしないと str.Split('<').Skip(1).Select(s => s.Split('>')[0]) 因みに、以下の場合はおそらく構文エラーなので適当に - 1回目のSplitで空文字列がある(ただし、#0は除く) - 2回目のSplitで要素数が2でないか、#0が空
517 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 23:05:38 ] 横やりだけどSkip()って初めて見るけど新しく追加されたメソッドか?
518 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 23:06:47 ] >>517 LINQ
519 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 01:06:42 ] LINQまったく使ってないなぁ 最初は興味あったけど構文が異質すぎて使えない
520 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 01:14:33 ] クエリ式を使わないLinqもありだよ。C#のクエリ式ではSkipはサポートされていない。 VBではサポートされている。
521 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 01:28:02 ] ゴミって空文字かな? StringSplitOptions.RemoveEmptyEntries でおkのような気がす そういう感じで行くなら str.Split(new char[]{ '<' , '>' }).Where(s => s != "") の方が俺好みだば クエリ構文はまったくわからないなぁ まったく使わなそうな気がするのでそこだけ勉強すらしてないなぁ。。
522 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 01:42:24 ] >>521 いや、こういう事 <html><body>ゴミ</body></html>
523 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 11:17:23 ] ああなるほど把握
524 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 14:56:32 ] パブリックメンバにDictinaryを含むクラスをシリアライズしたいのだけど、 IDictionary実装クラスはシリアル化できないと怒られます。 KeyValuePair構造体の配列に変換してからシリアル化するのがいいのかと考えたんですが、 デシリアライズの時にどうすればいいのか・・・ どなたか助言いただけると助かります
525 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 15:09:15 ] 配列にしたとしても、KeyValuePair(のプロパティ)が変更可能でないから駄目じゃないか 俺は変更可能なKeyValuePairとDictionaryのラッパー作って対処したが
526 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 15:25:42 ] Dictionaryでset可能なプロパティって気持ち悪いな IXmlSerializableの実装でも書くか?
527 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 15:42:24 ] C#でH8/3069の制御って出来ますか?
528 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 15:54:41 ] うん
529 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 16:13:30 ] 返答ありがとうございます もう少し具体的な質問が出来るようになるまで自分で勉強しようと思います
530 名前:524 mailto:sage [2008/09/17(水) 17:29:27 ] 結局パブリックプロパティで、 Dictionaryのkeyとvalueの2次元配列を取得、 Setterでは2次元配列のループでDictionaryにkeyvaluepairを格納していくような設計にしました。 やはりDictionaryはカプセル化した方が良かったですね。 ただデシリアライズ時のパフォーマンスがどうなるかは?ですが。
531 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 18:49:57 ] >>528 え゙ ?H8向けのコンパイラ(実行環境)ってあるの?
532 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 18:55:26 ] ↑アホ
533 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 19:38:33 ] いや、俺の方がもっとアホ
534 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 19:46:40 ] >>531 H8は(というか今時のマイコンはほとんどそうだと思うけど)実機とIDEで デバッグができるはず。 まあでもマイコンの開発にデバッガなんて俺はいらないと思うけどね。 少なくとも俺は使ったことも必要性を感じたこともないよ。
535 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 22:42:02 ] タイマーで10ミリ秒毎にフォーム上のマウスカーソルの座標を取得し、 マウスに合わせて画像も一緒に移動させる。 更に、クリックした場所に画像を固定する。 ってなことをやってみたんですが、 移動時など、ものっすごい画像がチラついてしまいますorz やっぱこういうのはDirectXなどを使ったほうが良いのでしょうか?
536 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 23:06:50 ] 本当にそれは10ミリ秒毎にする必要はあるのか?
537 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 23:08:53 ] >10ミリ秒毎 意味あると思ってんのか?
538 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 23:23:14 ] 100fpsなんて格ゲでもやらんぜ
539 名前:535 mailto:sage [2008/09/18(木) 00:39:58 ] 3連発でダメ出しされるとは・・・orz 最初100ミリ秒でやったんですが、 マウスの動きに若干遅れるんで、10ミリ秒にしてみました。 意味は全然考えてませんでした。すいません。。 これは仕様から考え直したほうが良さげですね。 お騒がせしました&ありがとうございました。
540 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:14:11 ] タイマでやらんでもできるっしょ。 ボードゲームのソースでも拾ってくれば?
541 名前:デフォルトの名無しさん [2008/09/18(木) 01:33:08 ] C#というわけではないのですが、ファイル管理ソフトでファイル内 文字列まで見て該当ファイルを見つけるという検索がありますが、 あれは文字列の形式やフォーマットあるいはエンコードなどをすべて のケースで調べているのでしょうか? たとえばExcelやワードなどのファイルの場合は、それをテキスト形式 で取り込んで調べるのでしょうか?
542 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:36:38 ] >>541 うぜえ、なんだこいつ 場違いなんだよ消えうせろクソ餓鬼
543 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 03:05:33 ] >>540 画像をマウスと一緒に動かすのは、とりあえず諦めました。 で、オセロとか見てたんですが、置く画像が正方形なら簡単だけど、 長方形も混在してると、途端に難しくなりますね。 ゲーム系のプログラムは全然やったこと無かったんで、 もっと単純な物も参考にしてやってみます。
544 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 03:52:15 ] >>543 PanelとかPictureBoxとかのMouseMove/MouseClickイベントで十分ぽい匂いがした。
545 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 07:56:55 ] struct Vect { public Point[] Points; } private void init() { Vect v = new Vect(); v.Points = new Point[] { new Point(2, 3), new Point(3, 4) };//これだといける v.Points = { new Point(2, 3), new Point(3, 4) };//これだとエラーが出る } なぜエラーがでるのでしょうか?どういう違いがあるのでしょうか?
546 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 08:00:00 ] Point[] Points = { new Point(2, 3), new Point(3, 4) }; こんな感じで記述するといけるんですが・・
547 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 08:29:26 ] >>545 new Point[] を省略していいのは変数宣言の時だけ。
548 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 15:22:45 ] 省略できるのしらんかったw
549 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 17:28:56 ] menustripコントロールで出来て、toolstripコントロールだと出来ないことってありますか? toolstripならアイコンだけじゃなくて文字でも表示できるのでmenustripを使う意味はあるのかなと思いました。
550 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 19:24:28 ] C#Builderのプロジェクトファイル群をVC#対応へ移行するにはどのようにするのでしょうか?
551 名前:デフォルトの名無しさん [2008/09/18(木) 21:06:14 ] エラー 1 型または名前空間名 'Drawing' は名前空間 'System' に存在しません。アセンブリ参照が不足しています。 どこいっちゃったのよ。
552 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:13:25 ] Drawingの前にSystemつけるかusing System.Drawing;じゃないか
553 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:18:55 ] スレタイに C井 が足りない
554 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:20:07 ] C丼は足りてる
555 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:24:26 ] .net1.0からの移植 using System.Drawing;でエラーが出た もう意味がわからない
556 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:27:33 ] ※ C丼: コチュジャン丼。豚肉と温野菜をコチュジャンで甘辛くした物をご飯の上に載せた物
557 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:31:10 ] ソリューションエクスプローラーの参照設定にSystem.Drawing入ってるか?
558 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:33:20 ] 「System」だけ参照設定に入ってるけど、一つ一つやらなきゃいけないの? なんか似たようなエラー30個もある
559 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:35:48 ] なるほど解決しました エラー減っていくのが楽しいです ありがとう
560 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:38:59 ] 現金な奴だw
561 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 21:40:21 ] じゃあ、C丼について語ろうか
562 名前:デフォルトの名無しさん [2008/09/18(木) 21:43:23 ] 丼だけ〜 ?
563 名前:デフォルトの名無しさん [2008/09/18(木) 23:42:56 ] C#で、Formに張り付いているTextBoxを、 マウスドラッグされた場所に移動する場合どの メソッドをしようすればいいでしょうか?
564 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 00:41:50 ] メソッドは使用しない。 プロパティなら使用する。
565 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 00:42:08 ] private bool clicked = false; Point beforeLocation; private void textBox1_MouseDown(object sender, MouseEventArgs e) { clicked = true; beforeLocation = textBox1.PointToScreen(e.Location); } private void textBox1_MouseMove(object sender, MouseEventArgs e) { if (clicked && (beforeLocation != null)) { Point afterLocation = textBox1.PointToScreen(e.Location); textBox1.Left += (afterLocation.X - beforeLocation.X); textBox1.Top += (afterLocation.Y - beforeLocation.Y); beforeLocation = afterLocation; } } private void textBox1_MouseUp(object sender, MouseEventArgs e) { clicked = false; } 超適当で作ってみたけど正しいかはわかんない
566 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 01:03:03 ] もうちょっとシンプルに int mx, my; bool mDown; private void textBox1_MouseDown(object sender, MouseEventArgs e) { mx = e.X; my = e.Y; mDown = true; } private void textBox1_MouseMove(object sender, MouseEventArgs e) { if (!mDown) return; this.textBox1.Left += e.X - mx; this.textBox1.Top += e.Y - my; } private void textBox1_MouseUp(object sender, MouseEventArgs e) { mDown = false; }
567 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 04:36:53 ] msdnドキュメントをオフラインで使用したいのですが どこでダウンロードできますか?
568 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 04:42:58 ] Download Centre
569 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 07:45:52 ] 2005用のしかないんだけど、2008にも使えるの?
570 名前:デフォルトの名無しさん [2008/09/19(金) 09:24:58 ] すみません、、、質問させていただきます。 for文を利用して、偶数表示をするWEB画面を作成する課題がでました。 解答例)2,4,6,8,10 結果は、10が表示されます。デバッグしたら、 2,4,6,8もif文の中をとっているのに表示されません、、、 提出期限は昨日の夜まででした、、、ほんとに どうしていいか分かりません。教えてください。 for (int i = 1; i <= 10; i++) { if (i % 2 == 0) { litShowAns.Text = Convert.ToString(i) + "、"; } } litShowAnsはliteralのIDです。 ヒントは文字列の結合らしいのですが。。。何で文字列の結合が必要なのか分かりません。
571 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 09:36:30 ] >>570 Aという変数に2から10まで入れたとして、最後に入ってるのは10だろ?
572 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 09:37:32 ] >>570 文字列の結合を調べましたか? 試しましたか? i がそれぞれの値のとき、何が起こっているか自分なりに説明できますか?
573 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 09:49:15 ] >>570 litShowAns.Text += Convert.ToString(i) + "、";
574 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 09:54:16 ] >>570 for (int i = 2; i <= 10; i+=2) { string str += Convert.ToString(i) + "、"; } litShowAns.Text=str;
575 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 09:55:15 ] 間違えた string str =""; for (int i = 2; i <= 10; i+=2) { str += Convert.ToString(i) + "、"; } litShowAns.Text=str;