[表示 : 全て 最新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

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 ]
画像までキャプチャーしてアップしてくださり、どうもありがとうございました。

176 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 21:41:51 ]
(´・ω・`)

177 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 00:46:59 ]
よくデスクトップ右下あたりからにょきにょきっとバルーンが出てるけど
C#で作れますか?

178 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 00:58:30 ]
うん

179 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 01:11:10 ]
にょきにょき環を上手く出すにはC#ではどうすればいいですか、

180 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 01:13:46 ]
No results found for "にょきにょき環".
すまん、説明を頼む



181 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 01:28:32 ]
石塚英彦が大山のぶ代の物真似で「ニョキニョキリング!」って叫ぶ声が
聞こえた気がした。

182 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 02:17:23 ]
>>177
アラートウインドウ
ttp://youryella.wankuma.com/Library/ClassLibrary/AlertWindow.aspx

183 名前:148 mailto:sage [2010/03/06(土) 02:48:38 ]
>>177
君の「C#」「バルーン」というキーワードに咥えて「タスクトレイ」という3つを
スペースで区切ってグーグルで検索するとたくさん情報がでてくるよ(´・ω・`)

デスクトップの右下あたりをタスクトレイというんだよ(´・ω・`) 。

184 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 02:51:41 ]
豪鬼くんありがとう

185 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 02:56:19 ]
右下じゃないが?

186 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 02:57:24 ]
10年間、「タクストレイ」を「タスクレイ」と思ってた

187 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 03:18:01 ]
Windows 8 新機能

 タ ス ク R A Y

188 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 03:55:47 ]
>タスクトレイ
実はそんなものはない。


189 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 04:06:53 ]
正式名称は通知領域だって?
microsoft.comの中の人もうっかり使うぐらい普及してんだからそんな指摘はナンセンス

190 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 04:24:44 ]
タスクバーのプロパティのダイアログにははっきり通知領域と書いてあるんですがね。



191 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 04:34:40 ]
mono2.6.1をインストールしてTPLのParallel.Forを動かそうと思ったのですが。
monoVMで動かすとSystem.TypeLoadExceptionの例外を吐いて落ちます。
そこで"gmcs"でソースそのものをコンパイルしようとしたのですが
error CS0234: The type or namespace name `Tasks' does not exist in the namespace `System.Threading'.
といってきます。

しかし
ttp://www.go-mono.com/status/status.aspx?reference=4.0&profile=4.0&assembly=mscorlib
ここによればParallel.Forは(たぶん)実装済みとの話です。

なにか勘違いをしているのか?
もしくは手順をまちがえているのか、教えてください。

192 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 04:45:09 ]
そもそも.NET 4.0自体まだ製品はでてないのだが
Monoだって.NET4.0相当品はまだRCだろ精々

193 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 08:07:25 ]
>>191
手元にないから確認はできないがコンパイラはdmcsらしい。
gとかdとかどういう基準のネーミングなんだろ。
mcs   # C#1.0
gmcs  # C#2.0-3.0
smcs  # moonlight
dmcs  # C#4.0 preview



194 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 09:36:07 ]
にょきにょきってCravingExplorerのダウンロードが
終わったときにでるやつじゃなくて?
ただのバルーンなの?

195 名前:デフォルトの名無しさん [2010/03/06(土) 11:13:36 ]
ローカル変数の名前をつけるとき、変数の型が int だったら n とか i とかつけちゃうような
場面で、string[] だったらなんて名前にする?

int n;
string[] ???;

慣用的な名前ってある?

具体的には、
var ??? = text.Split(new[]{'='},2);
var key = ???[0];
var value = ???[1];
みたいな場面で使いたいんだ。

196 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 11:17:06 ]
splitted

197 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 11:19:06 ]
pairとかtmpとかやっちゃうな

198 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 11:20:53 ]
Splitの戻り値はfieldsにしたりする

199 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 11:22:41 ]
parts

200 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 11:23:31 ]
s



201 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 11:25:31 ]
複数のstringだからss

202 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 11:43:16 ]
>>195
string[] って型だけでは、慣用はない。
用途・意図に基づいた名前付けないと。

自分はSplitの戻り値はtokensとか多用。


203 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 11:45:01 ]
tmpStringsかな。
変数名は書く人のポリシーみたいなのが出て面白いな。
俺はnとかiとかは絶対使わない派かな。

204 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 12:14:06 ]
tmpStringsならnやiと一緒じゃね

205 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 12:20:39 ]
一文字じゃなきゃいい、とか訳わかんないルールなんだろ?

206 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 12:43:30 ]
変数名に型情報入れるのはなしだなぁ。
n とか i よりよっぽど悪い。

207 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 12:46:00 ]
itemsとかやってしまうな

208 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 12:52:17 ]
>>204のネーミングはおいらは使わないが、
tmpStringsを型情報というのも賛同できないな

209 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 13:33:28 ]
つってもintだったらtmpIntsなんだろ

210 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 13:42:34 ]
Employee[]をemployeesと名付けることはあってもstringsはないな
漠然としすぎ



211 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 13:46:43 ]
Employee[] な変数に格納するのがほんとに漠然と従業員全員なら employees にするけど、
LINQ とかで条件絞るとまた別の名前にするしね。

漠然と strings はちょっと範囲広すぎると思う。

212 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 13:53:18 ]
単に末尾にsつけたんじゃ配列だかListだかDictionaryだかわからないから
lstとかdicとか頭につけてるが、これもハンガリアン的なアレなんだろうか

213 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 13:58:11 ]
>>212
ハンガリアンそのものでしょ。
今時そんなことやる人いるのか。

「型名」を「略号」で変数名に組み込むより、
「機能」を「明示的に」変数名に組み込む方がずっと合理的だとは思わないのかな。

214 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 14:04:00 ]
にょきにょきってか、もじゃもじゃだろ?
www.nhk.or.jp/professional/mogi_moja.html

215 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 14:06:11 ]
ローカル変数のうちでも狭い範囲でしか使わないような変数の名前なのだから
機能うんぬんもちがうんじゃないかい。
配列だったら ar lst dm あたりを使ってるな。


216 名前:デフォルトの名無しさん [2010/03/06(土) 14:08:33 ]
arrでいいだろ、どうでもいい

217 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 14:13:00 ]
>>215
なんなのその「なのだから」って。
幻聴持ちですか?w

218 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 14:17:13 ]
>>195 からの流れだろ?

219 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 14:22:03 ]
まああまり感情的になって煽りに走ったりせず
冷静に話しましょう

220 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 14:32:34 ]
自分だけかもしれないけど、形式的に名前付けちゃうと
スコープ広くして使いまわしたくなるんだよね
変数名自体よりもそのほうが問題



221 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 14:32:54 ]
>>195
単語帳みたいなイメージでwordsでつける

222 名前:195 [2010/03/06(土) 14:33:11 ]
トン。
慣用されてる名前はないのか。

じゃあ、>>225 が決めてくれ。

223 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 14:44:23 ]
そもそも、intだってiだのnだので必要十分な場面がそう多いとも思えんけど。
まして文字列なんてもっとそうだろう。

もしそんな場面があるなら普通にsでいいと思うけど。

224 名前:220 mailto:sage [2010/03/06(土) 14:50:25 ]
int nとかやると、あとでまたintの変数が欲しくなったときについ
新しい変数を宣言せずにnをそのまま使い回したくならない?
一文字変数がどうとかいうよりそういうのがコードを分かりづらくすると思うんだ
ループカウンタなんかはそもそも使いまわすわけがないのでiでも問題ないけど

225 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 14:52:46 ]
候補は出てるんだから自分で決めろ

226 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 15:00:01 ]
命令口調クンって馬鹿だな、まで読んだ。

227 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 15:05:27 ]
nとかiとかはさすがに使い捨て目的で、それを使いまわすってことは無いだろう

228 名前:191 mailto:sage [2010/03/06(土) 16:02:42 ]
>>193 コマンドのdmcsはおそらくなくなってます。gmcsだけに統一されたのかも?


229 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 16:15:21 ]
TPLってオープンソースじゃないんだな
DLRやMEFみたいにMS-PLで公開されてるのかと思ってた

230 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 16:24:08 ]
この辺じゃねーの
ttp://mono-project.com/Release_Notes_Mono_2.6
> ParallelFx
> To use this code you have to manually enable the .NET 4
> profile using the --with-profile4=yes switch at configure stage.



231 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 17:02:30 ]
(from x in items.AsParallel() where x.A < 3 select x.B).ForAll(x=>時間のかかる処理(x));
もう異次元すぎるな
こんなの書く日が来るんだろうか

232 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 17:50:08 ]
中途半端にクエリ式混ぜないで、全部メソッド形式で書く方がマシ。

233 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 17:58:05 ]
クエリは保守性が一気に落ちるからな。

234 名前:195 [2010/03/06(土) 18:16:42 ]
>>225 がきっとボケてくれると思って振ったのに、
ぼけてくれなくて残念。

ちょい補足。

ruby みたいに多重代入があれば、
key,value = text.Split(new[]{'='},2);
としたいところだが、それができないので一時変数名を決めないといかん。

そんな場合にどうするか。
自分は、ひとに見せる予定がないときは手を抜いて a (arrayの意)。
人に見せる予定があるときは、ary,tokens とかなんだけど、
ソースを読んだ人がわかりやすい名前があればそれに
しとこうと思って、皆に聞いてみました。

235 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 19:12:28 ]
最初の頃はフォームアプリで作成していたんだけど
簡単なプログラムの場合、コンソールで作った方が早いと気づいて
最近はまずコンソールアプリを作って、それを制御するフォームアプリを作るように
しているんですが、おかしいですか?

236 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 19:14:32 ]
うん

237 名前:デフォルトの名無しさん [2010/03/06(土) 19:18:12 ]
>>235
好みの問題でしょ
VC#ならEEでもGUI作るのは簡単だし

VC++のネイティブとなるとエディションによってはいろいろ面倒だけど

238 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 19:19:19 ]
好みの問題じゃないよ。

239 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 19:19:48 ]
好み、つーか何をつくりたいかある程度明確にしてから作り始めるんじゃないのか、普通は。
途中で変更はあるにしろ。

240 名前:191 mailto:sage [2010/03/06(土) 19:28:48 ]
自己解決です。
SVNからビルドしたらできるようになりました。



241 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 20:34:39 ]
>>204-210
いやいや、>>195の例では何のワークかわからんし、テンポラリの文字列という意味でtmpStringだよ。
もっと何の用途にというのがわかれば、具体的な名前つけるけど。
俺からは>>196とか>>197のようなsplitで分割するからsplitted、keyとvalueのペアだからpairとか
そっちの方があり得ない。

まあ、俺が馬鹿という結論でいいよ、この手の論争は疲れるし。

242 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 20:34:54 ]
コンソールアプリとそれを制御するGUIフロントエンドの形態って
ロジックと外観の分離ができてるから良いかもね

243 名前:デフォルトの名無しさん [2010/03/06(土) 20:36:22 ]
コンソールアプリっていきなりDOS窓が開かないようにできたっけ?

