[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 01/29 10:32 / Filesize : 134 KB / Number-of Response : 576
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

ふらっとC#,C♯,C#(初心者用) Part30



1 名前:デフォルトの名無しさん [2008/08/20(水) 17:15:27 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

前スレ

ふらっとC#,C♯,C#(初心者用) Part29
pc11.2ch.net/test/read.cgi/tech/1216734995/

50 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 00:32:53 ]
とりあえず「有り」か「無し」で。

51 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 00:35:08 ]
とりあえず、『とりあえず「有り」か「無し」』かを迫るような
単細胞な質問は「なし」だな。

52 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 00:42:48 ]
必要性があるから存在するにきまってるだろう

53 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 00:43:09 ]
2択にしても難しい問題だったんだ・・・

54 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 00:46:53 ]
使わないと実現できない処理がある以上「有り」としか言いようがないでしょ。
「オブジェクト指向だから,これは出来ません」って通らないよね?

55 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 00:50:29 ]
どうして「無し」と思うのか述べてみろよ。

56 名前:デフォルトの名無しさん [2008/08/23(土) 01:08:35 ]
暗黒面ってなんだよw
手続きの方がよっぽどカオスじゃんw

57 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 01:09:45 ]
>>50
この「無し」ってのは君が理解してないだけ

58 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 02:26:13 ]
UMLであらわせるれるかどうかと基準ならプロパティやenumだってなしだな。



59 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 07:51:57 ]
>>47オブジェクト志向的に……

有りだとする。
→オブジェクト指向万歳ってことでどんどん使え。

無しだとする。
→C#はオブジェクト指向だけじゃないマルチパラダイム言語だから、
オブジェクト指向に捕らわれずどんどん使え。

60 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 08:03:11 ]
プロパティの中身はメソッドの自動生成機能だし、
enumはクラスの自動生成機能でしょ?
delegateもメソッド1つのインターフェース作ったりするのと
同じじゃない?
ただの便利機能じゃないのか。

61 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 08:46:36 ]
 delegateは関数ポインタに近い機能と思えばよい、と何処かに書いてあった。
→ ということは、過去の遺物を引きずっているのではないか?
→ 俺の知ってる最新鋭のオブジェクト指向言語に似合わない!

ごめん、思考のトレースに失敗した。色々と無理があった。ごめん。


62 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 09:11:11 ]
結局、全ては機械語の構文糖衣なんだよ。

63 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 09:17:22 ]
オブジェクト指向の既存の機能を使って実現したものでも、
それがオブジェクト指向であるかどうかとは無関係。
例えシンタックスシュガーであっても概念的に違うものになりえる。

64 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 09:19:54 ]
>>62
それはいいすぎ
機能を実現するかどうかか、ではなくて、
どれだけ生産性を向上するかどうかがオブジェクト指向を使う意義なんだから

65 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 10:22:04 ]
つまり、delegateはオブジェクト指向の概念と合わない?

66 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 10:24:54 ]
なんでそうなるんぞ

67 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 10:29:31 ]
delegateは、関数ポインタをクラスでラップしたものだね。

68 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 10:51:16 ]
女の子はデリケートだぞっ!



69 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 11:07:20 ]
関数ポインタというより委譲モデルを簡略化したと考えれば
オブジェクト指向から外れてないと思うけどね。
javaのlistener/adapter型の委譲モデルも意地悪を言えば、
内部クラスや匿名クラスはオブジェクト指向かどうか疑わしいよ。


70 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 11:17:50 ]
そうそう、関数ポインタって説明はあまり良い方向ではないと思う。
「処理」をカプセル化してオブジェクトとして扱えるようにしたもの
という方向の方が、今時の思想にマッチしてる。
もちろん単純に関数ポインタイメージで使うことはできるが。


71 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 11:22:59 ]
デリゲートに好きして

72 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 11:25:16 ]
デリゲートのスコープの外の変数もちゃんと見れて、そのまんまで、あちこち受け渡しできるんだもんな。
すげーよ。

73 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 11:26:50 ]
>>72
どういうこと?
詳しく

74 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 11:32:29 ]
クロージャということ、これはさすがにオブジェクト指向というより関数型。

75 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 11:36:39 ]
レキシカルクロージャとかいうやつ?
よくしらんけど

