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


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

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



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

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

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

ふらっとC#,C♯,C#(初心者用) Part55
pc12.2ch.net/test/read.cgi/tech/1265288563/1

関連スレ
C#, C♯, C#相談室 Part55(実質56)
pc12.2ch.net/test/read.cgi/tech/1260111240/1

VB.NET質問スレ(Part33)
pc12.2ch.net/test/read.cgi/tech/1263738929/1

C++/CLI part3
pc12.2ch.net/test/read.cgi/tech/1206447234/1

75 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 23:58:27 ]
>>33
それはただのフィールドの隠蔽化。カプセル化はもっと深い。

76 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:02:22 ]
>>71
プロパティ、中身がシンプルなものは JIT 時にインライン化される。
プロパティにすることで、フィールドをpublicにするよりも変更に強くなる。

77 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:04:39 ]
>>75
いやいや>>33の言うとおりでしょ。
(OOPの真髄が多態という見解には異論があるが)

カプセル化なんてOOPよりずっと昔からある概念なんだけど。

78 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:06:54 ]
インライン化されてもコピーが入るからまったくコストが無くなるわけじゃないよ

79 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:23:52 ]
へえ

80 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:24:15 ]
>>23
まあごく例外的な場合とか「フィールドは公開すべきでない」という精神論を別にすれば、
プロパティにする必要性が出た時点でプロパティにする、という方針でも
別に悪くはないと個人的には思う。別にたいした手間でもないし。

ただ、今時プロパティ書くのもフィールド書くのも手間はあまり違わないわけで、
そういう現状を前提にすると「なぜ<あえて>プロパティなのか」っていう疑問は
あまり自明じゃなくなって来てるな。

81 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:31:26 ]
>>78
コピーって何?


82 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 01:30:41 ]
>>77
オブジェクト指向のこころを読めば世界が広がるよ。

83 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 03:44:00 ]
クラスの内部から、フィールドには直接アクセスすることもプロパティが実装されていれば
プロパティからフィールドにアクセスすることもできますが、プロパティが
実装されている場合、積極的にプロパティを使ってフィールドにアクセスすべきですか?
Javaのアクセッサ(getter/setter)では記述のコストが高くてやってられないのですが、
C#ではどうなんでしょうか?



84 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 03:47:22 ]
自分でテストコード書けばいいじゃねえか

85 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 04:05:28 ]
>>84
速度だけの話じゃないです。

クラスの内部からフィールドへのアクセスもプロパティを通すことで、
カプセルとその他もろもろの恩恵を受けられると思ったんだけど、
そういった形でプロパティを使うってありですか?

86 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 04:08:28 ]
自分でテストコード書けばいいじゃねえか

87 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 04:12:48 ]
いや、あんたに聞いてない

88 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 04:17:18 ]
ママにでも聞けばいいじゃねえか

89 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 04:28:11 ]
論外さようなら

90 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 04:29:53 ]
二度と来るなよ

91 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 04:32:50 ]
日本語分かる?ちんぱん

92 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:14:19 ]
webbrowser

<input type="image" onclick="hoge" name="homo">

GetAttribute("onclick")でonclickの値(hoge)が取得できないのですが、普通はできるのでしょうか?
値は"System.__ComObject"というのが返ってくるだけです
同じやり方でtypeの値はちゃんと取得できます

93 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:19:16 ]
vc# 2005使い始めたんだけど、
デフォルトのインデントがタブじゃなくて、スペースなのね。

c#ではこれが流儀?
これに慣れた方がいい?


行をBSで逆インデントする時に、
BSを連打しないといけないのが、苦痛。
Shift+tabは面倒。





94 名前:デフォルトの名無しさん [2010/03/04(木) 06:26:08 ]
>>92
その周辺のコードは晒せる?

>>93
設定で切替できなければタブとスペースの切替はできないってことだろ

それにVC#の場合オートインデントなのでガシガシ打ってもどうにかなるだろ

