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


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

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



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

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

前スレ

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

263 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:15:13 ]
>>262
リフレクション

264 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:25:18 ]
>>263
サンプルコードありますか?

265 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:28:08 ]
いくらでもあるよ

266 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:28:28 ]
くり返しのところをforで書き換えてみたところ、
2回目の表示で、1回目の表示が消えないのです。
どこかでdisposeとかする必要があるのでしょうか?

Label[] label;

private void fileSystemWatcher1_Changed(object sender, System.IO.FileSystemEventArgs e){
System.Threading.Thread.Sleep(1000);
string[] lines = System.IO.File.ReadAllLines(file, Encoding.GetEncoding("Shift_JIS"));

label = new Label[5];
for (int i = 0; i < 5; i++){
this.label[i] = new System.Windows.Forms.Label();
this.label[i].AutoSize = true;
this.label[i].BackColor = System.Drawing.Color.Transparent;
this.label[i].Font = new System.Drawing.Font("メイリオ", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
this.label[i].Location = new System.Drawing.Point(23, 35 + i * 60);
this.label[i].Name = "label[i]";
this.label[i].Size = new System.Drawing.Size(62, 24);
this.label[i].Text = lines[i];
this.Controls.Add(this.label[i]);
}
}


267 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:28:52 ]
取りあえず、ヒントもらったらググる位しようや

268 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:31:08 ]
このスレには優しい人とそうでない人がいます。

269 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:31:20 ]
>>264
何勝手に乗ってきてるわけ?

270 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:31:57 ]
んなもん当たり前だろ

271 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:32:19 ]
MSDN にもあるし、いろんなところにあるよ。

Reflection とか MethodInfo とかで探してみ。



272 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:32:47 ]
ありがとう。

273 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:37:32 ]
どんどんラベルを追加してるだけのような。

274 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:44:33 ]
C#にはVBのWithに相当する機能はありますか?

クラス1.プロパティ1 = x;
クラス1.プロパティ2 = y;

というのを

With クラス1
  .プロパティ1 = x;
  .プロパティ2 = y;
End With

みたいに書いて入力の手間を省きたいのですが。
Withを使うとVBの場合は実行速度も少し上がるそうですが。

275 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:46:33 ]
ありません。

276 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:46:40 ]
>>248
ありがとうございます。やってみます!

277 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:54:22 ]
>>274
インタプリタなら速くなるのは分かるがVB.NETでも速くなるのかな。
速くなるならC#でも深いところにあるクラスは一度ローカル変数に代入してからのほうが速い?

278 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:55:31 ]
>>241
「そのクラスにアクセスするより前に一度だけ実行される」ことが
保障されているだけじゃなかったか?

>>274
全く同じ機能はない
初期化時限定のオブジェクト初期化子くらい

279 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:57:22 ]
つーか、With って .NET ではシンタックスシュガーじゃなかった?

280 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:00:08 ]
>>278
> 「そのクラスにアクセスするより前に一度だけ実行される」ことが
> 保障されている
規格上はそうなってた気がする。
実際は、たいてい直前。

281 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:11:39 ]
>>277
多分JITコンパイルで最適化されるんじゃないかなその程度



282 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:35:09 ]
ないんですか。残念です。
この程度なら、プリプロセッサあたりで処理してくれてもいいと思うのは私だけでしょうか。
コントロールの初期設定とか、同じ名前空間やクラス名がずらっと並んでるのを見ると、
もうちょっと楽にコーディングできる手段があってもよさそうに思うのですが。

283 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:42:23 ]
インテリセンスがあるからコーディングの手間はさして変わらん。
コードが汚くなるからwithを採用しない言語は多い。


284 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:47:33 ]
>>282
初期設定なら似たような事はできる
var tmp = new Hoge() { A = 10 , B = 30 };
A,B はHogeのプロパティーまたは変数

285 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:54:53 ]
VBにあってC#に無い寂しい機能はLINQToXmlのXMLリテラルかな。
これがあったら、withどころか究極のデータセッティングができるんだけれど……

286 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 00:57:10 ]
>>284
なるほど、そういう書き方もできるんですね。勉強になります。

287 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 01:00:41 ]
>>277
そうみたいだよ。
www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1135&forum=7

288 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 01:06:22 ]
>www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1135&forum=7
なるほどね、C#ならスコープ使えって事か
{
var a = hoge.member;
a.Prop1 = 10;
a.Prop2 = 10;
}

289 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 01:13:13 ]
>>287
確かに、オブジェクトをいちいち作ってやれば同じことになりますね。
withほど簡略化はできませんが、多少は楽が出来そうです。
コード的にもメリットがあるみたいですし。

290 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 01:13:41 ]
リンク先のような場合、
ds.Tables("Customers").Rows
がそれなりに処理重そうだから無意識に一度ローカルに代入してるな。

ただ >>288 のような軽いメンバアクセスはそのまま見ちゃってるなぁ。

291 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 01:21:50 ]
イベントで this.xxxでアクセスするより senderをcastするほうがいいってことか。



292 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 01:25:30 ]
キャストの方がコスト高いだろ

293 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 01:27:45 ]
ますますはまってます。
label = new Label[5];
for (int i = 0; i < 5; i++)
{
this.label[i] = new System.Windows.Forms.Label();
this.label[i].Dispose();
}
for (int i = 0; i < 5; i++)
{
this.label[i] = new System.Windows.Forms.Label();
//this.label[i].Dispose();
//this.label[i].Text.Remove(1);
this.label[i].AutoSize = true;
this.label[i].BackColor = System.Drawing.Color.Transparent;
this.label[i].Font = new System.Drawing.Font("メイリオ", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
this.label[i].Location = new System.Drawing.Point(23, 35 + i * 60);
this.label[i].Name = "label[i]";
this.label[i].Size = new System.Drawing.Size(62, 24);
//this.label[i].Text = "";
this.label[i].Text = lines[i];
//this.label[i].Text = this.label[i].Text.Replace(this.label[i].Text,lines[i]);
this.Controls.Add(this.label[i]);
}




294 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 01:50:33 ]
拡張プロパティってどう書くの?

295 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 01:55:27 ]
書けない

296 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 02:14:52 ]
ファック!ファック!ファック!!

297 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 03:09:25 ]
クラスつくるとき
class testint{
private int a;
}

ってやって
testint test=new testint()
なんで
testint test
だけで実装できないんだ。わざわざ無駄な手間かけさせる意味は?
あと、なんでtestint()の最後、何もない括弧をつけなきゃいけんのだ。

298 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 03:17:10 ]
>>297
CかC++から来た人?もしそうなら、
クラスは常にポインタ型(のようなもの、ポインタ演算はない)。newしなければnullが入っている。
という短い文章で分かってほしい。

testint test=new testint()と打つのは、Visual Studioとか入力支援が良くできたところで書けば案外大した手間でない。
クラス名を2度書くのが嫌ならvarがある、ローカル変数限定だけど。
()が要るのはなぜ?というのは俺も思うところだけど。

299 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 03:24:51 ]
コンストラクタだから。引数のないメソッドの()も省力しないだろ。

300 名前:298 mailto:sage [2009/06/09(火) 03:27:50 ]
>>299
ありがとう、納得した。

C++はnew hogeで通るし、引数があっても括弧を省略できる場合のある
VBとか使っていたからそこまで考えが及ばなかった。

301 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 03:41:29 ]
>>298

c++を見てみました。
c++なら
class testint{
private:
int kazu;
}

testint test;
test.kazu=10;

これでいいのか・・・
newとかいうのはオブジェクト指向で必ずしも必須というわけじゃないんだね。
コンストラクタも自動的に呼び出されるのか。
c#とはずいぶん違うんだね。初心者にはc++のがいいのかな



302 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 03:44:14 ]
c++のnewはヒープに作る場合

303 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 06:52:25 ]
c#のnewはどこのメモリを使うん?

304 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 06:57:08 ]
字は読めても話の流れが読めない人って誰?

305 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 08:46:14 ]
>>303
C++ は new の有無でスタックはヒープかわかれるけど、
C# は class か struct かで分かれる。
class なら new したのはヒープに、
struct なら new は単なるコンストラクタ呼び出し、スタックに取られる。

struct でもわざわざ new しないと行けない理由は、
その方が構文解析が楽(後々他の構文追加しやすい)とか、
初期化し忘れを防ぐためにわざわざ面倒な構文にしてあるとか、
class とそろえるとか、そういう理由だと思う。


306 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:11:50 ]
struct は new してもいいがしなくても構わないぞ、ただし全メンバーをセットしてからでしか使えないが
struct の new は引数無しなら、全フィールドに0入れるよという指示で、それ以外なら指定の定型初期化を処理するという事ではなかろうかと。
最近は default というキーワードができて、二重機能っぽくなってるいけれど、これはジェネリックの都合かなと。

307 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:16:51 ]
それと、Cでいう所の自動変数を宣言する場所で構造体を宣言すると、スタックに乗りそうな予感がするものだが
たとえば
void Test()
{
int tmp;
Action a = () => { tmp = 3 ; };
}
このtmpは、スタックに取られているとはどうにも思えない
内部的には勝手JITの勝手というのが実態かと。

308 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:23:10 ]
HttpWebRequestクラスでリクエストヘッダーを読み取ったりするとき
UserAgentとかkeep-aliveプロパティは取得できるのですが
(<HttpWebRequest.UserAgent>プロパティ,<HttpWeqRequest.KeepAlive>プロパティ)

Host,Accept-Language,Accept-Encoding,Accept-Charsetプロパティが読み取れません。

読み取り方をよろしくお願いします。また、ヘッダー情報を編集してリクエストストリーム
に流せるかどうかも教えていただきたいです。

309 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:34:54 ]
Console.WriteLine( string.Format( "{0,4:f2}", 10.0 ) );
Console.WriteLine( string.Format( "{0,4:f2}", -10.0 ) );

こんな感じで作った文字列の桁を揃えたいんだけど、うまくいきません。
上の例だと

10.00
-10.00

となります。
マイナスの符号があるときになんとかしたいんだけど、
うまいことやる方法はあります?

310 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:51:23 ]
>>308
Requestでヘッダを「読み取る」必要があるのかどうかって話はあるが
直接プロパティになってないヘッダはHeadersプロパティから取得設定できる

311 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 11:09:11 ]
>>309
セクション区切り記号「;」を使ったカスタム書式指定かね
{0,5: 0.00;-0.00}
ところで小数点以下2桁有効だとフィールド幅4は意味がないと思うけど



312 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 11:12:44 ]
>>307
それはラムダ式(クロージャ)が影響している。
() => { } を内包するクラスが暗黙に作られてそのメンバにtmpがあるはず。

313 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 11:17:12 ]
>>311
ごめん実はそのあたりよくわからなくてテキトーに書いてました
もっと詳細を言うと、x,y,zを持つポイントクラスがあって

始点:( x1, y1, z1 )
終点:( x2, y2, z2 )

みたいな感じで小数点以下3桁で計6桁ぐらいで書き出したいときの
桁揃えという話でした。詳しく書かなくて申し訳ない。


314 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 11:33:00 ]
>>310
回答ありがとうございます。

Webスクレイピングをやっていて、リクエストしてもうまく次のページに行かないんです。
Postされるべきデータ(トランザクショントークンとキーワード)はバッチリだと思うのですが。。
(Firebugを使って手動で動かしたときのリクエストヘッダーやPOSTしたデータの中身が
確認できる)

ヘッダー情報のリファラーが監視されてるみたいでそれについては確認できたのですが、
それでもうまく行きません。もちろんクッキーについてはクッキーコンテナをリクエストに
かませてますし、他に思いつくのが他のヘッダー情報も監視されているかもということです。

そこで自作プログラムのリクエストのヘッダー情報とFirebugで手動で動かしたときに
確認できるヘッダー情報を見比べて、必要あらば修正してリクエストに流そうと思ったわけです。

310さんの言うとおりに

List<string> list = new .........

for(int i =0;i < req.Headers.Count; i ++)
list.add(req.Headers[i];

で取得してみたのですが一行しか取得できないんですけど。。書き方が違うんですかねぇ(^ ^ ;
長文スマンです。

315 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 11:42:03 ]
とりあえずHttpWeb「Response」だよな?

316 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 11:48:48 ]
>>315  げ、ひょっとして自分のリクエストのヘッダーを確認するのって
HttpWebRequestからはできないんっすか。。???
ちょっとレスから拾ってみたいと思います。。。

317 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 11:58:38 ]
事情は了解
それってデバッガでステップ実行すればよくね?
あとは別のパケットモニタアプリ使うか

318 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 11:59:09 ]
WireSharkか何かでパケットキャプチャして本当にブラウザと同じリクエスト飛んでるか調べたら?
その方が手っ取り早い気がする。

319 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 11:59:38 ]
リロードしてなかった。すまぬ。

320 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 12:06:44 ]
>> 318
WireSharkは友人にも進められて検討してるのですが、
修正の必要が出てきたときにどうやって書き込めばいいのでしょうか?
コードサンプルがあるとありがたいっす。

321 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 12:14:49 ]
HttpWebRequest req //略
req.Headers.Add(HttpRequestHeader.AcceptEncoding,"gzip");

// req.Headers[HttpRequestHeader.AcceptEncoding] = "gzip"; も可

何が困ってるのかイマイチ伝わんね。



322 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 12:47:50 ]
321>>
文章力なくてすみません。。
321さんが書いて下さったみたいなコードサンプルがようするに欲しかったんです^^;
レスありがとうございます。

323 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 12:55:26 ]
ええええええええええええええええええええええええええええええええええええええええええええええええ

324 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 13:07:11 ]
うるさい

325 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 13:23:19 ]
321>
あの〜、やってみたんですけど
req.Headers.Add(HttpRequest.Header.Host, "HostName");
って書くと'Host' ヘッダーを直接変更することはできません。
って出ちゃうんですけど。Hostの書き換えは無理??

326 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 13:25:42 ]
>>325
お前死ぬの?死にたいの?叩き殺されたいの?

msdn.microsoft.com/ja-jp/library/system.net.httpwebrequest.headers(VS.80).aspx

解説
Headers コレクションは、要求に関連付けられているプロトコル ヘッダーを格納します。
Headers コレクションには格納されず、システム、プロパティ、またはメソッドのいずれかで設定される HTTP ヘッダーの一覧を次の表に示します。

Host システムにより現在のホスト情報に設定されます。

327 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 13:29:58 ]
いいよ
1から10まで聞かないとできない奴は排除したれ

328 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 13:36:29 ]
>>1

329 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 14:29:34 ]
public はクラスの外からのアクセスを許可し、private は許可しないみたいですが
それならpublicだけでよくないですか?

330 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 14:34:04 ]
人間はミスする生き物なので、触れて欲しくない要素は外部に公開しないようにしております。

全員が全員ドキュメントをキチンと読んで、万に一つのミスも犯さないようなパーフェクト人間であれば全てpublicでも良いでしょうね。

331 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 14:47:30 ]
時そばで、勘定中にカウンタを外部から書き換えられちゃったから
1文ごまかされちゃったんだよね。



332 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 14:51:35 ]
>>330-331
レス感謝です。

333 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 14:55:55 ]
>>331
感心したわ。

334 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 19:16:49 ]
C# 2008で質問です。

非表示のフォームにDataGridViewを貼り付けてあります。
ここにReadXMLでデータを読み込んで、DataGridViewからデータを取り出そうとしたら
どのセルも空白のままでした。

一度でもフォームを表示すれば、そのタイミングで実際の読み込み動作が行わて
セルにデータが入るのですが、
非表示のままでデータをDataGridViewに反映させる方法を教えてください。

335 名前:デフォルトの名無しさん [2009/06/09(火) 19:26:21 ]
DataSet使おうよ…

336 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 03:18:40 ]
VCEEでPen p=new Pen()をつくって
Form1にg.drawline(p,0,0,100,100)とかやったら
書けるんだけど、
画面切り替えたら消えちゃうんだけど消えないようにするにはどうやるの?

337 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 03:22:15 ]
また描く
もしくは,なんかDoubleBufferみたいなプロパティがあればtrueに

338 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 03:22:59 ]
Paintイベントで描く

339 名前:デフォルトの名無しさん [2009/06/10(水) 03:26:06 ]
>>337
なんか他にも設定する必要ありそ
www.google.com/search?hl=ja&lr=&ie=UTF-8&oe=UTF-8&num=50&q=DoubleBuffer

340 名前:デフォルトの名無しさん [2009/06/10(水) 09:25:21 ]
ソリューションエクスプローラー

ソリューション’game’(1プロジェクト)
└game
 ├ソースフェイル
 │├hello.cpp
 │└helo2cpp
 ├ヘッダーファイル
 └リソースファイル

となっています。

helllo.cpp

#include <stdio.h>
int main(void)
{
printf("こんにちは!\n");
return 0;
}

341 名前:340の続き [2009/06/10(水) 09:26:03 ]
helllo2.cpp

#include <stdio.h>
int main(void)
{
int a,b,c;
a=1;
b=2;
c=a+b;
printf("a+b=%d\n",c);
return 0;
}