76 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 12:00:31 ]
クロージャってオブジェクト的とも見ることができる
詳しくはSICP

77 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 14:48:31 ]
オブジェクト指向とは・・・ただの言葉じゃ

78 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 15:23:01 ]
オブジェクト指向=良いもの
オブジェクト指向との合致度が高い言語=いい言語

そんな盲目的な思い込みが罠なんだ



79 名前:デフォルトの名無しさん [2008/08/23(土) 16:19:42 ]
関数ポインタに毛が生えて好き物ってのでいいよ。

80 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 10:33:34 ]
オブジェクト指向もパフォーマンス悪いし、匙加減が重要

81 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 11:34:37 ]
C#でMDI フォームアプリを作成しています。

子フォームを最大化すると親フォームのメインメニューにアイコンが
表示されるのですが、これを非表示にするにはどうすればよろしいでしょうか?

82 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 11:29:13 ]
Dictionary<key,value>で、valueを指定してkeyを探すことはできますか?

83 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 11:43:02 ]
.Firstとか.Selectとか
あとはforeach

84 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 11:45:08 ]
SelectじゃなくてWhereだった…

85 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 12:00:28 ]
>>83
ありがとうございます。
FirstやSelectは初めて知りました。
しかし、なんでDictionaryにはFindやFindAllが無いんだろう

86 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 12:09:43 ]
Key使わない検索じゃDictionaryの旨みが無いから?

87 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 21:56:40 ]
まあ、検索スピード欲しけりゃ逆引きの方のDictionaryも用意すべきだし。

88 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 22:59:26 ]
class 逆引きつきDictionary<TKey, TValue> : IDictionary<TKey, TValue>{
private Dictionary<TKey, TValue> 順引き辞書;
private Dictionary<TValue, TKey> 逆引き辞書;

void Add(TKey key, TValue value){
順引き辞書.Add(key, value);
逆引き辞書.Add(value, key);
}
bool Remove(TKey key){
TValue v = 順引き辞書[key];
逆引き辞書.Remove(v);
return 順引き辞書.Remove(key);
}
TKey 逆引き(TValue value){
return 逆引き辞書[value];
}

}

これはねーか



89 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 23:05:56 ]
valueが重複したらアウトじゃねえかw

90 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 23:50:12 ]
なるへそじゃあ
void Add(TKey key, TValue value){
if(逆引き辞書.ContainsKey(value))
throw new valueが重複してますよExeption();
順引き辞書.Add(key, value);
逆引き辞書.Add(value, key);
}
っていう風になるのか?

91 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 08:06:34 ]
>>90
それか、逆引きの側は Dictionary<Value, HashSet<Key>>。

92 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 13:34:59 ]
フォーム内にWebBrowserコントロールを追加しているのだが、
その中の任意のポイントにクリックを発生させるにはどうしたらよいのだろう?

Cursor.Position = webBrowser1.PointToScreen(new Point(webBrowser1.Location.X + 50, webBrowser1.Location.Y + 50));
のような感じでマウスカーソルを希望するところに持っていくことはできたのだが、
そこにクリックを発生させる方法がわからない。

もしかしたらSendMessageでLEFTDOWN->LEFTUPでクリックを送ればいいのかと思ったけど、
今度はwebBrowser1のいわゆるhWndを取得する方法がわからない。

誰かお助け下さい。

93 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 13:38:18 ]
SendInputが一番楽じゃね

94 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 13:52:00 ]
Flashなどの組み込みオブジェクトではなく単にリンクやボタンなどのHTMLエレメントなどを
操作したいというのであればHTMLDOMつかってInvokeMember(マネージDOMの場合)で
Clickメソッドを実行したほうが楽と思われるが。
まあ、わざわざマウスクリックをしたいといってるから組み込みオブジェクトの可能性が高いなw
SendMessageではなく、mouse_eventというAPIを使ってみれば?こっちだとhWnd不要だから

95 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 14:05:03 ]
>>93
なるほど、そんな関数があったのね。
homepage3.nifty.com/midori_no_bike/CS/index.html?userIO.268
ここを見て、うまくいきました。
ありがとうございます。

96 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 14:20:30 ]
private setの自動プロパティにreadonlyが付けられたらいいのに
コンストラクタで初期化して以降変更しないものでも
自動プロパティが便利だからついreadonlyフィールド使わなくなっちゃうんだよね
独り言

