- 1 名前:デフォルトの名無しさん [03/10/04 01:02]
- このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 少しずつC#プログラマを名乗るものが現れました。みなさん一緒に勉強しましょう。 前スレッドはこちら pc2.2ch.net/test/read.cgi/tech/1059028988/l50 (Part4) pc2.2ch.net/test/read.cgi/tech/1047210828/l50 (Part3) pc2.2ch.net/test/read.cgi/tech/1035895873/l50 (Part2) pc2.2ch.net/test/read.cgi/tech/1023766485/l50
- 445 名前:デフォルトの名無しさん mailto:sage [04/10/26 00:31:58]
- >>443
ありがとうございます。 ざっとみたところ、本当にComponentを継承するだけで良さそうですね。素晴らしい。 >>444 いえ、提供されているCOMがあるのですが、使い勝手がイマイチなので、 ラッパーコンポーネントを作ろうと思っています。
- 446 名前:デフォルトの名無しさん [04/10/26 01:11:52]
- DataTableをdataGrid.DataSourceに設定して、
dataGridのセルがクリックされたときに元のDataTabeのどのRowにあたるか、 見つける方法ないですか? ソートされちゃうと順番変わってわけわかめ。でも自動ソート機能は欲しい。
- 447 名前:446 mailto:sage [04/10/26 01:14:57]
- Windows.FormsのDataGridです。
- 448 名前:デフォルトの名無しさん mailto:sage [04/10/26 01:59:00]
- >>446
dataGrid.DataSource.Rows[dataGird.CurrentRowIndex]; つか設計おかしいよ。順番気にしてる時点で。
- 449 名前:デフォルトの名無しさん mailto:sage [04/10/26 02:08:15]
- >>448
わけあってDataGridをListViewのように使ってるんです。 で、残念ながらそのコードだと、ソート前のDataRowしか取れませんでした。
- 450 名前:デフォルトの名無しさん mailto:sage [04/10/26 02:24:19]
- あー、そういうことか。
主キーのところの値が完全一致するのを探せば良いんじゃない? //カラムの並びを入れ替えられるとお手上げかな。
- 451 名前:デフォルトの名無しさん mailto:sage [04/10/26 02:46:42]
- >>450
やっぱりそういう力技しかないんですね・・・。カラムの並び替えは無しの方向でやってます。 ありがとうございました。
- 452 名前:デフォルトの名無しさん mailto:sage [04/10/28 00:49:32]
- >>446
CurrencyManagerを使えばできないかな
- 453 名前:デフォルトの名無しさん mailto:sage [04/10/28 00:56:18]
- ふとどぼんを見に行ったらこんなのもあったが。
ttp://dobon.net/vb/dotnet/datagrid/currentrow.html
- 454 名前:デフォルトの名無しさん mailto:sage [04/10/29 13:04:24]
- Socket.Send()を利用するため、XmlSerializerでシリアル化したオブジェクトをバイト配列にコンバートして
Send()につっこみたいのですが、XmlSerializerの引数はstream用でバイト配列にする方法が見つかりません。 やっぱできないのでしょうか。。。。
- 455 名前:デフォルトの名無しさん mailto:sage [04/10/29 13:15:50]
- MemoryStream ms = new MemoryStream();
xmlSerializer.Serialize(ms, obj); byte[] bytes = ms.ToArray(); socket.Send(bytes, 0, bytes.Length); ということかな?
- 456 名前:デフォルトの名無しさん mailto:sage [04/10/29 13:18:23]
- >>454
MemoryStream
- 457 名前:デフォルトの名無しさん mailto:sage [04/10/29 13:20:12]
- 455のsocket.Send、パラメータをStream.Writeと勘違い……。
- 458 名前:454 [04/10/29 14:29:46]
- >>455,456さん
ありがとうございます、MemoryStreamをつかうんですね ためしてみます(`・ω・´)
- 459 名前:デフォルトの名無しさん mailto:sage [04/10/29 22:47:34]
- .net2で質問なんですけど、、、
this.TopMost = !this.TopMost; とやると常に手前にしたときにメインメニューのドロップダウンの部分が フォームの下に隠れちゃうんですけど何がいけないんでしょうか。。。?
- 460 名前:デフォルトの名無しさん mailto:sage [04/10/29 23:58:23]
- Visual Studioで使われているようなタブコントロールを作りたいのですが、
あれはSystem.Windows.Forms.TabControlからの継承で作れるものなのでしょうか。 サードパーティ製のものもあるにはあるのですが、 せっかくなので自分で作ってみたいのです。
- 461 名前:在日外国人参政権反対 mailto:sage [04/10/30 01:16:55]
- >460
自分で気合で描画することを進めます。
- 462 名前:454 mailto:sage [04/10/30 17:42:20]
- たびたびすいません、454です
>>455を参考にやってみましたが、うまくいかず(´・ω・`) デシリアライズはこれでいいんですよ・・・ね・・・? MemoryStream msRead = new MemoryStream(); XmlSerializer readSerializer = new XmlSerializer(typeof(Obj); msRead.Write(byteAry,0,byteAry.Length); Obj obj = (Obj)readSerializer.Deserialize(msRead); msRead.Close();
- 463 名前:デフォルトの名無しさん mailto:sage [04/10/30 17:46:03]
- >>462
MemoryStream msRead = new MemoryStream(); XmlSerializer readSerializer = new XmlSerializer(typeof(Obj); msRead.Write(byteAry,0,byteAry.Length); msRead.Position = 0; // コレ追加よろ Obj obj = (Obj)readSerializer.Deserialize(msRead); msRead.Close();
- 464 名前:454 mailto:sage [04/10/30 17:52:28]
- >>463
おぉぉ、うまくいったー ありがとうございます Position指定必要だったんですね・・・・まったく気づかなかった(つД`)
- 465 名前:デフォルトの名無しさん mailto:sage [04/10/30 18:26:25]
- >>461
ちまちまやってみますわ。 .net 2.0になっても各種コントロールはショボイままだった…。 幾つか良くなったのもあるけど。
- 466 名前:デフォルトの名無しさん [04/10/30 21:12:36]
- CSVから読み込んで、datasetに収まってる
7995.005229 とかを少数以下は無視していいのでintにしたいのですがどうすればいいですか? Convert.Tointが使えなくて困ってます。(少数いかにも数字があるから?)
- 467 名前:デフォルトの名無しさん mailto:sage [04/10/30 21:14:38]
- >>466
doubleにしてからintに落とせば?
- 468 名前:デフォルトの名無しさん mailto:sage [04/10/30 21:16:36]
- >>465
基本的に言語のライブラリはOSが提供するUIに口出ししないし、するべきではありません。 そういうのはサードパーティの仕事です。
- 469 名前:デフォルトの名無しさん [04/10/30 21:21:44]
- そのサードパーティのライブラリでよく使われる?ActiveReport
やFlexGridなどの解説本を探してみたのだが、全然見つからないね。 ヘルプだけ見て使いこなせということなんだろうか。
- 470 名前:466 [04/10/30 22:10:21]
- >>467
いけました。ありがとうございました
- 471 名前:デフォルトの名無しさん mailto:sage [04/10/30 23:28:29]
- >>468
まぁ今の".NET Framework"はそうかもしれないけど、 いずれWindowsのAPIになっていくわけでしょ。 そうするとやっぱりWindowsが提供するネイティブコントロールは しょぼいってことになるわけで、そろそろどうにかならないものかとは思う。
- 472 名前:デフォルトの名無しさん mailto:sage [04/10/30 23:36:02]
- >>469
VS標準のCrystalReportも日本語だとあまり情報ないよね。 仕事で作るような帳票類はGDIでゴリゴリ書いてる時間ないから しかたなく使ってるけど、正直"たぶんこうやって使うんだろう"の世界。
- 473 名前:在日外国人参政権反対 mailto:sage [04/10/30 23:48:30]
- >468
Windows.Formsにまとめてるのはその意図を汲んでのことだろう。 だからこそそれを拡充させてほしい気はする。
- 474 名前:デフォルトの名無しさん mailto:sage [04/10/30 23:58:33]
- リストボックスから条件に見合ったオブジェクトを削除したいのですが、
foreach ( UserList logoutUser in listBox1.Items ) { if ( recMessage.TargetUserID == logoutUser.UserGuid ) { listBox1.Items.Remove(logout); } } と書くと System.InvalidOperationException: この列挙子が連結されている一覧は変更されています。 列挙子は、一覧が変更しない場合に限り使用できます。 とゴルァされるのですが、いい方法ないでしょうか・・・。
- 475 名前:デフォルトの名無しさん [04/10/31 00:01:00]
- あ、最後のところRemove(logoutUser)でつ
- 476 名前:デフォルトの名無しさん mailto:sage [04/10/31 00:04:54]
- そりゃ列挙中に肝心の列挙するコレクションが変わってしまっては話にならないだろ。
forで回してやるとかしな。
- 477 名前:474 mailto:sage [04/10/31 00:13:16]
- ありがとうございました。
1回ブツが釣れれば十分なのでbreakかましたらうまくいきました 吊ってきますorz
- 478 名前:デフォルトの名無しさん mailto:sage [04/10/31 12:12:15]
- 「すれ立てるまでもない質問・・・」に書き込んだら怒られてしまいました。
同じ内容ですが、こちらに書かせてください。 VS.NetのC#でプログラム作ってるんですが、データセットから テキストボックスにバインドする方法が分からないんです。 といっても、よくあるデータテーブルの列単位でバインドするやり方ではなくて データテーブルのある条件に合致するレコードの項目をバインドしたいんです。 例えば Key 列1 列2 001 1AAA 1BBB 002 2AAA 2BBB 003 3AAA 3BBB 004 4AAA 4BBB 005 5AAA 5BBB みたいなデータテーブルから、TextBoxにはKey=003の条件によって 列1の内容(3AAA)をバインドしたいんです。 もちろん、バインドするからには変更結果も反映されていてほしいんですが・・・ お願いします。
- 479 名前:デフォルトの名無しさん mailto:sage [04/10/31 18:21:08]
- ふと思ったんですけど、
using System.Windows.Forms; という感じにしておいた部分を using System.Windows.NewForms; とかに書き換えることで、クラス構成をそっくり新しくする事って邪道ですか?
- 480 名前:デフォルトの名無しさん mailto:sage [04/10/31 18:22:36]
- オレ的には邪道
- 481 名前:デフォルトの名無しさん mailto:sage [04/10/31 19:07:04]
- >>479
その場合、 using System.Windows.Forms; ↓ using No479.Windows.Forms; みたいに企業名(Systemの部分)を変えたほうがいいんじゃないか。 ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpgenref/html/cpconnamespacenamingguidelines.asp
- 482 名前:479 mailto:sage [04/10/31 19:11:46]
- >>481
ちゃうちゃう System.Windows.Forms と System.Windows.NetForms の中に、 型は同じだけど挙動の異なるクラスがあったときに、 using 文でどちらを採用するか切り替えるのは邪道かな?って事
- 483 名前:479 mailto:sage [04/10/31 19:12:21]
- >>482
別に名前空間名はなんだって良いんだが
- 484 名前:デフォルトの名無しさん mailto:sage [04/10/31 20:48:00]
- >>482
そういうクラスが大量にあるソースを目の前にしたときに激しい絶望感に襲われるのでやめてください。 using書いてるのにnamespaceフルに書いて別のnamespaceのクラスを使用されたりして混沌に拍車がかかったりします、してます……
- 485 名前:479 mailto:sage [04/10/31 20:52:06]
- 何となく分かりました。皆さんも回答有難う御座います
>>484 がんがって下さい orz
- 486 名前:デフォルトの名無しさん mailto:sage [04/10/31 20:57:35]
- >>484
using Hoge = System.Windows.Forms; Hoge.Form = new Hoge.Form(); で随分楽になると思うけど。 まあ479みたいなのは見たくもないと言うのはよく分かる。
- 487 名前:デフォルトの名無しさん mailto:sage [04/11/01 02:18:40]
- >479
そういうののためにAbstractFactoryとかあるとおもうのだけど。 あれは切り替えできるとともに、システム上での選択肢をひとつに強制するという使い方でもある。 ソースごとにusingで切り替えられるのは>>484のいうとおりたちの悪いバグの元。
- 488 名前:デフォルトの名無しさん mailto:sage [04/11/02 04:49:20]
- FormクラスのActivate()メソッドを使用してます
>>アクティブなアプリケーションであるフォームをアクティブにした場合は、そのフォームが最前面に移動します。 >>アクティブなアプリケーションではないフォームの場合は、そのフォームのウィンドウ キャプションが点滅します。 とあるのですが、他のアプリケーションに切り替えてるときにこのメソッド呼び出されると、最前面に来る場合があるのですが、 他のアプリケーションにフォーカスしている ≠ その他のアプリケーションのフォームがアクティブである ということなのしょうか・・・? MSNメッセンジャーのように、通知が来たときに点滅するだけでいいのですが、 これってWin32API叩くしかないんでしょうか・・・。
- 489 名前:デフォルトの名無しさん mailto:sage [04/11/02 09:28:31]
- >>488
なるねー。 .NET2.0ならFlashメソッドってのがあるんだけど。
- 490 名前:488 [04/11/02 14:36:14]
- 1.1じゃムリかなぁ(つД`)
- 491 名前:デフォルトの名無しさん mailto:sage [04/11/02 17:24:17]
- VSの画面にはドッキングウィンドウなどありますが、あのコンポーネントは何処にありますか?
あの画びょうのマークのついたドッキングウィンドウ・コンポーネントと、 プロパティを設定するためのコンポーネント(VS右下の、Nameとか設定できる奴)を 探していますが見つからない。
- 492 名前:デフォルトの名無しさん mailto:sage [04/11/02 17:36:37]
- >>491
とりあえず > プロパティを設定するためのコンポーネント(VS右下の、Nameとか設定できる奴)を はPropertyGridだな。こいつは.NET Framework標準。 ドッキングウィンドウは……the Code Projectにあったようななかったような。
- 493 名前:デフォルトの名無しさん [04/11/02 18:59:20]
- richTextBox1.AppendText( recMessage.ToString() + " : " + recMessage.Message + "\r\n" );
を richTextBox1.AppendText( recMessage.ToString() + " : " /* + recMessage.Message + "\r\n" */); string[] splString = recMessage.Message.Split(new char[] {'#'}); for ( int count = 0 ; count + 1 <= splString.Length ; count++ ){ if ( count != 0 ){ String colorCode = splString[count].Substring(0,1); switch ( colorCode ){ case "1": richTextBox1.SelectionColor = System.Drawing.Color.Blue; richTextBox1.AppendText(splString[count].Substring(1)); break; (中略) default : richTextBox1.AppendText(splString[count]); break; } }else{ richTextBox1.AppendText(splString[count]); } } richTextBox1.AppendText("\r\n"); } にしたところ、エラー音が出るようになりました(処理は正常に行われてるっぽい) なぜでしょう・・・?
- 494 名前:デフォルトの名無しさん mailto:sage [04/11/02 23:03:59]
- >>491
DockPanelSuite sourceforge.net/projects/dockpanelsuite/ 無償でオープンソース。現在ベータ版で、メニューの統合がうまくいかないなどバグが残る。 DotNetMagic www.dotnetmagic.com/ 機能的にはおそらく最強。でも有償。 MagicDocking www.codeproject.com/cs/miscctrl/dockingmanagerextender.asp DotNetMagic の旧バージョン。ライセンスはよくわからん。 SharpDevelopに使われるなど実績あり。 Docking Suite www.divil.co.uk/net/controls/dockingsuite/ 現在ベータ版。非商用利用に限り無償。 代表的なところでは、こんなものか。見た目や動きが微妙に違うので、実際に使ってみて選んだ方がいい。
- 495 名前:デフォルトの名無しさん mailto:sage [04/11/03 10:49:11]
- 鯖から非同期に送られてきたデータをバックグラウンドで取得し、イベントとして通知するようなライブラリ作ってます
1:TcpClient を使っているとき、サーバから切断されたことをすぐに知るにはどうすればいいか 2:異常切断されたときイベントなどで通知することを考えているが、 通常切断したときも同じイベントを発行したほうがライブラリを使う側にとって便利なのかどうか ちょっとアンケートがましいですが意見をお聞かせくださいm(_ _)m
- 496 名前:デフォルトの名無しさん mailto:sage [04/11/03 12:41:36]
- プログラム歴2ヶ月で答えると叩かれそうだが・・・
1, byte[] byteAry = 受信データ; if ( byteAry.Length <= 0 ) { パイプカット } 2, ライブラリがエラーの処理をどこまでするかによるんじゃないでしょうか でしゃばってスマソ
- 497 名前:デフォルトの名無しさん mailto:sage [04/11/03 23:25:41]
- >495
1.物理的に切断を瞬間的に不可能。 TCPのキープアライブ使ってもいいが融通がきかん、自分でキープアライブパケット投げるようにしておけ。 2.同じイベントでも(・∀・)イイ!!が、通常なのか異常なのかわかるようにしておけ。エラー原因などもプログラムで扱えるよう定義してふんだんな情報を送っておけ 以上。
- 498 名前:杏仁 [04/11/05 17:39:49]
- 最近C#を始めました。良く分からないので質問させてください。
いま、Cで作成されたDLLをDllImportで呼び出しています。 そのDLLの仕様を見ると関数は void hoge(UINT *pWidth, UINT *pHeight); とポインタで呼び出していました。 [DllImport("hogehoge.dll")] public static extern void hoge(int w, int h); としても当然うまくいきませんでした。 C#でこのような場合ようやってDllImportすればいいのでしょうか? お手数ですが、お教えください。よろしくお願いします。
- 499 名前:デフォルトの名無しさん mailto:sage [04/11/05 17:46:06]
- >>498
ref System.UInt32 にする。 (まぁ小さげな値だろうから ref System.Int32 でもいいだろうけど)
- 500 名前:デフォルトの名無しさん mailto:sage [04/11/05 17:53:35]
- System.IntPtrで外部関数のパラメータを定義し
System.Runtime.InteropServices.Marshal.AllocCoTaskMemでメモリを確保、 System.Runtime.InteropServices.Marshal.WriteInt32で確保したメモリに書き込み、 関数に渡す。 結果をSystem.Runtime.InteropServices.Marshal.ReadInt32で読み込んで System.Runtime.InteropServices.Marshal.FreeCoTaskMemでメモリを破棄する。 uint*程度でやる事じゃありません。
- 501 名前:デフォルトの名無しさん mailto:sage [04/11/05 17:58:17]
- 関数がどんな性質なのかにもよるんだよなー。
これがよくもあり悪くもあり。
- 502 名前:杏仁 [04/11/05 18:34:05]
- 回答ありがとうございます。
>>499 > ref System.UInt32 にする。 [DllImport("hogehoge.dll")] public static extern void hoge(ref System.UInt32 w, ref System.UInt32 h); ということでしょうか?この場合、どうやって呼び出せばいいのですか? int w=0; int h=0; hoge(w,h); としてもうまくいきません。 >>500 回答していただいたのにさっぱり・・・。 もう少し分かりやすくお願いできますでしょうか? 最近始めたばかりで、さっぱり右も左も分からない状態です。 よろしくお願いします。
- 503 名前:デフォルトの名無しさん mailto:sage [04/11/05 18:39:42]
- >>502
ヘルプでrefキーワードぐらい調べようよ〜。 呼び出す時もrefキーワードが必要。 hoge(ref w, ref h); 500はただのジョークだから。こんな手段もあるよってだけ。 //と最後の行で言ったつもりだったんだけど。
- 504 名前:デフォルトの名無しさん mailto:sage [04/11/05 19:04:46]
- >>502
蛇足の補足。たぶんこの場合は関係ないだろうけど、ポインタ値が指す領域にある値だけではなく、 そのものに意味がある場合には、System.IntPtr 型にしておいて、ポインタの指す先のアクセスは >>500 風にやるようなこともある、ってのが >>501 ね(たぶん)。 例えば hoge の正体が hoge(UINT* w, UINT* h) { delete [] w; delete [] h; } みたいな場合とか。
- 505 名前:デフォルトの名無しさん mailto:sage [04/11/05 19:05:31]
- >>そのものに意味がある
↑ 「ポインタ値そのものに意味がある」の編集ミスですた。
- 506 名前:デフォルトの名無しさん [04/11/06 00:54:32]
- this.pictureBox1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseWheel);
private void pictureBox1_MouseWheel(object sender, MouseEventArgs e) { Console.WriteLine(e.Delta); } と記述してるのですが、マウスホイールくるくるしてもpictureBox1_MouseWheelイベントが発生してくれません。 そもそもなんで、MouseWheelだけは手動で書かないといけないのかと(ry
- 507 名前:デフォルトの名無しさん [04/11/06 01:01:47]
- >>506
Console.WriteLine();を、MessageBox.Show("",""); にしても駄目?
- 508 名前:506 mailto:sage [04/11/06 01:08:21]
- だめっぽいです
ブレークポイントしかけても反応してくれません。 Panelの上に張ってるのでPanelにもイベントハンドらを記述したのですが どっちもイベントが発生しないみたいです。
- 509 名前:デフォルトの名無しさん mailto:sage [04/11/06 01:10:57]
- >>508
>Control.MouseWheel イベント > コントロールにフォーカスがあるときにマウス ホイールが動くと発生します。 PictureBoxやPanelはユーザの通常操作ではフォーカスを得る事はない。
- 510 名前:508 mailto:sage [04/11/06 01:18:35]
- なるほど。
Mouse_EnterしたらFocus()するようにするとうまくいきました。 お騒がせしました。
- 511 名前:デフォルトの名無しさん [04/11/06 18:29:40]
- 今C#の文法書を読んで勉強中なんですが
文法などを一通り理解したら次は何をすべきなんでしょうか? guiアプリケーションを作れる人は文法などを理解したら次は何をしたんですか?
- 512 名前:デフォルトの名無しさん mailto:sage [04/11/06 18:32:41]
- 作りたいアプリを作りつつ
GUIパーツをいろいろ試したり細かいプロパティ・メソッドを調べたり 非GUIなクラスの使い方を覚えたりどんなクラスが存在するのかを調べたり。
- 513 名前:デフォルトの名無しさん mailto:sage [04/11/06 18:32:45]
- >>511
作りたいものを作れ。手を動かせ。 「習うより慣れろ」ということわざがあるが、 プログラミングの場合「習ったら慣れろ」ってところか。
- 514 名前:デフォルトの名無しさん mailto:sage [04/11/06 18:41:15]
- わからないことがあったらここに質問しにきていいんですかね?
タブ型メモ帳を作ろうとしてお世話になったのが自分なのですが。 MSDNライブラリをみながら作るだけではちょっとムリがあるかなと思いました。
- 515 名前:495 mailto:sage [04/11/06 20:36:09]
- >>496-497
亀ですがdくすです。 む〜。実際にデータ送らないと切断検出できないですか〜。 送信、受信が別スレッドに分かれているんで、リターンを待つ同期に一苦労^-^;
- 516 名前:デフォルトの名無しさん mailto:sage [04/11/06 20:44:40]
- >>515
送信と受信を一つのスレッドでやるとエライ事になるよw あとTcpClientは結構ゴミだからクライアントアプリでもSoket使った方がいいかも。
- 517 名前:495 mailto:sage [04/11/06 20:51:11]
- >>516
>クライアントアプリでもSocket 具体的にどのような点が優れているんですか? ちょっとワカラン orz
- 518 名前:デフォルトの名無しさん mailto:sage [04/11/06 20:58:32]
- >>517
NetworkStreamでしか送受信出来ない、細かい制御(受信側のみ切断とか)も出来ない ついでに非同期送受信も出来ない・・・ TcpClientで作っても後々書き直すことになると思うw
- 519 名前:495 mailto:sage [04/11/06 21:00:06]
- >>518
ラジャ^-^;
- 520 名前:495 mailto:sageここはお前の日記j(ry [04/11/06 21:01:24]
- あ〜送受信系統を1つのクラスに押し込めて置いてよかったw
このクラスの中身だけ変えればおkだわ
- 521 名前:デフォルトの名無しさん mailto:sage [04/11/06 22:26:52]
- do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&res=81&fi=no
こんな感じで送受信してます、たまにデータが続けざまに来るとエラーでるんですが、どうしたらよいでしょう・・・。
- 522 名前:デフォルトの名無しさん mailto:sage [04/11/07 00:13:29]
- えーと・・・
BeginReceiveしてEndReceiveした後は、また非同期受信するなら再度BeginReciveしないと駄目なような・・・ それにこの用途ならNetworkStream使った方が楽かも・・・(俺ならそうするw) あと、一度の受信でバッファ全部捨ててるけど、 非同期受信は何バイト受信するかわからないから、先取りしたデータは捨てるんじゃなくて プールしてその上でさらにバッファを貯めるみたいにすべき。 あと(ぉ終了処理はShutdownの後でCloseしよーw
- 523 名前:521 mailto:sage [04/11/07 01:12:53]
- 了解です!(BeginRecieveするメソッドにソケット渡し忘れてた・・・(/ω\))
NetworkStream調べてみます〜 >あと、一度の受信でバッファ全部捨ててるけど、 >非同期受信は何バイト受信するかわからないから、先取りしたデータは捨てるんじゃなくて >プールしてその上でさらにバッファを貯めるみたいにすべき。 int recBytesSize = socket.EndReceive( ar ); ↑で受信データサイズ抜いた時点で必要とするbyte配列は確定してない・・・ということですか?
- 524 名前:495 mailto:sage [04/11/07 16:00:26]
- 何か似たような事やっている人がいるなぁ ^-^;
おまいは俺か?
- 525 名前:杏仁 [04/11/07 21:51:38]
- >>498-503
ありがとうございました。おかげで動作しました。 もう一つ質問なのですが、DLLの仕様を見ると BYTE *HOGE() という関数があります。 この場合は、どうやって呼び出せばいいでしょうか? よろしくお願いします。
- 526 名前:521 mailto:sage [04/11/07 21:56:34]
- >>495
あなたの子よ!認知してよ! 非同期NetworkStreamのサンプル見つからない(MSDNのだと断片的でわからず・・・)
- 527 名前:デフォルトの名無しさん mailto:sage [04/11/07 22:04:54]
- ところで Bigin〜 したら必ず End〜 しなきゃいけないの?
やりっぱなしじゃ駄目?
- 528 名前:527 mailto:sage [04/11/07 22:05:19]
- 凄く打ち間違い orz
- 529 名前:デフォルトの名無しさん [04/11/07 22:16:49]
- ランダムにping送って、応答があった場合、応答先のPCのNICのMACアドレスを取得する方法ってありますか?
- 530 名前:デフォルトの名無しさん mailto:sage [04/11/07 22:34:26]
- よく分からないけど通報しますた
- 531 名前:デフォルトの名無しさん mailto:sage [04/11/07 22:55:54]
- ブロードキャストがしたいんじゃないかな…
- 532 名前:デフォルトの名無しさん mailto:sage [04/11/07 22:57:25]
- ARPのことなのだろうか・・・・
それとも今世界のどこかから自分のMAC抜かれたいのだろうか
- 533 名前:デフォルトの名無しさん mailto:sage [04/11/07 23:21:05]
- マックでバーガー三つ買って来るか・・・ハァ・・・
- 534 名前:デフォルトの名無しさん mailto:sage [04/11/07 23:38:51]
- 漏れのもたのむ
- 535 名前:デフォルトの名無しさん mailto:sage [04/11/07 23:55:40]
- >529
pingパケットにその情報があるか見てみれば?
- 536 名前:デフォルトの名無しさん [04/11/08 00:14:47]
- C#のクラスを継承してManageC++のクラスを作りたいんですが、
メンバ関数のオーバーライドがうまくいきません。 C#のクラス↓ public abstract class ClassCS { public abstract void Func(ref int c); } void FuncC(int __gc& C) や void FuncC(int &C) ではだめでした。 この関数FuncをオーバーライドするにはC++でどのように記述すればいいんでしょうか?
- 537 名前:デフォルトの名無しさん mailto:sage [04/11/08 01:38:42]
- >>525
それはもう関数次第としか言えない。 >500みたいなことをする可能性が高いが。 >>536 ええとポインタを引数に取るんだからvoid FuncC(int* c)じゃないのかな。
- 538 名前:デフォルトの名無しさん mailto:sage [04/11/08 02:37:53]
- >>535
それだと、同一ネットワーク内ならOKだけど、L3装置かましたときに中継点のMACになるような
- 539 名前:杏仁 [04/11/08 10:14:41]
- >>537
>それはもう関数次第としか言えない。 画像バッフアのアドレスが格納されて帰ってくる関数みたいなのですが・・。 > >500みたいなことをする可能性が高いが。 ・・・・。大変そうですね。私にできるかどうか・・・。 サンプルとか参考になるサイト等ありますでしょうか?
- 540 名前:デフォルトの名無しさん mailto:sage [04/11/08 13:18:34]
- >>539
関数次第なんだからサンプルも何もないと思うけど?
- 541 名前:デフォルトの名無しさん mailto:sage [04/11/08 13:32:01]
- >>539
unsafe で IntPtr を byte* にでもキャストして、画像バッファのメモリをアクセスすれば良いと思う。 メモリの中身にアクセスする必要がないなら、IntPtr で受け取っておいて、他に渡す必要があるなら また IntPtr で渡してあげるだけ。 Susie のプラグインを C# から使いたいとか、そういうことですか?
- 542 名前:杏仁 [04/11/08 15:20:19]
- >540 541
解答ありがとうございます。 ん〜。勉強不足で折角の解答の意味があまり理解できずに申し訳ありません。 とりあえず、IntPtrをもう少し勉強してみます。 >Susie のプラグインを C# から使いたいとか、そういうことですか? 画像入力ボードのDLLを使って画像の取り込みを行いたいと思っています。
- 543 名前:デフォルトの名無しさん mailto:sage [04/11/08 16:15:09]
- 此処で質問して良いのかどうか、ちょっと不安なのですが・・・
現在、既存システム(C+VB6)をC#で移植しています。 既存システムはVB6でユーザインターフェースを作り、 CでDLLを作って、VB6からDLLを呼び出しています。 VB6のインターフェース部分は特に問題無くC#に移植できたのですが、 Cで作ったDLLの関数が結構多く、またC#から呼び出すのも厄介な状況です。 MSの技術情報でWin32APIと.NETFrameworkの対応表で幾つかはそのままC#で実装しましたが、 残りのDLL関数をManagedC++でDLLを再度作り直し、そのDLLをC#から直接使う事になりました。 そこで質問なのですが、ManagedC++でSTLのmapを使いたいのですが、 コンパイル時にエラーとなってしまいます。 ManagedC++ではSTLなどテンプレートを使う事はできないのでしょうか? また、ManagedC++で作った関数で、.NETのHashtableなどを返す関数は作れないのでしょうか?
- 544 名前:デフォルトの名無しさん mailto:sage [04/11/08 16:22:06]
- >>543
managed C++ やろうぜ!! pc5.2ch.net/test/read.cgi/tech/1014486422/ //沈んでるなぁ……。
- 545 名前:536 [04/11/09 00:34:22]
- >>537
>ええとポインタを引数に取るんだからvoid FuncC(int* c)じゃないのかな。 返答ありがとうございます。 試してみましたが、うまくいかないようです。 自分でもいろいろ試してみて、Manage C++側はFunc(int __gc &c)になるはずだと思ったんですが、 下のプログラムを実行すると『抽象クラスまたはインターフェイス 'CPP.CPP' のインスタンスを作成できません。』といったエラーが出ます。 CPPのFuncをオーバーライドできてないってことだと思うんですが、どうすればちゃんとオーバーライドできるんでしょうか? Manage C++↓ namespace CS { public abstract class CS { public abstract void Func(ref System.Int32 c); } } C#↓ namespace CPP { public __gc class CPP : public CS::CS { public: void Func(int __gc &c){} }; } static void Main(string[] args) { CS.CS S = new CPP.CPP(); }
|

|