とプログラムを書いたのですが、デバッグするとエラーが出ます。
main(void)が2つあるとプログラムが正常に作動しないんでしょうか?




342 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 09:31:01 ]
スレ違い
どっかで聞き直すならエラーぐらい書けよ

343 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 09:32:34 ]
mainは一つでなければなりません。

344 名前:デフォルトの名無しさん [2009/06/10(水) 10:07:46 ]
>>343
そうですか。よくわからないけど研究してみます。

345 名前:デフォルトの名無しさん [2009/06/10(水) 10:28:53 ]
C++の基礎を一通り勉強してみて、やっぱりC#にしようか悩んでるのですが・・・

作りたいアプリはあるウェブサイトの更新をするアプリです。
HTMLフォームのユーザビリティに嫌気がさしてきたもので。
スクリプト言語ですがPHPとかActionScriptとかJavascriptを仕事で使ってます。
JAVAもできます。

条件としては
1、オブジェクト指向でプログラミングできること。
2、なるべくwindowsに色々インストールしなくても使えること。
3、今後も役に立ちそうな言語であること

C#って.NETフレームワークが必須なんですよね?

C#って.NETフレームワークがインストールしてあったら、
他に何かランタイム無しで動くのですか?

2はインストーラーを作ればそれほど気にすることはないって聞いたけど
そういうもんでしょうか?


346 名前:デフォルトの名無しさん [2009/06/10(水) 10:45:56 ]
.NET2.0ターゲットならたいがいランタイムは入ってるからそんなに気にしなくていいよ
少なくともJavaよりは嫌われない

347 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 10:51:00 ]
ClickOnceインストーラを使うのであれば、依存関係は勝手に作ってくれるしランタイムも言語別の細かいところも自動。
自分が何か手をいれる必要はないので意識はしなくてもいいし、自分はした事が無い。

348 名前:デフォルトの名無しさん [2009/06/10(水) 10:54:11 ]
Silverlight使えば?
Webの知識活かせるしクロスプラットフォームだしランタイム超小さいよ

349 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 10:58:17 ]
347に追加、C++からというならひょっとすると、C/C++コードとの相互運用を入れているかもしれないが、これが入っている時はClickOnceが使えないので注意。
一般のインストーラを使って全部手動でやるきる必要がある。

それとClickOnceインストーラというのは、今はそう呼ばれていないかもしれない、プロジェクトのプロパティーの発行タブで設定して作れるインストーラの事。

350 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 12:56:24 ]
>>345
まあHTMLフォームの代わりに使いたいと言ってるんだから、
ネイティブコードのモジュールを使いたいなんてことはそうそうないだろ。
.NETはメジャーな画像形式なら最初から扱えるし。
普通にC#でフォーム作って必要な機能を用意すればいいんじゃないかな。

ClickOnceええよ。
イメージとしてはサーバーに置かれているソフトを
ブラウザのローカルキャッシュにコピーして、そこで起動する感じ。

自作のフリーソフトをzip版とClickOnce版と両方提供してるけど、
ClickOnceならVSからリリースするだけで、zipをアップロードする必要もないし。

351 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 20:14:19 ]
>>349
> 347に追加、C++からというならひょっとすると、C/C++コードとの相互運用を入れているかもしれないが、これが入っている時はClickOnceが使えないので注意。
> 一般のインストーラを使って全部手動でやるきる必要がある。

ダウト。やりようによってはできる。




352 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:36:43 ]
>>351
実行時に別のインストーラ起動するって奴だろ、ClickOnceのHowToに書かれていたのでやってみたが
凄いめんどくさいぞ、それにそれをすると自動更新は役立たずになるし

353 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:44:10 ]
MSのサイトにも書かれていたが、ClickOnceインストーラとmsiインストーラの使い分けの基準として
.NETの範囲で収まっているかどうかという所がポイントだと思われる
無理をしてClickOnceを使うよりはmsiの方がシンプルになるケースは少なくない。

354 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:44:43 ]
Google Chrome でも使ってるけどな。>ClickOnce

355 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:48:53 ]
ClickOnceはお手軽インストーラではあるけれども万能インストーラではないからな

356 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:49:37 ]
>>351
違うだろ。C/C++ コードとの相互運用って、P/Invoke とかだろ?
別に ClickOnce アプリでも、P/Invoke やら COM Interop やらできるわけだが。

357 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 22:26:05 ]
ClickOnceってサイトに来てもらえなくなるんじゃないの?
有料ソフトならいいけど

358 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:18:33 ]
>>357
どういう意味だ?

359 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:31:00 ]
C#を勉強しだして業務アプリは大体こなせるようになりました
趣味でTelnetクライアントやFTPクライアントを作ってみたいのですが、
何か参考になる書籍やサイトがあったら教えてください
RFCは勉強中です

360 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:42:08 ]
RFCがまともなんでないかい
Telnetのネゴシエーションプロセスとか全く無いのとか
FTPはpassive対応してなかったりcontrolとdataの二本が必ずセットになってたりする

361 名前:デフォルトの名無しさん [2009/06/11(木) 00:00:30 ]
C#勉強しようと思ってるんですけど、とりあえずTurbo C#とか
入れればいいんでしょうか?
とりあえずサンプルとかをコピペして動くことを確認したいです。
作ろうとしてるものとか目標とかは今のとこありません。

あとお金も無いんですけど、
なんか購入する必要ってあるんですか?





362 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 00:03:19 ]
妙なこだわりがないならVisual C# 2008 Express Editionにしておけ

買う物は特に必要なし

363 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 00:03:34 ]
>>361
C#する前に仕事しろ

364 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 00:03:48 ]
>>361
VC# Express入れればいい

365 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 00:26:12 ]
Formを回転させたいのですがヒント下さい。
WPFだとあるかな?と思ったけど、ぐぐってもそれらしい情報が見つかりません。
#DirectXの範疇になるのでしょうか?

366 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 00:26:13 ]
ツールボックスにあるポインターってなんすか?

367 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 00:30:06 ]
ポインターとはポインターです、糞して寝てください

368 名前:デフォルトの名無しさん [2009/06/11(木) 00:34:21 ]
>>362
>>364
ありがとうございます!調べてみます!
>>363
仕事はしてます!契約がなくて社内ニート中ですけど!

369 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 00:41:21 ]
どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッドなのに厳しいっすね

370 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 00:41:59 ]
質問したいんじゃなくて喧嘩うってんだろw

371 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 00:42:27 ]
つまり、金を貰いつつ社内でC#のお勉強か!羨ましい限りだな。

>>365
WPFならコントロールの回転はできるが、ウィンドウ自体の回転はできなかったと思う。



372 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 00:44:50 ]
何で教えてくれないのか不思議で仕方ないっす

373 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 00:47:16 ]
リアルでぶんなぐられないように十分注意することだ

374 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 02:14:06 ]
VisualC#2008で質問があります。
おなじ画像をくり返し表示するのに、ツールボックスを使わず配列にしてみました。

namespace WindowsFormsApplication1{
public partial class Form1 : Form{
private System.Windows.Forms.PictureBox[] pictureBox;
public Form1(){
InitializeComponent();

string photo = @"C:\photo.jpg";
for (int i = 1; i < 5; i++){
this.pictureBox[i] = new System.Windows.Forms.PictureBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox[i])).BeginInit();
this.pictureBox[i].Location = new System.Drawing.Point(12, 22 + i * 200);
this.pictureBox[i].Name = "pictureBox[i]";
this.pictureBox[i].Size = new System.Drawing.Size(300, 200);
this.pictureBox[i].Image = Bitmap.FromFile(photo);
this.Controls.Add(this.pictureBox[i]);
}
}
}
}

で、コンパイルは通るのですが、エラーになります。
NullReferenceExceptionはハンドルされませんでした。
オブジェクト参照がオブジェクトインスタンスに設定されていません。
ってことなのですが、なにがNullになっているんでしょう?
なんかポカミスしている気がするんだけど…。


375 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 02:15:58 ]
private System.Windows.Forms.PictureBox[] pictureBox;
がnull

376 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 02:16:34 ]
デバッガで追っかけてけばすぐわかるよ
「自動変数」タブな

377 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 02:31:59 ]
pictureBoxは何で初期化してないの?

378 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 02:39:30 ]
早速サンキューです。
すばやっ。
助かります。
pictureBox = new PictureBox[5];
を追加して、無事表示できました。

ところで何度見ても、自動変数タブがないんですけど、…。
左から、ローカル、ウォッチ、呼び出し履歴、イミディエイトウィンドウ、出力。
どこに消えたかご存じないですよね?


379 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 02:45:49 ]
ブレイク中のメニューのデバッグ>ウィンドウにあるはずだが

380 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 02:54:13 ]
>for (int i = 1; i < 5; i++)
ここは大丈夫?
pictureBoxは0から4までの5つの要素のうち
1から4までの4つを使うことになるわけだけど

381 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 04:03:24 ]
文字列の配列をstirng(羅列string, string, string, ...)に変換するにはどうすればいいですか?



382 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 04:30:00 ]
日本語でおk
区切り文字を挿んで文字列を連結したいって事なら、string.Join

383 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 09:02:29 ]
private void button1_click(object sender,Eventargs e)
の()の中のobject sender,Eventargs e
って何ですか

384 名前:デフォルトの名無しさん [2009/06/11(木) 09:07:17 ]
senderにはイベントを発生させたオブジェクト
eには必要に応じてイベントに関する情報
が入ってる

385 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 09:07:52 ]
イベント送信者とイベント引数

386 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 09:34:27 ]
しーぷっしゃー

387 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 09:44:18 ]
らめぇ

388 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 11:25:10 ]
あざっす

389 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 12:44:30 ]
テキスト(たとえばtextBox)と画像(たとえばpictureBox)をまとめて扱う(表示とか移動とか削除とか)にはどうしたらよいですか?
ボタンなら、ボタンの背景(BackgroundImageプロパティ)にjpgファイルを指定できるので、表示するときに一度に表示できます。
textBoxのプロパティを見ても、背景のイメージを設定できないみたいなので…

390 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 12:46:52 ]
ユーザーコントロール作ってまとめたら?

391 名前:デフォルトの名無しさん [2009/06/11(木) 12:53:40 ]
文字列の後ろを透けさせて背景画像を表示するのは無理
TextBoxそのものを自作するかWPFへどうぞ



392 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 13:48:09 ]
>>390
サンクス。ユーザーコントロールというのはまだ作ったことがないので、勉強がてらやってみます。
>>391
サンクス。やっぱり。
でもまあ今回は、背景が単色なので、なんとかFormベースでやってみます。
TextBoxそのものの自作って、ユーザーコントロールってことですよね?
ところでWPFで、ここみたいにフランクに質問できるとこってないですか?

393 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 13:57:14 ]
質問があります。
サムネイルベースのファイラーみたいなものを考えています。
サムネイルをウィンドウ内でドラッグ&ドロップして配置を移動したいです。
その場合、ドラッグ&ドロップの処理で必要なことは…。
・コントロール(pictureBoxとか)をドラッグ可能にする。
・フォームでドロップを受け付けるようにする。
かと思います。

フォームでドロップを受け付けるのは、
・AllowDropプロパティをTrueにする。
・Form1_DragEnterのイベントハンドラを作る。

でよいかと思うのですが、
Q1 コントロールをドラッグ可能にするには、なにをすればいいんでしょう?
コントロールを移動すると、コントロール同士が重なることがあります。
そのとき、
Q2 単純に重ねて表示したいときには、イベントハンドラはForm1_DrogEnterだけでいいんですか?


394 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 14:07:54 ]
Control.DoDragDrop使え

395 名前:デフォルトの名無しさん [2009/06/11(木) 14:16:26 ]
>>392
>TextBoxそのものの自作
ユーザーコントロールじゃなくてControlから直接派生するカスタムコントロール
描画も入力も全部自前で書くガチ自作

396 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 15:12:59 ]
継承ってのは機能の追加しかできないの?

たとえば
myclass1が10個の変数と3個の関数を持ってるとして
それを引き継いだmyclass2は
7個の変数と4個の関数を持ってるとか
できない?

397 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 15:13:24 ]
myclass2をmyclass1として扱いたい場合どうするんだ

398 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 15:16:31 ]
object思考の基礎をやり直したほうがいいんじゃないか?
myclass1やmyclass2をちゃんとobjectとして切り出せてないからややこしくなる。

399 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 15:22:34 ]
>>396
そういう場合はclass1とclass2から共通な部分を取り出して新たな基底クラスを作るのがデフォ


class1 - class2

↓こうする

baseclass - class1
       |_class2


基底クラスのメソッドやフィールドを消せたりら、上位クラスへのキャストができないのだわ
FileStreamをStreamにキャストしたりとかね

400 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 15:55:18 ]
Office2007が入ってるとTextBoxRendererやVisualStyleRendererのTextBoxが標準のルックスじゃなくなるんだけどどうすればフォームに配置しているTextBoxと同じ用に描けるの?
Application.EnableVisualStyles()をコメントアウトってのはナシで。
この際Win32APIでもなんでもいいから教えて。


401 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 18:51:26 ]
画像の移動の件です。
「Control.DoDragDrop」でぐぐって、
解説サイト見ながらプログラムを作ってみたんですが、
完全にどつぼにはまってます。
どっかにプロジェクトをアップロードしたら、このスレで添削してもらえますか?




402 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 18:54:01 ]
ListViewじゃダメなの?

403 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 19:05:01 ]
ListViewだと、表形式での表示になると思います。
エクスプローラでいうところの表示-縮小版のような形で操作したいのです。


404 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 22:02:37 ]
C#で他のプロセスのコマンドライン引数を取得したいのですが、
なにか方法ありますか?
たとえばWordのプロセスが開いているファイルのPath+FileNameを取得したい。

405 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 22:11:41 ]
>>404
d.hatena.ne.jp/espresso3389/20080723/1216815501

406 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 22:13:11 ]
>>405
 ありがとう!

407 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 22:24:33 ]
WMIでWin32_Process使うのが一番楽な希ガス

408 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 09:58:49 ]
>>399
それがいい場合もあるが、まずそれというのはおすすめ出来ない。


409 名前:デフォルトの名無しさん [2009/06/12(金) 10:15:09 ]
そういうことになるから継承は良くない

410 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 11:05:24 ]
他のアプリケーションのIMEの状態を取得したいのですが、
なにか良い方法ありませんか?
すでにC#ではないと思いますが。。。

411 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 11:10:54 ]
よくわかんないけどプロセスにアタッチしてImmなんちゃら関数で取れないかな



412 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 12:51:20 ]
LAN内の別のマシン(実行マシン)で実行中の実行ファイル(exe)をバージョンアップするときに、開発マシンからコピーして上書きしたいのですが、実行中なのでロックされていてできません。
ロックせずに実行する実行ファイルを作ることってできるんでしょうか?
あるいは、開発マシンからkillするのでもよいのですが、そんなことってできましたっけ?
あまりC#とは関係ないかも…。


413 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 13:16:10 ]
>>412
できない。Unixだと上書きだけならできるが(再起動はもちろん必要)

で、基本常に実行し、必要なときに落としたりできるのがWindowsのサービスの仕組み。利用しない手はない。
リモートデスクトップで直接終了作業する手はどうだ?

414 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 13:32:18 ]
なるほど。そこでリモートデスクトップですね。
なるほど〜。
サンクス。
いまも別のマシンが別の階の別の部屋にあって、デバッグしながらいったりきたりで、いい運動になってました。


415 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 13:35:05 ]
>>405
これって、C++(?)のコードですよね?
C#のコードor dll or exeはないですか?

416 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 13:37:33 ]
かまわずWMIというかSystem.Management.Instrumentation使えばいい

417 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 14:05:49 ]
Instrumentationいらないだろ

418 名前:417 mailto:sage [2009/06/12(金) 14:12:12 ]
using System.Management;

ManagementClass m = new ManagementClass("Win32_Process");

foreach (ManagementObject o in m.GetInstances()) {
object c = o["CommandLine"];
if (c is string) {
Console.WriteLine((string)c);
}
}

こんなもんだろ。何か異議ある?

419 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 14:34:46 ]
>>415
C#の相互運用機能を使ってC#に書き換えればいいじゃん
>>405にC++でしか実現できない点は1つもないよ

それができいなら、おとなしくWMI使っとけ

420 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 16:30:48 ]
>>418
ぜんぜん異議なし。
>>419
は〜い。おとなしく使ってます。

それはそれとして、相互運用機能なんてので、C++のコードをC#に書き換えられるんですか?
知らなかった…。
それって簡単?


421 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 16:41:16 ]
>>405のコード読めるならそんなに難しくはない
そうでないなら諦めろ



422 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 18:17:03 ]
>>411
アタッチについて少し調べたんですが、
スレッドのアタッチは出来そうだけど、プロセス?(たとえばWordなど)に
アタッチって出来ます?

423 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 19:16:40 ]
サンプルコードを読んでいたら、以下のような記述が出てきたんですけれど、
コンストラクタを呼んで、 { } で括って最後に;って何なのでしょうか?
コンストラクタの内容に追記しているんでしょうか?
匿名関数とか記法の名前が分かればググれるんですけれど、
何と呼ばれる記述法何でしょうか?