97 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 14:22:28 ]
aho

98 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 16:35:53 ]
{0}をコンソールに表示する方法おしえてください



99 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 16:40:24 ]
Console.Write("{0}");

100 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 16:43:46 ]
エスケープの方法はヘルプの「複合書式設定」参照

101 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 16:54:47 ]
public struct MyStruct
{
public MyStruct(long value)
{
this.TotalValue = value;
}
[FieldOffset(0)]
public long Total;
[FieldOffset(0)]
public short Value1;
[FieldOffset(2)]
public short Value2;
[FieldOffset(4)]
public short Value3;
[FieldOffset(6)]
public short Value4;
}

//コンパイルエラー
フィールド 'Value1~4' は、コントロールが呼び出し元に返される前に割り当てられている必要があります。




ちゃんと割り当てられてるじゃんね。意外とコンパイラもお馬鹿さんだな。
まーどーでもいいことなんだけど、過疎ってるからネタを投下してみた


102 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 16:56:14 ]
struct MyStruct{
public MyStruct(long value){
this.TotalValue = value;
}
[FieldOffset(0)]
public long TotalValue;
[FieldOffset(0)]
public short Value1;
[FieldOffset(2)]
public short Value2;
[FieldOffset(4)]
public short Value3;
[FieldOffset(6)]
public short Value4;
}

コードミスったのはご愛敬で

103 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 16:57:24 ]
[StructLayout(LayoutKind.Explicit)]
struct MyStruct{
public MyStruct(long value){
this.TotalValue = value;
}
[FieldOffset(0)]
public long TotalValue;
[FieldOffset(0)]
public short Value1;
[FieldOffset(2)]
public short Value2;
[FieldOffset(4)]
public short Value3;
[FieldOffset(6)]
public short Value4;
}

属性付け忘れもご愛敬で。。。
スレ汚しすまない

104 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:02:22 ]
いや、コンストラクタで初期値セットせな

105 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:04:39 ]
Console.Writeline("{{0}}", 10);



{10}

を期待したところ

ぶーぶー

言われました

>>100さん、ありがとうございます
おかげさまで解決しました

>>99さん、二度とくんな

106 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:06:11 ]
98 :デフォルトの名無しさん [↓] :2008/08/28(木) 16:35:53
{0}をコンソールに表示する方法おしえてください

105 :デフォルトの名無しさん [↓] :2008/08/28(木) 17:04:39
>>99さん、二度とくんな

wwwwwwwwwwwwww

107 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:10:40 ]
>>99はたしかに{0}が出力される。
引数無いとそのまま出るみたいよ。
よって、>>98の質問の答えにはなってる。

108 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:11:20 ]
つーか最初から>>105の内容で質問すりゃいいのに。



109 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:20:27 ]
100の先もエスケープには限界あるから分けて出力する必要があるかもよって書いてるしな

110 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:28:45 ]
夏だねぇ

111 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 18:24:32 ]
>>110
そのセリフはちょびっと遅いぞ。
言ってみたかったの?
来年またトライしてみよう!

112 名前:デフォルトの名無しさん [2008/08/28(木) 19:24:54 ]
一生懸命勉強して、大きなプログラマになるんだ!

113 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 20:14:11 ]
System.Security.AllowPartiallyTrustedCallersAttribute
というエラーが出てJScriptからDLLを呼び出せません…

呼び出せるDLLと呼び出せないDLLがあるのですけれども
どこが違うのでしょうか?よろしくお願いします m(_ _)m

www.isla-plata.org/wiki/pukiwiki.php?%B3%AB%C8%AF%A5%EA%A5%BD%A1%BC%A5%B9%2FJScript%2F%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8%A4%AB%A4%E9.Net%20Framework%A5%AF%A5%E9%A5%B9%A4%F2%CD%F8%CD%D1%A4%B9%A4%EB%A1%CA%A5%CE%A5%A6%A5%CF%A5%A6%CA%D4%A1%CB

114 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 20:35:51 ]
・セキュリティ上好ましくない為、部分的に信頼されたアセンブリは、厳密な名前付きのアセンブリを呼び出す事ができない。
それだと不便なのでAllowPartiallyTrustedCallersAttributeが付いた物に限り、利用可能になっている。