244 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 20:38:21 ]
子プロセスとして起動するならコンソールが開かないようにはできるな
ていうかDOS窓とかすでに郷愁を誘う言葉だ

245 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 20:39:26 ]
アプリ側では無理。

246 名前:デフォルトの名無しさん [2010/03/06(土) 20:43:01 ]
データ処理側はローカルproxyのようなスタイルで分離して
テキストを投げてもらうとかもいいかもね

247 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 20:45:02 ]
なんでDOS窓が邪魔なら素直にクラスライブラリにしないのw
意味がわからんよ

248 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 20:46:24 ]
>>241
ばーかばーか

249 名前:デフォルトの名無しさん [2010/03/06(土) 20:48:40 ]
>>247
まあやり方はいろいろあるからなんでもいいんじゃないの?
処理部分はC/C++で書いて・・・とかあるとDLLとして使うのもいいし
裏でサービスとして起動しておいて汎用的なアクセスにするでもいいし

250 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 20:51:54 ]
>>247
コンソールアプリはコンソールアプリで楽に自動化できるからあればいいじゃない
で、先にコンソールアプリがあるなら一々クラスライブラリ化するより
GUIアプリはコマンドライン用の文字列作ってコンソールアプリに丸投げした方が手っ取り早いじゃない



251 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 20:54:56 ]
ないわぁ

252 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 21:00:00 ]
ハンガリアンやめたのはMSの大失敗
一目で型が分かるアレは便利だった
ハンガリアンに批判的なのは低脳プログラマに多い

253 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 21:05:38 ]
プリミティブな変数は使わない方向なんだから
ハンガリアンはなくなって行く方向なのは間違いない

254 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 21:07:30 ]
プロセス間 I/F のひとつとしてコマンドライン‥‥実行ファイルへのコマンドラインパラメータ?で渡すのはアリじゃないかと。
単純なパラメータで済むなら楽と言えば楽だし。

255 名前:デフォルトの名無しさん [2010/03/06(土) 21:09:52 ]
>>252
それを.netスレでいうのはかなり痛いぞ
.netで開発してると過去のみみっちい省略がアホくさく思える
タダ単に古参ギークが新参をバカにしたいだけにしか見えない

アセンブラからいろいろやってきてるが古いやり方で駄目な物は変えるべきだし
変わってる以上は受け入れるべき

こだわってるってことは新しいことについていけない昔を懐かしむだけの
老人に見える。

256 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 21:20:32 ]
>>254
普通にメソッド呼び出しできた方がずっと楽だと思いますがw

バッチファイルやWSHとか、.NET以外の言語からも弄れるようにしたいのならともかく、
.NETの世界で完結していいのならわざわざコンソールアプリにする意味ってあるのかしら。


>>255
どうせ釣りだろうにそうムキにならんでも....
ただ、クラス名にCを付ける習慣まで否定しなくてもよかったんじゃないのかなとは
個人的にはちょっと思う時がある。

そのくせなんでインターフェイスだけIでプリフィクス推奨なんだろう。

257 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 22:04:16 ]
IDEでの開発を前提として実用性を第一に考えた時に

インターフェースがIから始まってたらクラスの山の中からすぐ探せて便利。
クラスのPrefixがCだとタイプ数が1回増えるだけで意味ない。

てな結論に至ったんじゃない?

258 名前:デフォルトの名無しさん [2010/03/06(土) 22:05:21 ]
>>256
>ただ、クラス名にCを付ける習慣まで否定しなくても
クラスの塊なのにC付けたらウザいだろ

259 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 22:05:59 ]
splitted
www



260 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 22:12:38 ]
>>256
だから選べる手段のひとつとしてだってばさ。w
プロセス分割の基準はいくつもあるだろ。



261 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 22:18:48 ]
> バッチファイルやWSHとか、.NET以外の言語からも弄れるようにしたいのならともかく、
そこ除く意味が分からない

262 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 22:22:33 ]
そもそもそんな話は出てなくて、Windows フォームアプリなのにコンソールで作り始める、
ってことだろ。

263 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 22:29:23 ]
この言語より手早くにフォームアプリ作れる言語ってある?
より簡潔な言語とデザイン画面での操作性にすぐれたもの
多分フリーだとこれ以上のものはないよね?

264 名前:デフォルトの名無しさん [2010/03/06(土) 22:30:41 ]
>>263
フリーはないねえ

265 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 22:35:33 ]
VB

266 名前:デフォルトの名無しさん [2010/03/06(土) 22:37:17 ]
タダじゃねーだろ

267 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 22:37:48 ]
あれこれやらないのであればAccessの方が簡単に出来るな。
フリーじゃ無いが。

268 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 23:27:16 ]
notifyIconについて質問です。

Windows XP以降のOSでアクティブでない通知アイコンが隠せるようになりましたが、
notifyIconをアクティブな状態にするにはShowBalloonTipしかないのでしょうか。

独自のフォームで通知を行い(メーラーやウィルスチェックソフトのように)
その際に通知アイコンを表示したいのです。




269 名前:デフォルトの名無しさん [2010/03/07(日) 00:19:08 ]
これだけは言わせてくれ。
tmpString はないわ。

270 名前:デフォルトの名無しさん [2010/03/07(日) 00:34:01 ]
意味不明だが、その独自のフォームの通知イベントのときにnotifyIcon.Visible = trueにすればいいだけの話ちゃうの?

Formにしろ、notifyIconにしろVisibleプロパティをtrueにすりゃ、アクティプになるだろう・・と思うんだけど



271 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 00:45:54 ]
2001のころからやっているけど
未だにまともなプログラミングができないおれ涙目

272 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 00:47:47 ]
文法からやりなおすんだ

273 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 00:49:45 ]
>>270
Windows 7で確認していますが、

Windowsの通知領域アイコンの設定が「通知のみ」になっているとバルーンを出したとき?にしか
表示されなくなるんです。
これを、バルーンを出さずに一時的に表示する方法がないかな、と。

Visibleの変更は試してみましたがだめでした。

274 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 00:53:35 ]
独学だとつらいだろうね。
いろんなプロジェクトに参加していいところを吸収できれば短期間でもすくすくと成長できる。

275 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 01:07:44 ]
フォームアプリ作る場合いつもProgram.cは手付かずなんだけど
このクラスって何に使うべき?

276 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 01:10:43 ]
例えば重複起動禁止処理とか

277 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 01:11:07 ]
コマンドライン引数の処理とか
二重起動を弾くとか

278 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 01:14:20 ]
while ( true )
{

279 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 01:23:08 ]
new Form1().Show();
}

280 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 01:57:21 ]
ブラクラかよw



281 名前:デフォルトの名無しさん [2010/03/07(日) 08:24:00 ]
>>271
専ブラでも作れ
GUIの作り方からいろいろ学べるぞ

282 名前:デフォルトの名無しさん [2010/03/07(日) 09:14:39 ]
.NET 1.1(C#)でFTPクライアントアプリの作成はどのように行えばよいですか?

283 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 09:20:28 ]
誰かライブラリ作ってないか探してみて見つからなかったらTCPを自分で喋る

284 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 09:26:11 ]
KBにあるからそれを使う。

285 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 09:33:56 ]
1.RFC読んでFTPを理解する。
2.System.Net.Sockets で実装する。
3.できあがり。

286 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 10:18:58 ]
wininetを使うのが一番簡単

287 名前:デフォルトの名無しさん [2010/03/07(日) 11:14:30 ]
英語苦手だとクラスの名前考えるだけで苦労する

urlを与えるとhostとか細かく分解処理して管理するクラスだとなんて名前付ければいいだろうw

288 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 11:19:41 ]
System.Uriじゃだめなの?

289 名前:デフォルトの名無しさん [2010/03/07(日) 11:21:26 ]
>>288
host+その他
以外もできましたっけ?

290 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 11:25:09 ]
以外が何を指してるのか分からんが取り敢えずメンバ一覧確認すれば



291 名前:デフォルトの名無しさん [2010/03/07(日) 11:38:53 ]
[host]/[aaa]/[bbb]/・・・・
という感じでパスがあったとすれば

[host]
[bbb]

とかurlの一部だけを抜きだしたい場合の話ですね

正規表現かけて処理しないと対応できなかった記憶が・・・

292 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 11:51:51 ]
urlparse

293 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 14:44:03 ]
>>281
2ちゃん専ブラって自分用にいろいろカスタマイズしたいし
作ってみたいんだけど参考サイトがあんまりないんだよね
ツインテールの初期のソースとかあったら見てみたいんだけど
今のソースは規模が大きくてもう理解不能

294 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 15:36:40 ]
規模が小さければ理解できるんなら、時間さえあれば理解できるってことだ。

295 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 16:33:03 ]
>>243
コンソールアプリで作って、プロジェクトの出力の種類をWindowsアプリケーションにすればOK

296 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 17:40:52 ]
コードが時系列に並んでいないので
頭の中で実行プロセスをイメージしながら
ソースを見ていると混乱する

少し時間が経ってからクラスやメソッドを見ているとき
これがどのタイミングで実行されるかすぐにはイメージできない

ある動作をさせるとき多くの手段があり過ぎて迷う

297 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 18:00:09 ]
>>296
なんかダメグラマ具合が文章にも出てるね。
文章力とプログラミング能力って相関がありそうだもんなw

298 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 18:11:46 ]
論理性に長けてるかどうかだもんな。

299 名前:デフォルトの名無しさん [2010/03/07(日) 18:20:17 ]
>>293
2ch専用ブラウザの作り方
pc12.2ch.net/test/read.cgi/tech/1180406037/400
この辺で最近新規にc#で作ってる人がいるみたいなんでこっちも覗いてみては?

300 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 18:48:26 ]
初心者が特にイベントドリブンで混乱するのはわかる気がする
処理が細切れになって頭の中でイメージしにくい



301 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 19:17:15 ]
イメージしにくいですね

302 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 19:28:08 ]
同じ処理が10回あれば10回記述する、とかじゃなきゃ
どんな言語だって多かれ少なかれそんなもんだろ

303 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 19:30:44 ]
それは、たぶん問題の取り違えだと思うよw
イベントドリブン「だから」混乱するんじゃない。
イベントドリブン「ですら」混乱するんだよ。

304 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 19:52:33 ]
大昔の割り込み処理もイベントドリブンといえるんだろうか

305 名前:デフォルトの名無しさん [2010/03/07(日) 19:57:48 ]
>>304
まあいえるんじゃないの?
マウスが動いたら〜、サウンドボードのバッファーが空になったら〜

306 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 20:50:17 ]
割り込みは(普通は)応答時間を小さくするために使うものだから
目的は全然違うけどね。

っていうか、割り込み処理って別に大昔じゃないだろうw
マルチタスクOS上のアプリのコーディングでは使わないだけでしょ。

307 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 20:52:55 ]
逆に言うと普通のアプリの場合については大昔になるわけで

308 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 20:55:40 ]
何がどう「逆」なのか意味がわかりません。