public ActionResult Create(int customerId)
{
 AddressViewData addressViewData = new AddressViewData()
 {
  CustomerId = customerId
 };
 return View(addressViewData);
}

424 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 19:24:32 ]
勘でググってたらあったー
オブジェクト初期化子ですかね。

425 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 19:27:47 ]
うん

426 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 19:33:03 ]
>>423
確かに、これはものすごい気持ちの悪い書き方だな。
ぱっと見ではなぜnew AddressViewData()のところにセミコロンがないのかが分からないし、
ブレースのあとでセミコロンがあるのかが分からない。

オレならまず間違いなく
new AddressViewData() {
...
};
にするだろうな。

427 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 19:36:58 ]
趣味の自慢か?

428 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 19:49:07 ]
そういう宗教論争はこっちで頼むわ。
pc12.2ch.net/test/read.cgi/tech/1170599322/

429 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 21:07:07 ]
Form2 frm2 = new Form2
とかやって、新しいフォーム作成したら
Form2.csができちゃって
Form1.csで作ったpublic変数とかが使えなくなっちゃうんだけど
どうやったらForm1.csとForm2.csの変数や文字列を合体できる??

430 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 21:08:53 ]
引数にして渡せ

431 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 21:09:20 ]
Form1.cs.Concat("Form2.cs")



432 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 21:52:51 ]
変数と文字列を同じ次元で語るなよ

433 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 22:11:28 ]
>>429
> Form2 frm2 = new Form2
> とかやって、新しいフォーム作成したら
> Form2.csができちゃって

面白い。新しいリフレクションだなw

434 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 22:46:29 ]
>>429
まじめに勉強してこなかったツケがそれだよっ!

435 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 23:01:33 ]
しばらくRubyやってて久々にOffice用のCOM参照DLL作ることになったんだけど
インスタンスの作り方すら忘れてる俺涙目w

436 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 23:26:08 ]
日記帳

437 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 23:47:00 ]
overrideって何のためにあるの?

438 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 23:50:00 ]
>>437
明示しないとオーバーライドできなくするため。
オーバーライドするつもりなかったのにうっかりやっちゃったとかになると、
結構発見しずらいバグになる。

439 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 23:53:17 ]
どうしてoverrideという概念があるかというレベルに見えるが

440 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 23:55:41 ]
継承はバグの温床だからな、安全装置は沢山あった方がいい

441 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 00:04:42 ]
現在のオブジェクト指向に関する理解から考えれば、overrideは要らない
仮想テーブルは自前でも作れる、ただ面倒臭いから言語の機能としてあれば便利だというレベルになっている。
また言語仕様で作られる仮想テーブルは書き換える事はできないが、そのような操作が必要になったら結局自前で作るわけだが、
それはStrategyパターンと呼ばれるデザインパターンでパターン化されている。



442 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 00:23:56 ]
>>441
これ
> 現在のオブジェクト指向に関する理解
と、これ
> 仮想テーブル

って、全然領域違う言葉だよね?
何で混ざってるの?

443 名前:デフォルトの名無しさん [2009/06/13(土) 01:13:12 ]
使う人間が完璧なら不要
実際Javaなんかで問題が出たから付けるようにしてるんだよ
そのJavaですらoverrideを明示的に付けるようになった

444 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 02:59:00 ]
多数の変数を一気に同じ値にすることできねーの?

int a;
int b;
int c;
〜〜
int z;

a=2;
b=2;
とかじゃんく
a,b,c,d,e=2;
みたいな感じで。

445 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 03:04:23 ]
>>444
カンマじゃなくて、イコールでつないでご覧。

446 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 04:30:26 ]
File.WriteAllText(@"C:\Test.txt", "テスト書込。", sjisEnc);
この、C\Test.textの前にある@マークは何の役割でしょうか?

447 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 04:31:37 ]
@があると\でエスケープしない
"C:\\Test.txt"とすべきところを@"C:\Test.txt"で済ます

448 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 04:34:31 ]
>>447
ありがとう

449 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 10:19:43 ]
>>442
>どうしてoverrideという概念があるかというレベルに見えるが
に対しての見解なので

450 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 10:43:36 ]
>>441
ん、んーん?


451 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 10:59:33 ]
overrideがないと、関数名を考えるのが面倒じゃん
MyFunction( )
MyFunction_int(int n)
MyFunction_intint(int n, m)
MyFunction_intstr(int n, string t)
とか、どんどん増える



452 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 11:00:19 ]
overloadと勘違いして奴がいる模様。

453 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 12:06:15 ]
overloadと勘違いして奴がいる模様。

454 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 12:13:18 ]
c#の入門用ページ、
どこもコンソールアプリケーションのことしか書いてないんだけど
WIndowsプログラムのこと書いたページで良いとこない?

455 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 12:16:23 ]
>>454
言語自体の入門ページだと、そりゃそんなもんだろ。
Windows Forms とか WPF でググりなおした方がいいんでは。

あと、コンソールアプリで入門記事書いてるページでも、
1ページくらいは GUI に記事さいてないか?

456 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 12:18:02 ]
そりゃ、C#の入門であって、.NETでGUIプログラミングをするための入門では
ないから、仕方ないのでは?
前者はもう充分だから、後者に移りたいというのが質問の趣旨?
それとも、前者も後者もいっしょくたにしたいという話?

いっしょくたはおすすめできないぞ。

457 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 12:29:13 ]
GUIプログラミング=IDEの使い方だし、めんどくさいだろ?作るの。

458 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 12:38:46 ]
俺はClass personから継承してtaroをつくるとかどうでもいいことじゃなくて
たとえばだが
Form1のx=200,y=300のドットの色を取得して
画面を塗りつぶすとか
そういうことやりたいんだが

コンソールアプリじゃそういうことわからん。
IDEつくるのめんどくさいのか;;

459 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 12:42:42 ]
>>458
どうでもいいけど
> Class personから継承してtaroをつくる
これは気持ち悪い
taroっていう種族がいるのか…?

460 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 12:44:53 ]
>>458
class Taro キモすww

それは置いといて、
そういう話の場合、「入門」じゃなくて「サンプル」でググって、
説明読むんじゃなくてコード読む方がオススメ。

461 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 12:46:01 ]
別に居ても居なくてもどうでも良いな
3年を継承して山田を作るのに山田って組があるのか?とか
マジでどうでも良い



462 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 13:11:29 ]
ちょっと力ぬけよ

463 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 15:40:08 ]
メモリの解放のタイミングについて教えてください。

フォーム上にDataGridViewとComboBox(DropDownListとして利用)、
Buttonがあるとします。
ButtonをクリックするとComboBoxのSelectedIndexによってDataGridViewの
内容が変わります。DataGridViewはReadonlyです。

現在、初期化としてフォームのコンストラクタのInitializeComponent()の後で、
それぞれDataTableを取得して、ComboBoxとDataGridViewにバインドしています。

DataGridViewはReadonlyなので、
using(DataTable dt = …)
{
  // 処理
  dataGridView1.DataSource = dt;
}
と閉じてしまっても問題ありませんが、ComboBoxの方はusingで囲むと値が
表示されません。
その場合、comboBox1.DataSourceにセットしたDataTableはどこでDisposeすれば
良いのでしょうか?

464 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 16:01:14 ]
Disposeはメモリの解放じゃない
DataSourceとして使用してる間にDisposeしちゃまずいだろDisposeの意味的に考えて
そのDataTableを使わなくなるタイミングだから、大体フォームが閉じるときでいいんじゃね

実用上はDataTableならDisposeする必要もないけどな

465 名前:デフォルトの名無しさん [2009/06/13(土) 16:33:55 ]
>>464
ぐぐって下記のページを見つけて読んできました。
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=34497&forum=7

大体理解できました(と思います)。
リンク先もさらに読んできます。

466 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 23:54:15 ]
内容が等しいことを示すにはどうしたらいいでしょうか?

class test{
int a;
int b;
}

test x1=new test();
test x2=new test();

x1.a=10;
x2.a=10;
x1.b=20;
x2.b=20;

if(x1==x2)
//等しいと表示
else
//等しくないと表示

クラスは参照型なので等しくないって表示されちゃうことはわかるんだけど
クラスの内容自体を比較するのはどうやんの?

467 名前:デフォルトの名無しさん mailto:sage [2009/06/13(土) 23:55:46 ]
IComparer

468 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 01:16:18 ]
>>466
==,!=オーバーライド

469 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 01:19:37 ]
>>466
x1.a == x2.a && x1.b == x2.b
というかそれ、public ないから普通にコンパイルエラーにならんか?

そのクラスを値チックにしか使わないなら Equals とか GetHashCode とか
オーバーライドして operator ==/!= 定義する。IEquatable は・・・この場合は
まぁいいか

470 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 03:19:03 ]
GetHashCodeはオーバーライドしとけ。


471 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 03:52:16 ]
GetHashCodeってどんなときに呼ばれんの?



472 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 04:48:38 ]
Hashtable
Dictionary

473 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 04:48:54 ]
Dictionaryにキーとして放り込む時とか

474 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 13:10:04 ]
列が100、行数が20というデータテーブルを作ってDataGridViewで表示してるんですが、
ボタンをクリックするとテーブルに対してColumns.Addで列数を増やすように作ったんだけど、
なぜか1列増やすごとに1秒ぐらいかかる。
ぐぐったら「Debugは遅い」って書いてあるのを見つけたんでReleaseに変えてみたけど、
それでも0.7秒ぐらいかかってるみたい。

ボタンをクリックしてから画面が更新されるまで、ちょっとタイムラグがあるのが気になるんだけど、
もっと高速に列数を増やす方法はないですか?
マシンはPen4/2.8GHzにメモリ2GBで、極端にマシンが遅いわけでもないと思うんですが。
OSはXP SP3に無料のC#2008 NET3.5です。

475 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 13:11:11 ]
あ、データテーブルの中身はintです。

476 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 13:20:18 ]
追加に時間がかかってるのか、再描画に時間がかかってるのか、
どっち?

477 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 13:59:15 ]
どっちかわかりません。
追加すると自動的に再描画されてしまうと思うのですが、
どうやったら別々に調べることが出来ますか?

478 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 14:04:08 ]
Stopwatchクラスで時間計ってみ

479 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 16:50:00 ]
画像を縦30横30に切り取りたいのですがどうすればいいのでしょうか?><

480 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 16:54:05 ]
>>479
「C# 画像 切り取り」で検索すればすぐに出てくるんだけど

481 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 16:55:14 ]
縦30、横30でコピーすればOK



482 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 16:57:06 ]
>>48 ありがとうです0

483 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 18:24:14 ]
パネルに編集画面を描画(Direct3D)していて、
カメラ位置を移動させるためのスクロールバーを配置したいんだけど、
1発でばしっと縦横スロールバーがつけられるコントロールってありますか?

やっぱり
親パネルの右に垂直スクロールバー配置、アンカーを上下右に設定、
親パネルの下に水平スクロールバー配置、アンカーを左右下に設定、
残った領域にスクロール操作の対象になるパネルを配置、アンカーで上下左右を設定 
みたいにしないとダメ?


484 名前:デフォルトの名無しさん mailto:sage [2009/06/14(日) 21:04:31 ]
パネルってそもそも ScrollableControl 継承してなかったか?

485 名前:デフォルトの名無しさん [2009/06/14(日) 21:45:46 ]
そりゃ中に大きなコントロール入れたらスクロールバー出るけど483の用途には全く適さない

486 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 05:17:28 ]
普通、インスタンス生成するときは

Class名 名前=new Class名();
で生成できるのに

Graphicsクラスのインスタンス生成する際
Graphics gr=new Graphics();
じゃ生成できないのはなんで?
Graphics gr=CreateGraphics();
なら生成できるみたい

487 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 06:30:50 ]
newさせたくないから。幼稚園児に油性マジック渡すようなもの。

488 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 06:50:13 ]
幼稚園児に油性マジック渡したら
キャップし忘れてすぐだめにしちゃうよね

489 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 08:19:14 ]
CreateGraphics()はthis.CreateGraphics()だから。

490 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 08:40:29 ]
つまり、大人の事情でそう決まってるからとしか言いようがない。

491 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 08:54:31 ]
大人の事情っていうと、「仕方なくそうなってる」感じがするけど、
new Graphics() できないのは仕方なくじゃなくて、その方がいい設計だからだろ。




492 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 09:21:22 ]
でもDispose()しないといけないのは何故

493 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 09:55:13 ]
GDIの作法を知らない世代か。

494 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 12:01:20 ]
newとDisposeは対になるものじゃないしね

495 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 12:33:09 ]
Dispose()はC++からのクセだろ
別にしなくてもいいし

496 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 12:51:44 ]
やんなくてもGCが回収してくれるけど、その間リソースを持ち続ける事になるからねぇ

ファイル開こうとしたらいつまでもロックされてる とかよくある。
Closeすればいい?それならDisposeしちゃえよ。

497 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 12:58:16 ]
>>495
ドキュメントにDispose()しろってんだからしろよ<

498 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 13:16:50 ]
> しろよ<
よろしくにみえた

499 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 14:16:34 ]
private void Form1_Load(object sender, EventArgs e)
()内のobject sender, EventArgs eってなんですか?

500 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 14:20:21 ]
イベントの発生元とイベントのパラメータ

501 名前:デフォルトの名無しさん [2009/06/15(月) 14:22:47 ]
Loadイベントに限っていえば意味はない
イベントハンドラの引数の形式を統一するためのダミー



502 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 14:32:36 ]
Windowsアプリケーションを製作しております。
処理に必要なデータ(CSVファイル)を、利用者側から見られないようにしたいのですが
なにか策はありますでしょうか?ご教授下さい。

503 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 14:37:10 ]
System.Security.Cryptographyでも使って暗号化すれば
気休めだけどね

504 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 14:38:30 ]
>>502
PC内に保存するなら簡単に見られるだろ。
見にくくしたいなら暗号化かな。
簡単な暗号でいいならxor暗号で。

505 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 14:45:17 ]
>>502
web上に配置してsslとか

506 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 14:47:43 ]
>>502
エロゲのセーブデータか?

507 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 14:50:33 ]
食いつき良いなお前ら。

508 名前:502 mailto:sage [2009/06/15(月) 14:52:46 ]
>>503
ありがとうございます、調べてみます。

>>504
ありがとうございます。XOR暗号、調べてみます。

>>505
Web上への配置ですか、検討してみます。

>>502
いえ、そういうのではないのですが。
そのファイルを見られてしまうとプログラム内でなにをやっているかがわかってしまうのです。

509 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 15:05:58 ]
ファイルなんか見なくても何してるか丸見えだけどな

510 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 15:21:35 ]
ゲームとかでネタばれになるようなのは隠したいわな

511 名前:502 mailto:sage [2009/06/15(月) 15:25:55 ]
Security.Cryptographyでやってみようと思います。
本当にありがとうございました。感謝します。



512 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 15:27:12 ]
カジュアルハックを防ぐだけならそれでいいんじゃね。

513 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 15:54:28 ]
2次元のHashtableはつくれますか?
hash["abc"]["def"]のような。

514 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 16:05:19 ]
Hashtable<Hashtable<T>>

515 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 16:06:45 ]
>>514
ただし2次元ではない

もしくはそういう感じのを作ればおk

516 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 16:16:41 ]
>>513
hasu["abcdef"]という値をキーにすれば良い

517 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 16:17:56 ]
商用なら間違いなく仕様バグで訴えられるな。

518 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 16:18:10 ]
>>516
そうですね、ありがとうございました。

519 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 16:18:49 ]
>>518
hash["a"]["bcdef"]との違いがわからなくね?

520 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 16:21:27 ]
実際は

abc = 重複のない3桁の数字
def = 重複のある1〜2桁の数字

なので、>>513さんの意見で大丈夫かなと思ったのですが。

521 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 16:22:45 ]
すいません、>>513ではなく>>516でした



522 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 16:36:00 ]
>>520
じゃあそれでいいんでね?

523 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 16:36:05 ]
>>519
別に汎用でなくてもかまわない。
キーが取り得る値として辻褄が合うように適宜仕様変更すれば良いんだよ。

524 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 16:38:21 ]
>>523
適宜仕様変更すると汎用になるんでないかい

525 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 16:38:51 ]
てか、自分でハッシュ関数作ればいいじゃん

526 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 16:42:36 ]
目的に最適化されたハッシュか、汎用のハッシュか、どっちが高速かと言えば前者だな

527 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 16:47:04 ]
hash[new {Fst = "abc", Snd = "def"}]
ってできる?

528 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 16:49:45 ]
>>527
試した?

529 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 16:50:14 ]
>>528
試してない
だって俺C#の文法知らないもん

530 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 17:03:22 ]
はっはっは こやつめ

531 名前:デフォルトの名無しさん [2009/06/15(月) 17:13:00 ]
new Dictionary {{"あ","A"},{"い","I"}}



532 名前:デフォルトの名無しさん [2009/06/15(月) 17:15:30 ]
<string,string>追加

533 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 17:22:05 ]
うわぁ的なことをした人がいる
d.hatena.ne.jp/NyaRuRu/20071211/p3
var dict = Dictionary
(
    x => "foo",
    y => "bar",
    Hauhau => "gaogao"
);
C#3.5以降のはず