詳しくはMSDN見て来い

115 名前:デフォルトの名無しさん [2008/08/29(金) 02:06:09 ]
 public int hoge(ここでエンターキー)

    ↓

 public int hoge
 {

 }

上のようにエンターキーでブロックが自動挿入されるように出来ないでしょうか?
VBから移行してきたばかりなので入力に手間取ってしまいます。

116 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 02:09:24 ]
一生VBやってればいいよ
こっちくんな

117 名前:115 mailto:sage [2008/08/29(金) 02:11:02 ]
自己解決しました
自動で複数行ブロックが挿入されるようにすると全部複数行になってしまうんですね・・・

118 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 02:12:01 ]
>>116
はじめまして。



119 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 02:27:04 ]
C#はいちいち面倒なことが多くて、やっぱりVBの方がいいですよ。

120 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 02:28:40 ]
ID出してくれええ

121 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 02:49:25 ]
誰だお前?死ねよ

122 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 03:59:15 ]
言語に優劣をつける気はないが、VBの
If a = b Then
だけはどーーしても違和感&不安になる

123 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 04:00:27 ]
自分の場合、ときどきIf a == b Thenって書いちゃうよ。


124 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 09:15:44 ]
VBの場合>>115みたいな機能が無いとタイプ量が多すぎるからな
C#でもifとかforとか使うときにコードスニペットが使えるよ

125 名前:デフォルトの名無しさん [2008/08/29(金) 10:08:03 ]
c# から Windows のスタートメニューを開きたいのだけれど、どうやったらできますか?
SendKeys.Send("^{ESC}");
としても開けませんでした。

126 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 10:28:05 ]
>>125
[DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
const uint WM_SYSCOMMAND = 0x112, SC_TASKLIST = 0xf130;
private void button1_Click(object sender, EventArgs e) {
 SendMessage(this.Handle, WM_SYSCOMMAND, new IntPtr(SC_TASKLIST), IntPtr.Zero);
}

127 名前:デフォルトの名無しさん [2008/08/29(金) 10:40:16 ]
>>126
早々にありがとうございますm(__)m
ばっちりです。

128 名前:デフォルトの名無しさん [2008/08/29(金) 18:06:00 ]
TcpClient の受信処理で1024Byteずつ受信してメモリストリームに書き出しています。
NetworkStreamのDataAvailableが続きのデータがあるにもかかわらず、
FALSEを返して受信が終了してしまいます。
下記サイトでも同じ問題が記載されています。
www.niseko.or.jp/BlogX2/categoryview.aspx/UPnP

現在do〜while間にSleep(50)を入れると正常に受信できるのですが、
他にも解決策はありませんか?

  //クライアントとの間の通信につかうストリームを取得
  NetworkStream ns = server2.GetStream(); //server2は、TcpClient

  //クライアントから送られたデータを受信する
  System.IO.MemoryStream ms = new System.IO.MemoryStream();
  byte[] resBytes = new byte[1024];
  int resSize;
  do
  {
    //データの一部を受信する
    resSize = ns.Read(resBytes, 0, resBytes.Length);
    //受信したデータを蓄積する
    ms.Write(resBytes, 0, resSize);
    Thread.Sleep(50); //ここで50ミリ秒スリープさせると正常に受信できる
  } while (ns.DataAvailable);
  string responsStrings = enc.GetString(ms.ToArray());



129 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 18:12:45 ]
Readの返値で判断するのが吉

130 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 18:15:22 ]
リンク先見ずに書いたけどリンク先でもそう結論してんじゃんか
何が悲しいのかさっぱり理解できないが

DataAvailableがtrue返すのは多分その時点でネットワークからは読み取り終わってるから
Read前なのでバッファには残ってる

131 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 18:18:51 ]
なんか適当なことを書いてしまった
DataAvailableがtrueになるのはバッファにデータが溜まってるとき
Read連続で呼び出すとネットワークからの読み取りが遅れた場合にfalseを返すのは当然

132 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 18:34:28 ]
MSDNを正確に読めよ

133 名前:128 mailto:sage [2008/08/29(金) 18:55:56 ]
>>129
Readの返値で判断するのが吉

このReadの返り値は自分で用意したバッファサイズが返るだけのようですが・・
(resBytesのサイズ)