309 名前:デフォルトの名無しさん [2010/03/07(日) 21:34:14 ]
とあるテンプレート
<div>
 <h2>[VAR1]</h2>
 <p>[VAR2]<p>
<div>
があるとして、
[VAR〜]に値を流しこんでいきたいのですが、
どんな方法がありますでしょうか。

テンプレートは、
- div:
 - h2: VAR1
 - p: VAR2
のようなYAMLでもJSONでもなんでもいいのですが、
とにかく、同じようなデータセット?をテンプレートに流し込みたいです


310 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 21:36:00 ]
Replace()



311 名前:デフォルトの名無しさん [2010/03/07(日) 21:49:22 ]
データグリッドビューでカレントセルが変わったときに
private void dataGridView1_CurrentCellChanged(object sender, EventArgs e)
で処理してるんですけど、処理が終わるまでカーソルの移動がわかりません。
先にカーソルを移動させたいんですけど、どうしたらいいでしょうか。

312 名前:デフォルトの名無しさん [2010/03/07(日) 22:12:01 ]
>>310
ありがとうございます。
なるほど、普通に置換すればいいのか。


連続で申し訳ないんですが、
フォルダのパスなどの定数ってどこに書くのが適切ですか?

313 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 22:33:01 ]
不変値なフォルダパスって一般的ではない気がする
アプリケーション構成ファイルとかに書かない?

314 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 23:06:31 ]
>>311
重い処理するならUIをブロックしないように非同期にする

315 名前:デフォルトの名無しさん [2010/03/07(日) 23:15:35 ]
>>314
それしかないんですね・・・
ありがとうございます。

316 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 23:37:28 ]
>>315
おお