534 名前:デフォルトの名無しさん [2009/06/15(月) 17:27:09 ]
わざわざそんなキモいことしなくても531で正解なんだが

535 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 17:28:57 ]
一番軽いのはどーれだ

536 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 17:41:11 ]
>>534
実現方法の一つで正解ってわけじゃないけど
どうでもいいわ

537 名前:デフォルトの名無しさん [2009/06/15(月) 18:00:02 ]
言語に組み込むのは、手段を統一させるため
昔C#のコンセプトについてそんなコメントがあった気がする

538 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 19:48:35 ]
VC#フォームデザイナでメニューを作ったとき、キャプションに
「上書き保存)(&S)」とか入力してからダブルクリックして
メニューの Click イベントを書こうとすると

private void 上書き保存SToolStripMenuItem_Click(object sender, EventArgs e)

ってなるのが気持ち悪くてしょうがないんだけど、
みんなちゃんと飲み込めてるの?


539 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 20:09:18 ]
お好きなようにどうぞ
・実害はないので気にしない
・リネームする
・英語キャプションでハンドラを生成して、後から日本語に変更
・先にハンドラを用意する

540 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 20:35:12 ]
>>513
public struct ComplexKey<X, Y> : IEquatable<ComplexKey<X, Y>>

を作ってみるのは俺だけか?


541 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 21:28:02 ]
is演算子、 as演算子って多用すべきでない?



542 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 21:50:50 ]
キャストと比べても、パフォーマンス的には殆ど同じだから安心して使うといい。

キャストに失敗する可能性がある場合には必ずas,isを使うべき
InvalidCastExceptionをtry-catchするような方法だと桁違いに遅い。

543 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 22:32:18 ]
if (hoge is Foo)
{
Foo foo = (Foo)hoge;
// ...
}
個人的には、上よりは下の方がいいと思うとか、細かいことを挙げたらきりがないけどな。
Foo foo = hoge as Foo;
if (foo != null)
{
// ...
}

544 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 22:49:13 ]
>>541
as演算子のほうがキャストより高速になる場合が多いらしい

545 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 22:55:46 ]
まあそりゃチェックが2回になるからね。
でも、そんな差を気にしなければならないのはよほどタイトな処理の時くらいだし、
普通に書いた時変数のスコープが広がるというデメリットもあるから、
別にどっちでもいいレベルだと思うけどね。

なぜかやたらとここにこだわるやつがいて不思議。


546 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 22:55:48 ]
上は無駄な事をしてる感じなのが気に入らない
下は変数のスコープが気に入らない

scalaのswitchが使えればいいんだけどなぁ

547 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 22:56:34 ]
質問です。
次のような配列があったとして、HighPriceの最大値を求めたいのですが、簡潔に書くにはどう書けばいいのでしょうか?

hoge[0].HighPrice = 1000;
hoge[1].HighPrice = 780;
.(略)
hoge[99].HighPrice = 300;


環境はVisual C# 2008です。よろしくお願いします。

自分で考えたのは、
「int maxにまず初期値1000を設定、あとはforループでまわしてmaxをこえていれば新たにそれをmaxに設定する」
というものですが、もっとスッキリさせられないものかと思ってます。

ちなみに、hoge[0].HighPriceは本日(0日前)の高値、hoge[1].HighPriceは1日前の高値・・・
といった設定。100日間の高値の中で最大値を求めたいんです。

548 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 23:02:07 ]
>>547
LINQ使って
int max = hoge.Max();

549 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 23:11:18 ]
HighPrice メンバみたいだから
int max = hoge.Select((x) => x.HighPrice).Max();
だな

550 名前:549 mailto:sage [2009/06/15(月) 23:15:05 ]
あ、Max にはセレクタ指定できるのかごめん

int max = hoge.Max((x) => x.HighPrice);

かな

551 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 23:15:35 ]
hoge.Max(x => x.HighPrice)
みたいな?




552 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 23:16:33 ]
あ、カッコいったか、普段あまり使わないから分からなくなるよ。


553 名前:デフォルトの名無しさん mailto:sage [2009/06/15(月) 23:21:10 ]
なくてもいいと思うよ。俺は見易さと統一性でいつもつけてる
だけ。けど好みの問題だろうな。


554 名前:547 mailto:sage [2009/06/15(月) 23:27:57 ]
みなさんレスありがとうございます。
>>550さんので無事できました。

LINQだとだいぶ楽に書けていいですね。
手元のC#本は古いせいかLINQについては載ってないので新版を買ってくるとします。
ありがとうございました!

555 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 01:24:51 ]
c#で
class Test{
}
という何もないTestクラスを作って
Test test=new Test();
ってやって、

Label1.Text=test.ToString();
ってやったら宣言してないはずのTostring()が実行されるんだけど
クラスって宣言しなくても勝手にObject型を継承するようになってんの?

556 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 01:25:46 ]
msdn.microsoft.com/ja-jp/library/system.object.aspx

557 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 01:42:47 ]
>>556
くそ真面目に継承階層にずらずら並べてるのがちょっと微笑ましい

558 名前:デフォルトの名無しさん [2009/06/16(火) 01:49:59 ]
>>557
スクリプト切っててわからなかった
これはひどい

559 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 01:50:21 ]
2,768個・・なぜ並べたww

560 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 01:50:58 ]
>>555
クラスどころかC#ではありとあらゆる型がobject継承してる。

561 名前:542 mailto:sage [2009/06/16(火) 08:28:40 ]
安心して使うことにする。
みんなありがとう



562 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 13:07:53 ]
>>556
クソワロタ

563 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 15:27:42 ]
なんでわざわざ
Program.csとForm.csに分割してるんだ

Program.csは
Main関数の中に
Application.Run(new Form1)
みたいな産業あるだけだし・・・
意味不明

564 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 15:30:27 ]
意味などないんだよおおおおおおおおおおおお!!!
うふっ

565 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 15:31:25 ]
なるべくpublicなクラスは分割した方が管理しやすいから
フォームみたいなのだとなおさらね

関係ないけどそれを追求した結果、Javaなんかは1ファイル1publicクラスみたいな潔癖な事になっている

566 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 15:33:29 ]
意味不明ってまじかよ。冗談はよせ。

567 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 16:47:11 ]
foreach(item in arraylist) {
 if (削除条件(item)) {
  arraylist.Remove(item);
 }
}

てやっても大丈夫? ちゃんとインデックス使って

for (int i=arraylist.Count; i>=0; --i) {
 if (削除条件(arraylist[i])) {
  arraylist.RemoveAt(i);
 }
}
ってやらなきゃだめ?

568 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 16:48:31 ]
あ、arraylist の中身は重複しません

569 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 16:53:09 ]
foreach中はコレクションを変更できない

570 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 17:08:36 ]
RemoveAllで

571 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 18:53:50 ]
1個なら消せるよね



572 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 19:59:54 ]
CheckedListBoxって、項目を選んでからチェックボックスをクリックしないと チェックできませんよね。
どの項目を選んでいるか関係なく、クリックしたら即チェックできるようにするにはどうすればいいですか?


573 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:05:32 ]
CheckOnClick

574 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:07:00 ]
相談室の次スレ立てれんかったわ

575 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:10:16 ]
立ててやるよ

576 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:11:04 ]
>>567
RemoveAll が普通だろうけど、ArrayList ってことは 1.0 縛りとか
そういうの?


577 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:13:27 ]
立てたよ

578 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:14:25 ]
>>577
GJ

579 名前:デフォルトの名無しさん [2009/06/16(火) 20:35:24 ]
Visual C# 2008 Express Edition入れたんですけど、
ライセンス登録しないとどうなるんでしょうか?
あんまパスワードとか作りたくないので、
できれば登録したくないです。

あと、どんな感じで勉強してったらいいでしょうか?
javaを2年くらいやってます。あとC言語をちょびっとやってました。

くだらない質問と漠然とした質問ですみませんが
教えてもらえたらありがたいです。
お願いします。


580 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:42:13 ]
30日で使えなくなる
それだけ

Javaやってたなら簡単だと思うよ
ここで聞くことも無いかもしれない

581 名前:デフォルトの名無しさん [2009/06/16(火) 20:43:06 ]
一ヶ月経ったら登録しないと起動しなくなる
javaできるなら勉強しなくてもいきなり使えるはず
使いながら随時細かい違いを調べていけば十分
それができないならjavaもできてないってことだ



582 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:45:57 ]
...これだと項目を選択した瞬間にチェックがつけられてしまいますが、そうではなくて
チェックボックスをクリックした瞬間とはならないでしょうか。

ちょうどチェックボックス付きの ListViewのような動作です。
それならListViewをつかえといわれそうですが、リサイズした場合に一番右側のヘッダの
右端が常にコントロール右端に一致するようにするやり方がわからないのです。


583 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:47:03 ]
>>579
登録しなくても問題無くずっと使える
前は登録するとアイコンセットもらえるキャンペーンとかやってたけど
リファレンスもユーザーサイトも充実してるしJavaとVB足したような言語だから
たぶん難しくないよ

584 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:50:24 ]
堂々と嘘こいてんじゃねええええええええええええええええええええええ

585 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:52:49 ]
嘘を付く時は堂々とするとバレにくいよおおおおお

586 名前:デフォルトの名無しさん [2009/06/16(火) 20:53:16 ]
DVDイメージ版は登録いらないんだっけ

587 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:53:40 ]
登録はWebインストール版の話

588 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:54:59 ]
www.microsoft.com/japan/msdn/vstudio/2008/product/express/register.aspx

Visual Studio 2008 Express Edition を Web インストールにて入手いただいたお客様は、ご使用に当たってライセンス認証が必要となります。
ライセンス認証キー発行の過程において Live ID によるユーザー登録をお願いしております。
無料のライセンス認証キーにより、Visual Studio 2008 Express Edition を、30 日間の期限を過ぎても使用できるようになります。

589 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:57:44 ]
あほばっかりや

590 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 21:19:22 ]
そもそもパスワードなんてあったか?

591 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 21:22:14 ]
製品登録する用LiveID取得するためにパスワードが必要
LiveID持ってれば製品登録してメール送られてくるだけ



592 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 21:26:19 ]
俺は登録した覚えないからなんのこっちゃと思いながらレス読んでたけど、
Webインストールだけなのね。DVDから入れたわ。

593 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 22:07:46 ]
>>582
ならListViewでSizeChangedでColumnHeaderのWidthいじればいいんじゃね
ダブルクリックとかスペースキーでチェック状態変更するときはどうすんのかね

594 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 22:22:15 ]
LiveIDくらいは作っといてもいいと思うぞ。
既に持ってる人も多いだろうし。


595 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 22:37:01 ]
>>582
マウスイベントでマウスポインタの位置を取得して
ClickかSelectedIndexChangedあたりで選択されたインデックスの
チェックボックスの領域がクリックされたらItemCheckみたいな方法しか
ないんじゃないかね

596 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 22:45:33 ]
static classって使い終わってもGCにコレクトされないの?

597 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 22:49:39 ]
>>596
使い終わるってどういう状態のこと?

598 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 22:51:47 ]
c#ってさ、スタドアロン(.Net Framework インストールしてなくても動くって意味で)な exe つくれる?
なんていうか、DLL全部EXEに組み込むみたいな。

599 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 23:01:36 ]
MONOはネイティブコンパイルできたと思うよ

iPhoneでC#製プログラムを動かすだかって話の時に読んだ

600 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 23:13:20 ]
>>599
aot オプション付けるだけみたい。

601 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 23:19:14 ]
なんだ。じゃあ駄目だな



602 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 00:23:54 ]
数字を入力してその数字に見合った数だけの文字を表示するためのプログラムを組んでいるのですが
二重ループがうまくいっていないらしく希望の結果になりません、修正点を教えてください

希望のプログラム
5(ここは任意の数字を入力)
*
**
***
****
*****

このように任意の数字を入力しそれまでの間1づつ増加した*を並べたいです

組んだプログラム
#include<stdio.h>
int man()
{
int a,b,c;
scanf("%d",&b);
a=0;
c=0;
while(a<b)
{
while(c<=a)
{
printf("*")
c++;
}
a++;
printf("\n");
}
}

603 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 00:24:44 ]
上記のプログラムで走らせると
*
*
*
*
*

となってしまいます、
*
**
***
****
*****
とするにはどこを修正すればいいのでしょうか、よろしくお願いします

604 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 00:29:20 ]
スレタイも読めないのか

605 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 00:31:51 ]
誤爆しました

606 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 00:34:27 ]
>>604
ただ叩くだけじゃなくてちゃんと誘導してやろうぜ、一応初心者スレなんだから
自分は他人に教えられる、えらい存在だなんて思ってるなら出て行ってくれ

>>603
それは違う言語だね、こっちのスレで質問したほうがいいと思います

pc12.2ch.net/test/read.cgi/tech/1244942050/

607 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 04:45:27 ]
ちなみに、C#としての解決法なら、
その数値にToString()をかけた上でその文字列の長さを見るところだろうな。
C++なら桁数を求める数値計算をさせるだろう。

608 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 07:41:51 ]
えっ

609 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 08:11:58 ]
>>607
c=0の位置間違えてる限り、何やってもw


610 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 08:13:11 ]
変数を初期化する場所が違うだけ

611 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 08:27:14 ]
for(int a=1; a<=5; a++)
  Console.WriteLine(new String('*', a));



612 名前:474 mailto:sage [2009/06/17(水) 17:30:18 ]
>>474です。遅い原因がわかりました。
昔 ColumnHeaderHeightSizeMode = AutoSize
今 ColumnHeaderHeightSizeMode = DisableResizing
プロパティ1つ変えたら10倍速くなりました。

613 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 19:48:37 ]
へぇーすごいじゃん。

614 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 19:51:19 ]
特許でガッポガッポ

615 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 22:59:12 ]
Tagプロパティって無い方がよくね?

616 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:02:36 ]
== と != をオーバーライドしてたんですが、
やっぱりオーバーライドをやめることにしました。
ついては、オーバーライド
してた演算子を全部検索して、
Equals に書き換える必要が生じたんですけど、
どこでオーバーライドされた演算子が使われているか検索する
方法はないでしょうか?




617 名前:デフォルトの名無しさん [2009/06/17(水) 23:04:39 ]
消してコンパイルしてみたら

618 名前:デフォルトの名無しさん [2009/06/17(水) 23:07:08 ]
参照型だと消してもコンパイル通るのか
右クリックで「すべての参照の検索」は?

619 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:11:36 ]
プログラミング自体5ヶ月の経験の初心者です
javaを2ヶ月勉強した後に、仕事で3ヶ月前からC#触っています
いろいろな方から聞いたのですが、参照型の値の比較をするときはjavaの時はequalsを使うのは当たり前でしたが、
C#だと==で問題ないって方が多いのですが、これはどういうことなのでしょうか?
C#はそもそも参照型の概念がjavaとは違うのですか?
==を使うとき、C#だと値自体の比較がされるということなのでしょうか?

620 名前:616 mailto:sage [2009/06/17(水) 23:15:25 ]
>>617
すべての参照の検索だと拾ってくれないんですよ。
困った。

621 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:19:09 ]
>>619
== をオーバーロードして値比較にすること「も」できる String とかだな
作法として == をオーバーロードする場合は Equals もオーバーライドして == と同等の動きをするようにする
必ず参照を比較したい場合は Object.ReferenceEquals を使う



622 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:23:06 ]
>>619
java知らんけど参照型の比較は言い換えれば参照情報の比較なんだから
==で問題無いかどうかって問題か?
例えばあaとbに1を入れて比較しても参照位置が違えばfalseになるってだけ

623 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:31:50 ]
>>616
オーバライドしたままで例外を投げるようにして実行する
例外が出なくなったらオーバライドやめる

624 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:34:59 ]
>>619
JavaもC#も==とequals/Equalsの根底は同じ:
==は参照が同じか比較する。equals/Equalsも基本そうだが、オーバーライドして値の等価比較にもできる。

ところが、C#の場合、==演算子を直接、多重定義できる。
特にStringなんかでは型安全ということで、==演算子が推奨されている。
sonic64.com/2006-02-02.html

しかし、そういう一部を除いてC#でも基本的にはEquals推奨だよ。
msdn.microsoft.com/ja-jp/library/bsc2ak47.aspx
msdn.microsoft.com/ja-jp/library/ms173147.aspx

625 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:35:28 ]
>>616
これがドンぴしゃだと思うけどどう?
msdn.microsoft.com/ja-jp/library/system.obsoleteattribute.aspx
コンパイル時警告になるはず。

626 名前:デフォルトの名無しさん [2009/06/17(水) 23:38:16 ]
>>619
Stringのように値を変更できない型に限り、参照型でも==をオーバーロードしてよい

627 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:40:01 ]
演算子がオーバーロードできない言語は糞。

628 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:44:13 ]
immutableなオブジェクトは、別々に代入されても、最適化によって
実体は同じになっている可能性が高い。Cの文字列リテラルがそもそも
そういう傾向だったし。
s1 = "abc"; s2 = "abc"; と書いたときに、s1 == s2が
真かどうか分からないんじゃ使い物にならないので、内容が同じなら
同一オブジェクトかどうかは問わず真にしよう、という趣旨だと思う。
ただし、単に思いついただけなので、根拠はない。