>>131
了解です。
100分の5秒遅れただけでfalseでは使えないと言うことですね。
MSDNのサンプルに騙されたか・・

1byteずつ読んでエンコードしてCONTENT_LENGTHを読んだ方が確実ですね。


134 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:00:56 ]
もっぺんReadの解説読んでこい

135 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:02:06 ]
Visual C# 2008 Expressを使ってるんですけども
デバッグビルドとリリースビルドはどうやって切り替えるんでしょうか

136 名前:デフォルトの名無しさん [2008/08/29(金) 19:13:05 ]
MSDNはたまに意味不明なところもあるけど、それは君の技術力が足りなすぎていて理解できないだけ

137 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:17:07 ]
>>135
FAQだね
Expressをインストールしたらまずやるべきこと
ツール→オプション→すべての設定を表示 にチェック
プロジェクトおよびソリューション
→ビルド構成の詳細を表示・常にソリューションを表示・作成時に新しいプロジェクトを保存
にチェック

138 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:19:54 ]
NetworkStream..::.Read メソッド

パラメータ

buffer
型 : array< System..::.Byte >[]()[]

Byte 型の配列。NetworkStream から読み取られたデータを格納するメモリ内の場所です。

offset
型 : System..::.Int32

データの格納を開始する buffer 内の場所。

size
型 : System..::.Int32

NetworkStream から読み取るバイト数。

戻り値
型 : System..::.Int32

NetworkStream から読み取るバイト数。



139 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:20:17 ]
APIぐらいちゃんと読めよ

140 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:27:44 ]
>>138まだ続きがあるだろ。
解説
このメソッドは、データをbufferパラメータに読み込み、正常に読み込まれたバイト数を返します。
読み取ることができるデータが存在しない場合、Readメソッドは0を返します。
Read操作は、sizeパラメータで指定されたバイト数に達するまで、使用できるデータをすべて読み取ります。
リモート ホストが接続をシャットダウンし、使用できるデータがすべて受信されると、
Readメソッドはすぐに完了して、0バイトを返します。


141 名前:128 mailto:sage [2008/08/29(金) 19:30:03 ]
おわ!理解不足だったか
MSDNからコピってきました。
なにがいけないんだろう?

// Examples for CanRead, Read, and DataAvailable.

// Check to see if this NetworkStream is readable.
if(myNetworkStream.CanRead){
  byte[] myReadBuffer = new byte[1024];
  StringBuilder myCompleteMessage = new StringBuilder();
  int numberOfBytesRead = 0;

  // Incoming message may be larger than the buffer size.
  do{
    numberOfBytesRead = myNetworkStream.Read(myReadBuffer, 0, myReadBuffer.Length);

    myCompleteMessage.AppendFormat("{0}", Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead));

  }
  while(myNetworkStream.DataAvailable);

  // Print out the received message to the console.
  Console.WriteLine("You received the following message : " + myCompleteMessage);
}
else
{
  Console.WriteLine("Sorry. You cannot read from this NetworkStream.");
}

142 名前:128 mailto:sage [2008/08/29(金) 19:41:00 ]
あ、Readの解説ありがとうございます。

resSize = ns.Read(resBytes, 0, resBytes.Length);
if (resSize == 0)
  break;

とすればいいわけですね。
これは>>131さんが言っている、
Read連続で呼び出すとネットワークからの読み取りが遅れた場合にfalseを返す
に対応できますね。

みなさまありがとうございます。
50にもなって初めてのプログラミング、何もかもが分からないことだらけです。

143 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:51:36 ]
年齢は関係ないだろ

144 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 20:03:15 ]
うむ、年齢は関係ないな。学ぼうとする気持ちが大事。

145 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 20:09:01 ]
新手の煽りか?

146 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 20:59:39 ]
50歳からのプログラミング

147 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 21:11:58 ]
暴れる50代は多いな。
pc11.2ch.net/test/read.cgi/tech/1204552981/738


148 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 21:25:12 ]
>>137
遅レスですがありがとうございました



149 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 01:13:19 ]
VBから移動組だけどはコードがシンプルでいいなあ
インテリセンスがもうちょっと使いやすかったらよいんだけど

150 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 01:52:54 ]
VC++からの移行組としてはインテリセンスがちゃんと効くだけで満足です






[ 続きを読む ] / [ 携帯版 ]

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

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