317 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 23:48:31 ]
(´・ω・`) ………あ!

318 名前:デフォルトの名無しさん [2010/03/08(月) 05:53:43 ]
Foo f=new Foo();
f.Run();

Foo f=new Foo();
Thread t= new Thread(new ThreadStart(f.Run));
t.Start();
t.join();

はほぼ同じ動きをすると考えていいですよね?
後者にするとすごく遅くなるんですけど
これは余計なことやってるからだけなんでしょうか?

319 名前:デフォルトの名無しさん [2010/03/08(月) 08:26:13 ]
5月とかまた先延ばしにしたな

320 名前:デフォルトの名無しさん [2010/03/08(月) 08:29:09 ]
>>313
プロジェクトプロパティの
リソースや、設定っていうタブのことですか?



321 名前:デフォルトの名無しさん [2010/03/08(月) 11:19:46 ]
すいません、この画像のフォームコントロールの名前がわかりません。
誰か教えてください。
よろしくお願いします。

www.dotup.org/uploda/www.dotup.org709383.jpg

322 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 11:22:12 ]
リストビューだろ。

323 名前:デフォルトの名無しさん [2010/03/08(月) 11:25:19 ]
ありがとうございます!!

324 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 12:14:15 ]
>>320
そう 主に設定の方

325 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 12:17:34 ]
おれは app.config に出して、ConfigurationManager で読み出し、かな。

326 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 15:04:56 ]
>>324
あれってよくわからんが、自分でapp.configとかいう名前のファイル作って
そこに書きだすのとどう違うんだ?

327 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 15:48:13 ]
C#使っててPythonのが楽なときってある?
デスクトップアプリで

328 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 15:52:05 ]
>>326
色々あるけど機能としては
IDEが自動的に型指定されたプロパティとしてSettings.名前でアクセスできるラップクラスSettingsを用意してくれる
ユーザースコープの方はSettings.Default.Saveで簡単に保存できる
とか 自分もこういう基礎的な部分以外は使わんから詳しくないけど

アプリケーション設定でもapp.configを使うんだけど
普通直接app.configに値を埋め込む場合は普通configuration/appSettingsを使うのに対して
configuration/configSections/sectionGroupを使って別ツリーに書き出す

329 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 17:40:09 ]
Dictionaryのキーだけ保持したようなクラスありますか?

330 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 17:46:39 ]
HashSet<T>



331 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 17:49:54 ]
HashSet<T>がそれですか。
ありがとう。

332 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 17:50:34 ]
というか、集合(set)を実現したいというならちゃんとそう説明しないと、

Dictionary<TKey, TValue>.KeyCollection

とか答えちゃうぞ

333 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 17:58:00 ]
>>332
一般的な呼び方がわからなかったので329のように書きましたが
以降はそうさせてもらいます。

334 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 20:11:54 ]
ロギングについて質問です。
例外発生時にエラーログを出力したいのですが、
後で統計などを取るためにプログラムから読みやすい形を考えています。
ただし、バイナリはNGにしたいと思います。

独自のErrorクラスを作って、その配列をXmlSerializerや
SoapFormatterでSerializeというのを考えたのですが、
こういう手法というのは一般的に見てどうでしょうか。

書き込むのにDeserialize→配列に追加→Serializeという手順になるので、
パフォーマンス上は不利だとは思いますが、
試しに3MB位までログ容量を増やしても体感上は遅延は感じませんでした。
本番運用では100KB以内で収まる程度だとは思います。

335 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 20:13:02 ]
専用のTraceSourceというクラスを使う
XMLにも出力できる

336 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 20:15:52 ]
>>327
ないね
かなり小さいコードでもインテリセンスに頼った方が早かったりする
スクリプト言語はコンパイルが不要なことに意義がある

337 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 20:17:05 ]
log4netとか使っちゃうな。

338 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 20:37:42 ]
sage

339 名前:334 mailto:sage [2010/03/08(月) 20:39:59 ]
>>335,337
ありがとうございます。調べてみます。

340 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 10:10:21 ]
>>337
あれ結構便利だとは思うけど
やれる事が多いだけに設定がめんどくせぇ・・・
俺の中では設定ファイルの中身グチャグチャにされるイメージがでかいかな・・
今は必要な機能だけ持った独自のログ機能自作して使ってるわ



341 名前:デフォルトの名無しさん [2010/03/09(火) 12:45:06 ]
bmpのファイルのロックを解除する方法を教えてください。
WPFでjpg画像を読み込んでいます。
BitmapImage bmp = new BitmapImage();
bmp.BeginInit();
bmp.UriSource = new Uri(fileName);
bmp.CacheOption = BitmapCacheOption.OnLoad;
bmp.EndInit();

これで、jpgが壊れているときに、
bmp.EndInit();
でエラーになります。
そこで、これ全体をtry-catchして、エラーが出たらDisposeしようと考えました。
catch{
bmp.Dispose();
Close();
}
としたのですが、bmpにはDispose()が見当たりません。
どうやってDisposeして終了したらよいでしょう?
WPF掲示板は初心者の質問には答えていただけないようなので、
こちらに来ました。
よろしくお願いします。


342 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 12:46:49 ]
最近この板でキモいC#信者が暴走してるから自重するように

343 名前:デフォルトの名無しさん [2010/03/09(火) 12:59:43 ]
>>341
以前とあるソフト書いたときはこんな感じにしたな
FileStream fs = new FileStream(save,FileMode.Open);
b = new Bitmap(fs);
fs.Close();
fs.Dispose();

これだと自分でdiposeできるのでロックがかかったままにならない
どこかにこれはあったはず(@ITあたりにサンプルコードあったはず)

344 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 13:03:42 ]
>>343
それSystem.Drawingや、と
まあWPFでも同じ回避方法になるね
UriSourceじゃなくてStreamSourceを使う
ていうかこれはバグだなー

345 名前:デフォルトの名無しさん [2010/03/09(火) 13:04:37 ]
>>341
StreamSource
考え方は>>343

346 名前:デフォルトの名無しさん [2010/03/09(火) 13:06:27 ]
>>344
バグというか仕様というか仕様考慮漏れというか
GCをあてにする言語なんでこういう仕様も許容範囲かと
コード書く側でまったく対処できないなら問題だけどね

347 名前:デフォルトの名無しさん [2010/03/09(火) 13:10:12 ]
>>343の補足
saveってのはこの前のロジックの都合でそうなってるだけで
fileNameとか自分の環境にあったのに書き換えてね

348 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 13:13:34 ]
>>346
いや、内部でStream作ってるんだからそれを例外時にCloseしないのは問題でしょ
「using使えよ」的な話
ストリームをCloseしたときに例外が出たって状況ではないんだから

349 名前:デフォルトの名無しさん [2010/03/09(火) 14:03:42 ]
>みなさんありがとうございます。
が、下記のコードで、画像が表示されなくなりました。
読み込めていないようです。
どこがまずいでしょう?

BitmapImage bmp = new BitmapImage();
try{
//FileStream fs = new FileStream(fileName, FileMode.Open);
//bmp = new BitmapImage();
//fs.Close();
//fs.Dispose();
bmp.BeginInit();
//bmp.UriSource = new Uri(fileName);
bmp.StreamSource = new FileStream(fileName, FileMode.Open);
bmp.CacheOption = BitmapCacheOption.OnLoad;
bmp.StreamSource.Close();
bmp.StreamSource.Dispose();
bmp.EndInit();
}catch{
Close();
}


350 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 14:07:09 ]
EndInitする前にCloseしたらそりゃダメだろ…
あとCloseとかDisposeとかは明示的に呼ぶんじゃなくてusing構文で



351 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 14:15:21 ]
なんでusingという名前にしたんだろうな?まぎらわしい( ・ω・)y─┛〜〜

352 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 14:20:25 ]
正常な場合はCloseしちゃだめ。
基本的にオープンの状態を維持して読み直せるようにしないといけない。

353 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 14:23:59 ]
>>352
BitmapCacheOption.OnLoadの場合ロード時=EndInit時にデータを全部メモリにコピーしちゃうから
元Streamがどうなろうがしったこっちゃないよ

354 名前:デフォルトの名無しさん [2010/03/09(火) 14:25:28 ]
その辺うまく使いこなせないならMemoryStreamで読み込みできるように
自分でメモリに上げちゃえばいいんじゃないの?

355 名前:デフォルトの名無しさん [2010/03/09(火) 14:54:55 ]
>みなさんありがとうございます。
bmp.EndInit();
bmp.StreamSource.Close();
bmp.StreamSource.Dispose();
と順番を変更してうまくいきました。
ありがとうございました。


356 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 15:15:28 ]
配列に入っている値の符合をプラスから全部マイナスにしたいんだけど、簡単に出来る方法はないですか?
もちろんループをつかって全部−1を掛け算すればいいんだけど、ビット演算とかで簡単にできないかなーと思って

357 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 15:17:21 ]
ループが一番簡単だろ

358 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 15:27:46 ]
最近は2の補数とかやらないのか・・・

359 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 15:29:03 ]
それ以前に配列なんだからループ以外にどうしろと

360 名前:デフォルトの名無しさん [2010/03/09(火) 15:30:25 ]
>>356
int32の場合だと-1かけるっていうのは0xFFFFFFFFをかけるってことだけど
素直に計算したほうがいいんじゃないの?

参考までに

1*-1は0x00000001*0xFFFFFFFF=0xFFFFFFFF
2*-1は0x00000002*0xFFFFFFFF=0xFFFFFFFE
以下略

余計なシフト演算するくらいなら掛け算したほうがいい気がする



361 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 15:30:56 ]
意地でもループを使わずなんとかするって方向ですか?

362 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 15:46:54 ]
うん、ループ怖いし

363 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 15:51:38 ]
>>362
じゃあ、再帰使え

364 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 15:51:42 ]
-1 をかけるって、実際にはループの中で a[i] = -a[i]; だろ。
これより高速な方法なんてある?

365 名前:デフォルトの名無しさん [2010/03/09(火) 15:54:32 ]
x86だと命令を繰り返すための命令もあったけど
そういうのを除けばすでに言語はあまり関係ないよな・・・

366 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 16:01:42 ]
そんなもん数万回やってやっとms単位の差が分かる程度だろ。意味ない。

367 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 16:16:50 ]
どうしてもループしたくないならこういう感じで行けるんじゃないかな

int[] val = new int[10];
var tmp =
from n in val
select n * -1;

var minus = tmp.ToArray();

368 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 16:18:30 ]
それ結局ループしてね?

369 名前:デフォルトの名無しさん [2010/03/09(火) 16:19:48 ]
だから言語は関係なくてループを書かないってのはできないんじゃね?といってる
再帰でやるほどでもないだろうし

370 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 16:22:48 ]
できんこたないだろ
a[0] = -a[0];
a[1] = -a[1];
・・・

さあ全部書くんだ



371 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 16:24:50 ]
手段のためなら目的は選ばない

372 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 16:25:00 ]
完全にネタ化してきたな

373 名前:デフォルトの名無しさん [2010/03/09(火) 16:29:22 ]
>>372
まあネタだよね
釣りともいうかも

374 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 16:36:21 ]
SSEとかそういうの使えばループ無しで出来るんじゃね?

Cとかアセンブラの域になるが。

375 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 16:40:37 ]
無限ループって怖くね?

376 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 16:54:25 ]
えッ!?

377 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 16:59:23 ]
メッセージループは無限ループだから怖い

378 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 17:18:06 ]
まぁその程度の事で難しく考えるより
単純でミスがないような後々わかりやすいコードのが大事だろ

379 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 18:05:45 ]
>>349
今更だけど、FileStream.Close()ってDispose呼ぶだけだから、
CloseとDisposeの両方を呼ぶ必要はなく、片方1つで十分のはず。

380 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 18:16:11 ]
>>379
MSDNには「Disposeのtrueと同じ」って書いてあったから
ちょっと違うのかもと思ってた



381 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 18:25:00 ]
>>380
Dispose()はDispose(true)をよんでいる。

382 名前:デフォルトの名無しさん [2010/03/09(火) 18:59:18 ]
Stream系は全部using使わないと開放漏れが気になっちゃう

383 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 21:11:15 ]
解放漏れよりも更新されなくて嵌まることがある

384 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 21:49:10 ]
そーいえば、SmtpClient と MailMessage で添付ファイル付きのメールを送ったときに、
添付ファイルとしていたローカルファイルを削除できなくて悩んだことがあったな。w

この時初めて Dispose の重要性を実感した。

385 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:21:55 ]
マネージDllに記述したメソッドの説明などに使う///コメントが、Dllを使うプロジェクトで参照できません。
どうやったら参照できるようになりますか。

386 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:25:03 ]
プロジェクトのプロパティ→ビルド→XMLドキュメントファイル
プロジェクト参照じゃなくてdllをそのまま配布する場合は必ず生成されたxmlファイルも一緒に

387 名前:デフォルトの名無しさん [2010/03/09(火) 23:32:07 ]
XmlSerializerを使ってDeserializeするクラスの中に配列があった場合はうまくいかないのかな?

388 名前:387 [2010/03/09(火) 23:47:58 ]
自己解決しました・・・

389 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 00:07:21 ]
死ね

390 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 00:15:45 ]
どうやって解決したか書かない子はほんと自決して欲しい



391 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 00:18:27 ]
>>390
いやです

392 名前:デフォルトの名無しさん [2010/03/10(水) 00:27:11 ]
>>391
勝手に応えるなw

>>390
ケアレスミスでしたw

393 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 00:28:53 ]
>>392
いやです

394 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 01:51:09 ]
一度覚えたら忘れにくい言語ないですか?

395 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 01:52:31 ]
日本語

396 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 02:05:49 ]
listview.items[].subitems[].text
↑長い
↓こんな感じにできたらいいのに
listview.items[](str,str,str,str)

397 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 02:07:27 ]
>>396
っ 拡張メソッド

398 名前:デフォルトの名無しさん [2010/03/10(水) 13:43:09 ]
IDisposableの正しい実装方法おしえてちょ

399 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 15:02:56 ]
string型をKeys列挙型に変換する書き方がわかりません。
下のような変換をするにはどのように書けばいいですか?

string "J" → Keys.J
string "Divide" → Keys.Divide
string "NumPad2" → Keys.NumPad2


400 名前:デフォルトの名無しさん [2010/03/10(水) 15:34:09 ]
スレッドセーフについて教えてください

@private static List<string> sampleList = new List<string>();として
同じクラス内の以下のスレッドを同時に実行します
スレッド1はsampleListに要素を一つずつaddして追加
スレッド2もsampleListに要素を一つずつaddして追加
スレッド3はsampleListの先頭の要素を取得後、RemoveAt(0)で削除
この場合はSynchronizedは必要ですか?

Aprivate static int n1;として
2つの同時進行のスレッドからn1の値を変えたりする場合は
Interlockedが必要ですか?

Bprivate static int n1;として
スレッド1からはn1の値を変更するが、スレッド2からは参照するだけ
ならばInterlockedは必要ないですか?

よろしくお願いします



401 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 15:35:43 ]
>>399
(Keys)Enum.Parse(typeof(Keys), "NumPad2", false);

402 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 15:46:53 ]
書き換えてる途中に参照しようとしたらどうする?

403 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 15:47:21 ]
>>401
できました。ありがとうございます!
他にも色々使えそうなので更に勉強してきます。

404 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 15:58:59 ]
途中ってなんだよw

405 名前:400 mailto:sage [2010/03/10(水) 16:05:14 ]
>>402
ありがとうございます。
Bの場合もInterlockedしておいた方がいいという事ですね。。。

もう一つだけ教えてください。
msdn.microsoft.com/ja-jp/library/6sh2ey19(VS.80).aspxに
スレッド セーフ
この型の public static (Visual Basic では Shared) メンバは、スレッド セーフです。
と記載せれているのですが、これはSynchronizedが必要ないという意味ですか?

406 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 16:37:15 ]
>>405
>この型の public static (Visual Basic では Shared) メンバは、スレッド セーフです。
>すべてのインスタンス メンバがスレッド セーフになるかどうかは保証されていません。
いらないよ
逆にCountプロパティとかその辺はセーフかどうかなんて保証されてないってこった

>コレクションが変更されない限り、List では、複数の読み込み操作が同時に発生しても問題ありません。
コレクションの列挙処理は、本質的にはスレッド セーフな処理ではありません。
まれに 1 つ以上の書き込みアクセスによって列挙処理で競合が発生する場合、確実にスレッド セーフにするには、列挙処理が完了するまでコレクションをロックします。
コレクションに対し複数のスレッドがアクセスして読み取りや書き込みを行うことができるようにするには、独自に同期化を実装する必要があります。

と書いてあるがこれ読めば参照時にもロックかけるべきかどうかは判断つくと思うんだけど



407 名前:400 mailto:sage [2010/03/10(水) 17:01:26 ]
>>406
ありがとうございます
まとめると、Listをスレッドセーフで使うには
・public static以外はSynchronizedが必要
・For EachやCountプロパティ等を使用する時はロックが必要
ということでいいのかな。
助かりました、サンクス。

408 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 18:46:47 ]
List<T>などのジェネリックコレクションにSynchronizedはない
常にロックが必要

409 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 19:32:29 ]
Form1のボタンを押すと、Form2のテキストボックスにテキストを移すのってどうすればいいですかね?
DOBONさんのTipsを見て

Form2 f = new Form2();
f.ShowDialog(this);
f.Dispose();

な感じでForm2をForm1に所有させてやってるんですが
他にやり方とかないでしょうか?

410 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 19:39:31 ]
>>409
クリップボードを中継する



411 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 19:42:07 ]
>>409
それでできるのに何が問題なのかが
重要なんだと思うが・・・・

412 名前:デフォルトの名無しさん [2010/03/10(水) 19:42:12 ]
同じ説明をしたなあ
Form2にアクセス用の関数を作って公開する

413 名前:デフォルトの名無しさん [2010/03/10(水) 20:09:20 ]
ボタンとテキストボックスは自分で配置してくれ
Form1.cs
codepad.org/8UBu8se8

Form2.cs
codepad.org/ErnDt7Yc

414 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 20:39:55 ]
>>409
テキストボックスのModifiersプロパティをPublicにする

415 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 22:13:29 ]
>>409
状況が分からないのでどういう方法が適切か何ともいえないけど、
Form1とForm2の間に相互に依存関係を持たせたくないのなら、
第三の仲介者役のオブジェクトを間に入れる。

単に依存関係を逆転させたい(Form1はForm2を知るべきでないが、Form2はForm1を知っててもいい)
だけなら、イベントを使ってもいい。

(1) Form1はボタンがクリックされたらテキスト伝達のためのイベント(仮にTransmitTextイベントとする)を発生させるようにする

(2) Form2がForm1の参照を持つ

(3) Form2にForm1のTransmitTextイベントのイベントハンドラを書いて、その中でTextBoxを更新する。

こんな感じ。

416 名前:409 mailto:sage [2010/03/10(水) 22:23:46 ]
Form同士で受け渡しがしたかった理由は
Form1からForm1所有でForm2とForm3を出した際に

Form2の情報をForm3で取得したいときに所有しているのはForm1なので
受け渡しが出来ないのでどうすればいいのか?と考えていました。

417 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 22:39:53 ]
>>416
それは設計がおかしい
と普通の人は考える

418 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 22:43:56 ]
オブジェクト指向の世界は縦割りなんだよ
横の繋がりは必要としない
絶対的な権力を持つボスがすべてを操る

419 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 22:48:05 ]
もう全部static変数にすればいいよ
そんなレベルで頭捻ったって結果は同じだからとりあえず動けばいい
どこが悪いかはそのうちわかってくる

420 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 23:02:07 ]
最初はform2で処理したデータをform1で一旦取得してから
form3に渡すのは不自然だったり、非効率的に思えるかもしれないが
両方のformで利用するデータはform1で管理したほうが
実は安全で効率的なのだ

もしform3がform2とのやり取りだけしかしないなら
form2の子としてform3を宣言すべき



421 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 23:10:58 ]
それならForm1にも直接データは持たせないべきだろ
データを保持するクラスを別に作って持ちまわる形にする

422 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 23:12:54 ]
MVCしろよ

423 名前:409 mailto:sage [2010/03/10(水) 23:24:17 ]
みなさんありがとうございます。
参考にしてC#をちょっとずつやろうと思います。

424 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 23:57:04 ]
>>423
まあ、Formの本来の役割は入力と表示だってことは理解した方がいいよ。

つまりFormの仕事は、ユーザーからの入力を何か別のオブジェクトに伝達したり、
別のオブジェクトからのデータを表示するのが仕事。

PCでいったらモニタやキーボードに相当する部分。
だからそんな部分同士がデータを直接やりとりするのは本来おかしい。

キーボードとモニタの間が配線でつながっててデータやりとりしたらおかしいでしょ?w

キーボードはPCに対して入力データを送るだけ。
モニタはPCからの信号を表示するだけ。

GUIのプログラムも基本同じような考え方で作るべきだ。
Form1はオブジェクトhogeにユーザから入力があったことを伝達するだけ。(ボタンClickイベントハンドラで
hogeの何かのメソッドを呼び出す)

Form2はhogeからの情報を表示するだけ。(hogeからのイベントでTextBoxを更新する)

一見面倒だけどこれが結局シンプルで標準的なやり方。

425 名前:409 mailto:sage [2010/03/11(木) 00:01:00 ]
>>424
なるほど。
もう一度入門書などをちゃんと読みなおしてみます^^;

426 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 00:01:53 ]
複数のFormから一つのオブジェクトにアクセスする方法がわからない

427 名前:デフォルトの名無しさん [2010/03/11(木) 00:03:26 ]
>>426
アクセス用のクラスでも作ってそのインスタンスを教えておけばいいんじゃないの?
参照型の強みだよ

428 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 01:11:10 ]
>>400
BでInterlockedをどう使うわけ?
せいぜいvolatileじゃないか?



429 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 01:15:08 ]
>>400
Aだって値の更新をどういう風にやるかによる。
読み取りと書き込みを合わせてtアトミックにやりたいならInterlockedとかがいるが、
条件によってはただ書き込むだけでいいかもしれない。
もしくはvolatileにするくらいでいいかもしれない。

@は普通ロックが要るが、それはそれとしてListよりQueueの方が向いてないか?


430 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 13:19:37 ]
>>422
最近多い、GUIでプログラム作らせる初心者用入門書の弊害だと思う



431 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 13:21:01 ]
だってMSの旧来のコントロールだとコントロール自体がデータ持ってる場合が多いんだもんよォォォォォ

432 名前:デフォルトの名無しさん [2010/03/11(木) 13:22:50 ]
WPFのバインドのようにできれば分けやすいんだけどな
あれできないと小規模な開発ならMVCの境目を考えるのあほらしくなるもん

大きくなればMVCしようかとも思えるけど

433 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 18:20:00 ]
リストボックスを表示中に上下キーを押すと選択中の項目が変わるが、文字を入力するとテキストボックスに文字が入力されるようにしたいんだが、その方法がわからない。
実現する方法があったら教えてほしい。

434 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 18:47:57 ]
>>433
つ[ComboBox]

435 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 19:08:57 ]
>>434
IDEでよくある入力補完を実装したいので、それはNG。

436 名前:デフォルトの名無しさん [2010/03/11(木) 19:11:30 ]
入力アクションが何かしらんけど入力アクションを検知したらリストボックスの
一つの項目と同じサイズのテキストボックスを表示して制御をそこへ移して
そこから制御が離れたらテキストボックスの中の文字をリストボックスへ反映すればいいんじゃないの?

437 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 19:35:38 ]
>>436
つ netbeans.org/features/ide/editor_ja.html
こういう風にしたいので、その方法だとダメ。

438 名前:デフォルトの名無しさん [2010/03/11(木) 19:38:11 ]
ああいいたいことわかったわ
リストボックスはあくまで候補の表示だけな

サジェストの候補表示とかをやりたいのか

アクティブにならないForm作ってそこへリストボックス張って候補だしゃいいだろう
半透明表示もできるぞ

439 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 20:32:55 ]
>>438
ためしにやってみたが、リストボックスにフォーカスを合わすと、インクリメンタルサーチができなくなって…エディットぼっくにフォーカスを合わせたままだと、リストボックスの選択項目をキーボードで操作できなくなって…となった。

フォームの初期化時
this.autocomplete_box.Visible = false;
this.Controls.Add(this.autocomplete_box);
文字を入力した
this.input_word += e.KeyChar;
int index = this.autocomplete_box.FindString(this.input_word.ToString());
if (index != ListBox.NoMatches)
{
Point current = this.GetPositionFromCharIndex(this.SelectionStart);
this.autocomplete_box.SelectedIndex = index;
this.autocomplete_box.Location = new Point(current.X, current.Y + this.Font.Height);
this.autocomplete_box.Visible = true;
}


440 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 22:07:45 ]
普通にテキストボックスをオートコンプリートにしたいわけではないんだよな?

Googleサジェストのような挙動ではなく、インテリセンスのような挙動にしたい
つまり、

・補完するのはテキスト全体ではなく、その一部(単語など)
・テキスト入力時には候補の絞込みは行わないで、選択項目のみを変更

ということに相違ないか?



441 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 22:08:45 ]
>>440
それで間違いない。

442 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 22:33:59 ]
それでは回答どうぞ

443 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 22:52:42 ]
なら、438で問題ないな

> リストボックスにフォーカスを合わすと、インクリメンタルサーチができなくなって…
リストボックスに、必要な全てのイベントハンドラを設定すればいい

例えば、

文字はそのままテキストボックスにスルー
上下は選択変更
左右はテキストボックスの方のカレット移動
Enterは確定(Tabも?)

とか自分で決めて適当に処理すればいい

444 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 22:58:30 ]
えらそうな質問者に対して、ちゃんと答えるなんてえらいやつだな。

445 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 23:01:18 ]
>>444
オレも思ったw

446 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 23:44:43 ]
>>443
なるほど。
そうすればいいのか。
答えてくれてありがとう。

447 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 03:59:56 ]
ComboBoxのテキスト部分をユーザーからの書き込みをできないようにするには
DropDownStyleプロパティをDropDownListにするといいというのでやってみたところ
たしかにユーザーからの書き込みはできなくなりましたがComboBoxの見た目がTextBox調からButton調になり
Textプロパティをプログラム内部でも書き換えられなくなりました
しかし「DropDownListにするといい」と見つけたいくつかのサイトではそのようになってる様子は見られません
これはVisual C# 2008の仕様か何かなのでしょうか?

448 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 05:05:54 ]
何も言えなくて・・・夏

449 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 05:09:03 ]
そういうやり方じゃなくてユーザーからのテキスト入力イベントが
発生したときに、入力を受付なくさせるメソッドか何かがあったはず
忘れた

450 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 11:03:32 ]
C++と比べるとC#は何がダメなんでしょうか?
GCがあったり色々便利な機能が付いてると思うのですが、ずいぶん叩かれてる印象を受けます
TRUEが1じゃなかったりするのが、あまり好かれないとかそんな感じでしょうか?



451 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 11:07:26 ]
>>450
アンチが多いのは人気の裏返しだよ。
ほんとに悲惨なのはユーザーからの無反応。

TRUE が 1 じゃないとか、たたくポイントじゃないというか、
むしろ TRUE が 1 な方がたたくポイントだろ。

452 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 11:10:06 ]
>>451
ありがとうございます。C#使いたくなってきました
TRUE=1等の暗黙の型変換は悪い意味での慣れでしょうか、
個人的にはちょっと残念なのです

453 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 11:13:22 ]
別に言語ごとのプログラミングパラダイムに従うことは悪いことじゃないよ
C#に使うならC#の作法に従うべきではあるが
これは逆も然り

454 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 11:16:29 ]
1番はC#がC++のスーパーセットだと思って使い始めて落胆するパターンな。
さすがに最近は減ったけど。

455 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 11:29:47 ]
C#実際そんなに叩かれてない
見向きもされてない所がある
あまりに注目されてない不運な言語だ

456 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 11:32:37 ]
ネイティブコンパイルされないのが唯一の欠点だろう。
あとは完璧

457 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 11:33:56 ]
C#はいいとこ取りっていうか中途半端な感じだな
でもC#覚えれば、他の言語にも馴染みやすいと思うし
初心者向きな言語だと思う
すくなくともVB覚えるよりはいい

458 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 11:42:06 ]
そこそこのことするならそこそこのことが出来るC#が「完璧」だろうが、
難しいことするなら難しいことができないC#が「中途半端」になる
見方次第だな

459 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 11:52:08 ]
.net対応のマイコンも出たしもう完璧だろう

460 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 11:56:59 ]
>>459
なんか興味ある 詳しく



461 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 12:04:26 ]
C# 5.0でコンパイラ、メタプログラミング関係整備されて完璧。

462 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 12:24:30 ]
もう一度言うが、完璧。

463 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 12:26:02 ]
しつこいようだけど後もう一回だけ・・・完璧。

464 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 12:29:46 ]
完璧さが周知されてない所がたまに暇。

465 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 12:36:04 ]
>>460
.NETベースのマイクロコントローラー、FEZ Mini
jp.makezine.com/blog/2010/03/hands-on_with_fez_mini_a_net-powere.html



466 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 13:05:45 ]
FALSEが0以外なら全力で叩くがTRUEが1以外って処理系によっては昔から普通にあるし
その程度で動かなくなるようなコードを書く方が悪い

467 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 13:08:14 ]
しかし最近はPythonに人気を取られがちのようだが
どうせ最速の言語じゃないんなら
コード記述が短くて、動的なほうが手軽というイメージ
smallbasic、Ironpythonでますます中途半端な存在になったな

468 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 13:17:56 ]
>>465
サンクス
おもしろそうだ!!!
おれもやってみてぇ

469 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 13:42:31 ]
人気ねぇw

470 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 13:48:45 ]
プログラム板の勢いみると
言語ではC#が一番あるけどな



471 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 14:31:19 ]
裾野だけは広いからな


472 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 15:53:07 ]
敷居は低いが仕事は少ない

473 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 15:55:50 ]
まだjavaなのか

474 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 15:59:14 ]
そろそろマ板でやれ

475 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 17:34:50 ]
using(StreamReader sr = new StreamReader(ws.GetResponseStream(), Encoding.GetEncoding("Shift-Jis"))) {
boardListHtml = sr.ReadToEnd();
sr.Close(); ←これいらないですよね?
}

476 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 17:39:58 ]
うん

477 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 17:48:33 ]
>>472
君は・・・世界が狭いようだな

478 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 17:54:40 ]
>>477
一般庶民の話をしてるんだよ

479 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:28:17 ]
C#はヴィジュアルスタジオ使うと
WindowsFormアプリケーションってやると
とっぱじめ最初にFormを継承したForm1が出てきて
それにボタンを貼り付けて、「はじめてのC#」とかいうメッセージボックスを出す

これだけのプログラムでも継承、カプセル、ポリモーフといったオブジェクト指向を使ってるな
初心が意識せずにオブジェクト指向できるようになってる言語?

480 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:31:33 ]
日本語でOK



481 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:32:05 ]
デザイナが勝手にやってるだけで全く使ってないだろ

482 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:32:30 ]
むしろ日本語がNGの人

483 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:36:51 ]
Visibleのtruefalseかちかちやるだけでメモリ食うのはなんで?

484 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:39:35 ]
どうして「メモリ食う」と分かる?
その観測方法がオカシイ可能性は疑ってみた?

485 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:49:48 ]
visual studioでbutton1とlabel1と↓作って
private void button1_Click(object sender, EventArgs e)
{
if (label1.Visible == true)
{
label1.Visible = false;
}
else
{
label1.Visible = true;
}
}
Windowsタスクマネージャ開きながらbutton1かちかち押すとメモリ使用量が増えるんだが

486 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 21:04:03 ]
再現できなかった。

487 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 21:04:35 ]
製作中のアプリの一部をクラスライブラリで分離する場合
完全に別プロジェクトでアプリプロジェクト->ライブラリプロジェクト(デバック)
の参照をつけてやったりするのかな?

488 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 21:26:21 ]
>>472
ばかだなぁ。なければ作ればいいじゃないか。
無知なお客さんを言いくるめるくらいワケないだろ。

‥‥ほんとうに生産効率はいいんだから。

489 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 21:37:42 ]
>>487
別プロジェクト以外ってことは、1つのプロジェクトでexeとdllの両方を出力とか?
普通の方法ではそんなことできないと思うけど

490 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 21:54:08 ]
普通はひとつのソリューションでやるわな。



491 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 22:02:36 ]
>>487
普通そうでしょ。
でもプロジェクト参照は循環参照不可だから、、
複雑なプログラムになってくると案外プロジェクトの切り分けが難しかったりする。

>>489
アセンブリが別とは言ってないんじゃない?

492 名前:487 [2010/03/12(金) 22:26:45 ]
>>491
最終的にアセンブリを一つにするかexeとdllに分けるかで
変わってくる感じですかね

493 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 22:37:35 ]
>>492
internalアクセス修飾を有効活用したいから、という、
人によってはちょっと不純に見えるかもしれない動機の場合もあったりする

494 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 02:28:12 ]
今独習C#を一通り読み終わって
C#でWEBアプリケーション作りたいのですがお勧めの本があれば教えてください
ttp://ascii.asciimw.jp/books/books/detail/978-4-7561-4999-2.shtml
上記URLのようなものはあるのですがどうも評判が悪いので・・・

また関連書籍にASP.NETが多いですが、ASP.NETの本≒WEBアプリケーションの本という認識であってますか?

495 名前:デフォルトの名無しさん [2010/03/13(土) 02:33:26 ]
WEBアプリケーションって自分ブラウザとかじゃなくブラウザ上で動くプログラムということでOK?

496 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 02:39:23 ]
>>495
自分ブラウザです
IEやfirefoxの簡易版を作りたいです。

497 名前:デフォルトの名無しさん [2010/03/13(土) 02:42:44 ]
それだったらc# WebBrowserでぐぐれば基本的なことは本買わなくてもできるよ

498 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 03:25:09 ]
>>496
それってデスクトップアプリというんだよ
WEBアプリはブラウザをクライアントとするものだから
まったく別物

499 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 04:07:21 ]
たとえば、何の前置きもなしに「WEB開発」って言われたら、
WEBアプリを作るって解釈しておk?
面接でそういう質問があったんだけど。

500 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 04:23:41 ]
>>499
そうだね
JAVA,javascrpt,HTTP,Perl,RCFの知識があるのかってことになる



501 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 05:35:47 ]
どこから突っ込めば

502 名前:デフォルトの名無しさん [2010/03/13(土) 05:52:56 ]
WEB開発って面接官もへぼいな
WEBに関係することって
・クライアント(webブラウザー)そのもの
・クライアント上で動くスクリプトなど
・サーバー側
大きく分けてもこんな感じだしなあ
ものすごく範囲は広いよ
さすがに最近はhttpのプロトコル処理関連まで作るなんてのはないだろうけど

503 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 06:13:25 ]
その面接官は多分ホームページ作ったことあるか聞いてたんじゃないかな

504 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 09:27:23 ]
いいかげんスレチだけどwebってwwwの略なんだから
全てクライアント上で動作する物はwebアプリとは言わないだろ基本的に
その面接官もwebを理解してるのかあやしいがweb開発なんて言ったら
重箱の隅から隅まで含まれるぞ

505 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 09:30:09 ]
phpくらいしかできないよ

506 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 09:57:46 ]
十分だよ

507 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 10:00:49 ]
つまりズブの素人ってことだよ
言わせんな恥ずかしい(AA略

508 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 11:18:40 ]
こんなスレみるんじゃなかった・・・
ヤホーの知恵袋にでもいってくりゃよかった

なんかゴメン

509 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 11:27:00 ]
つうか、たまたまだろ
平日に仕事しながら見てるやつて結構とレベル高いと思うけど?

510 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 11:34:33 ]
日本語のレベルが低いですね



511 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 11:37:26 ]
ちっ、うっせーな

512 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 11:38:33 ]
うっ、ちっせーな

513 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 11:43:30 ]
ちっ、ちっせーな

514 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 12:37:35 ]
C#だとCの供用体みたいなのをつくるときって
unsafeつかわないと無理?

515 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 12:40:49 ]
StructLayoutとFieldOffsetだけで一応作れるけど
今時共用体とかないわー

516 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 13:57:01 ]
日本語のレベルが低いって、ふだんはC#で他人と会話しているのか?

517 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 14:03:51 ]
は?

518 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 14:25:17 ]
ここは普段他人とはなさずに一日中PCの前でプログラム組んでるオタが来る場所だから
日本語をまともに話せない人がいても仕方ない

519 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 14:37:35 ]
>>516
if (This.Seiyoku >= 95) {
 This.Hand.GetTimpo();
 for (int i = 0;i < 2000;i++) {
  This.Hand.Up();
  This.Hand.Down();
 }
 this.Say("あああああ───────");
}

520 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 14:49:42 ]
MessageBox.Show("ふぅ・・・");



521 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 15:38:49 ]
2000も要らんだろ。


522 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 15:50:02 ]
細胞が壊死するぞ。

523 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 15:50:47 ]
C#を猛プッシュしてるキチガイうぜー

524 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 15:51:42 ]
おまえらは4でじゅうぶん

525 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 16:15:33 ]
C#はWindowsのGUIアプリを作るっていう非常に限定された状況でのみ
CやC++より優秀

526 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 16:18:48 ]
あと初心者にはかなり使いやすい

527 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 16:49:14 ]
>>519
ウィルスコード確認しました

528 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 17:07:20 ]
>>526
それはC#のメリットというよりVC#環境限定の話だろ
最初にインテリセンス体験したとき開発者マジキチって思った

529 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 17:14:36 ]
スニペットのせいで構文覚えられない初心者が多発、という弊害がもれなく付いてくるけどなw

530 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 17:15:01 ]
ただの補完なら大概の言語で使えるけどね



531 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 17:16:54 ]
構文を覚える必要はない

532 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 17:24:03 ]
構文は自然と覚えるものだと思うが

533 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 17:36:34 ]
構文と言うよりも単語が覚えれないかな

534 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 17:36:59 ]
スニペットなんてただの初心者騙しの鬱陶しい機能にしか思えないけど、
あんなの活用してる人いるのか

っていうかPEZみたいな名前が気に入らん。
ラムネ菓子かっ

535 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 17:44:48 ]
>>534
PEZさんディスってんじゃねー

536 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 17:46:51 ]
楽できるなら楽したらいいと思う
いまさら a += 3 を a = a + 3 って書きたいひとはおらんじゃろ

537 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 17:46:58 ]
プロジェクト内だけのスニペットは便利だったりする

538 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 17:53:09 ]
>>536
おまえはおれを怒らせた

539 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 18:19:07 ]
昔はprop->のproperty作成とかやってたな。
private変数作ってから、crtl+r, ctrl+eのリファクタの方が便利だと知ってからは使わなくなった。

540 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 20:33:49 ]
よく入力するパターンは自分で定義して使ってるな

dw: Debug.WriteLine( );
eh: (_sender, _e) => { };

とか



541 名前:デフォルトの名無しさん [2010/03/13(土) 20:53:42 ]
>>475
なにこのコード
なんでusing使ってるの?
俺がC#触ってない間になんかあったのか

542 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 20:55:57 ]
どれぐらい使ってなかったんだ

543 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 20:59:54 ]
IDisposable

544 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 21:00:20 ]
>>541
button1.Click += (sender, e) => MessageBox.Show("こんなのもできるよ");

545 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 21:01:47 ]
using構文はC#1.0当初からある構文だが
強いて言うなら>>541が触ってない間に>>541からC#の記憶が飛んだんじゃないか

546 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 21:50:11 ]
最初から知らなかっただけだろう


547 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 22:00:41 ]
2.0からだと思ってた俺

548 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 22:03:58 ]
>>512
(´;ω;`)