629 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:45:54 ]
結構前にも同じような話したことあるようなないような

630 名前:デフォルトの名無しさん [2009/06/17(水) 23:46:41 ]
あってるよ
それを保証するために>>626のガイドラインがある

631 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 00:05:37 ]
>>628
> immutableなオブジェクトは、別々に代入されても、最適化によって
> 実体は同じになっている可能性が高い。
ここに関してはimmutableなオブジェクトでなくリテラルの話だよね
動的に作られたimmutableなオブジェクトがそうなる可能性は高くないと思うよ
そんな最適化はむしろ効率が悪そうだ



632 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 03:00:46 ]
まさかのflyweightパターン全否定
関係ないけどさ

633 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 04:01:30 ]
関係なさ過ぎだろ

634 名前:616 mailto:sage [2009/06/18(木) 08:26:40 ]
>>625
ビンゴ!Obsolateにこんな使い方があったとは。
勉強になりました。

ありがとう♥

635 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 09:36:53 ]
>>623
ifとかcaseで滅多に実行されないレアケースがあるから
いつまでも削除できない

636 名前:デフォルトの名無しさん [2009/06/18(木) 12:09:44 ]
質問いいですか?
ウェブ上で画像をバイナリとしてデータベース上にアップして
そのバイナリファイル(JPG画像)を
response.binaryWrite(file.content)って呼び出してウェブ上(displayJPEG.aspx)に画像だけを
表示させたいんですけど、
どうやっても真っ白なバックグラウンドに、そのaspxファイルのURLしか表示されません。
しかもそのURLがJPG画像?みたいになってて、テキストじゃないんです。
何が何だか良く分からなくてお手上げ状態なんでアドバイスください・・・
画像のアップロードの仕方に問題があるのでしょうか?

637 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 13:02:30 ]
file.contentはバイト配列?

638 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 13:06:35 ]
いったんファイルに出してみて、それを直接URLで読んだらどうなる?
ヘッダとかだいじょうぶ?

639 名前:デフォルトの名無しさん [2009/06/18(木) 13:13:53 ]
>>637
バイト配列です。
>>638
いったんファイルに出して直接URLで読むっていうのはどういう意味でしょうか・・・?
初心者すぎてすみません・・・


コードはこんな感じです。

public partial class displayThumb : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

projectFilesTableAdapter filesTableAdapter =
new projectFilesTableAdapter();

ProjectDataSet.projectFilesDataTable files =
filesTableAdapter.GetProjectWithContentByFileID(37);

ProjectDataSet.projectFilesRow file = files[0];

Response.ContentType = "image/jpg";

Response.Write(file.projectContent);
}
}




640 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 13:17:59 ]
Response.Write?

641 名前:デフォルトの名無しさん [2009/06/18(木) 13:21:53 ]
>>640
すみません、binaryWriteです。
でもbinaryWriteでも表示されませんでした・・・
これってもしかしてデータが壊れてるとかそういうのが原因でしょうか?
projectContentはデータタイプをbinary(7000)って設定したんですけど
2kb以上の画像をアップして表示させようとしてます。
これが原因だったりしますかね・・・



642 名前:デフォルトの名無しさん [2009/06/18(木) 13:26:44 ]
>>641
すみません訂正です。2kbー>20kb以上
なんかもうテンパっててすみません

643 名前:デフォルトの名無しさん [2009/06/18(木) 13:44:07 ]
すいません自己解決しました・・・

644 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 13:44:41 ]
なんで7KB上限のに20KB入れようとするんだ

645 名前:デフォルトの名無しさん [2009/06/18(木) 13:51:03 ]
先生・・・デストラクタが恋しいです・・・
struct使うと簡単にDisposeの後処理できるのかなぁ

646 名前:デフォルトの名無しさん [2009/06/18(木) 13:51:56 ]
C# 2008 express edition をインストールしたのですが
ライセンス登録が出来なくて困っています
Windows Live ID を作成し、登録画面にサインインできるのですが
サインインした先で
画面が読み込み中(画面中央で点が丸く点滅)のまま止まっています
日付を変えて試みても結果は同じでした
解決方法があれば教えてください
よろしくお願いします

647 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 14:07:15 ]
>>646
ISOイメージ落としてCDに焼いて、CDからインストールすれば登録不要。

648 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 14:12:46 ]
火狐などの別ブラウザでやってみ

649 名前:デフォルトの名無しさん [2009/06/18(木) 14:25:46 ]
>>644
そこが狙いだったんでしょうね。
今回はまんまと引っかかっちゃったって感じです・・・

650 名前:646 mailto:sage [2009/06/18(木) 14:40:26 ]
>>647
>>648 様 ありがとうございました
ブラウザにChromeを使っていたのが原因だったようです
I.Eで無事に登録することができました

651 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 14:47:15 ]
Chromeじゃあ仕方ないな



652 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 14:55:45 ]
そりゃそうだ ハッハッハッ

653 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 15:29:58 ]
俺前やったときfirefoxでも止まったような気がする

654 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 15:30:28 ]
Windows 7 DLしようとするとIEだと646のいう画面でリロード繰り返しの半無限ループ
になってDLできないが、FFでやるとすんなりDLできた。

655 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 15:48:03 ]
そりゃそうだ ハッハッハッ

656 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 16:11:03 ]
リストボックスにファイルをリストして、ファイル名のみを表示したとき、
listbox.SelectedItemからそのファイルのあるフォルダを探すには、
再度検索しないとだめでしょうか? フルパスは捨てられちゃう?

657 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 16:15:58 ]
適当に作ったクラスにフルパスとプロパティ作って
そのリストとか配列をDataSourceにするといいよ あとDisplayMemeber

658 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 16:17:24 ]
×フルパスとプロパティ
○フルパスと名前の2つのプロパティ

659 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 18:05:12 ]
Visual Studioでプロジェクトのプロパティを開くとアイコンを登録できますが、
ここでは何ピクセル、何色のアイコンを用意するのがベターなのでしょう?

また、OSが勝手に縮小や減色するのを避けるために、あらかじめ小さく作った
複数のアイコンを埋め込む方法も教えてください。

660 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 18:41:28 ]
アイコンを複数入れる方法はなんとなくわかりました。
エクスプローラーで表示される可能性のあるアイコンの種類の一覧って
どこかにありますか?

661 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 20:03:32 ]
アプリケーションのメインフォームを取得する方法を教えていただきたい。



662 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 20:09:06 ]
Application.Runする前に静的フィールドに保存しとけ、とか
ApplicationContext 作って管理しろ、とか
じゃない話?

663 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 20:26:16 ]
ライブラリに組み込みたいのでRanに渡したフォームを簡単に
取得できるものがあればと思ったんですが、ApplicationContext
を調べてみます。
ありがとう

664 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 21:54:45 ]
>>660
一つのアイコンファイルに複数の大きさの画像が格納されててエクスプローラが自動選択で表示してるだけだから、
VSでどうこうするんじゃなくてそういうアイコンを作れ

665 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 22:02:21 ]
256x256,48x48,32x32,16x16が各8bit,32bitあれば事足りるらしい
事足りるっつーには多いが

666 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 22:33:46 ]
>>645
struct使っても状況が良くなるとは思えないけど、
usingも慣れればそんなに悪くないよ。

667 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 23:27:18 ]
>>664-665
わかりました。
アイコンが8個入ったファイルを作ることにします。

668 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 23:45:20 ]
>>665
無い大きさで表示するときはどうなるの?

669 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 23:49:47 ]
小さいのを拡大するなり大きいのを縮小するなりするんだろ
96表示時は256のを縮小するらしいぞ

670 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 23:57:25 ]
というか 256x256 は PNG 形式である必要があるはずなんだけど
それ VS で作れたっけ?
駄目なら Vista 対応とか PNG 形式対応とかそんな感じのアイコン
エディタ使わないといけないでふよたぶん。

671 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 00:28:41 ]
>>670
PNGならmspaintでいいんじゃないか?



672 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 00:50:10 ]
PNGそのものじゃなくて、icoファイルの中にPNG形式のを突っ込むのな

673 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 02:09:28 ]
>>657
サンクス。やっぱり自分で保存しないと捨てられちゃうのね。


674 名前:デフォルトの名無しさん [2009/06/19(金) 03:39:28 ]
一つのボタンをクリックするごとに同じ場所に重ねてあるラベルを順々に最前面に表示させる方法を教えてください。

説明文を作ろうとしていて、ボタンを押すごとに説明文が次のものに切り替わるようにしたいです。

675 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 03:42:13 ]
ラベルのText変更すりゃいいような気がするけど
バインディングとか

BringToFront

676 名前:デフォルトの名無しさん [2009/06/19(金) 04:12:17 ]
>>675

ラベルを書き換えればいいんですね。
やってみます。

677 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 05:13:59 ]
ソリューションエクスプローラで
Form1csにForm1.Designer.csが付いてるようになってるけど、
自分で追加したClass1.csに他のソースファイルを付けるにはどうすればいいの?
ドロップできないし、partialにしてもそうならないんですが

678 名前:デフォルトの名無しさん [2009/06/19(金) 05:29:13 ]
コンボボックス内のアイテムを選択すると、指定したラベルが表示されるようにするにはどうしたらいでしょうか?
コンボボックスはDropDownListで使います。

679 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 05:36:50 ]
>>677
昔csprojファイルを直にいじったらできたような記憶がある
たしかこれと同じようにすればよかったと思う
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>

680 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 05:44:53 ]
>>678
ラベルを配列かList<Label>にでも入れといて
SelectedIndexChangedイベントが発生したら
そのインデックスに対応するラベルを表示

681 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 05:58:23 ]
>>679
<DependentUpon>で付けるみたいですね
ありがとうございました



682 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 09:06:55 ]
VS2008 SP1です。

INotifyPropertyChanged を実装したクラス「Sample」を
ジェネリックの List<Sample> に2個ほど入れ、
DataGridView の DataSource に突っ込んだところ
みごとにバインドされました。

しかし、コードでSampleクラスの値を変えても
DataGridView のフォーカスのある行しか値が更新されません。
すべての行(この場合2行)が更新されるにはどうすればよろしいでしょうか?


683 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 09:08:12 ]
>>682 のコードです。

class Sample : INotifyPropertyChanged
{
public Sample
{
}
private bool _count;
public bool Count
{
get { return _count; }
}
private DateTime _date;
public DateTime Date
{
get { return _date; }
}
public void Update()
{
_count++;
_date = DateTime.Now;

if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Count"));
PropertyChanged(this, new PropertyChangedEventArgs("Date"));
}
}
#region INotifyPropertyChanged メンバ
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}

684 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 09:09:44 ]
>>682 の実行コードです。



// 2つほど入れる
List<Sample> sampleList = new List<Sample>{ new Sample(), new Sample };



dataGridView1.DataSource = sampleList;



// スレッドで定期的に更新する
foreach (var item in sampleList)
{
item.Update();
}

685 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 09:56:41 ]
IBindingListが必要なんでList<T>の代わりにBindingList<T>を
あとスレッドでって言ってるけどInvoke/BeginInvokeは大丈夫か? データソースいじるときも同期が必要だぞ

686 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 10:35:28 ]
>>685
BindingListに変更し、Invokeメソッドで実行してみましたが、

PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Count"));

GUI上では DataGridView の現在選択中の行しか値は更新されませんでした orz

687 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 10:39:49 ]
>>685
いえ、全部の行が更新されています!
ありがとうございました!orz

688 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 10:42:53 ]
どうでもいいがそのInvokeじゃないぞ
Control.Invokeの方

689 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 10:53:33 ]
>>688
手順としては

1.Sample クラスでプロパティの変更を感知
2.?
3.DataGridView または DataGridView の所属する Form で
Control.Invoke(?) を呼び出す。

ということでしょうか?

690 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 11:01:42 ]
Updateの呼び出しそのものをInvoke経由で
バインディングされてるオブジェクトは扱いも慎重にしないとダメよ

691 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 11:16:33 ]
C#でのスレッド間同期制御について教えて欲しいんだけど、先にソースを。

//C#での実装(失敗、デッドロックする)
//※インデントに全角空白*2を使用
public class ThreadMain{
  private EventWaitHandle lockObj;
  public ThreadMain(EventWaitHandle lockObj){
    this.lockObj = lockObj;
  }
  public void run(){
    lock(lockObj){ //ここには入れない
      Console.WriteLine("sub in sync");
      lockObj.Set();
      Console.WriteLine("sub out sync");
    }
  }
}
public void test(){
  EventWaitHandle lockObj = new EventWaitHandle(false, EventResetMode.AutoReset);
  ThreadMain tm = new ThreadMain(lockObj);
  Thread t = new Thread(tm.run);
  lock(lockObj){
    t.Start();
    Console.WriteLine("main in sync");
    lockObj.WaitOne(); //ここで待機中の間だけlockObjを解放したい
    Console.WriteLine("main out sync");
  }
}



692 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 11:17:29 ]
//javaでの実装(期待通りに動く)
//※インデントに全角空白*2を使用
public class Test{
  public static class ThreadMain implements Runnable{
    private Object lockObj;
    public ThreadMain(Object lockObj){
      this.lockObj = lockObj;
    }
    public void run(){
      synchronized(lockObj){
        System.out.println("sub in sync");
        lockObj.notifyAll();
        System.out.println("sub out sync");
      }
    }
  }
  public static void main(String args[]) throws InterruptedException{
    Object lockObj = new Object();
    ThreadMain tm = new ThreadMain(lockObj);
    Thread t = new Thread(tm);
    synchronized(lockObj){
      t.start();
      System.out.println("main in sync");
      lockObj.wait(); //待機中はlockObjのモニタは解放されている
      System.out.println("main out sync");
    }
  }
}

693 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 11:18:59 ]
上(>>691)のプログラムで、
main in sync
sub in sync
sub out sync
main out sync
というシーケンスになるようにしたいんだけど、どうしたらいいだろう?

期待している動作は、メインスレッドがWaitOneに入るときlockObjのロックが解放されて、
サブスレッドがSet()して、さらにlock文から抜けた後、
mainがlockObjのロックを再獲得してWaitOneから復帰するようなイメージ。

Visual C# 2005 Express SP1 (.NET 2.0)

694 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 11:29:32 ]
lockとEventWaitHandleは全然別物なんだからそりゃうまくいくわけないな
lockはMonitorの糖衣構文だから、Monitor.WaitとMonitor.Pulseを使えば

695 名前:693 mailto:sage [2009/06/19(金) 11:29:40 ]
あ、待機はスピンロックでなければ、EventWaitHandle,lock以外でも良いです

696 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 11:30:38 ]
>>694
レスサンクス
ちょっとやってみる

697 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 11:38:20 ]
うほ出来た
Monitorクラスはlock文用のEnterとExitしか無いと思い込んでた^q^
>>694 ありがとう

(変更点)
//EventWaitHandle lockObj
Object lockObj

//lockObj.Set();
Monitor.Pulse(lockObj);

//lockObj.WaitOne();
Monitor.Wait(lockObj);

698 名前:デフォルトの名無しさん [2009/06/19(金) 13:30:18 ]
VC++のCTreeCtrl(MFC)
CTreeCtrl::GetEditControl
に相当する処理を、
C#のTreeView
で探しています(VS2005 .NET Framework 2)。
なんとかして、エディット コントロールのハンドルが欲しいんですが、
どうしたらいいか、わかる人おられませんか?


699 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 14:46:48 ]
道路標識みたいなアイコンのついたダイアログってどうやって出すんでしょう?
フォームを自作しなくても、既製の部品があると読んだ覚えがあるんですが、
どうしても思い出せません。

こういうやつです。
ttp://f.hatena.ne.jp/images/fotolife/o/os0x/20080512/20080512223830.png

700 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 14:53:41 ]
MessageBox.Show("text", "caption", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

701 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 14:54:07 ]
MessageBoxIcon



702 名前:699 mailto:sage [2009/06/19(金) 15:03:01 ]
ありがとうございます。助かりました。

703 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 16:10:51 ]
INTもクラスなんだなー
int x=new int();
x=12;
ってやってもちゃんとできるね。

704 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 16:26:27 ]
クラスじゃないです

705 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 16:58:00 ]
とりあえずINTとIntとintは違う物なので
きちんと書き分けないと話が通じなかったりするぞ

706 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 17:00:17 ]
object i = 3;

なんてこともできます。
実際はboxingでInt32に変換されてるだけですが。

707 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 17:04:58 ]
Int32に変換? 「から」だろ?

708 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 17:11:03 ]
class Program {
static void Main(string[] args) {
object i = 3;
Console.WriteLine(i.GetType().FullName);
}
}


709 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 17:12:57 ]


namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void Func(ref int x){
x=10;
}

private void Form1_Load(object sender, EventArgs e)
{
int y;
this.Func(ref y);
}
}
}

これコンパイルできない
引数に10を代入する関数Func作ったが
this.Func(ref y)のyがグローバルとか意味輪からんことでてきてる
どうすればなおせる?