95 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:30:13 ]
トイレに行ってきます(´・ω・`)

96 名前:94 mailto:sage [2010/03/04(木) 06:31:20 ]
どこでもいいので

{
int aaaa = 10;
aaaa++;
}

を書いた上で

//{
int aaaa = 10;
aaaa++;
//}

という感じでネストをいじった上で

上記4行を一旦切り取って同じ位置に貼り付けてみると勝手にインデント調整してくれるよ

97 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:32:16 ]
C#で生ソケットについて経験者いたら教えてください。
下記のコーディングで間違いとか、抜けとか、ありますか?

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Tcp);
TCPヘッダ作成
IPヘッダ作成
ヘッダ連結
チェックサム
int nBytes = socket.SendTo(sendbuf, sendbuf.Length, SocketFlags.None, endpoint);

SendToメソッドの箇所でエラーが発生します
エラーコード:10022
エラーメッセージ:無効な引数が提供されました

原因分かる方、教えてください。

98 名前:デフォルトの名無しさん [2010/03/04(木) 06:34:13 ]
>>97
デバックでとまった際に引数みてみなよ

99 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:37:08 ]
>>98
といいますと?

100 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:38:19 ]
TCPヘッダ作成
IPヘッダ作成
ヘッダ連結
チェックサム

あと可能な限りここも書きなよ

固有情報は適当に書き換えて

101 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:45:31 ]
TCPヘッダ作成は下記の通りです。

/********************************************************************************
* TCPヘッダ取得
*******************************************************************************/
public byte[] getTcpHeader(Int16 selfport, Int16 destport)
{
TcpHeader header = new TcpHeader();
header.selfport = (UInt16)IPAddress.HostToNetworkOrder(selfport);
header.destport = (UInt16)IPAddress.HostToNetworkOrder(destport);
header.seq_num = 1;
header.ack_num = 0;
header.offset_and_reserved_and_flags = 5; // offset
header.offset_and_reserved_and_flags <<= 6; // reserved
header.offset_and_reserved_and_flags |= 0;
header.offset_and_reserved_and_flags <<= 1; // URG
header.offset_and_reserved_and_flags <<= 1; // ACK
header.offset_and_reserved_and_flags <<= 1; // PSH
header.offset_and_reserved_and_flags <<= 1; // RST
header.offset_and_reserved_and_flags <<= 1; // SYN
header.offset_and_reserved_and_flags |= 1;
header.offset_and_reserved_and_flags <<= 1; // FIN
header.window = (UInt16)IPAddress.HostToNetworkOrder((Int16)32767);
header.checksum = 0;
header.urgent_pointer = 0;

return header.getBytes();
}


102 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:49:03 ]
IPヘッダ作成は下記の通りです(パート1)

/********************************************************************************
* IPヘッダ取得
*******************************************************************************/
public byte[] getIpHeader(byte[] databuf, string selfAddress, string destAddress, byte protocol)
{
Ipv4Header header = new Ipv4Header();
header.version_and_length = 69;
header.service_type = 0;
if (protocol == 4)
{
header.packet_length = 20;
}
else
{
header.packet_length = 40;
}
Random rand = new Random();
header.identifier = (short)rand.Next(32767);
header.flagment_offset = 0;
header.ttl = 64;
header.protocol_no = protocol;
header.checksum = 0;


103 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:50:08 ]
IPヘッダ作成は下記の通りです(パート2)

int startpoint = 0;
int endpoint = selfAddress.IndexOf(".");
header.self_ip1 = byte.Parse(selfAddress.Substring(startpoint, (endpoint-startpoint)));
startpoint = endpoint + 1;
endpoint = selfAddress.IndexOf(".", startpoint);
header.self_ip2 = byte.Parse(selfAddress.Substring(startpoint, (endpoint - startpoint)));
startpoint = endpoint + 1;
endpoint = selfAddress.IndexOf(".", startpoint);
header.self_ip3 = byte.Parse(selfAddress.Substring(startpoint, (endpoint - startpoint)));
startpoint = endpoint + 1;
endpoint = selfAddress.IndexOf(".", startpoint);
header.self_ip4 = byte.Parse(selfAddress.Substring(startpoint, (selfAddress.Length - startpoint)));

startpoint = 0;
endpoint = destAddress.IndexOf(".");
header.dest_ip1 = byte.Parse(destAddress.Substring(startpoint, (endpoint - startpoint)));
startpoint = endpoint + 1;
endpoint = destAddress.IndexOf(".", startpoint);
header.dest_ip2 = byte.Parse(destAddress.Substring(startpoint, (endpoint - startpoint)));
startpoint = endpoint + 1;
endpoint = destAddress.IndexOf(".", startpoint);
header.dest_ip3 = byte.Parse(destAddress.Substring(startpoint, (endpoint - startpoint)));
startpoint = endpoint + 1;
endpoint = destAddress.IndexOf(".", startpoint);
header.dest_ip4 = byte.Parse(destAddress.Substring(startpoint, (selfAddress.Length - startpoint)));



104 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:52:03 ]
IPヘッダ作成は下記の通りです(パート3)

if (protocol == 4)
{
header.checksum = this.calcCheckSum(header.getBytes());
}
else
{
header.checksum = this.calcCheckSum(header.getBytes().Concat(databuf).ToArray());
}

return header.getBytes();
}


105 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:53:41 ]
チェックサム計算は下記の通りです。

/********************************************************************************
* チェックサム計算
*******************************************************************************/
public short calcCheckSum(byte[] buf)
{
Int32 checksum = 0;
byte[] wrkbyte;
if (buf.Length == 1)
{
checksum += buf[0];
}
else if (buf.Length >= 2)
{
for (int i = 0; i < buf.Length; i += 2)
{
if ((i + 1) == buf.Length)
{
checksum += buf[i];
}
else
{
wrkbyte = new byte[] { 0, 0 };
Array.Copy(buf, i, wrkbyte, 0, 2);
checksum += Convert.ToInt32(BitConverter.ToInt16(wrkbyte, 0));
}
}
}
checksum = (checksum >> 16) + (checksum & 0xFFFF);
return (short)((~checksum) & 0xFFFF);
}

106 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 07:32:22 ]
処理の流れは下記の通りです。

// Initialize a Socket of Type TCP
socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Tcp);
byte[] tcpheaderbuf = Common.getInstance().getTcpHeader(Int16.Parse(this.selfPort), Int16.Parse(this.destPort));
byte[] ipheaderbuf = Common.getInstance().getIpHeader(tcpheaderbuf, this.selfAddress, this.destAddress, 6);
byte[] sendbuf = ipheaderbuf.Concat(tcpheaderbuf).ToArray();
// Send the Packet over the socket
IPEndPoint ipendpoint = new IPEndPoint(IPAddress.Parse(this.destAddress), UInt16.Parse(this.destPort));
EndPoint endpoint = (ipendpoint);
this.iStartTime = Environment.TickCount;
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, 1);
int nBytes = socket.SendTo(sendbuf, sendbuf.Length, SocketFlags.None, endpoint);
if (nBytes == -1)
{
return false;
}
return true;


107 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 07:33:42 ]
書き込み制限食らってました^^;
以上がソースですが、まだネットワーク系を勉強中なため、基本的なことが抜けてたらご指摘ください。


108 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 07:44:23 ]
SocketType.Rawは使ったこと無いけどConnectしてないのが悪いみたいだな
変更後の例でもsocket.Connectをコメントにするとエラーになるし

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Tcp);
TCPヘッダ作成
IPヘッダ作成
ヘッダ連結
チェックサム
int nBytes = socket.SendTo(sendbuf, sendbuf.Length, SocketFlags.None, endpoint);



Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
TCPヘッダ作成
IPヘッダ作成
ヘッダ連結
チェックサム
socket.Connect(endpoint);
//int nBytes = socket.SendTo(sendbuf, sendbuf.Length, SocketFlags.None, endpoint);
//ソースみたら内部でoffset指定タイプを呼んでるだけだった
int nBytes = socket.SendTo(sendbuf, 0,sendbuf.Length, SocketFlags.None, endpoint);

109 名前:デフォルトの名無しさん [2010/03/04(木) 07:46:10 ]
EEじゃないのならMSからソースなどを入手して
自分のプログラムと一緒にトレースしてみた方がいいかもね

110 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 08:01:14 ]
2chに貼られても読む気がしねー
うpろだに丸々うpしる!

111 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 08:26:39 ]
>>92
onclickのスクリプトコードそのものが欲しいのならOuterHtmlから切り出すくらいしかないはず
コード手に入れて何したいのか知らんけど

112 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 08:37:02 ]
関係ないけど、offset_and_reserved_and_flagsはflagsなenumか定数にでもしとけ

113 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 15:08:35 ]
>>111
そこにクリック後のURLの一部が書いてあって
それを使えばわざわざクリックしてページを開かなくてもいいことに気づいたので
利用しようと思っていたのです

OuterHtmlでいけました
ありがとうございます



114 名前:デフォルトの名無しさん [2010/03/04(木) 16:36:28 ]
デザイナーで配置したコントロールのNameを一括変換とかする方法はありますか?
プロパティ開いてNameをシコシコ書き換え?

115 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 17:08:36 ]
もとの名前に何かルールがあるなら
フォーム名.csとフォーム名.Designer.csを正規表現置換
ないなら一括変換機能がもし仮にあったとしても無理だと思うよ

116 名前:デフォルトの名無しさん [2010/03/04(木) 17:11:25 ]
>>115
レスありがとうございます。
やっぱり外部ツールとかで正規表現かけるかデザイナーのプロパティのところでNameを変更して
デザイナーに関連項目の名称置換を行ってもらうとかになりますかね・・・

117 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 17:19:36 ]
>>72なんですが
ドロップダウンで選択するものは全部すぐ閉じます
あと、スニペット挿入時で出るウィンドウを一瞬で閉じます

どなたかこの対処法ご存じないでしょうか?

118 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 17:48:49 ]
どこかキーボード押しっぱなしになってない?

119 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 17:49:38 ]
っマウスを買い換える

120 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 17:50:32 ]
>>116
いや普通に>>115の2つのファイルをエディタで開いて
VSの置換機能で置換するだけ
ただしコントロールのアクセスレベルがprivateの場合に限る

121 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 19:47:48 ]
>>118
特に何もしてないdす
久しぶり起動してそれまでにいくつか常駐ソフトやいろいろなソフトいれたので
それが影響してるのかもしれないが、一応常駐しているのはすべて切ったけどだめだった
コンテキストメニューはちゃんと開くんだけど、スニペットのウィンドウだけ違う方法で開いているのかな

>>119
買ったばかりです・・

スニペット挿入はどういう操作で閉じるか教えていただけませんか?

122 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 22:36:27 ]
C#4.0ではExcel2007みたいなリボンとか作れるようになるけど
どうせある程度慣れたらCtrl+Dみたいなキーボード操作しかしなくなるからでっかいボタン表示してもうざいだけだな・・・

リボンとか意味のない機能だ

123 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 22:40:58 ]
Officeくらい機能盛りだくさんでないとあんまり使い道ないわねぇ、リボン。



124 名前:デフォルトの名無しさん [2010/03/04(木) 22:43:46 ]
>>123
候補はある>2chブラウザ

あとwindowsを搭載したタッチパネル系デバイスがイマイチ普及しないのは
windowsの基本UIが小さすぎるのでペンなどの先が細い物じゃないと使いにくい
というところがあったからなんだよね・・

タッチ前提になると変わると思うよ
ただおofficeはそもそもタッチで使うことはないので意味ないだろうけどw

エンターテイメント要素がある物には有効だよ

125 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 23:26:31 ]
いやリボンはタッチパネルを想定してアイコンでかくなってるわけではないでしょ。

っていうか、汎用OS上のアプリに限れば、タッチパネルは指をポインティングデバイスに
しようって発想じゃなくて、むしろマウスジェスチャー的な補助的操作の
延長線上のものでしかないと思うけど。

あと、リボンは、たとえカスタマイズ可能になっても作業領域や表示領域を
広くとりたい用途(例えばワード)には全然向かないね。

126 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 00:06:23 ]
ケチくせーこと言うなよ。
じきにモニターの解像度が20000*10000とかになるって

127 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 00:18:52 ]
使う前は叩いてたけど、実際に触ってみたら結構快適で気に入った。
作業領域を広くしたい時は隠せばいいじゃん。

128 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 00:26:07 ]
>>126
解像度上げてもフォントが読めるサイズでないと話にならないから
モニターのインチが大きくならんと意味なかろう
俺のはすでに24なんだが、この数倍のモニターは部屋に置けねーよw

129 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 00:43:14 ]
>>126
モニタは今くらいでいい
HMDをそれくらいにしてくれ

130 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 01:20:10 ]
>>129
ケチ。

131 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 01:20:32 ]
>>128
文字を大きくすると意味ないしなぁ。
必然的にモニタサイズ大きくする必要があるわけで、27インチが俺の射程距離内
に入ってきますた

132 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 01:53:39 ]
マルチモニタおいしいです

133 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 06:10:53 ]
うん



134 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 07:46:16 ]
リファラ設定していろいろダウンロードできるようになったけど
MMSのストリーミング動画の落とし方がわからない・・・

135 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 07:56:16 ]
GAS使っとけ

136 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 09:42:24 ]
GASでできるけど
タイトル変えたりするのが面倒だから
自分で作ろうと奮闘してるんだが
むりぽww

137 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 10:26:24 ]
//////////////////////////////////////////////////
public void button1_Click(object sender, EventArgs e)
{

int y = int.Parse(textBox1.Text);
int x = int.Parse(textBox2.Text);
int _y = 520 * x / y;
textBox3.Text = Convert.ToString(_y);

}
///////////////////////////////////////////////////

Form1の中なんですけど、デバッグ中にボタンおしてもtextBox3に変化がない
どうすればいいんでしょうか?
よろしくお願いします

138 名前:デフォルトの名無しさん [2010/03/05(金) 10:29:33 ]
イベントハンドラが設定されてないとか?

buttonのclickイベントでその関数呼ばれるようにしてある?

139 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 10:29:43 ]
public……そのメソッド手で直接追加した?

140 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 10:54:57 ]
>>138
ちょこっと探してきたら,これがあったので大丈夫ですかね?
this.textBox3.TextChanged += new System.EventHandler(this.button1_Click);

>>139
見る人が見れば分かるんですね
元々はprivateで書かれてて、それでいろいろと試行錯誤をしてみたんですよ
まぁ、それの跡ですねw 一応直しておきました

141 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 10:58:21 ]
>>140
ちげーよw

ボタンが押されてもbutton1_Click(object sender, EventArgs e)これが呼ばれてないから
変わらないんだろうw

142 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 10:59:48 ]
メソッドの名前は便宜的なもので、button1_Clickという名前でもbutton1のクリックとは関係ない
で、明らかにtextBox3のTextChangedのときに呼び出されるようにしてるじゃん

143 名前:デフォルトの名無しさん [2010/03/05(金) 11:00:51 ]
windowsでプログラム組む上での基本的な仕組みを分かってないのは痛いな



144 名前:デフォルトの名無しさん [2010/03/05(金) 11:03:28 ]
というか分かっててあえて分からないフリして釣ってるようにも見える

145 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 11:04:32 ]
>>141,142
フォームのデザイナでもう一回メッソド作り直したら、
正常に動きました

>>143
おっしゃるとおりだと思います
勉強し直します

ありがとうございました

146 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 12:23:03 ]
>>136
そういう時はGASを制御するアプリを作るんだ

147 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 13:27:58 ]
>>146
ダウンロードするリストだけ自前で作って
MMSをダウンロードするソフトに読み込ませてdlした方が早そうですね

148 名前:デフォルトの名無しさん [2010/03/05(金) 16:34:44 ]
ねえ。。俺もそれで(>>137)迷ってたんだけど・・・

解決方法がわからん・・誰か教えて。。

Form1_ClosingとnotifyIcon1_DoubleClickを手で直接入力しちゃったんだけど・・
たしか、VB6だと、オブジェクトをフォームデザイナの左のコンボボックスで選択して右のコンボボックスで
適したイベントハンドラを選択できるようになってたんだけど・・

VC#2005Expressだとやり方わかりません。すみません、誰か教えてください。。

149 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 16:37:34 ]
自動プロパティをして、後でフィールド変数が欲しくなった場合
すべての変数を書き換える作業をしないとダメなんですか?

public string Name{get;set;}

public void hoge()
{
  Name="hage"; ←こういうの全部 _name に書きかけなきゃならないの?
}

だったらやっぱり、最初からフィールド変数使った方が楽な気がするんだけど

150 名前:デフォルトの名無しさん [2010/03/05(金) 16:39:02 ]
>>148
uproda.2ch-library.com/219724IPC/lib219724.png
雷マークがイベントハンドラの設定
右下の赤枠のマークを押すと画像の場合はFormのLoadイベントのイベントハンドラを
IDEが候補をだしてくれる

151 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 16:41:24 ]
>>149
別に内部だからってプロパティに代入しちゃダメな訳じゃないが?

152 名前:150 [2010/03/05(金) 16:44:24 ]
まだイベントハンドラが無い場合は作りたいイベントのところでダブルクリックすれば
勝手に作ってくれる

153 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 16:50:33 ]
内部も外部もプロパティで制御するのか・・・その方が便利か



154 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 17:36:22 ]
>>153
ちげーよw

155 名前:デフォルトの名無しさん [2010/03/05(金) 17:48:01 ]
クラスについて教えてください。
(1)クラスを呼び出すとき、別スレッドにするには、どうしたらよいですか。

おなじ名前空間にあるクラスを呼び出しています。

クラス名 名前 = new クラス名();
名前.メソッド名();

で呼び出すときに、スレッドにするにはどうしたらよいですか?

(2)この処理って、終わったら、呼び出したクラスに関するいろいろはぜんぶ自動的にdisposeされるんですか?
それとも、
名前.Dispose();
と処理する必要があるのですか?

以上2点、よろしくお願いします。


156 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 17:51:11 ]
>>155
おれより賢そうだから>>149の質問ズバリ教えて

157 名前:デフォルトの名無しさん [2010/03/05(金) 17:55:03 ]
>>156
いや、ぜんぜん賢くないし。
get/setなんて使ったことないです。
ごめんなさい。


158 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 17:56:54 ]
>>155
スレッドとクラスって関係ないし
Disposeなんて所詮そう言う名前のメソッドに過ぎないんだからusingもせずに勝手に呼ばれるとかないし

159 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 17:57:24 ]
はじめから
>public string Name{get;set;}
こんなのしなければいいだけ

160 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 17:57:46 ]
>>149
Nameプロパティをリファクタリングで_nameに名前変更
_nameプロパティの宣言をフィールドの宣言に変更
Nameプロパティを設けてgetとsetを書く

161 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 18:06:35 ]
>>159
・・・え?

162 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 18:08:02 ]
ん?

163 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 18:15:43 ]
>>160
いやいや、それだと外部からそのプロパティを参照しているところも
全部_nameになるじゃない・・・



164 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 18:16:54 ]
>>161
プログラマなんだから英数字や記号は半角にしか変換できないようにIMEセッティングすべき

165 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 18:23:10 ]
>>163
じゃあクラス内の文字列置換なんかですればいい


166 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 18:41:50 ]
public class StreamDataSet
{
  public string URL = "";
  public string Title = "";
}

List<StreamDataSet> SrcList=new List<StreamDataSet>();

StreamDataSet src=new StreamDataSet();
src="ww.google.ne.jp";

if("-同じURLが既に追加していなければ-")
  SrcList.Add(src);

if文の条件式にどのように書けばいいか迷ってます
この場合SrcListに同じURLがあるか探すにはForeachで
ひとつひとつ照らし合わすしかないですか?

List<string>だと.Findメソッドなどで簡単にできるけど
オブジェクトだった場合のやり方がわかりません
よろしくおねがいします

167 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 18:48:04 ]
>>155
[イベント ベースの非同期パターンを使用したマルチスレッド プログラミング]
ttp://msdn.microsoft.com/ja-jp/library/hkasytyf.aspx

[.NET ThreadPool の実行順序を制御する]
ttp://msdn.microsoft.com/ja-jp/magazine/dd419664.aspx

この辺を読むといい。本気で作るなら前者なんだが、おそらく挫折するw
次点のThreadPoolを利用する方法が簡単で、後者はその応用編

168 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 18:56:50 ]
>>166
一般には
if (!SrcList.Any(x => x.URL == src))
でも効率が悪いのでIComparer<T>を実装してBinarySearchを使うのがいいと思う

169 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 19:05:10 ]
>>168
srcは多分StreamDataSetだと思う
その次の、フィッシングサイトみたいなURLのあるコンパイルエラーになる行が気になるけどw

あと、効率考えるならDictionaryを使うことを検討した方がいいと思う

170 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 19:16:00 ]
>>166のケース限定であればListじゃなくてDictionary使うな。

171 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 19:23:34 ]
すいません。書き間違えてました。

× src="ww.google.ne.jp";
○ src.URL="ww.google.co.jp";

ID付きで追加削除したりするならはじめからDictionaryにしておくべきでしたね
使い勝手がいいからList<>を使っていたけど、データ構造はもうちょっと慎重にすべきでした
ありがとうございました

172 名前:デフォルトの名無しさん [2010/03/05(金) 21:01:03 ]
>>158
?
(2)は自動的にDispose()はされないってことですか?
>>167
ありがとうございます。
挫折しました。
まだぜんぜん読めるレベルでありませんでした。


173 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 21:07:54 ]
されるかもしれないしされないかもしれない
それはクラスの実装次第
後処理が必ず必要になるようなクラスではGCされるときに自動的に後処理が行われるように
作ってあるはずだけど必ずしもそうだともかぎらない
でもそれはクラスを書いた奴が悪いのでそこまで考えても意味がない



174 名前:148 mailto:sage [2010/03/05(金) 21:25:13 ]
>>150さん
どうもありがとうございます。その方法でできました。。
助かった〜。ひさしぶりにプログラムやってみまして、
ウィンドウ右上の×印クリックしたときの挙動が違ったので
困っていました。

ちょっと所要で出かけていたので、お礼が遅くなりました。すみませんでした。
ありがとうございました。

175 名前:148 mailto:sage [2010/03/05(金) 21:28:25 ]
画像までキャプチャーしてアップしてくださり、どうもありがとうございました。






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

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

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