549 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 22:10:03 ]
2.0からだろ

550 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 22:12:35 ]
>>544
ラムダ士気って便利だよね。



551 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 23:14:10 ]
ちょっと教えてください
文字列が入ったリストデータをTreeViewに表示する場合

TreeViewを継承した自作クラスにリストデータを直接読み込んで表示するようなメソッドを作るべきか
TreeViewのNodesに追加する処理をForm1でするべきか

どちらがいいのでしょうか?

552 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 23:17:31 ]
その程度なら後者

553 名前:デフォルトの名無しさん [2010/03/13(土) 23:23:28 ]
>>551
どっちでもいいんじゃね?
なんでもかんでもFormに書くのもあれだし継承してあれこれ作れるならそういう練習を兼ねて別途設計してもいいだろうし

554 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 23:28:22 ]
練習も兼ねて自作クラス作ってみようと思います
ありがとう

555 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 01:10:52 ]
うむ

556 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 03:31:22 ]
フォームアプリで処理内容を表示したいのですが
Form1の処理内容ならtextboxなどに表示すればいいですが
form1でインスタンス化したオブジェクト内部の処理内容を表示したい場合
どうすればいいでしょうか?

557 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 03:54:06 ]
オブジェクトに処理状況を返すメソッドを作って
Form1から非同期で動かして定期的に処理状況を調べる