710 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 17:15:32 ]
エラー CS0165: 未割り当てのローカル変数 'y' が使用されました。

711 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 17:16:04 ]
refじゃなくてout使っとけ
それかyに初期値代入しとくか

つかエラーメッセージぐらいちゃんと書け



712 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 17:45:54 ]
豆知識
ダイアログがアクティブな状態でCtrl+Cを押すと
エラーメッセージがクリップボードに入るぞ

713 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 19:10:26 ]
常識だろjk

714 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 22:32:06 ]
練習として、例のごとくテキストエディタを作っているのですが、「切り取り」「コピー」「削除」の表示について質問です。
テキストが選択されている間のみ上記のメニューを選択できるようにしたいのですが、上手く表示されません。

具体的には、
TextBox内のテキストを選択している状態で編集メニューを開いても上記のメニューは選択できる状態にはならず、
右クリックでメニューを表示してから編集メニューを開くと上記のメニューが選択できる状態になります。
右クリックをした瞬間に何かを呼び出しているんでしょうか?

ちょっとわかりにくいでしょうか・・
ご教授願います。

715 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 23:23:00 ]
>>714
メニューを開かれるタイミングで調べるんじゃなくて、
TextBoxの選択が変わったときにメニューのプロパティを書き換えるんだ。

716 名前:デフォルトの名無しさん mailto:sage [2009/06/19(金) 23:24:18 ]
メニューってContextMenuStripなのかMenuStripなのか
どっちにしろOpendイベントで判定すればいいと思うけど

717 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 01:06:17 ]
string[] line = text.Split('\n');
string[] cell = line.Split('\t');
と書いたとき、
for (int i = 0; i < line.Length; i++) {textBox[i].Text = lineView[i];}
みたいに行は書けるけど、[i]行目のcell[0]はなんて書けばいいのでしょうか?

718 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 01:08:21 ]
>string[] line = text.Split('\n');
>string[] cell = line.Split('\t');

どうみてもエラーです

719 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 01:23:29 ]
列数が固定(widthとする)なら

string[] cells = table.Split(new char[]{'\t','\n'},StringSplitOptions.None)

ここでx列y行はcells[x+y*width]

720 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 01:53:38 ]
なるほど。
cells[0] | cells[1] | cells[2]
cells[3] | cells[4] | cells[5]
と左から順番に設定するんですね!
これはすごい。
サンクス!!!


721 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 01:58:09 ]
あんまりアホなこと教えないであげてください



722 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 02:03:07 ]
微笑ましいじゃないか。

723 名前:714 mailto:sage [2009/06/20(土) 02:57:30 ]
>>715
できました!
ありがと〜

Opendイベントとやらも調べてみます

724 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 02:59:17 ]
どういたしまして

725 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 03:09:50 ]
スレチな質問なんですがどこで聞いたら良いのか分からないので
ここで質問させてください。

Visual Studio 2008 StdのC#でGUIなアプリケーションを作成しているのですが、
ファイルを参照するボタンに画像を貼り付けたいと思います。

凝った画像ではなく、エクスプローラの「ファイルを開く」メニューに表示
されているようなアイコンで構わないのですが、どこかで配布されているの
でしょうか?

それとも皆さん毎回オリジナルの画像を作っているのですか?

726 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 03:18:13 ]
初心者スレなのでアホな質問にも回答するが、スレ違いはお断り

727 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 03:27:21 ]
>>725
MDI親フォームのリソースファイルの画像を使うとか。

728 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 03:29:33 ]
シェルアイコンに微妙なセンスのアイコンがいっぱいある。

729 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 03:34:12 ]
>>726
すまんです。

>>727-728
Windowsのシステムアイコンを抜き出して使うと言うことでしょうか?
アイコンの抜き出し方は知ってますが、やはりまずいですよね?


ここで聞けというスレがあれば誘導していただけるとありがたいです・・・

730 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 03:36:04 ]
スレ違いだってわかってるなら汎用質問スレいけよカス

731 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 03:39:24 ]
c#とVB両方インスコしちゃったら
ソリューションファイル開くときに
VisualC#とVBどっちで開くか聞いてきてうざい
VBけしたほうがいい?



732 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 03:45:03 ]
>>731
>>726


733 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 03:57:11 ]
>>725
インスコ先探せばVS2008ImageLibraryってのが多分どっかにある。無くても確かMSDNから落とせる。
>>731
.slnの関連付けを変えればいい。

まあ、無駄レス付けるくらいなら答え付けてもいいんじゃねってことで。
どこで聞いていいのか分らんなら汎用スレがある。次からこっち行ってね。

スレ立てるまでもない質問はここで
pc12.2ch.net/test/read.cgi/tech/1240877154/

734 名前:727 mailto:sage [2009/06/20(土) 04:13:29 ]
>>729
ソリューションの新しい項目を追加でMDI親フォームを追加すると
アイコンついたボタンが最初からフォーム上にあるからその画像を使ったらって意味。
その画像の元はフォームのリソースファイルにある。

735 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 04:49:24 ]
Visual Studio 2008 Part 17
pc12.2ch.net/test/read.cgi/tech/1245309571/

こっち行け

736 名前:デフォルトの名無しさん [2009/06/20(土) 06:11:38 ]
>>730
お前もいい加減スルーを覚えろよクズ

737 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 06:19:20 ]
VS2003しか知らんが確かアイコン集が入っていたはず。
Common7フォルダだったかな?
最近は付いてないのかな?

738 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 06:34:03 ]
あるスレッドで設定した変数を他のスレッドでも使うにはどうしたらいいでしょうか?
具体的にはBackgroudWorkerで設定した変数をstaticの変数に入れたいのです
別のスレッドではstaticが共有されないみたいなので行き詰ってしまいました。お願いします

739 名前:デフォルトの名無しさん [2009/06/20(土) 06:45:42 ]
silverlightでデータベース上に存在するバイナリファイルを呼び出してウェブ上で再生したいんですけど、どうすればいいのか分かりません。
誰かやり方or良いサイト知ってれば教えてください
英語でも構わないっす

740 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 08:07:50 ]
>別のスレッドではstaticが共有されないみたい
そんなわけがない。
もしくは何か勘違いしてる。


741 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 08:24:41 ]
>>740
なにか言葉足らずだったかもしれません、すいません
www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=37022&forum=7
ここに共有されないと載っていたので
もう少しいろいろやってみます



742 名前:デフォルトの名無しさん [2009/06/20(土) 09:24:56 ]
C#初心者です。
ConvertとかString.Formatとか、特にnewで作成してないのに
使用できるクラスのメソッドがありますが、自分でもそんなクラスを作りたいのですが
どうすれば良いですか?

743 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 09:34:17 ]
public int Method(int value){...}

public static int Method(int value){...}

744 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 09:36:22 ]
>>741
お、おまえは何を言っているのだ??


745 名前:デフォルトの名無しさん [2009/06/20(土) 09:42:21 ]
742
クラスがpublicでなかったようです。解決しました。

746 名前:デフォルトの名無しさん [2009/06/20(土) 09:45:00 ]
>>743
ありがとうございます。メソッドをstaticにしてみます。

747 名前:738 mailto:sage [2009/06/20(土) 10:13:29 ]
public class userData
{
static public int a;
static public string b;
}

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
userData.a = 10;
userData.b = "abc";
}

private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
MessageBox.Show("a : " + userData.a + ",b : " + userData.b);
}

わかりにくくてすいません
こんな感じでaとbを表示させたいのですが、どこがいけないのでしょうか

748 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 10:19:36 ]
>>747
backgroundWorker1のRunWorkerCompleted イベントを作って、
その中で MessageBox.Show() を叩けば幸せになれるお。

749 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 10:25:41 ]
>>748
ありがとうございます
表示できましたが、このaとbをBackgroundWorker以外でも使いたいのですが、これだとだめですよね?

750 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 10:34:29 ]
>>749
俺はそういうことをしないようにしてるから、大正解の方法が分らんw
BackgroundWorkerの 「IsBusy プロパティが真の間は処理を待つ」とかかな?

751 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 10:35:57 ]
>>750
そんなこと言ったらビジーループで待ってしまうじゃないか



752 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 10:39:25 ]
>>750の補足

というか、BackgroundWorkerの処理完了後の動作はRunWorkerCompleted内に書けば全て解決。
button1は別スレッドを始動させるためだけのボタンと考えればいいんじゃないかな

>>751 本末転倒だなorzwww

753 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 10:55:32 ]
そもそもバックグラウンドで処理するってのがどういうことか全然分かってないのかな?


754 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 11:06:57 ]
順番に処理したいんなら普通に関数として呼ぶよな

755 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 11:07:11 ]
一定時間ごとに前のBackgroundWorkerで設定したa,bを使ってまた処理させるみたいな感じなんですが、ちょっとやってみます

>>753
別スレッドで処理するってことくらいしかわかりません

756 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 11:11:18 ]
>>754
結構時間がかかる処理なのでBackgroundWorkerでやってます

757 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 11:18:25 ]
お前のレベルだとちょっと危ないな。
共有データの更新タイミングの同期とか、
何も考えてないってか気をつけなきゃならないって事も
何も分かってないだろ?


758 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 11:22:21 ]
危ないだろうけど、でも必要ならやるしかない。
BackgroundWorkerの記事はネット上にあるはずだから、
自分で調べてどういうところに気をつければいいか勉強すればいいじゃない。

759 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 11:37:02 ]
>>756
どんなに時間がかかろうと、結果が出るまで次に進めなくて、
ただ待ってるだけならバックグラウンドにする意味ナッシング。

760 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 11:50:14 ]
>>747
public static volatile int a;
public static volatile int b;

a, b に volatile をつけると、あるスレッドで更新すれば別のスレッドに更新が伝わるようになる。

逆にvolatileのついていない変数では、あるスレッドで変更しても、その変更が別のスレッドにすぐに伝わるわけではない。


761 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 12:05:02 ]
ここにあるはずのサンプルプログラムがほしいのですが、
ページの中に「ソースの表示」とか「ダウンロード」ボタンが見あたりません。
どうやって入手すればいいんでしょう?
msdn.microsoft.com/ja-jp/library/ka7h9fze.aspx



762 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 12:23:23 ]
>>759
進めなくても、キャンセルくらいはできて欲しい
あと、処理中に描画が止まる糞設計もやめて欲しい

763 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 12:34:14 ]
>>760
適当なこと書くな。
だいたいこの場合だとvolatileとかいう問題じゃないだろ。


764 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 12:35:41 ]
>>761
なんでここに質問するの?バカなの?死ぬの?

765 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 12:47:08 ]
>>763
知らないならだまってればいいのに。

766 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 12:50:09 ]
>>726
だまってろよw

767 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 12:50:42 ]
単一のプロジェクト内で、特定の関数とかメソッドだけ
バックグラウンドにするメリットってあるの?
もちろん結果が出るまで待つ場合。

とりあえずバックグラウンドにするだけじゃ、
プロセスの優先順位は変わらないよね?

768 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 12:59:05 ]
今回のはvolatileとかいう問題じゃなくて、
aとbを同時に更新(あたかも)する必要がないか、
更新タイミングの同期はどうするのかって方向であって、
この例でvolatile云々言うのは大抵的外れ。


769 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 13:05:28 ]
だいたい、実質的にvolatileが要るのはもうちょっと状況が限られるよ。
必要な場合はあるけど、volatileつけないと別スレッドから見えないかっていうとそんなことはない。
まあ言い方に色々誤弊はあるけどね。


770 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 13:09:48 ]
>>761
ローカルのヘルプからたどればいいのに・・・
それにそこのリンクからもダウンロードできるじゃないか

そこのリンク→方法 : サンプルを表示およびダウンロードする→Microsoft Download Center にアクセスします。

771 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 13:11:03 ]
>>767
応答なしってタイトルバーに出たりするとユーザは不安になるもんだ
ちっとも経過を報告しないプログレスバーが行ったり来たりしてる方がマシ
キャンセルもできればなお良し



772 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 14:29:09 ]
CLR2.0では暗黙に全ての書き込みがvolatile書き込みな件

773 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 14:44:36 ]
double-checked lockingが使えるメモリモデルになってるって話か?

それ以上の意味なら、ソースが欲しい

774 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 14:46:03 ]
初心者ネタじゃないからよそに行け

775 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 21:53:56 ]
C#ではクラス名のあとに.をつけたら
いろいろ候補でるよね

Button1.って入力したら
ClickとかTopとかずらずらって。
あの候補のことなんていうんだっけ?

776 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 21:56:25 ]
入力候補

インテリセンスの機能だな。

777 名前:デフォルトの名無しさん mailto:sage [2009/06/20(土) 23:55:37 ]
VS2008EEってセットアッププロジェクト作成機能ないの?

778 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 00:47:07 ]
プロジェクトをすべて保存にしたら
フォルダが
binとobjにわかれていて
それぞれにdebug releaseの二つに分かれてて
全部で4つの同じexeがあるんだが
なんでこんなことしてんの?
20MBのexeを4つも作られたら容量圧迫してかなわん。

bin/obj
debug release
どのexeが正しいexeなの?

779 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 00:52:51 ]
binが出力結果 objは中間ファイル置き場
DebugとReleaseは言わずもがな

780 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 01:53:10 ]
20MBもいくほうがおかしい。
容量圧迫ってどんだけきつきつでやってんだよ。


781 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 03:25:53 ]
exeが20MBって時点で、C#じゃなくてMFCアプリかなんかじゃね?



782 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 03:53:12 ]
ベクタライズ最適化という言い方は中途半端だったかもしれない。
gccにおけるauto-vectorazationのことで、一般的には自動ベクトル化と訳されているようだ。
gcc.gnu.org/projects/tree-ssa/vectorization.html

本質的にはループを展開して並列実行させることだからSIMDが無くても
複数のレジスタに分ける方法だってあるわけだが、
SIMDに対応してるならそれに越したことは無いだろうな。

783 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 03:55:19 ]
誤爆した。スマン。首吊ってくる。

784 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 09:27:29 ]
WebBrowserコントロールのDocumentTextプロパティでWebページを表示させているのですが
読み込むときに鳴るカチッという音を消したい場合はどうしたらいいでしょうか

785 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 09:37:05 ]
消せないっぽい。

786 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 10:30:38 ]
まじか。どもです

787 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 10:55:02 ]
OpenNew して、Document.Write すればいいらしい。
試してないからよくわからんが。

788 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 11:41:24 ]
>>787
そうするとページのURLが存在しないから、そのページはよくても
ほかのページにジャンプするときはフルパスのリンクが必要だな。
で、そのときにカチッと音が出る。

789 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 11:58:52 ]
>>787さんの方法でできました。ありがとうございました

790 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 15:12:23 ]
stringの扱いが分りません。 

変更できないらしいことは分ったんですが、
文字列の受け方がよくわかりません。

こういう場合は、どうすればいいんですか ><

sting param;

if ( xxxx )
param = "THEN"
else
param = "ELSE"



791 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 15:13:45 ]
それは変更してないじゃない。



792 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 15:17:06 ]
それだけだと普通にコードとしても意図としても成立してるが

793 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 15:24:08 ]
>>790
それでおk。
あとは
string param = (xxx) ? "THEN" : "ELSE";
とも書ける。

794 名前:790 mailto:sage [2009/06/21(日) 15:56:06 ]
レスありがとう

よくわからないから、今度はこうしてみたんですけど、
whileの外で使うと値が入ってないんです。><

main(){

char [] param = null;

while( xxxx ){
if ( xxxx ) then
param = THENストリング.ToCharArray();
else
 param = ELSEストリング.ToCharArray();
}

Console.WriteLine("Paramの中身", param);
}

795 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 15:58:32 ]
まずはデバッガの使い方覚えたほうがいい。

796 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 16:01:38 ]
>>795に同意
794は多分ループ内に入ってないんだろうなぁ

797 名前:デフォルトの名無しさん [2009/06/21(日) 16:03:20 ]
中途半端に隠さずに貼るなら全部貼れ
そしてどういう結果を期待してるのか書け

798 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 17:24:23 ]
> if ( xxxx ) then

thenって?

799 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 17:44:45 ]
webbrowserのリンクをクリックしたらデフォルトのブラウザで開かせたいのですが
red-treasure.com/report/?p=100
上のサイトにあるようなややこしいことしないとできませんか?

800 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 17:48:55 ]
この程度でややこしいってどんだけw

801 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 17:49:03 ]
何がどうややこしいのやら



802 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 17:59:14 ]
>>799
「デフォルトのブラウザーが何か」ってのはOS上のユーザー設定を参照しないといけないことだからなぁ。
そこのサイトのコードだけでできるってのは、十分シンプルだと思う。


803 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 20:36:32 ]
BeforeNavigate とかではダメなんか?

804 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 20:43:30 ]
すでに自分を起動していたら、古いほうのウィンドウを閉じて新しいウィンドウで処理する、というのはどう書くものですか?
Processで自分の名前を取得して終了メッセージを送ったら、(当然のように)自分も終了してしまいました…。
あたりまえか。
多重起動を禁止するのではなく、行いたいです。
アドバイスお願いします。