558 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 07:39:47 ]
非同期・・・ちょっと難しそうですね・・・
諦めます

559 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 09:42:11 ]
なんでも試してみるもんさ

と、偉大なゲイは言いました

560 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 11:00:47 ]
もしくはそのオブジェクトに textbox なりを教えてあげて、
オブジェクト内部の処理が終わったら textbox に直に書き換えてさせてしまうとか。

他との兼ね合いがないなら、自分はそうする。



561 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 11:01:51 ]
BackgroungWorker使えばそこまでめんどくもないと思うんよ

562 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 11:43:11 ]
スレッドの扱いやすさ考えるとBW使うのめんどくさくてね・・・

563 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 11:43:44 ]
>>556
>>558のように言ってるって事は、恐らくその「オブジェクト」の処理は
UIと同じスレッドで動くってことなんだろうから、
それなら単純にその「オブジェクト」のクラスに〜Changed系のイベントを実装して、
Formの方はその〜Changedイベントで表示内容を更新すればいいんだよ。

それが面倒で、かつ更新するコントロールの数が少ないなら、
Formにタイマくっつけてタイマのイベントで表示内容を更新してもいい。

何か難しく考えすぎてないか?

564 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 12:09:23 ]
ですね

565 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 12:45:49 ]
>>563
>>560
なるほど、イベントは自前で作った事ないからやってみてもいいかも
簡単なのはtextboxの参照渡すのがいいですね