805 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 20:50:40 ]
基本的な考え方は多重起動禁止と同じだけどね
Mutex の代わりに EventWaitHandle 使う
新しいプロセスはイベント通知するだけでその後は普通に進める
前のプロセスはイベントを受け取ったら終了処理

806 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 21:13:06 ]
俺はMutex取得できた奴がサーバとしてSetPropでWHDLをプロパティ設定。
取得できなかった奴はクライアントとしてGetPropで見つけたWHDLに
WM_COPYDATAで起動パラメータの情報を送信して終了。
サーバはWM_COPYDATAで受け取った情報で処理。

って作ってた。1.1だったからなぁ。

807 名前:806 mailto:sage [2009/06/21(日) 21:17:10 ]
あ、古いほうを終了か。間違えた。すまん。

808 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 21:17:33 ]
古い方を閉じるならもう少し複雑になる。
同時に何個も起動したときにおかしなことにならないようにしないといけないから。

809 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 21:25:25 ]
WHDL ってなんだよ・・・ せめて hwnd とかだろ

810 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 21:27:17 ]
正直、古い方を閉じる理由ってなんなんだろ?

811 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 21:29:23 ]
ごめん、変数名をなんでかそう書いてたんで、そのまま追いかけて読んで
書いちゃったw >>WHDL

・・・マジ、なんでWHDLとか書いてたんだ?自分。



812 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 21:42:07 ]
古い方を閉じるなんてめちゃくちゃなUXだな

813 名前:デフォルトの名無しさん [2009/06/21(日) 22:02:33 ]
.NET や Java などでクラス複製のインターフェースの ICloneable がありますが
ICloneable に対するコピーの実装って
慣例的に シャロウコピー と ディープコピー のどっちなんでしょうか?
それとも特に決まってないのでしょうか?
よろしくお願いします

814 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 22:12:56 ]
特に決まってないな。
どっちかっていうとシャロウコピーな感じもある。


815 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 22:16:13 ]
てゆーかICloneableってまともに機能している場面って見たことねーんだが

816 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 22:22:20 ]
>>813
Javaは知らんが.NETでは特に決まってない。
Cloneは同じ内容だけど別物として振る舞うようなクローンを返せば、なんでもいい。
別にメンバが同じ値であったりそのコピーである必要はない。

817 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 23:44:16 ]
>>805
EventWaitHandleで、
dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=23906&rev=1&no=0&KLOG=2
のページを見つけて、そっくりおなじように実装してみたのですが、古い方は閉じるんだけど、新しいウィンドウも開かない状況です。
う〜む。なにがいけないんでしょう?
>>810
ビューアーのアプリケーションで、表示を自動/手動でリフレッシュしたいのです。外部から手動でリフレッシュするのには、新しいウィンドウを開くのがいちばん楽かと。
>>812
そ…そうかな…。
こういう場合って、どんなふうに実装します?
ところでUXってなに? User eXperience?


818 名前:デフォルトの名無しさん mailto:sage [2009/06/21(日) 23:48:23 ]
>>817
そのウィンドウに更新ボタンを付けるのが一番素直な実装だと思うんだが?

819 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 00:06:00 ]
>>814-816
レスどうもです。
ICloneable について触れてるサイトを何度か見かけたのですが、
どれも MemberwiseClone をそのまま返却する実装をしてたので、
ちょいと気になってました。
ありがとうございました

820 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 00:32:00 ]
自分も更新ボタンがいいと思う。更新(R)、最新の情報に更新(R)・・・と一般的。
二つ目のアプリ実行っていったら、普通はMDIにドキュメント追加とかタブ追加
だから選択ミス。
いつも使ってる(だろう)アプリ見たら分かりそうだけどなぁ。
秀丸、サクラエディタ、VS、IE、Firefox、WinMerge・・・

821 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 00:53:49 ]
>>818、820
なるほど。更新ボタンですか…。
更新ボタンをつけたとして、外部のアプリケーションから手動で押す場合には、どういうメッセージを送ればよいんでしょう?
具体的にはコマンドラインから指示したいのです。
サーバー的なシステムで、アプリケーションの動いているマシンには、キーボードもポインティングデバイスもない(操作しにくい)ためです。
コマンドラインから開いているアプリケーションにメッセージを送ることってできるんですか?
これまでは、コマンドラインからおなじアプリケーションを実行してそれにメッセージを送信させようとしてはまってました。
「コマンドラインから」という条件は必須です。
メッセージを送るためのアプリケーションをもうひとつ作るのも考えたのですが、それならおなじアプリケーションで多重起動を監視するほうがよいかな、と考えて現在に至っています。




822 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 00:59:12 ]
>>821
質問する時は条件を後出しするなよ…

823 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 01:00:12 ]
>>821
まて、それでどうやって二番目のプロセスを起動しようとしている・・・?
どうやって コ マ ン ド ラ イ ン か ら 打 ち 込 む 気 だ。

ネット越しならポート開けて待ってて、誰かアクセスしてきたら更新しろ。

824 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 01:01:45 ]
>>821
コントロールされる側も自作アプリなんだから、
外部(ネットやシリアルポートなど)から操作できるように作っとけばいいじゃん。
適当にポート開けとくとかして。

825 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 01:04:50 ]
ボタン押すだけならハンドル取得してクリックイベントを送るだけ

826 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 01:08:15 ]
相手がWindowsマシンなのにマウスも何もついてなくて、
端末がコマンドラインオンリーてのもずいぶん時代錯誤なシステムだな
両方ともWindowsにしてリモートデスクトップでも使えば一発で解決する問題のような
そもそもどうやってログインしてるんだ?
電源が落ちたらどうするんだ

827 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 01:51:47 ]
>>826
っ MONO

828 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 02:09:48 ]
>>822
すみません。
>>823、824
ポート開けるなんてのは初心者なもので、まだ書けません…。
もうすこし勉強します。
>>825
時代錯誤かどうかはさておき、現実にそういうシステムなので。

ちなみに、次のようにして解決しました。
コマンドラインから起動するときに、
taskkill /im Program.exe
Program.exe
としました。

EventWaitHandleの使い方を覚えられなかったのは残念…。


829 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 05:46:05 ]
プログラムいくつか作っていくと、流用できるクラスが増えて
次のソフト作るの楽になるんだろうなと思ってやってきたけど
結局毎回一から全部作るんだよね
ファイル入出力関連何度作ったことか
やっぱ最初はこんなもの?

830 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 05:50:56 ]
汎用性を持たせられてないからだな

831 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 06:09:35 ]
汎用性ってすごく難しいよね
細かい機能使えるようにすると、元々あるクラス使えってことになるし
簡単に使えるクラスにすると、他のプログラムだと機能がたりなかったり
そもそも何をしているクラスなのかわからなかったりで



832 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 08:07:47 ]
16進数 1FF は 10進数 511なわけですが
プログラムのバイナリデータではFF01という風に逆順に並んでいるんですが
こういうのを10進数511と変換するうまいやり方はないでしょうか?

833 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 08:10:02 ]
char[]に変換して、foreachでstringに変換して連結。

834 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 08:37:32 ]
byte[]に入れて、BitConverter.ToUInt16()

835 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 09:02:05 ]
>>833
>>834
それだと逆順になったままなんですが

FF01を511にする方法が知りたいんです

836 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 09:12:59 ]
良く分からんが、用意されてるメソッドで都合悪いなら自作すれば?

837 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 09:14:11 ]
それがわからないから聞いているんだけど?

838 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 09:19:17 ]
>>835
それ、普通に short で読み込んだら 511 にならない?
Mono か何かでビッグエンディアンな CPU 上で実行してたりする?

839 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 09:24:03 ]
文字列の "FF01" とか?

840 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 09:32:04 ]
>>835
普通逆順になるわけがないんだが、
お前いったいどんなプログラムで確認してる?


841 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 09:42:32 ]
>>838
なるわけないし、ushortじゃないと範囲超える



842 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 09:46:43 ]
>>840
どういう意味?

あるアプリをバイナリ編集したいんだけど
数値の部分だけがFF01と反転している
そのアプリのバイナリデータを取り込んで0x01FFつまり511とテキストボックスなんかに表示したいんだけど

843 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 09:47:01 ]
>ushortじゃないと範囲超える
くわしく

844 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 09:50:14 ]
>>843
short=0xFF01;
でやればわかる

845 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 09:53:40 ]
で、同じようにDWORDの数値も本来の数値に変換したいんだけど
簡単な方法ありますか?

846 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 09:54:44 ]
>>844
何言ってんだお前は。
今の値はそうじゃないだろw


847 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 09:55:38 ]
>>842

byte[] data = {0xFF, 0x01};
Console.WriteLine(BitConverter.ToInt16(data, 0));

512って出るだろ?
出たならお前の読み込むプログラムの方がおかしいってこった。

848 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 09:57:40 ]
ちがう511のまちがい。

>>845
これで分かるだろ。


849 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 10:04:45 ]
>>847
おおおおおおおおおすげーーーー
なんで逆さまなのに511って出るんだ・・・

850 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 10:06:28 ]
>>846
今の値がどうとかに関係なくWORDを読み込んで数値に変換するわけなんだからshortじゃだめでしょ

851 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 10:09:21 ]
>>834
結局これだったわけねww
ありがとう



852 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 10:15:19 ]
範囲外とか言い出すやつが何言っても無駄

853 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 10:17:55 ]
>>850
そもそも今の会話からは符号付きかありかなんて読み取れないのに、
いきなり、>>841とかいいだすお前がおかしいわ。


854 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 10:20:37 ]
こういうのは「バイトオーダー」とかのキーワードを知ってればすぐ答が見つかるんだよな
それを知らない時点で敗北決定

855 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 10:21:16 ]
>>832
>プログラムのバイナリデータではFF01という風に逆順に並んでいるんですが
ここでちゃんとWORDデータを変換すると言っているんだから
できるひとは>>834がすぐ出るでしょ
WORDデータに対してshort持ってきちゃうなんて世間知らずもいいとこだ

856 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 10:22:42 ]
なん…だと…


857 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 10:24:15 ]
>ここでちゃんとWORDデータを変換すると言っているんだから
どこだよっ

>>832をどう見ても符号付きか否かは不明。


858 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 10:26:57 ]
どうかな。

859 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 10:30:36 ]
バイナリデータ2バイト(FF01)=WORD=ushort

860 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 10:32:04 ]
そもそも0xFF01はshortに収まらない

論破

861 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 10:37:24 ]
>>831
それはまだ蓄積や経験が足りない。わからなくなるのは管理が悪い。

名前の付け方に統一ルールを作り、長くなってもいいからわかりやすさを最優先に考える。
使い方をソースファイルの頭などにちゃんと書いておく。
過去の自分は他人。他人が見て使用法が理解できないソースは未来の自分にも理解できない。
「いちいち書くのがめんどくさい」「書かなくてもわかってる、覚えてる」は禁句。

まあ、35歳ぐらいになれば記憶力も衰えてくるし、10年以上の蓄積ができてるはずだから
身にしみてわかるようになるよ。
大多数の人間は経験から学ぶ愚者だからね。



862 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 10:42:49 ]
>>860
君おもしろいね

863 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 10:43:18 ]
大多数の回答者は本来のデータが0x01FFのリトルインディアンだと気づいているのに
見たまま0xFF01と解釈してるアホがいる
バイナリファイルをバイナリエディタで開いてみたことないんだろうな

864 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 10:49:20 ]
>>863
リトルインディアン?アメリカの子供に聞かせる歌でそんなのあったな

バイナリから取り込むわけだから、元データがOxFFFFの場合もあるかもしれないと
想定して作らないとだめでしょ?何で符号無しと決め付けるわけ?
思い込みは危険だよ

865 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 10:52:01 ]
リトルエンディアン 【little endian】
j-ken.com/category/all/data/637100/

866 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 10:57:27 ]
符号無しと決めつけてるのはushortじゃなきゃダメと主張してる人だな。
今の質問だとどっちか分からないから、shortではなくushortにしなきゃならない
ってのは正しいかどうか確証はない。
shortじゃなきゃならない可能性もあるんだから。

符号に気をつけろだけなら異論はないが。


867 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 11:03:21 ]
>>859
その解釈が、件のデータが符号付きか符号なしかという問題に対して何か意味を持つとは思えないな。

868 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 11:05:12 ]
何でそんなに符号に拘るの?そもそも符号って何よ・・・・
ushortじゃだめな理由なんてあるの?

869 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 11:16:18 ]
今北産業

870 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 11:18:20 ]
>>868
同じバイナリで表現される整数値の意味が変わるからだ。
知らないならC言語の初級からやりなおせ。

871 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 11:28:18 ]
>>870
なるほどそういうことか、難しいな



872 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 11:29:40 ]
C言語は関係ないよ。

873 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 11:37:59 ]
>>872
アホ

874 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 11:46:45 ]
>>869
符号がどうとか
聞かれてもいないことに答えようとしている
おせっかいがたくさん

875 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 11:51:34 ]
なんでもこういう事言って満足してるアホがいるが、
普通に質問への答えに関わる事として重要なことだってのも分からんのか、
単に何か言いたいだけなのか、何なんだろうな。


876 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 11:55:46 ]
ArrayListあるいは配列の中に入っているobjectを、
ToStringかけながらカンマ区切りで連結するのってどうやるんだろう?
できれば区切り文字はあとから変更できる形が望ましい。

.NET 3.5以降ならLinq付随のジェネリックテンプレートが使えるんだけど、
サポートOS(2000以降)の関係で.NET 2.0でお願いします。


877 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 11:58:59 ]
String配列生成
forでそれぞれToStringしながら配列に入れていく
String.Join

878 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 12:01:56 ]
ConvertAllだったかとString.Joinの組み合わせで。
あ、ConvertAllは配列にしてからじゃないとダメだったかな…

879 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 12:17:42 ]
>>877
なるほど……。そんな感じでやってみようかと思ったらStringBuilderを見つけて、
そっちで書いてみたら簡単だったのでコード片を載せておく。

IronPython.Runtime.List python_result;

var builder = new StringBuilder();
foreach(var e in python_result)
{
builder.Append(","+ e.ToString());
}
Console.WriteLine(builder.ToString().Substring(1));

>>878
対象がIronPython.Runtime.ListなんでConvertAllは使えないっぽいね……。


880 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 12:47:10 ]
パイソンは知らないんだが、ToArrayはないのかな?
ToArrayしてConvertAllしてJoinに渡す。

ってまあ別にベタで書いても全然構わないんだけど。

881 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 13:00:37 ]
IEnumeratorは返してくれるんだけど、ToArrayは無いのよね。
枯れたライブラリならともかく、
こんなホットなもの相手に中のコードはいじりたくない。


C#は巨大な.NETクラスライブラリの関係で
同じことをやるのに方法がたくさんあるから、最適な方法を探すのが大変ですね。



882 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 13:05:47 ]
Listって名前なのにIEnumerableのみかよwww

……XmlNodeListもそうなんだよな

883 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 15:31:14 ]
提示された情報だけでは符号付きか符号無しか判断できないし
別に型が確定しなくても今回の質問には答えられる。
ちょっと注意書きを入れれば済むことだから両方書けばいいだけ。
BitConverter.ToUInt16()  符号無し
BitConverter.ToInt16()  符号あり

884 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 15:35:02 ]
DataGridViewの一番左の項目に1,2,3と番号振りたいんだけどどうすればいいですか?
DataGridView.Rows[].Cells[0]のことではないです。

885 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 15:51:39 ]
>>884
DataGridView.CellPaintingで

886 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 15:54:05 ]
すいませんこれでいけました

DataGridView1.Rows[0].HeaderCell.Value

が、なぜか、マス目でいうと上から3つ目のところに表示されます
上から3つ目のマスが最初の行ということですか?
だとしたら、その上の行はなんなのか?あとインデックスって-1になるということ?
どうもよくわからない

887 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 16:00:27 ]
ハァ?
コーディングミスだろ。

www.dotup.org/uploda/www.dotup.org158297.png

888 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 16:08:24 ]
dataGridView1.ColumnCount = 6;

this.dataGridView1.Rows[0].HeaderCell.Value = "0";

Bthis.dataGridView1.Rows.Add("1","2","3","4","5","6");

やってるのはこれだけなんですが、行のヘッダは3マス目に0が入り
Bのデータはなぜか2マス目の行にデータが収まります
どうしてなんでしょうか?

889 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 16:24:38 ]
試しに新規プロジェクト作ってDataGridView貼り付けて
そのコードだけを書いたやつ実行してみなよ。

890 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 16:25:07 ]
>>888
人がわざわざ正しいやり方を示してくれているのに謝意も述べず、
自分勝手なやり方をしてそれがどういう結果をもたらすのか
自分で考えずに人に質問するような態度で、
答えを教えてもらえると思っているのか?

ちなみに887≠オレ

891 名前:887 mailto:sage [2009/06/22(月) 16:26:25 ]
初心者スレの割にキビシイっすね



892 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 16:41:56 ]
愛の鞭です

893 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 17:36:29 ]
飴ちゃんちょうだい

894 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 21:19:42 ]
バイトオーダー嫌って文字列で送った俺は勝ち組。

895 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 21:29:49 ]
数が少なく整数のみならそれが勝ちだね

896 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 22:01:33 ]
エンコードが違って文字化け

897 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 22:36:57 ]
コード以外の文字列はBASE64ヽ(´▽`)ノ検索無くてよかったよかった。

898 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 00:45:53 ]
そんな私はwebで公開

899 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 03:28:34 ]
byte[]に格納したバイナリデータをascii文字列にするにはどうすればいいですか?

900 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 03:33:02 ]
Convert.ToBase64Stringが手軽で鼻血が出る

901 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 03:33:06 ]
どんなバイナリをどんな文字列にしたいのさ



902 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 03:38:03 ]
31 30 30 25→100%
みたいな感じです

バイナリエディタのようなものを作ろうとしているので
stirlingは左バイナリデータで右側にShift-Jis, ASCIIなどを表示してますよね?
そういう感じのものを作りたい

903 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 03:48:11 ]
charにキャスト

904 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 04:01:56 ]
Encoding

905 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 04:04:34 ]
>>899
dobon.net/vb/dotnet/string/getencoding.html

906 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 05:36:19 ]
>>900
>>901
>>903
>>904
>>905
試してみますありがとう

907 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 09:47:01 ]
なぜかBio100%を思い出した

908 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 10:02:41 ]
どこからの連想か全く分からないが懐かしいな>Bio_100%

909 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 13:11:53 ]
俺がバイナリエディタを毎日のように使っていた時代と
Bio_100%の全盛期が重なってね。で、>>902から連想した。

あの頃はアセンブラが必須科目だったし、バイナリのデータ構造なんて
知ってて当たり前だった。ちょっと上の方で揉めてエンディアンの話とか。

910 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 13:16:26 ]
>>909
> 知ってて当たり前だった。
の割にはあまり刊行物では取り上げられなかったけどな。

911 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 13:21:59 ]
>>910
C/C++の入門書ならほぼ間違いなく取り上げてる話題なんだが、どうよ。



912 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 13:23:56 ]
>>911
悪い、勘違いした。
バイナリの構造って、たとえばPEヘッダとかそういうのだと思った。

913 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 13:31:43 ]
また話がそれかかってるので燃料投下する。

C#で作ったプログラムで他のモジュールを読み込む場合、
モジュールをサブディレクトリに置いた場合に
アプリケーション設定ファイル(*.exe.config)に
<probing privatePath="libs" />
といった形で検索パスを記入するが、他の方法はどういったものが挙げられるだろうか。
いいところ、悪いところなど教えてくれると助かる。

914 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 13:52:31 ]
>>913
API

915 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 14:05:15 ]
ttp://www.atmarkit.co.jp/fdotnet/technology/idnfw11_index/index.html
を踏まえた上での話?

916 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 15:09:07 ]
確かにPEヘッダは資料が少なくて苦労した

917 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 15:18:16 ]
そういうのって、Linkers & Loadersが出るまでは、断片的な情報しか
手に入らなかったような気がするけど。

918 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 17:58:25 ]
漠然とした質問ですが、
アセンブリ情報のGUIDってなんですか?
なんのためにあるんでしょう。

919 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 18:23:06 ]
厳密名を定義するため

920 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 18:47:13 ]
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Url = textBox1.Text;
}

エラー 1 型 'string' を型 'System.Uri' に暗黙的に変換できません。

webBrouserのURLプロパティに文字列を渡したいのですがどうすればできますか?

921 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 18:49:35 ]
できません



922 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 18:52:30 ]
string型をUri型に変換するメソッドを使うよ
webBrowser1.Url = New Uri(textBox1.Text);

923 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 19:01:04 ]
>>919
何さらっと嘘書いてんだっ

924 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 19:11:56 ]
webBrowser1.Navigateでできました。
かなり前に使ったときは別の方法を取ったのですが…

もうひとつ質問なのですがJaneの板一覧とスレ欄の間にある移動可能な敷居?はなんという名前でしょうか?

925 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 19:15:12 ]
JaneはWinFormじゃないから同列には論じられないけどな
.NET 2.0のWinFormならSplitContainer

926 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 19:18:09 ]
>>925
ありがとう

927 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 23:35:14 ]
3週間経たずに埋まってしまいそうだな

928 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 00:33:30 ]
LINQでfromが複数ある場合の挙動ってどうなるんでしょう。
情報を調べても見つけれず、実際の動作調べてはみたものの、
状況次第で動作が変わっているようなのでちょっとキモチワルイです。

 var src = { "Hoge", "Hage", "Huge" };
 var dist1 =
   from p in src
   from q in src // pから取得した値以外をqの情報源にすると...
   select new { P=p, Q=q }; // {Hoge,Hage,Huge}x{Hoge,Hage,Huge} 全組み合わせ9通りに展開される
 var dist2 =
   from p in src
   from q in p // pから取得した値をqの情報源にすると...
   select q; // 全pの中の全qの数だけ展開される。つまりH,o,g,e,H,a,g,e,H,u,g,eの12個
        // {H,o,g,e,H,a,g,e,H,u,g,e} x {Hoge,Hage,Huge}の全組み合わせ36通りにはならない

929 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 00:46:24 ]
それぞれfrom...inの代わりにforeachで列挙してみれば分かると思うよ

930 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 00:48:02 ]
>>929
あぁ、なるほど、納得です。ありがとうございます。

931 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 03:31:23 ]
メソッド構文で書くとこう
var r1 = src.SelectMany(_ => src, (p, q) => new { p, q });
var r2 = src.SelectMany(p => p);
こちらのほうが実際の動作イメージはつかみやすいと思う。



932 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 04:32:33 ]
会社でWindows 2000の縛りがあって
いつまで経っても.NET 3.0〜3.5の世界に踏み込めないオレは
Linqなどグッジョブなテクノロジーがうらやましいぜ!

933 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 05:32:51 ]
こんな時間に起きている人ってプログラマーじゃないよね?
ホビーグラマーだよね?

934 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 05:33:59 ]
いつも5時に起きて23時に寝ていますよ

935 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 05:35:48 ]
そんな健康的なプログラマーがいるのか

936 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 05:39:57 ]
個人事業主ですが

937 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 05:56:36 ]
>>936
雇ってください。年収200万で何でもします

938 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 06:02:42 ]
ふらっとC#プログラマ始めました(初心者用) Part1

939 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 06:28:20 ]
>>937
個人投資家ですが、ほんとうに200万でいいですか?

940 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 06:34:06 ]
939はC#プログラマ(初心者)兼、個人付きメイドをゲットした。

941 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 06:36:54 ]
メイド服も着れと言われれば着ます。男ですけど。
子供の時は女の子に間違われていたのでカツラも用意していただければたぶん・・・
プログラミングは最近始めたので余りお役にいは立てません



942 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 06:43:12 ]
住民税+来年度の予定納税で 250万を超えることになって、
すでに死にかけですよ・・・orz

943 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 06:45:30 ]
金融から200マン借りてる俺よりマシ

944 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 07:25:24 ]
クラスは出来るだけ簡略化して多く作った方がいいとよく言われていますが
そうなんですか?

メソッドみたいな短い命令文をクラスにして大量に作るって感じでしょうか?

945 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 07:32:49 ]
>>944
そうではなく、情報同士の依存性をなるべく減らすべき、ということ。
そして情報同士の関係性を形作る設計は、デザインパターンと呼ばれてカタログ化されている。

もっとも、.NET クラスライブラリみたいな巨大なツールセットが最初からあるから、
そもそもそのような複雑なことを考えるまでも無くかなりのことができてしまうわけだが。

946 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 11:31:18 ]
>>944
問題は大きさとか数じゃなくて、ちゃん整理されているかどうかだよ。
どちらかと言えば簡略化すべきはクラスじゃなくてメソッドだな。
単純で確実に動くメソッドは再利用もしやすい。

947 名前:デフォルトの名無しさん [2009/06/24(水) 11:42:44 ]
Linqについてうまいことまとまってるサイトや書籍はないですか?
概論や入門レベルの情報はたくさん見つかるんですが、応用というか
「こういう事もできますよ」といった感じの

948 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 11:43:38 ]
>>945
>>946
なんか奥が深そうですね

話は変わるけどプログラムする人は頭良さそうだけど
よくテレビでやってる能力テスト(知識を必要とするクイズとかじゃなくて)などはいい点取れるの?
関連のある図形を選びなさいとかの問題だとすぐ解けそうだね

949 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 11:48:16 ]
気のせいだ

950 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 11:57:53 ]
昔IBMのプログラマー適性検査みたいなの受けたが
まさにその図形を選んだりする、子供の時やった知能テストみたいなやつだったな。

951 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 12:10:54 ]
すいませんC#で作ったソフトは、別途ランタイムが必要ですか?



952 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 12:18:43 ]
>>951
いるいる

VISTA以降ならいらない

953 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 12:28:46 ]
将来
.NetFrameWork6.7b以降が必要
なんてプログラムがでてきても

Vistaなら・・・Vistaならなんとかしてくれる!

954 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 12:30:05 ]
>>952−953
ご丁寧にありがとうございます
Cの勉強で頑張ってみたいと思います

955 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 12:30:24 ]
byte[] data=new byte[5000];
BitConverter.ToInt16(data,0);
これでバイナリデータを数値に変換できたんですけど

data[6]〜data[7]
だけを数値にしたい場合良い方法はないでしょうか?

必要なだけ空の配列に代入しながらするのは大変なのです
こんな感じでかなりの数があるので
data[8]〜data[10]
data[200]〜data[204]
data[1200]〜data[1204]

今はこんな感じで代入してます
num[0] = data[0x80];
num[1] = data[0x81];

956 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 12:32:54 ]
>>955
同じような処理は関数化すればいいでそ

957 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 12:35:22 ]
BitConverter.ToInt16(data, 6);
BitConverter.ToInt16(data, 8);
BitConverter.ToInt16(data, 200);
BitConverter.ToInt16(data, 1200);


958 名前:デフォルトの名無しさん [2009/06/24(水) 12:36:17 ]
Bufferクラス

959 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 12:36:23 ]
>>952
ウソ言うなやボケ。
XPであっても、VISTAであっても、7であってもランタイムは必要。
VISTAには2.0と3.0のランタイムがすでに入っているが1.1や3.5,4.0のランタイムは含まれていないので
別途インストールしないとだめ。

960 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 12:41:53 ]
>>956
private byte[] byteSpliter(byte[] data, int startIdx , int length)

なるほど、こんな感じかな?

>>957
これでいけましたw
それ以降全部数字に変換されると思ってました

ありがとうございます

961 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 13:02:51 ]
職業プログラマーの適性は協調性があること、
コミュニケーションができること。

あとは腰痛などの持病がないこと。



962 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 13:05:26 ]
プログラマは協調性が無く、女にモテなさそうだから就職しなかった

963 名前:デフォルトの名無しさん [2009/06/24(水) 13:11:25 ]
職業の性質上、元々問題がある奴が多いからそんな当たり前のことが言われてるだけだろ

964 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 13:15:02 ]
未経験でプログラミングのお仕事がやりたいんですけどどのスレで助言を頂けますか?

965 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 13:15:30 ]
助言を与える服がない

966 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 14:04:14 ]
うちはプログラマの1/4はバイトからスタート。
2年ぐらいやってもらって見込みがあれば社員にスカウト。
あとの3/4は新卒か転職組。
いきなり未経験でプログラマーの正社員は無理じゃね?

967 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 14:07:24 ]
マ板でやれ

968 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 14:07:53 ]
バイトでよければ情報誌にいろいろ出てる
うちも求人出してるし

969 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 14:10:05 ]
板違い

970 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 14:20:12 ]
スカウトとか言ってる企業はブラック間違いなし。

971 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 14:42:49 ]
35でプログラマ目指している俺がきましたよ



972 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 14:47:00 ]
帰れ

973 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 16:35:18 ]
ifを使って変数を比較したら何クロックぐらいですか?

974 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 16:38:05 ]
>>973
ケースバイケース

975 名前:973 mailto:sage [2009/06/24(水) 16:44:53 ]
変数の型によって等の条件によって違ってくるような気がしますが
平均的にはいくつぐらいになるのでしょうか 数十くらいですか?


976 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 16:45:03 ]
>>973はツンデレ保守わかる

977 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 16:45:04 ]
知らないなら黙っててください

978 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 16:46:34 ]
CPUのクロックを測定するスレがあるからそっちで聞いてみたら?
昔と違って並列で動作したり、C#レベルだとJITでの最適化などで
単純に測定できないことが分かると思うから。

979 名前:973 mailto:sage [2009/06/24(水) 16:48:24 ]
>>978
そうしてみます。
ありがとうございます。

980 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 16:50:21 ]
>>975
本気で聞いているの?
全体集合(比較可能な型の全ての集合)もわからないのに,平均ってなんぞい?

正確なクロック数はわからないけど,Step by Stepの利いていないCPUでWindows環境なら
数百万回くらい比較を行うループの実行時間とQueryPerformaceFrequencyからクロック時間が割り出せそう
もちろんスレッドのコンテキストスイッチなど目にも留まらぬ速さの場合

981 名前:973 mailto:sage [2009/06/24(水) 17:05:22 ]
本気で聞いています。
厳密なクロック数が知りたい訳ではなく
数十なのか、数百なのか、数千なのか、
そのぐらいのレベルで知りたいんですが。



982 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 17:10:49 ]
980の言うように回数こなして実測が一番現実的だと思うがね。

CPUの命令レベルだったらだったら0〜2クロック。
分岐予測を失敗したらストールで数十クロックとか。意味ないっしょ。
cmp EAX, EBX
jne   LABEL1

それからJITで特定の方向にしか分岐しないなら分岐命令自体が削除されることもある。

983 名前:973 mailto:sage [2009/06/24(水) 17:13:18 ]
すいません。
ありがとうございました。

984 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 17:13:54 ]
>>981
今のCPUはパイプラインだし多重キャッシュだし投機だし、正確に計るのは無理というか、
前提条件が足りなさすぎ。
とりあえずコードが最適化されてて変数の内容が32bit以下の整数値なら
レジスタに入ってるはずだからifは単純にCMP reg,reg、JE xxxxあたりに置き換えられて
合計で1.0クロック。
スレッドの遷移はifの数百倍以上のコストがかかるから外部から調べるのは困難。

詳しいことは、ここにCPUのマニュアルがあるから嫁。
INSTRUCTION LATENCY AND THROUGHPUTのところ
www.intel.com/products/processor/manuals/index.htm

985 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 17:24:53 ]
誰か実際にやってみれ
1億回ぐらいループ回して平均
該当部分の逆汗も頼むぜ

986 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 17:28:07 ]
なんか難しい話してるね
俺からしたら宇宙語だわ

987 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 17:28:53 ]
初心者スレでやるこっちゃないわな

988 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 17:29:14 ]
>>985
言い出しっぺの法則

989 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 17:29:49 ]
誰か次スレ立ててくれ
うちはずっと規制中で手も足も出ん

990 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 17:31:12 ]
[>>1]>>980を踏んだ人は新スレを建てて下さい。

C#, C♯, C#相談室 Part53
pc12.2ch.net/test/read.cgi/tech/1245150671/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part4
pc12.2ch.net/test/read.cgi/tech/1245384489/

991 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 17:41:47 ]
構造って作った後から重複をまとめて基本クラスにするのを繰り返すのが普通なんですか?
それとも最初から基本クラスから考えて派生を作っていくんですか?
最低でも書く前にこれはベースにまとめていくのがいいと思って構造を作っていって、出来あがってからコード化するのが限界だと思うんですが
最初からベースクラスから考えられる人っているんですか?いるとしたら日本語から英語を勉強した人が頭で考えるのが英語になるぐらいすごいんですが



992 名前:デフォルトの名無しさん [2009/06/24(水) 17:55:24 ]
いや基本的にそういう継承の使い方は間違い

993 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 18:12:14 ]
>>991
3行目から下、いらないと思うぞ。何が聞きたいのかポイントがボケる。

最初から継承ありきで考えるのは、大抵の場合、間違いのもと。

994 名前:デフォルトの名無しさん [2009/06/24(水) 18:18:31 ]
ある機能が重複するなら、その機能をクラスに括り出してそのクラスのインスタンスをそれぞれが持つようにする。継承は不要。
最近は継承よりもそういうやり方の方が良いとされてる。

995 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 18:26:20 ]
基本的には同じ動作だけど、個性を持たせたいとか
オセロ作るときに初級AI、中級AIのために必要だなって思ったよ
でも、継承しなくてもできることはできるんだよねー
このときは継承じゃなきゃだめだってのがよくわからない

996 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 18:29:22 ]
単純に同じ配列、リストに入れたいときくらいかなあ

997 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 18:35:47 ]
つinterface

998 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 18:37:45 ]
うめ

999 名前:デフォルトの名無しさん [2009/06/24(水) 18:38:59 ]
ポリモルフィズム使いたいときだけだな
実装の継承はまさに>>991のような難しさがあるから避けられる
そりゃControlみたいに完璧な設計ができるというならやればいい

1000 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 18:39:36 ]
継承は最後の手段って、あれは誰の言葉だっけ。マーティンファウラー?

1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。








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

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

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