検討してみます
ありがとうございました

566 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 12:59:28 ]
なんか初心者が間違った知識を覚えるのをほっとくのも気が引けるんで一応突っ込むけど、

>簡単なのはtextboxの参照渡すのがいいですね
こういうやり方は普通は邪道とされている。
馬鹿だと思われたくなければやっちゃダメ。

これがダメな一番の理由はそんなことをしちゃうとそれぞれのクラスの
役割分担が明確じゃなくなるから。

TextBoxの更新を担当するのは、その持ち主であるFormであるべきだとは思わない?
他のオブジェクトがTextBox更新しちゃうのなら、Formの役割って一体何よ。

567 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 14:08:52 ]
それは設計によるとしか言いようがない。

568 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 14:21:32 ]
ただ機能的要件が果たせさえずればOK、と思いつくままにTextBoxの参照を
渡すような馬鹿で間抜けな行為を「設計」とは言わない。

569 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 14:22:43 ]
まぁそれをいっちゃうとMVCとかObserverとか面倒なので

570 名前:デフォルトの名無しさん [2010/03/14(日) 14:29:27 ]
まあtextboxもクラスだからついついやりがちだけど所詮はGUI部品だからなあ
一番いいのはデリゲートだっけ?



571 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 14:34:01 ]
563の言うようにするかなあ
その処理オブジェクトは、進捗を公開するかしないかを決め、
GUIオブジェクトは、それを見るか見ないか自由にする

572 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 14:50:30 ]
前に別スレッドからメインのFormに貼ってあるtextboxにログを吐く方法を聞いたときに
作ったのならあるわ

Form1.cs
codepad.org/1Hh4f1Od

hoge.cs
codepad.org/qwrtJJFk

hoge.csは自分でクラスを作ってコード張ってくれ
Form1.csの方はtextboxをDock=Fillで張ってスクロールバーを表示しておけばいいか
あとshownで表示させてるのでイベントハンドラ追加してからコード貼ってくれ

573 名前:デフォルトの名無しさん [2010/03/14(日) 14:51:23 ]
hogeクラスはスレッド起動部分を書いてないけど移植前の方では動いてるので問題ないと思う。

574 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 15:06:30 ]
PInvokeでもつかえば

575 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 15:08:59 ]
P無しで

576 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 15:10:45 ]
ほうピンボケを

577 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 15:13:03 ]
関数名をhogehogeにするつもりがhogehoeになってたw

hogehoeは本当はスレッド起動をさせる関数なんだけどその辺は端折ったw

578 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 15:23:18 ]
訂正版
codepad.org/9LRQpsMq

579 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 15:56:25 ]
codepad.org/xOdJsJie
こんな感じで遊んでたんだがApplication.DoEvents入れて経過を分かるようにすると
スレッドの動作が変わった感じなんだが何が変わったんだろう。

Application.DoEvents無し->適度に3スレッドの出力が混じる

Application.DoEvents有り->最初の一回だけ起動した順に結果がでるけど2回目以降は後で起動したスレッドだけ?やってる感じ

580 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 15:58:05 ]
100x3は多いので10x3に絞ってみた
Application.DoEvents有り
[ 0000 ] 0
[ 0001 ] 0
[ 0002 ] 0
[ 0002 ] 1
[ 0002 ] 2
[ 0002 ] 3
[ 0002 ] 4
[ 0002 ] 5
[ 0002 ] 6
[ 0002 ] 7
[ 0002 ] 8
[ 0002 ] 9
[ 0001 ] 1
[ 0001 ] 2
[ 0001 ] 3
[ 0001 ] 4
[ 0001 ] 5
[ 0001 ] 6
[ 0001 ] 7
[ 0001 ] 8
[ 0001 ] 9
[ 0000 ] 1
[ 0000 ] 2
[ 0000 ] 3
[ 0000 ] 4
[ 0000 ] 5
[ 0000 ] 6
[ 0000 ] 7
[ 0000 ] 8
[ 0000 ] 9



581 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 17:43:05 ]
あるインスタンスが同じクラスの別のインスタンスに影響を与えるのは悪いことですか?

582 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 17:45:05 ]
たとえば、Form1の中にButton1とButton2があったとして
Button1.Clickを、Button2のサイズとか名前とかを変える
みたいなイベントにしたら、Button1はButton2に影響を与えてるけど
これっていけないことなの?

インスタンスはすべて独立させたほうがいい
みたいなこと書いてたんだけど

583 名前:デフォルトの名無しさん [2010/03/14(日) 17:47:20 ]
>>582
ケースによるんじゃない?

584 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 17:57:33 ]
そんなこと真面目に聞いてたら無効にしたボタンは二度と有効にできないな
どこでそんなこと言ってたのか興味あるから教えて欲しい

585 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 18:05:47 ]
Button を継承した Button1 のメソッドで Button2 をいじったらだめだろうけど
実際いじってるのは親の Form なんだから、 Button1 が Button2 に影響を
与えてるわけではない

586 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 18:10:43 ]
>>556の話はインスタンス化したオブジェクト内部なんで
関係としては>>572>>578>>579あたりのコードのような状態だからなあ

buttonが直接外の何かに影響するってことは標準ではなくて
イベントハンドラを登録して処理は別途書くよね

587 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 18:12:54 ]
「影響」というのがメソッド呼び出しの事をさしているのであれば、(それ以外にありえないと思うけど)
影響を与えるなというのはメソッド呼び出しするな、と同義になるわけで、
じゃあprivateなメソッドだけを持つ自律的なクラスだけでコードが書けるのかと。

まあ、要するに愚問過ぎるw

>>585
いや意味わからないしw

588 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 18:48:37 ]
はぁ〜い
ちゃぁ〜ん

589 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 18:48:40 ]
アプリ起動時にフォームとフォーム内のコントロールが
ちゃんと表示されてからプログラムが実行されるようにしたい
shownでもフォームが表示されただけでコントロールが
ちゃんと表示されない状態で実行されるのですが
なにか良い方法はないでしょうか?

590 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 18:52:11 ]
ない。



591 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 18:54:39 ]
Application.Idleが近いかねぇ

592 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 18:54:51 ]
ままっままま、まじっすか

593 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 18:58:10 ]
あるあるよ

594 名前:デフォルトの名無しさん [2010/03/14(日) 19:00:40 ]
WebBrowserだとnavigatedイベントなんてあるけどそれと似たようなのって聞いたこと無いな

595 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 19:03:10 ]
普通はフォームが表示される前に
事前処理を終了させるのかな
他の言語でもこんな感じ?

596 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 19:04:28 ]
言語の問題じゃなくてWindowsの問題だと思うけどなw

597 名前:デフォルトの名無しさん [2010/03/14(日) 19:07:45 ]
Formが表示されてからしばらく何か動くのであればshownのタイミングで
Form全体のコントロールを触れないようにして処理した後ユーザーが触れるようにするとか

ちなみにやり方に普通はないよ

ユーザーがフリーズしたんじゃないの?とか
表示されたので触っていいと思ったけどなんか触ったらおかしくなった・・・とか
そういうのを回避できてればいいと思うよ

598 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 19:13:58 ]
activateかなんかなかった

599 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 19:20:26 ]
shownだとユーザーがフリーズしたと思われそうだなー
loadイベントで処理する方がマシか

600 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 19:23:43 ]
うん



601 名前:デフォルトの名無しさん [2010/03/14(日) 19:28:16 ]
>>599
Loadでやるにしてもスプラッシュウインドウでも出しておかないといらちにはあれだぜ

いらちをだますには適度なタイミングでちびちび変化を見せてあげるほうがいい

602 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 19:29:39 ]
ほとんどビョーキ

603 名前:デフォルトの名無しさん [2010/03/14(日) 19:31:25 ]
>>602
病気だけどそんなのはいえないしねえw

604 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 19:31:47 ]
いやShownでちゃんと表示されてるはずだし。
でなきゃ"Shown"って名前が嘘になっちゃうし。
何がしたくて何を言ってるのかサッパリ意味がわからんな。

605 名前:デフォルトの名無しさん [2010/03/14(日) 19:34:57 ]
>>604
FormのShownでしょ
確かに上に乗ってるコントロールはFormのコンストラクタでできてるので
問題はないけどshownの段階ではForm上にのってるコントロールのどれかが
何かしら動いてる?から今回の質問なわけでしょ・・

まあ自分のアプリの処理のタイミング調整でなんとかなりそうだけど

606 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 19:38:41 ]
>>605
ごめん真面目に何言ってるのか理解できん。
っていうか、それ>>589が言ってることと明らかに違わないか?w


607 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 19:51:19 ]
>>601
イラチのおれはスプラッシュウィンドウなんて表示しなければ
もっと起動早いだろって思う

608 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 19:52:05 ]
d.hatena.ne.jp/gsf_zero1/20100215/
これじゃね

609 名前:589 mailto:sage [2010/03/14(日) 20:00:28 ]
>>608
おお、まさしくこれだ
ありがとう

610 名前:デフォルトの名無しさん [2010/03/14(日) 20:01:35 ]
え・・・そんな基本的な話だったの?



611 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 20:08:12 ]
>>608
ブログ主はなんか勘違いしてるな
Appliation.DoEvents()って、そんなもので自分のいってる問題が
本当に解決してると思ってるのかw

悪いけどおめでたすぎるわ。

612 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 20:09:57 ]
>>611
ではズバリ教えて

613 名前:589 mailto:sage [2010/03/14(日) 20:13:33 ]
Application.DoEvents()すげーー

ループ処理の中に記述しただけで
今までListViewが随時更新されずに、処理後結果が一気に表示されてたのに
リアルタイムで再描画してるーーー

これをあっちこっちに入れるとしあわせだな

614 名前:デフォルトの名無しさん [2010/03/14(日) 20:14:31 ]
でもそれやると処理が遅くなるけどね

615 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 20:18:38 ]
>>612
OnShown()なりOnLoad()なりでApplication.Idleとかに紐付けするのが
正攻法だとは思う。

内緒だが、同じことを簡単にやる方法としてはthis.BeginInvoke()を使う、
なんて手もあったりする。

まあ、これってそもそも下らない問題意識だと個人的には思うけどね。

>>589
Application.DoEvents()なんか必要もないのに(必要な場面がそうあるとも思えんけど)
VB厨って言われるよ。

それはともかく、明らかに悪い作法だ。

616 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 20:22:16 ]
DoEventsはおかしな動作する元だからな

617 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 20:22:44 ]
DoEventsやるとメッセージ処理されるから順番が逆になったり弊害が出る

618 名前:589 mailto:sage [2010/03/14(日) 20:24:43 ]
え・・・

WEBからファイル落とすときにフリーズ状態になるので
Application.DoEvents()で描画更新されるようになったんだけど

本当は非同期でやるべきなんだおろうけど

619 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 20:28:15 ]
>>618
そう端的に言って努力の方向が間違ってるよ。

620 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 20:31:19 ]
WebからファイルってAsyncあるだろーが



621 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 20:46:33 ]
>SystemException は、ユーザープログラムで回復できる致命的ではないエラーが発生した場合に、共通言語ランタイムによってスローされます。

とのことだが、キャッチして回復しようとすると「CA1031汎用的な例外をキャッチすんな」って怒られるんですけどどうしろと
HAL9000もバグっちゃうよ

622 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 21:01:25 ]
ああ、もうSystemExcpetionとかApplicationExceptionとか過去の話だから

623 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 21:05:39 ]
俺の問題解決にはすべて非同期プログラミングの習得するか否かにかかってるとみた
私はあえてこの高度なアルゴリズムに挑むことにする
すべてはより高度なアプリを開発するために

624 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 23:08:51 ]
Console.WriteLine("{0}",intA)
この書式をtextBoxに表示するのに利用するにはどうすればいいですか?

625 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 23:10:38 ]
String.Formatとかどう?

626 名前:デフォルトの名無しさん [2010/03/14(日) 23:13:41 ]
intA
これって文字通りintの変数?

だったら
textBox1.Text += intA.ToString();

とか

textBox1.AppendText(intA.ToString());

とか

数字の出力パターンを変えたい場合はintA.ToString("0000")
とかすればいいよ

この辺は調べて

627 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 23:47:39 ]
>>625
これこれ、こういうのがほしかった
ありがとう

628 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 00:30:11 ]
クラスが10個ぐらいになるともうわけわかめ
UML導入するか

629 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 00:33:13 ]
UMLでどうにかなる問題じゃないだろ
10個程度のクラスの相関を把握できないでどうするよ

630 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 02:22:09 ]
わけ分からない→じゃあUMLだ、という発想がイミフ。
これまでドキュメントとか無かった現場なんだろか。



631 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 03:25:13 ]
そうだよ

632 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 03:27:51 ]
ユーザーが数字ではなく文字を入力した場合のエラーの取得はこういう感じでいいのでしょうか?
それともUserInputクラス内ではtry文を使わないでProgramクラスだけでやったほうがいいんでしょうか?
 public class UserInput
 {
  public int Input()
  {
   int a = 0;

   try
   {
    a = Int32.Parse(Console.ReadLine());
   }
   catch (Exception e)
   {
    throw e;
   }

   return a;
  }
 }

633 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 03:28:32 ]
>>632の続き
 class Program
 {
  static void Main(string[] args)
  {
   UserInput ui = new UserInput();
   try
   {
    int b = 0;
    b = ui.Input();
   }
   catch (Exception e)
   {
    Console.WriteLine(e);
   }
  }
 }

634 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 04:54:15 ]
>>632
catch { throw; }

とか何がしたいんだか分からんw

635 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 05:52:59 ]
(゚∀゚)

636 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 05:53:23 ]
右から左に受け流したいんだろう

637 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 06:49:17 ]
左から右へ受け流すのはゆるさないからなw

638 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 11:59:14 ]
わざわざコケさせなくてもTryParseとかあるし

639 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 12:10:41 ]
例外ロンダリングだよ。

640 名前:デフォルトの名無しさん [2010/03/15(月) 13:41:01 ]
入力された文字が数字だけかどうかって面倒なら
Convert.ToInt32(textBox1.Text)
とかやってtry catchで判断すればOKだよ



641 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 13:58:55 ]
try catchなんてするくらいならTryParseでいいだろ
って話だ

642 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 14:14:23 ]
TryCatchなんかでやってたらエラー時のスタック解析の時間とか入れたら劇遅になるじゃねぇか



643 名前:632 mailto:sage [2010/03/15(月) 14:23:37 ]
すいません、これは単純なモデルで表現したくてやったので
この場合だとTryParseを使ったりすればいいですが

本当に聞きたかったのは
ファイル入出力時のエラーや、WEB操作時のエラーや
オブジェクトがnullだったりなど、Formとは別のクラス内部のエラーが
あった場合に別クラスの内部で例外処理をするのか
Form上で例外処理をするのかがよくわからないんです
一般的にどういうやり方をするのか聞きたかったのですが
うまく説明できなくてすいません

644 名前:デフォルトの名無しさん [2010/03/15(月) 14:26:32 ]
.net時代のエラー処理ってやつですかね?

C/C++時代だと暴走の元なのでポインターがnullかどうかチェックしたりとかやってたようなのをどうしてるのか?
ってところ?

645 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 14:29:44 ]
例外もみ潰しても続行できるなら内部で処理
できないなら外に投げる

646 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 14:38:08 ]
お前らって例に噛み付くよね。
例えばの話に本気になってどうするの。

647 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 14:44:48 ]
一事が万事という
小事に本気になれない奴がどうして大事に本気になれようか

648 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 14:50:34 ]
(^ω^;)

649 名前:632 mailto:sage [2010/03/15(月) 15:05:46 ]
>>644
多分そういう感じです

例えばフォーム上であるクラスのメソッドを呼び出して
nullが返ってくる場合もあるし、例外で投げられる可能性もあります

ResCollection thread_Honbun=bbs.ReadRes(url); ←例外がでる可能性

thread_honbunを利用 //←nullで例外がでる

なぜこういう質問するかというと
別クラス内部でいくら例外処理をしたところで
結局利用する側のformでやはり同じような例外処理を
しなければならないのでみなさんはどうしているのかと思いまして

650 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 15:14:43 ]
まずnullをなるべく返さない所から始めたらいいと思うよ。



651 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 15:32:36 ]
>>649
CodePlexで他人の書いたコード(なるべくメンバーの多い奴がいい)でも読んでみるといいよ
うんこ漏れそうなくらいtrycatch使いまくりだから

例外は昔の言語のnullチェックとエラー値チェックの代替機能なんだから
エラーチェックそのものをを省くための手段じゃないのよ
目的にしているのはエラーに対して画一的に対処できることね

例えばWin32APIにはnullを返すものもあれば、INVALID_HANDLE_VALUEを返すものもあるし
E_OK、E_SUCCESSなんてのを返すのもある
これら全部例外として括ってしまおうって趣旨だから

652 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 15:37:53 ]
うんこは漏れない。

653 名前:632 mailto:sage [2010/03/15(月) 15:42:58 ]
つまりちゃんとデータを返すかもしくはエラーを返すかの
2通りにするほうがいいということかな

確かに今のソースはnullかどうかをform側でも別クラスでも
条件分岐で何重にもやっている状態でしかもやってない場合もあったりと
かなりごちゃごちゃしてます
C#しかやったことないけど、自分は古いやり方をしていたということなのかな

他人のコード見て勉強してみます
どうもありがとう

654 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 15:56:14 ]
エラーコードを例外に置き換えるリファクタリングを思い出した

655 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 16:02:52 ]
この辺か

Replace Error Code with Exception
tp://www.refactoring.com/catalog/replaceErrorCodeWithException.html

Replace Exception with Test
tp://www.refactoring.com/catalog/replaceExceptionWithTest.html

656 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 16:06:21 ]
これはうんこ漏れるわ

657 名前:デフォルトの名無しさん [2010/03/15(月) 16:06:58 ]
まあ続行しても意味がないようなところで出るエラーはtryで拾ってもいいんじゃねーの?とか思うけどな
コストがかかるとか言っても継続できねーんだからいいだろうと・・・

658 名前:デフォルトの名無しさん [2010/03/15(月) 16:30:09 ]
テーブル 部
コード 名前
01   営業部
02   開発部

テーブル課
部コード 課コード 名前
01    01    第一営業
02    01    第一開発

テーブル社員
部 課  名前
01 01  山田太郎

といった データ構造で
社員をDataGridViewにデータバインドで表示する場合、
DataGridViewComboBoxColumを用いて課を表示することはできるでしょうか?
部テーブルは一意キーなので表示できますが
課テーブルは複数キーですので無理ですか?
型付データセットを使っているので、手動で余計なカラムを増やしたくなく、
リレーションをComboBox側のデータバインドでやってしまいたいっていう考えです。
どなたか回答お願いします。

659 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 17:03:22 ]
DBで取ってきてるなら
部と課をくっつけた一意な文字列のカラムも加工して取ってくるようにして、
課のキーではなくそれにバインドさせたら駄目だっけ?

660 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 18:41:16 ]
>>572
>>578
>>579
デリゲート使うと非常に便利ですね
参考にさせていただきます
ありがとうございました



661 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 19:59:42 ]
C#はプロパティがめっちゃ便利だな

変数に代入するのと同時に処理ができるってのはすばらしい
C言語だと同じようなことをどうやってたんだろうな。
Privateとかないからポインタを引数にとって参照私とかやってたんだろうか。

662 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 20:04:52 ]
C#を作った人物って
Delphiを作った人と同一人物なの?

663 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 20:07:13 ]
普通にgetter/setterじゃないのか
JavaやC++は今でもそうやってるだろ

664 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 20:16:09 ]
プロパティなんて無い言語のほうがおかしくて、
無いJava, C++, Perl, Rubyが同化してるとだけ言っておこう

C#との類似性がよく指摘されるVisual Basic, JavaScriptにはプロパティが存在する
あとPHPにもプロパティがある

665 名前:デフォルトの名無しさん [2010/03/15(月) 20:19:45 ]
>>664
古い言語にそんなこといっても仕方ないと思うけどw

666 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 20:43:28 ]
>>662
たしかそう

667 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 20:44:48 ]
>>666
Rubyは新しいぞぞ

668 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 20:50:30 ]
Jeffrey Richterだったと思うけど、プロパティなんてイラネって意見の人もいるんだよね。
俺は同意できんけど

669 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 20:54:02 ]
リッチャーの本大量に持ってるのに・・・
捨てっかな

670 名前:デフォルトの名無しさん [2010/03/15(月) 20:56:23 ]
でも結局は言語作ったおっさんの思想<多く使われる言語ってことなんだよな
>>664がプロパティ無いって言語は設計も古いし今となってはそれほど拡張もされてないような物だし

C#もそこそこ年数たったけどVBのよい部分は引き継いでるので似てても不思議ではないし



671 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 21:00:10 ]
>>662
アンダース・ヘルスバーグのことか?

672 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 21:18:13 ]
>>664
そういう歴史を無視した発言はゆとりだから?






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前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