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

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

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

前スレ
ふらっとC#,C♯,C#(初心者用) Part44
http://pc12.2ch.net/test/read.cgi/tech/1251439041/
2デフォルトの名無しさん:2009/09/21(月) 17:44:04
3デフォルトの名無しさん:2009/09/21(月) 17:47:31
4デフォルトの名無しさん:2009/09/21(月) 18:49:03
>>前スレ終わり際
フレームワーク内部でcatchされてる例外は深く考えても脳が疲れるだけよ
どうしても気になるならソース追っかけていけばいいけどCompactFrameworkのソースは公開されてたっけ
5デフォルトの名無しさん:2009/09/21(月) 18:53:29
>>5ならおっぱい晒します
6デフォルトの名無しさん:2009/09/22(火) 00:11:39
>>4
了解です
そうですよね。何かサーバーからエラーが来てるのかと思いましたが、パケットを調べられる
技量もないのでしばらくこのままで行ってみます

ありがとうございました

ところで、これで取得したメモリストリームからBitmapのインスタンスを生成する部分で
たびたび一般的なGDI+エラーというのが出ます
マルチスレッドでコールバック関数が呼ばれる前にメモリストリームが切断されるとダメという記述があちこちに
みつかり、シリアライズしてからBitmapを生成した方がいいとありますが、
データ長を調べてbyte[]に入れればいいんでしょうか?
それからBitmapを作ればいい?
こういう時の定石なのでしょうか?ご存じの方よろしくお願いします
7デフォルトの名無しさん:2009/09/22(火) 00:21:34
>>6
メモリストリームが切断?
取り敢えずStreamからMemoryStreamに一旦書き込んで、その後はそのMemoryStreamを使う
8デフォルトの名無しさん:2009/09/22(火) 00:36:07
C#で、変換前(入力中)の文字列を取得することはできますか?
Google検索ボックスのように、
かな文字を入力中に、その文字列でデータセットの検索結果をリアルタイムに表示させたいんです。
よろしくお願いします。
9デフォルトの名無しさん:2009/09/22(火) 00:39:26
>>8
Imm系の API 使えばできるでしょ。
10デフォルトの名無しさん:2009/09/22(火) 00:41:59
>>7
あれ・・・それ今やってることと同じでした

ストリームからByte配列に書き込み
それをメモリストリームに書き込んで
BmpSource = new Bitmap(memorystream);
こうしてるんですが、なぜかストリームのところでなく
この行でGDIのエラーが出るんです

エラーはWebRequest要求の最中にさらに要求を重ねた
場合に起こります
ただし、WebRsponseのストリーム読み出しではなく
GDIで起こります

もしかしたら呼び出し順が狂ってメモリストリームにデーはあるものの
BitMapとしてはデータが壊れてるのかも知れないですね・・・

ちなみにFrameworkは2.0 SP2 です
とりあえずエラーが出たところでダンプしてみます
11デフォルトの名無しさん:2009/09/22(火) 00:46:00
http://www.stackasterisk.jp/tech/dotNet/csharp08_02.jsp#2_1
上のページを参考に、TcpListener、TcpClientを使って簡単なチャットプログラムを作っています。
TcpListener、TcpClientにローカルIPアドレスとポート番号9999を指定して
1つのパソコン内でメッセージのやり取りはできたのですが、
外部のパソコンとやり取りをするにはIPアドレスとポート番号は具体的にどのように指定すればいいのでしょうか?

WANのIPアドレスでも動作するか試すため、
サーバー側はIPAddress.Anyを使って、ポートは9999
クライアント側は「確認くん」で調べた自分のWANのIPアドレス、ポートは9999を指定して実行すると、
サーバー側は「接続待機中」
クライアント側は「対象のコンピュータによって拒否されたため、接続できませんでした。***.***.***.***:9999」と表示されます。
上と同じように指定して知り合いのパソコンとやり取りをしようとしたのですが、やはりうまくいきませんでした。
説明下手な上に初歩的な質問ですみません。ちなみにファイアウォールは切ってます
回答お願い致します
12デフォルトの名無しさん:2009/09/22(火) 00:56:45
>>10
単にスレッドセーフになってないだけじゃ…
13デフォルトの名無しさん:2009/09/22(火) 01:04:45
>>10です
メモリーストリームに複数要求したデータが全部繋がって入ってる感じです
詳しく見てませんが、データの大きさがかなり大きいので間違いないと思います

一回呼び出し 正常表示
71203

5回呼び出し、DGIエラー
75299

同じ画像です

メイン処理クラスからリクエストを送るイベントのたびにスレッドクラスを生成して
そのスレッドクラスの中で非同期にWebRequest処理して
そのクラスの中のコールバックメソッドの中でBitMap処理してます
最後にメイン処理クラスにデリゲートで処理を戻して描画してます
別のインスタンス(のつもり?)のスレッドクラスの中のstaticなメモリストリームに
どんどんデータが入って来てしまうようです・・・
スレッドクラスそのものはstatic宣言してないです
14デフォルトの名無しさん:2009/09/22(火) 01:05:26
>>12
そのようです
15デフォルトの名無しさん:2009/09/22(火) 01:05:52
まず、LAN でできるようになってから WAN で試そうな。
16デフォルトの名無しさん:2009/09/22(火) 01:09:07
staticなMemoryStreamなら当然だろw
レスポンスごとにMemoryStream用意しろ
1711:2009/09/22(火) 01:20:14
>>15
LANではうまく(?)いきます
家にある2台のパソコンでチャットはできました
18デフォルトの名無しさん:2009/09/22(火) 01:20:56
>>16
レスポンスをコピーするためにバイト配列を使うのですが、
バイト配列が一杯になったらメモリストリームにコピーする
コールバックメソッドを呼び出して
コールバックメソッド側で再びレスポンス読み込みメソッドを呼ぶ
ということになってるので、staticなMemoryStreamになってます

それで、リクエスト処理を行うクラスをメイン処理クラスからイベントごとに
インスタンス生成しているんですが・・・これがいけないのですかね?

>この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。
>インスタンス メンバの場合は、スレッド セーフであるとは限りません。

とあるのですが、リクエスト処理を行うクラスはインスタンスにしていいかと

とりあえずリクエストクラス内でHttpWebRequestをpublic staticで宣言してみます
19デフォルトの名無しさん:2009/09/22(火) 01:21:53
駄目だコリア
20デフォルトの名無しさん:2009/09/22(火) 01:23:05
そういう相互コールみたいなマネするとデットロックしやすいから構造上避けた方がいいわ…
21デフォルトの名無しさん:2009/09/22(火) 01:27:13
>>17
確認君で、ってことは、ルーター環境? それなら、NAT で
ポート転送設定しないと。
22デフォルトの名無しさん:2009/09/22(火) 01:28:27
わかってないなら、マルチスレッドなんて使わなきゃいいのに。
23デフォルトの名無しさん:2009/09/22(火) 01:29:46
>>9
http://shinshu.fm/MHz/95.83/a02138/0000025041.html

のリンクにimmを利用したテキストボックスの定義が記述されているのですが、
どう使えば変換前の文字列を取得できるのかが分かりません。
教えていただけないでしょうか(T_T)。
24デフォルトの名無しさん:2009/09/22(火) 01:30:05
>>19
その通りです public static で宣言したけど駄目でした orz

>>20
そうですね
ヘッダーを調べてデータサイズの大きさのByte配列を用意してみます



タブブラウズは同時にリクエストしてますが、あれはどういう仕組みなんでしょうかねえ・・・
悔しいなぁ
やはり一気に読み込むんでしょうか?
25デフォルトの名無しさん:2009/09/22(火) 01:31:30
>>22
わかろうと努力してるので・・・どうか生暖かく見守ってください ><。。
26デフォルトの名無しさん:2009/09/22(火) 01:31:37
>>23
これ見てわからないなら、あきらめなよ。
27デフォルトの名無しさん:2009/09/22(火) 01:31:48
普通にリクエストするスレッドを複数立ててるだけだろ
28デフォルトの名無しさん:2009/09/22(火) 01:35:36
>>27
メイン処理クラスで

private Thread myThread;

private void ThreadFunction()
{
GoogleRequest myThreadClassObject = new GoogleRequest(this);
myThreadClassObject.GetMap(GSParam);
}

は、やっているんですが・・・すみませんそのこときちんと書いてありませんでした
29デフォルトの名無しさん:2009/09/22(火) 01:37:13
しまった コピペする場所間違えました

public void GetMap()
{
myThread = new Thread(new ThreadStart(ThreadFunction));
myThread.Start();
}
30デフォルトの名無しさん:2009/09/22(火) 04:29:05
GoogleRequestがstaticのMemoryStream持ってんだろ
駄目に決まってんじゃん

というかstaticの意味分かってるのか
31デフォルトの名無しさん:2009/09/22(火) 08:46:22
>>23ですが、
このテキストボックスを用いてどこから変換前の文字列を取るのか分からないんです。
32デフォルトの名無しさん:2009/09/22(火) 09:32:33
>>30
あーもしかして、スレッドをスタートするときのGoogleRequestインスタンスの中のstaticって共有されるのが常識でしたか
クラスをStaticにしたらシングルトンになると思い込んでたもので・・・

static=静的
でしたっけ?プログラムが終了するまで存続が補償されてるメモリってことですよね?
33デフォルトの名無しさん:2009/09/22(火) 09:49:18
起動時に実体を1つだけ生成し、
スコープを抜けても値が保持される
34デフォルトの名無しさん:2009/09/22(火) 10:00:49
静的クラス と シングルトン は全くの別物。
シングルトンをやりたいなら静的クラス メンバを使ってこんな感じで書けばいい。

public class Singleton
{
private static readonly Singleton instance = new Singleton();

private Singleton() {}
public static Singleton GetInstance()
{
return instance;
}
}
35デフォルトの名無しさん:2009/09/22(火) 10:14:43
>>33
するとクラスのインスタンスの中のstatic変数はインスタンス同士で共有されるってことですか


>>34
シングルトンと静的クラスは違いますね
おおざっぱな言い方してすみませんでした



> 静的メンバ
静的なメソッド、フィールド、プロパティ、またはイベントは、クラスのインスタンスが作成されていないときでも
クラスで呼び出すことができます。クラスのインスタンスが作成されている場合は、これらを使用して
静的メンバにアクセスすることはできません。静的フィールドと静的イベントのコピーは 1 つのみ存在し、
静的メソッドと静的プロパティは、静的フィールドと静的イベントにしかアクセスできません。
静的メンバは、多くの場合、オブジェクトの状態に応じて変化しないデータや計算を表すために使用されます。

やっと自分の勘違いがわかりました。
ありがとうございました。
36デフォルトの名無しさん:2009/09/22(火) 10:15:44
>>34
これって別のマシンからコールしてもシングルトンですか?
37デフォルトの名無しさん:2009/09/22(火) 10:20:19
何を言ってるのかね?
38デフォルトの名無しさん:2009/09/22(火) 10:26:41
クラスメンバのメモリストリームのstaticをはずしたらうまくいきました
最初のエラーはクラスメンバのメソッドのの中にstaticでメモリストリームが宣言してありました
これはサンプルのコピーが原因でした
その宣言をstaticのままクラスメンバに移したのが間違いでした
クラスメンバであればクラス内ではグローバル変数のように使えるのでメソッド間でのやりとりに問題は
ないはずなのに安易にstaticを使ってしまいました

見当違いな質問を繰り返してご迷惑おかけしましたが、やっとわかりました
みなさんありがとうございました
39デフォルトの名無しさん:2009/09/22(火) 10:28:10
なんか非同期リクエスト使ってるぽいが、フローが複雑になるしお勧めしないよ。
単に起動したスレッドで普通に同期的に処理することをすすめる。
そうすれば、素直に作ってれば変にstaticで共有してしまったりなんてことは起こらない。

リクエスト自体を非同期でやろうとすると難易度が跳ね上がるし、
実質あまり変わらないから意味もない。
普通は同期リクエストで十分。
40デフォルトの名無しさん:2009/09/22(火) 10:41:58
>>39
確かにリスクは大きいですねえ
マルチスレッドで動くダウンローダーのような効率化に挑戦したかったものでつい・・・

アドバイスありがとうございました
41デフォルトの名無しさん:2009/09/22(火) 11:03:36
なんて言うのかな、要は最大限の効率を求めないなら、
普通にスレッド作ったりスレッドプールで処理するだけで十分てこと。

ああ、ただ、非同期リクエストだとキャンセルが可能だったかな。
42デフォルトの名無しさん:2009/09/22(火) 11:30:09
>>41
はい、ふつうならマルチスレッドで同期リクエスト動かせばいいって話ですね!
43デフォルトの名無しさん:2009/09/22(火) 11:42:45
System.IO.Path.GetFileName(path);
とおなじようにURLををファイル名のみゲットしたいです。
かんたんな方法はありますか?
いま考えつくのは、Split('/')で、forでLength-1を取得とかかな〜、と思っているんですが。
44デフォルトの名無しさん:2009/09/22(火) 11:47:08
Path.GetFileNameで十分だと思うが
45デフォルトの名無しさん:2009/09/22(火) 11:50:04
クエリ文字列のことを考えるとUriインスタンス作ってLocalPathに対してPath.GetFileNameだな
46デフォルトの名無しさん:2009/09/22(火) 12:46:18
パス情報はどうするべきか
47デフォルトの名無しさん:2009/09/22(火) 13:38:35
メモ帳やエクセルなどで検索するとFocusが検索フォームに在るにもかかわらず
テキストボックスやエクセルシートの検索ワードが選択されて強調表示されますよね?
アレってどうやるんでしょう?
SelectedだとFocusがないので強調表示されませんでした。
48デフォルトの名無しさん:2009/09/22(火) 13:45:20
C#の文法的なことではなくて、フォームデザイナの使い方などを簡単にまとめたサイトはありますか?
49デフォルトの名無しさん:2009/09/22(火) 14:41:26
C# というよりは UNRAR32.dllの質問なのかもしれないが、助けて

[DllImport ("unrar32.dll", CharSet=CharSet.Auto)]
public extern static ushort UnrarGetVersion();

[DllImport ("unrar32.dll", CharSet=CharSet.Auto)]
public extern static int Unrar(IntPtr hWnd, string szCmdLine, string szOutput, uint dwSize);


public static void Main()
{
 System.Console.WriteLine( Decompressor.UnrarGetVersion() ); /* UNRAR32.dllのバージョン 12が返る */
 System.Console.WriteLine( UnrarQueryFunctionList(1)); /* Unrar APIが使えるか。True */
 System.Console.WriteLine(Decompressor.Unrar(IntPtr.Zero, "-x " + @"C:\test.rar", "", 0)); /* ERROR_COMMAND_NAME (0x801C) が返ってくる */
}

コマンドがおかしいって怒られちゃうの。なんで?
5049:2009/09/22(火) 14:43:17
何をしたいか書き忘れてますた。
C:\test.rar をただ単に解凍したいだけっす。
51デフォルトの名無しさん:2009/09/22(火) 14:59:07
第2・3引数ばLPCSTRなのにCharSet.Autoじゃダメだろ
52デフォルトの名無しさん:2009/09/22(火) 15:01:43
コマンドがおかしいんだろ。
5349:2009/09/22(火) 15:06:08
>>51
とっぱらったら出来た。
理由は自分で調べるお。ありがと!
5449:2009/09/22(火) 15:10:50
CharSet.Autoにすると、NT系ではunicodeのバイト列としてdllに渡しちゃうってことでおk?
55デフォルトの名無しさん:2009/09/22(火) 15:27:15
そう
5649:2009/09/22(火) 15:33:47
>>55
ありがとう!
57デフォルトの名無しさん:2009/09/22(火) 16:23:11
CharSetオプション書かないとAnsiなのに
AutoだとUnicodeにされるのは1度戸惑ったことあるな
58デフォルトの名無しさん:2009/09/22(火) 17:34:07
そんなので戸惑う?
MSDNに書いてあるまんまで解釈の余地とかないと思うんだけど・・・
59デフォルトの名無しさん:2009/09/22(火) 17:57:34
そんな事いったらこのスレいらなくなるだろ。
初心に戻ろうぜ。
60デフォルトの名無しさん:2009/09/22(火) 19:23:56
親フォームに、publicイベントを記述しました。
その親フォームから呼ばれる別のフォームで、そのイベントを実行するにはどうすればよいでしょうか。
教えてください−−−!!!!!
61デフォルトの名無しさん:2009/09/22(火) 19:30:24
その「別のフォーム」とやらにデリゲート渡しとけばいいじゃん
62デフォルトの名無しさん:2009/09/22(火) 19:32:45
一体何をどうやったら>>60なことになるんだ?
63デフォルトの名無しさん:2009/09/22(火) 19:34:37
おやからよばれるフォームに親のインスタンス渡してやれば?
64デフォルトの名無しさん:2009/09/22(火) 19:52:32
ありがとうございます。
具体的には、親に
private void Click(object sender, EventArgs e)
{
MessageBox.Show("またクリックしたの?");
}
を記述しました。

親のボタンを押した先のフォームのボタンコントロールのクリック時に
このイベントを実行させようと思いましたが、
プロパティウィンドウのイベント欄のclickに、
「Click」が表示されません。

どうすればよいのでしょうか。
65デフォルトの名無しさん:2009/09/22(火) 19:56:49
答え読んでから書き込め
66デフォルトの名無しさん:2009/09/22(火) 20:03:03
なんでもかんでも親Formに書こうとすんなよ
67デフォルトの名無しさん:2009/09/22(火) 20:06:27
>>64
>具体的には、親に
(略)
>を記述しました。

それを呼び出す先のフォームに書けばいい。
動くのを確認したらスコープとかアクセス修飾子でググってよ。
68デフォルトの名無しさん:2009/09/22(火) 20:57:31
すみません。
>>61さんや
>>63さんがおっしゃっていることは具体的にどこに何を記述する必要があるのでしょうか。
privateからpublicにし、
子フォームに親のインスタンスを生成しましたが、
プロパティウィンドウの中にやはりそのイベントハンドラが表示されません。
Desiner.csに直接デリゲートを書き込みしようとしましたが、
thisをnullに置き換えることができませんといったエラーになってしまいます。
69デフォルトの名無しさん:2009/09/22(火) 21:01:37
イライラ
70デフォルトの名無しさん:2009/09/22(火) 21:09:11
どうしても書くとしたらこうかな

public partial class Parent : Form
{
public Parent() {
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e) {
new Child(this.Click).ShowDialog();
}

private void Click(object sender, EventArgs e) {
MessageBox.Show("またクリックしたの?");
}
}

public partial class Child : Form
{
private EventHandler eventHandler;

public Child(EventHandler eventHandler) {
InitializeComponent();

this.eventHandler = eventHandler;
}

private void button1_Click(object sender, EventArgs e) {
this.eventHandler(this, EventArgs.Empty);
}
}
71デフォルトの名無しさん:2009/09/22(火) 21:11:45
private void Click(object sender, EventArgs e)
{
MessageBox.Show("またクリックしたの?");
}

だからなんで上をChildに書くって発想ができないの?
マウスが机から落ちてしまうとか言ってる年寄りにパソコン教えてる気分だわ。
72デフォルトの名無しさん:2009/09/22(火) 21:13:29
OTITSUKEYO…
73デフォルトの名無しさん:2009/09/22(火) 21:13:52
>>70
new Child(this.Click).ShowDialog();



Form child = new Child();
child.Click += this.Click;
child.ShowDialog();

の方がいいな。
74デフォルトの名無しさん:2009/09/22(火) 21:14:38
すまん、ボタンのイベントだったな。>>73は気にしないでくれ。
75デフォルトの名無しさん:2009/09/22(火) 21:15:20
>>71
そうカリカリすんなよ。
お前みたいな短気はこのスレに向いてないぜ?
76デフォルトの名無しさん:2009/09/22(火) 21:15:53
明日で連休終わりと考えると気が立ってくるのさ。
77デフォルトの名無しさん:2009/09/22(火) 21:16:56
明日休出の俺に謝れ
78デフォルトの名無しさん:2009/09/22(火) 21:21:59
カリカリしてる人はスレタイ読んで落ち着いてくれ
79デフォルトの名無しさん:2009/09/22(火) 21:24:50
初心者相手にオレTUEEEしたい人が、なかなかうまく自分の力を見せつけられずイラだっているのです
80デフォルトの名無しさん:2009/09/22(火) 21:28:42
カリカリ
81デフォルトの名無しさん:2009/09/22(火) 22:53:26
>>71
親にたくさん、日付チェックのイベントや数値変換のイベントを書いているんです。
同じロジックを、また子の上に書きたくないんです。
82デフォルトの名無しさん:2009/09/22(火) 22:54:41
親に書かずに、共通クラスに書けばいいだろ・・・
83デフォルトの名無しさん:2009/09/22(火) 22:56:52
とりあえずイベントとメソッドの区別はつけようぜ
どうせ全ての処理はイベントハンドラの中に書かないといけないと思ってるんでしょ
84デフォルトの名無しさん:2009/09/22(火) 22:57:30
>>81
どっかにソースうpしろ。
ソースがあった方がみんなアドバイスし易い。
85デフォルトの名無しさん:2009/09/22(火) 23:01:41
たぶん地獄絵図なソースだと思うけど
86デフォルトの名無しさん:2009/09/22(火) 23:05:43
言語がよくわかってないままなんとなくVC#触ってる人って
たいていフォームを複数作ろうとしたら行き詰まるよね
87デフォルトの名無しさん:2009/09/22(火) 23:06:10
VC?
88デフォルトの名無しさん:2009/09/22(火) 23:07:42
MainFrame frm = (MainFrame)this.Parent.Parent.Parent.Parent.Parent;
frm.anotherControl.Handler();
89デフォルトの名無しさん:2009/09/22(火) 23:08:25
イラッ
90デフォルトの名無しさん:2009/09/22(火) 23:11:40
ご先祖様にも程があるな
91デフォルトの名無しさん:2009/09/22(火) 23:36:54
IF文を知らなかった俺はgotoだけでなんとかしたことがあるけど、
今となってはあんな化け物コード自分でも読めない。
92デフォルトの名無しさん:2009/09/22(火) 23:42:56
言語仕様すべて頭に入れてからコード書くってわけにもいかないもんね
93デフォルトの名無しさん:2009/09/22(火) 23:44:19
どうやってgotoで条件分岐するんだろう
94デフォルトの名無しさん:2009/09/22(火) 23:50:39
多分Fortranで算術GOTOじゃね?
95デフォルトの名無しさん:2009/09/22(火) 23:50:53
ON ERROR GOTO
96デフォルトの名無しさん:2009/09/22(火) 23:57:10
全部デリゲート配列にすれば条件分岐無くせるな
97デフォルトの名無しさん:2009/09/23(水) 00:20:21
>>96

State state = new State();
EventDelegate[] events = new EventDelegate[5901234];
・・・
void LoopMain() {
Loop:
events[state.Next]();
goto Loop;
}
・・・
void Event3203289() {
int hoge = state.hoge;
// state.Hoge が <2000、==2000、>2000 で分岐
state.Next = 3203291 + System.Math.Sign(state.Hoge-2000);
}
void Event3203290() {
・・・

ですね。邪悪で素敵w
98デフォルトの名無しさん:2009/09/23(水) 00:40:50
うげぇ…w
99デフォルトの名無しさん:2009/09/23(水) 01:07:44
まじキチ…ユダヤが人工地震を起こすぞ

【緊急情報カクサンよろしく】

ついに来ました。

大きい動きです。250nT超えてきました。ほぼ間違いありません。もう一度言います。

友人、知人、親類縁者、あらゆるつながりを駆使して巨大地震がくることを教えて下さい。

四川地震より大きいのが来る可能性があります。
http://g★olde★ntam★atama.b★lo★g84.fc2.c★om/

★★★★★危険度MAX★★★★★
★★★★★★★★★★★★★★★★

★千葉、静岡、東京、関東で大地震が起きる可能性が非常に高くなっています★★★
★千葉、静岡、東京、関東で大地震が起きる可能性が非常に高くなっています★★★
★千葉、静岡、東京、関東で大地震が起きる可能性が非常に高くなっています★★★
★千葉、静岡、東京、関東で大地震が起きる可能性が非常に高くなっています★★★

★★★★★★★★★★★★★★★★
★★★★★危険度MAX★★★★★

警告!連休中の21、22、23日が危ない!かも2
http://live24.2ch.net/test/read.cgi/eq/1★253494015/
【大気イオン】e-PISCO Part11【また延長】
http://live24.2ch.net/test/read.cgi/eq/1★252991726/

本当に地震が来たら、犯人は特権階級全員だということ2
100デフォルトの名無しさん:2009/09/23(水) 01:20:13
Cの関数ポインタの配列みたいにデリゲート配列使ってみたけど
オーバーヘッドが大きいようで条件分岐版よりも遅かった事がある
101デフォルトの名無しさん:2009/09/23(水) 10:40:45
>>99
ボキュはマジキチでしゅ、まで読んだ。
102デフォルトの名無しさん:2009/09/23(水) 14:24:10
>>47をおねがいします。
メモ帳などがFocusを持たずに選択状態を描画している仕組みが
どうしてもわかりません><
103デフォルトの名無しさん:2009/09/23(水) 14:35:44
>>102
リファレンスでHに関係するモノを調べるといいと思うよ。
104デフォルトの名無しさん:2009/09/23(水) 14:37:02
エッチ///
105デフォルトの名無しさん:2009/09/23(水) 14:41:31
>>102
HideSelectionをFalseじゃないの?
106デフォルトの名無しさん:2009/09/23(水) 15:52:02
>>103
>>105
うほっ!ありがとう!
107デフォルトの名無しさん:2009/09/23(水) 16:34:29
マルチかよ
108デフォルトの名無しさん:2009/09/23(水) 18:46:01
はじめまして。けん一と申します。
文字列を選択しているときに、濃青色に反転しますが、
この色を変えることは可能でしょうか?
109デフォルトの名無しさん:2009/09/23(水) 18:49:54
デザイナのプロパティウィンドウを見ろよけんいち
110デフォルトの名無しさん:2009/09/23(水) 18:50:38
無理。
111デフォルトの名無しさん:2009/09/23(水) 20:13:21
 ,.――――-、
 ヽ / ̄ ̄ ̄`ヽ、
  | |  (・)。(・)|  
  | |@_,.--、_,>  
  ヽヽ___ノ  あきらめるでござる
112デフォルトの名無しさん:2009/09/23(水) 20:46:21
ケンイチ殿wwwwwwwwwww
113デフォルトの名無しさん:2009/09/23(水) 20:50:19
ケンイチ氏な
114デフォルトの名無しさん:2009/09/23(水) 22:33:24
C#で、DonutRAPTのタブバーのような機能ってあるのでしょうか?
ttp://up3.viploader.net/ippan/src/vlippan011148.jpg
115デフォルトの名無しさん:2009/09/23(水) 22:36:41
フラットスタイルのタブ?
116デフォルトの名無しさん:2009/09/23(水) 22:49:08
>>114
少なくともGUI部品としてのlook&feelはToolStripButtonで同じことができるんじゃない?
っていうか、なんか10年前のGUIだなそれ
117デフォルトの名無しさん:2009/09/23(水) 22:50:12
ToolStrip使うことになるかな
それただのReBarに配置されたボタンだし
118デフォルトの名無しさん:2009/09/23(水) 22:51:45
ツールストリップにボタン置いてくだけじゃね?
119デフォルトの名無しさん:2009/09/23(水) 23:09:56
tabControlでのフラットボタンの、選択した時と同じ見た目にする手段か、タブバーそのものの機能があればと思っていたのですが、
やはりtoolStripにボタンを配置させて、タブと同じような制御をさせる方法しかないようですね。
ご回答ありがとうございました。
120デフォルトの名無しさん:2009/09/24(木) 00:45:55
クラスを作る側なんですが、メソッドの引数がXXXだった場合は○○○例外を投げる
みたいな一覧というかガイドラインはどこかにないでしょうか?
.NET Frameworkに定義済みの例外がたくさんあって、どれが適切か毎回悩んでしまいます。
121デフォルトの名無しさん:2009/09/24(木) 01:14:48
122デフォルトの名無しさん:2009/09/24(木) 01:25:57
>>109
けん一です。
皆さんお返事ありがとうございます。
選択色のプロパティウインドウにありますか??
123デフォルトの名無しさん:2009/09/24(木) 01:26:55
>>121
ありがとうございます。そこを参考にして設計してみます。
124デフォルトの名無しさん:2009/09/24(木) 02:40:16
>>120
Argument派生、InvalidOp、NotSupported、NotImpl以外は殆ど使わない気がする
125デフォルトの名無しさん:2009/09/24(木) 08:50:37
確かに
つかほとんどArgument
126デフォルトの名無しさん:2009/09/24(木) 10:03:49
オブジェクトをディープコピーしたいとき
GetCloneメソッドを定義してごりごり書くのと
シリアライズしてコピーを作るのと方法がありますが
オブジェクトには10個のプロパティと
ジェネリックリストが3つ入ってます

どっちがいいでしょうか?
127デフォルトの名無しさん:2009/09/24(木) 14:11:52
好きなほう使えば?
128デフォルトの名無しさん:2009/09/24(木) 14:13:39
すみません。質問です。
System.Net.WebClient.DownloadData()を実行するときに
ノートンやウイルスバスターなどのセキュリティソフトの
FWの影響を受けることはありますか?
うける場合どういう対処を取るのが定石ですか?
129デフォルトの名無しさん:2009/09/24(木) 14:15:26
FWで止められたらそのソフトの通信を許可してやれば良い
130デフォルトの名無しさん:2009/09/24(木) 14:37:10
影響受けなきゃただの役立たずじゃねーか
131デフォルトの名無しさん:2009/09/24(木) 14:52:11
ウィルスソフト作らないでください
132デフォルトの名無しさん:2009/09/24(木) 14:54:06
>>130
ワロタw
133デフォルトの名無しさん:2009/09/24(木) 18:53:52
質問です。
asp.netで 複数のページ(.aspx)が定義してあります。
これらを直接呼ばずにHome.aspxという窓口を準備しておいて、
ActionというQueryStringで判断し、
Response.RedirectかServer.Transferで
対象のページに飛ばそうと思っています。
Home.aspx内でRequerst.QueryStringのコレクションをそのまま遷移先のページへ渡したいのですが
どうすればいいのかわかりません。
遷移先のURLに直接記述するしかないのでしょうか?
134デフォルトの名無しさん:2009/09/24(木) 19:45:36
お勧めの文献教えてたもれ
135デフォルトの名無しさん:2009/09/24(木) 20:09:53
今見てるんだけど文法からはじめるVisualC#入門って分かりやすい
かなり初心者向けだけどね
136デフォルトの名無しさん:2009/09/24(木) 21:08:20
>>133
セッションにでも突っ込んで渡せば?
137デフォルトの名無しさん:2009/09/24(木) 21:52:22
商品販売管理システムを作っている。
顧客、商品の項目にフリガナを自動入力させられたら利便性が高くなるだろうと頑張った。
いろいろ調べて、自動でフリガナが入るようになった。
しかし(-_-;)。
タブやシフトタブで項目をいったり来たりしていたら、
顧客に自動で入ったフリガナがなぜか商品のフリガナ欄に表示されたではないか。
これはたまに起こる現象であり、同じ操作をしても出ない場合がある。

APIを活用しているらしいが、なぜだか分かる?
教えてちょ
(-_-;)。
138デフォルトの名無しさん:2009/09/24(木) 21:53:45
どんなコード書いてるかもわからずに考えろと?

バカじゃねーの?
139デフォルトの名無しさん:2009/09/24(木) 22:03:23
知らないなら黙っててください。
140デフォルトの名無しさん:2009/09/24(木) 22:07:06
コードが悪いんだろハゲ
141デフォルトの名無しさん:2009/09/24(木) 22:18:33
>>135
これかな?

http://www.e-hon.ne.jp/bec/SA/Detail?refShinCode=0100000000000032217041&Action_id=121&Sza_id=B0

明日本屋回ってみる。
他文献引き続きぷりーず
142デフォルトの名無しさん:2009/09/24(木) 22:39:07
>>137
なぜ起こるのか?簡単すぐる
143デフォルトの名無しさん:2009/09/24(木) 22:51:48
>>139
APIスレから出てくんな
144デフォルトの名無しさん:2009/09/24(木) 22:52:50
>>134
C# の本ではないけど。
自分は C++ MFC から C++/CLI に移った時に使った本。近い感じならいけるかも。
C++/CLI がわかれば C# もほとんどなんとかなる。
※移行の際に参照した本はこれ一冊

実践C++/CLI 極めるための基礎と実用テクニック
145デフォルトの名無しさん:2009/09/24(木) 23:24:20
>>144
それはちょっと敷居が高そうです><
146デフォルトの名無しさん:2009/09/24(木) 23:26:11
C#から他のアプリを起動させているんですが、タスクバーには表示させたくないので
ProcessWindowStyle.HiddenでProcess.Startしてみたところ
タスクバーに表示されなくなったのはいいのですが
Process.CloseMainWindow()が使えなかったり期待外の動作でNGでした。

NaiNai(ttp://www.vector.co.jp/soft/winnt/util/se317779.html)のように
他のアプリをタスクバーに表示させないようにするにはどうやるんでしょうか?
147デフォルトの名無しさん:2009/09/24(木) 23:56:05
>>146
普通に起動して、ITaskbar インターフェイスを利用して消す。
148デフォルトの名無しさん:2009/09/25(金) 00:02:59
>>142
なぜなの?教えてください。
149デフォルトの名無しさん:2009/09/25(金) 00:04:22
バグがあるから。
150デフォルトの名無しさん:2009/09/25(金) 00:04:39
>>147
ありがとうございます。
ITaskbarList がそれですかね?
調べてみます。
151デフォルトの名無しさん:2009/09/25(金) 00:13:48
>>150
それそれ。間違えてた。すまん。
152デフォルトの名無しさん:2009/09/25(金) 01:19:14
教えてください。
本当に困っています。
どうすればよいでしょうか?
153デフォルトの名無しさん:2009/09/25(金) 01:20:20
死ね
154デフォルトの名無しさん:2009/09/25(金) 01:25:15
解決しました
ありがとうございます
155デフォルトの名無しさん:2009/09/25(金) 03:05:49
テキストボックスの枠の色はどうやって取得すればいいですか?
アプリケーション定義のコントロールで使いたいんですが、できれば決めうちでしたくないので。
156デフォルトの名無しさん:2009/09/25(金) 10:39:48
入力された文字列が正しいかヴァリデーションしたいのですけれど、
Parseとかでチェックして良いのでしょうか?CF3.5です。

try
{
 int tmp = Int32.Parse(string_num);
}
catch
{
}

こう書いて、tmpがどこからも参照されない場合、
リリースビルドで最適化によって上記ロジック自体が消えたりします?
157デフォルトの名無しさん:2009/09/25(金) 10:47:02
それ消すのは過剰な最適化だな
つかcatchして何もしない、tmpも使わない、ならValidationにならない気がするが
しかしTryParseがないとは面倒だのう
158デフォルトの名無しさん:2009/09/25(金) 10:50:24
すみません。catchの中ではエラーメッセージを生成します。
起動時に全ての入力を一括チェックする方法だと、
tmpは特に使わない感じになると思うのですが。
例えば、App.configの中身を精査するみたいな。

まぁ、ConfigurationManagerも無いので作るのですが‥‥
159デフォルトの名無しさん:2009/09/25(金) 11:21:55
Int32.Parse(string_num);
だけで良いんじゃないか
160デフォルトの名無しさん:2009/09/25(金) 11:24:32
asyncCallってなんて読むの? えーしんくこーる?
161デフォルトの名無しさん:2009/09/25(金) 11:37:53
>>159
たしかに試してみたらその通りでした。
パース文を2か所に書きたくなかったので、
int tmp = 設定クラスのプロパティ
にしていたんですけれど、この場合はプロパティだけだと
エラーになるので‥‥

プロパティが呼ばれるたびにParseせずに内部で保持しろ
という気もするのですが、
どうせ数回しか参照されない値の場合、
内部で保持するほどのものでもないかなと‥‥
162デフォルトの名無しさん:2009/09/25(金) 11:39:42
>>160
Ajax をアジャックスと読むならアシンク、エイジャックスと読むならエイジャックスと読めばいいと思うよ。
好みの問題。
163デフォルトの名無しさん:2009/09/25(金) 11:40:44
> エイジャックスと読むならエイジャックスと読めば
エイジャックスと読むならエイシンクと読めば、の間違い。
164デフォルトの名無しさん:2009/09/25(金) 13:09:02
>>160
英語発音ならエイシンクですな。
165デフォルトの名無しさん:2009/09/25(金) 13:14:10
エイシンクロナス?
アシンクロナス?
166デフォルトの名無しさん:2009/09/25(金) 14:22:09
だから、英語圏人ならエイシンクロナス。
日本人ならアシンクと言う人は沢山いる。
167デフォルトの名無しさん:2009/09/25(金) 16:49:56
>英語圏人ならエイシンクロナス。
ダウト
168デフォルトの名無しさん:2009/09/25(金) 16:51:36
まあこれ以上はこっちでやってくれ

nullをヌルと言う人って何なの?
http://pc12.2ch.net/test/read.cgi/tech/1203474071/
169デフォルトの名無しさん:2009/09/25(金) 16:56:12
this.TopMost = true;
の逆で、いつも背面に表示したいのはどうやるの?
170デフォルトの名無しさん:2009/09/25(金) 17:28:10
>>165
どっちでもいい
171デフォルトの名無しさん:2009/09/25(金) 17:29:50
>>169
他のをTopMost
172デフォルトの名無しさん:2009/09/25(金) 17:30:11
どなたか155わからないでしょうか。
173デフォルトの名無しさん:2009/09/25(金) 17:46:02
>>171
IEやエクスプローラもあるから、それはちょっと無理です…。
174デフォルトの名無しさん:2009/09/25(金) 17:48:32
>>173
可能です
175デフォルトの名無しさん:2009/09/25(金) 17:56:39
>>174
え!? 自分で作ったプログラム以外をTopMostにできるんですか?
176デフォルトの名無しさん:2009/09/25(金) 18:06:34
たった今いいことあった!
マックのドライブスルーから帰ってくると、家の車の下にネコ発見!
あれ、うちのネコじゃないなあ・・・でもどっかでみたことあるな・・・
と思い、車の下を覗き込みと逃げずにこっちをみている
まさかと思い、1年くらい前に野良猫に追いかけられ行方不明になった猫の名前を呼んでみた
すると・・・「にゃ〜ん」と甘えた声が!
すっごく弱虫で甘えん坊なそいつが1年も生きていたなんて・・・
名前を呼んだら、ビクビクしながらこっちに寄ってきて、身体を撫でたらビクっとしてまた車の下に隠れようとしたけれど
何度も何度も名前を呼んで声かけたらにゃ〜んにゃ〜んと寄ってきて頭を撫でさせてくれた
ものすごいガリガリに痩せてたけど、抱き上げると前と変わらず、頭をすりつけて甘えてくる
もう絶対死んだと思ったけど、本当によかった!
177デフォルトの名無しさん:2009/09/25(金) 18:42:45
どこの誤爆だ。w
でもよかったと言っておこう。
178デフォルトの名無しさん:2009/09/25(金) 19:12:10
コピペ
179デフォルトの名無しさん:2009/09/25(金) 19:31:53
質問です。
今、webブラウザ(?) を作ろうとしています。
テキストボックスにURLを入れてボタンをおしてページに飛ぶのは出来たのですが、
今みているページのURLをテキストボックスに入れることが出来ません。
IEみたいに、ページのURLを表示する事は出来ませんか?
180デフォルトの名無しさん:2009/09/25(金) 19:35:02
WebBrowser.Document.Url
181デフォルトの名無しさん:2009/09/25(金) 20:07:12
>>169
デスクトップの子供にする

>>171
SystemColors のメンバにいない?
182デフォルトの名無しさん:2009/09/25(金) 23:54:27
>>175
WndProc をオーバーライドして
Zオーダが変わりそうになったら
Zオーダを最背面にしちゃえばよかったはず
183デフォルトの名無しさん:2009/09/26(土) 00:00:25
>>181
> デスクトップの子供にする
これ詳しく頼む
184デフォルトの名無しさん:2009/09/26(土) 00:07:20
認知偽装というやつか
185デフォルトの名無しさん:2009/09/26(土) 00:12:15
ドライブスルーに使った車と、下にネコのいた車とは別なのだろうか
同じ車だとしたら、車庫入れの際にネコが轢かれなくて良かった
186デフォルトの名無しさん:2009/09/26(土) 00:52:38
>>181
(0x7f, 0x9d, 0xb9)とSystemColorsのメンバとすべて比較してみましたが、いずれも違いました。
187デフォルトの名無しさん:2009/09/26(土) 01:19:44
ある場所に自動で入れたフリガナが、
全く別の項目のフリガナに入っちゃうってどういうことよ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
188デフォルトの名無しさん:2009/09/26(土) 01:35:45
うるせーよ馬鹿
189デフォルトの名無しさん:2009/09/26(土) 01:35:52
だあらぁぁぁ、どっかでそのコントロールに入れてるんだよ君が!!!!!!!
190デフォルトの名無しさん:2009/09/26(土) 03:36:29
TextBox継承してTextプロパティ上書きしたコントロールにでも置き替えてブレークポイント貼ってみろ
191デフォルトの名無しさん:2009/09/26(土) 07:20:05
>>183
SetParent(GetDesktopWindow()); だったかな。
192デフォルトの名無しさん:2009/09/26(土) 09:15:02
>>190
なんでそんなことするの?
継承とフリガナに関連性があるの
(*_*)?
193デフォルトの名無しさん:2009/09/26(土) 09:31:27
>>192
死ねよハゲ
194デフォルトの名無しさん:2009/09/26(土) 10:04:01
>>193
うんこ野郎
195デフォルトの名無しさん:2009/09/26(土) 10:14:02
デバッグ放棄するならプログラム向いてない
もう辞めた方がいい
196デフォルトの名無しさん:2009/09/26(土) 10:34:50
ポインタや、参照といったことから、可能性を追求できるぐらいの知能は必要。

>>192
イベントを取得して、どっから送られてきたかとか、確かめることができる。
それをやれって言ってくれてる親切な人だぞ。
197デフォルトの名無しさん:2009/09/26(土) 10:41:13
バカには何を言っても無駄。
198デフォルトの名無しさん:2009/09/26(土) 10:43:20
このゴミ虫殺せよ
199デフォルトの名無しさん:2009/09/26(土) 10:47:20
>>186
そりゃ残念。あとは、実際に描画して取得するくらいかね。
200デフォルトの名無しさん:2009/09/26(土) 10:56:07
>>196
あほかww
201デフォルトの名無しさん:2009/09/26(土) 13:16:44
とんでもない無能っぷりだな
もうほっとけよ
202デフォルトの名無しさん:2009/09/26(土) 14:23:32
>>196が心配なのでTextChanged
203デフォルトの名無しさん:2009/09/26(土) 15:46:06
ACCESSのmdbをC#で読み書きするプログラムを作ったんですよ。
で、ACCESSが入ってない環境で動かせるかどうか確かめたら、
OleDbPermissionのアクセス許可に失敗したようなエラーが出ました。
mdbってACCESSはいってなくなてもC#で操作できるんだよね??
アクセス許可に失敗ってどういうこと?
ACCESSが入ってる環境だと問題なく動くんですが…
誰かアドバイスください。
204デフォルトの名無しさん:2009/09/26(土) 15:53:22
MDAC が必要。
205デフォルトの名無しさん:2009/09/26(土) 16:01:51
>>203
ACCESSつかってcdbを読み書きするプログラムだったら
ACCESS入ってないと無理なのでは?
初心者なので間違ってたらすいません。
206デフォルトの名無しさん:2009/09/26(土) 16:07:12
>>205
そんな事ないんじゃね?
DVD管理ソフトがC#で書かれているのがあったけど
ACCESS入って無くても読み書きできたぞ
もちろんACCESSから読む事もできる
207デフォルトの名無しさん:2009/09/26(土) 16:14:23
>204

MDAC自体は入ってるようなんですが…
208デフォルトの名無しさん:2009/09/26(土) 16:21:29
おまえそれネットワーク共有とかから実行してないだろうな。
209横から:2009/09/26(土) 16:45:36
>>208
俺も詳しくないんで確認だけど、それはイントラネットのネットワーク共有ドライブ
(例えばK:)にある実行アプリを実行しているのではないか、という意味だよね。

mdbファイルはどこにあってもアプリに部分信頼以上の権限があればいい、
という認識でOK? (MDACのバージョンによっては完全信頼)
210デフォルトの名無しさん:2009/09/26(土) 16:55:27
ネットワーク共有っていうか、
環境自体はシンクライアント端末なんだけど、
それは関係あるの?
211デフォルトの名無しさん:2009/09/26(土) 19:14:47
そういうときは、完全信頼を与えるとか、マイコンピュータから実行してみるとか、
その辺を試すのがスジ。
212デフォルトの名無しさん:2009/09/26(土) 20:01:30
完全信頼を与えるって、どこでどうすればできますか
213デフォルトの名無しさん:2009/09/26(土) 20:03:38
caspol だろ?
214デフォルトの名無しさん:2009/09/26(土) 21:07:07
もう悪いこと言わないから .NET Frameworkを3.5SP1にしてしまえ
215デフォルトの名無しさん:2009/09/26(土) 22:20:44
>>198
ハゲ野郎
216デフォルトの名無しさん:2009/09/26(土) 22:34:33
しかし、3.5SP1て
・イントラネットでもマイコンピュータゾーン
・厳密名付きアセンブリでもデフォルト検証なし
いい感じに端折ってきてるよなw
217デフォルトの名無しさん:2009/09/27(日) 21:13:17
C#で配列のスライシングと同様のことをするにはどうやるんですか?
218デフォルトの名無しさん:2009/09/27(日) 21:22:55
>>217
Array.Copy メソッド (Array, Int32, Array, Int32, Int32)
のことかな?
219デフォルトの名無しさん:2009/09/27(日) 21:36:26
>>217
LINQ
220デフォルトの名無しさん:2009/09/27(日) 21:45:20
>>218
できました
ありがとうございました
221デフォルトの名無しさん:2009/09/27(日) 22:14:38
スライシングというなら
new[] { 0, 1, 2, 3, 4 }.Skip(1).Take(3).ToArray()
の方がそれっぽいな
222デフォルトの名無しさん:2009/09/27(日) 22:19:42
気持ち悪いな
223デフォルトの名無しさん:2009/09/27(日) 23:28:03
var source = new[] { 1, 2, 3, 4, 5 };
// Linq
var copyL = source.Skip(1).Take(3).ToArray();
// Array.Copy
int[] copyAC = new int[3];
Array.Copy(source, 1, copyAC, 0, copyAC.Length);

実際に使ってみると、Array.Copyのほうがゴチャついてると思う。
224デフォルトの名無しさん:2009/09/28(月) 00:16:03
VisualC#2008で質問です。
タスクバーのなかに検索枠を作りたいです。
以前はBandObjectでできたらしいのですが、バージョンが古くて動きません。
ToolStripというのがそれらしいんじゃないかと考えました。
Formのなかに配置してみたところ、感じとしてはそれっぽいんだけど、コンパイルしたところ、単にFormにToolStripが配置されているだけで、タスクバーにもっていっても登録できません。
(1)ToolStripでタスクバーのなかに検索枠を作ることはできますか?
(2)できないとしたら、なにをどうすればよいでしょう?
ご教示よろしくお願いします。
225デフォルトの名無しさん:2009/09/28(月) 00:23:38
まっとうなやりかたなら、BandObject 以外の方法はないだろ。
226デフォルトの名無しさん:2009/09/28(月) 00:31:36
アセンブリの生成に失敗しました -- 参照されたアセンブリ 'Interop.SHDocVw' は厳密な名前を持っていません。
をどう解決すればいいですか?
227デフォルトの名無しさん:2009/09/28(月) 01:01:09
タイプライブラリインポータか何かで付けられなかったっけ
228デフォルトの名無しさん:2009/09/28(月) 01:13:24
初歩的なことですみません

//応答データを受信するためのStreamを取得
System.IO.Stream st = webres.GetResponseStream();


//データを読み込む
int readSize = st.Read(bufferData, 0, bufferData.Length);

while (readSize > 0)
{
//データが読み込めた時
//読み込んだデータをMemoryStreamに保存する
requestData.Write(bufferData, 0, bufferData.Length);
readSize = st.Read(bufferData, 0, readSize);

}


Bitmap BmpSource = new Bitmap(requestData);

最後の行で「使用されたパラメータが有効ではありません」とエラーがでます
一昨日こんな感じでうまくいってたコードがHDDクラッシュで涙目です
時間をかけてやりたいのですが、ショックが大きすぎて考えもまとまりません
こんな簡単なことですみません ><。
229デフォルトの名無しさん:2009/09/28(月) 01:16:30
ストリームの現在位置が一番後ろだからじゃね
230デフォルトの名無しさん:2009/09/28(月) 01:16:32
ありがちなネタとしては
ストリームのポインタ巻き戻してないんじゃね
231230:2009/09/28(月) 01:16:57
ぬあ
被った…

2秒差じゃしょうがないよね
232デフォルトの名無しさん:2009/09/28(月) 01:17:53
あ、自己解決しました
人に見てもらう気持ちでながめるだけでちがいますね

ひとりだとこんな簡単なことで ><。
233デフォルトの名無しさん:2009/09/28(月) 01:19:05
せっかくお答え頂いたので訂正箇所を
requestData.Write(bufferData, 0, bufferData.Length);
readSize = st.Read(bufferData, 0, readSize);

第三パラメータがあべこべでした

ありがとう!
234デフォルトの名無しさん:2009/09/28(月) 02:36:40
バグってるぜ。
235デフォルトの名無しさん:2009/09/28(月) 09:00:03
何がバグってるかというと、
1行目もreadSize分だけ書き込むようにしなきゃダメってこと。
236デフォルトの名無しさん:2009/09/28(月) 11:03:35
>>235
ですです ありがとうございました
237デフォルトの名無しさん:2009/09/28(月) 11:09:08
ああごめんそこを直したって話だったか。
238デフォルトの名無しさん:2009/09/28(月) 11:10:34
初めて学ぶプログラミング言語としてC#は適当ですか?
それともVisualBasic.NETのほうがよいでしょうか?
239デフォルトの名無しさん:2009/09/28(月) 11:12:26
どっちでも大して変わらない。
240デフォルトの名無しさん:2009/09/28(月) 11:13:10
VBは変な癖がつくからやめとけ
C#は入門者向けの本が少ないから微妙
.NETでなくていいならJavaにしとけ
241デフォルトの名無しさん:2009/09/28(月) 11:22:25
VB.NET は言語的に無理やり感のある部分があるから .NET にするなら C# の方がよいと思う。
個人的には Python をすすめたいけど 3.0 が出てそんなに経ってないから
2.x 系の情報と混在して初心者には混乱しやすいかも。
242デフォルトの名無しさん:2009/09/28(月) 11:28:31
俺は、ほぼ最初にC#覚えた
あんま問題は無かったな
その前にCとjavaを軽く触ったからかも知れんが
243デフォルトの名無しさん:2009/09/28(月) 13:04:04
>>240

>C#は入門者向けの本が少ない
これは微妙な気がする
後は同意
244デフォルトの名無しさん:2009/09/28(月) 13:08:20
IronPython使ってみたけど
C#の方がいいよ
245デフォルトの名無しさん:2009/09/28(月) 13:16:03
俺もC#→IronPython→C#と出戻り
246デフォルトの名無しさん:2009/09/28(月) 13:25:03
IronPythonはC#から乗り換えるようなもんじゃないだろ
C#の補助だ
247デフォルトの名無しさん:2009/09/28(月) 13:43:06
補助つってもどういうときに使うの?
俺はファイルのバックアップとかの作業の自動化のためにCPythonで小さいスクリプト組んでるけど
248デフォルトの名無しさん:2009/09/28(月) 15:41:18
VBから来たおれは最初;をつけるのがめんどくさかったけど、今はこれのありがたさがわかる
249デフォルトの名無しさん:2009/09/28(月) 15:55:46
逆にマクロとかで;付けて怒られる
250デフォルトの名無しさん:2009/09/28(月) 20:08:55
>>248
VBは末尾の_に発狂する。
251デフォルトの名無しさん:2009/09/28(月) 20:16:24
末尾の_ってなに?
252デフォルトの名無しさん:2009/09/28(月) 20:17:02
VB10で_は省略できるようになるよ
まあVS2010ではC#4.0でCOMサポートの強化やdynamicによって
今までVBの方がやりやすかったことが完全に無くなるわけだけど
253デフォルトの名無しさん:2009/09/28(月) 20:23:23
>>251
VBは(っていうかC系統以外の言語の大半はそうだけど)改行コード = 行の終わりになってる。

だから、(文字列的に)改行しても(文法的な)行を継続したい場合は、‘_’で改行コードを
エスケープする必要がある。
254デフォルトの名無しさん:2009/09/28(月) 20:34:34
>>253
> VBは(っていうかC系統以外の言語の大半はそうだけど)改行コード = 行の終わりになってる。

そんなことねーだろ。

255デフォルトの名無しさん:2009/09/28(月) 20:39:20
まあ少なくとも歴史的にはそうなんだけど、
そのあたりは水掛け論にしかならんから議論しても無駄だね。
256デフォルトの名無しさん:2009/09/28(月) 20:40:58
水掛け論って。
メジャーな言語をいくつか思い浮かべればわかる話。
257デフォルトの名無しさん:2009/09/28(月) 20:44:44
ALGOLの影響下にある言語はフリーフォーマットだろうし、lisp系ももちろん一行一文じゃないし、
関数型だってそうだし、一行一文って、COBOLとかFORTRANとその影響下のBASICくらいじゃね?
258デフォルトの名無しさん:2009/09/28(月) 20:47:22
アセンブラやdosのbatだってそうだよ。
だから水掛け論にしかならんて。
259デフォルトの名無しさん:2009/09/28(月) 20:58:46
・一行一文
アセンブラ、バッチファイルやシェルスクリプト、COBOL,FORTRAN,BASIC

・フリーフォーマット
近代的な言語のほとんど

↑みたいな感じかね

「C系統以外ほとんどは」って、水掛け論になるレベルじゃないわな。
屁理屈でねばって「ほら水掛け論だ」って、自分にも一分くらいは理があるような
口ぶりはできるかもしれんけど。
260デフォルトの名無しさん:2009/09/28(月) 21:02:44
お前らスレタイ
261デフォルトの名無しさん:2009/09/28(月) 21:53:27
List<class>の値をDataGridViewに表示させてるんですけど
classのプロパティの値をコードから変更したら
すぐにDataGridViewにも変更された値を表示させたいんですが、
今のところ dataGridView1.Refresh(); で表示させてるんですが
一般的にはどうやるんですか?
もっとスマートなやり方があると思うんですが


List<Test> testList = new List<Test>();

class Test
{
public string s1 { get; set; }
public string s2 { get; set; }
}

private void Form1_Load(object sender, EventArgs e)
{
testList.Add(new Test { s1 = "a", s2 = "b" });
testList.Add(new Test { s1 = "c", s2 = "d" });
testList.Add(new Test { s1 = "e", s2 = "f" });

dataGridView1.DataSource = testList;
}

private void button1_Click(object sender, EventArgs e)
{
testList[0].s1 = textBox1.Text;
dataGridView1.Refresh();
}
262デフォルトの名無しさん:2009/09/28(月) 22:03:18
INotifyPropertyChanged
BindingList or ObservableCollection
263デフォルトの名無しさん:2009/09/28(月) 22:19:30
>>262
おぉそんなものがあったのか!
ありがとうございます。調べてみます
264デフォルトの名無しさん:2009/09/28(月) 23:47:18
>>252
例外フィルタがないぜ!!
265デフォルトの名無しさん:2009/09/29(火) 00:04:31
>>262
261じゃないがthx

public partial class Form1 : Form
{
class Test : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string info)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
private string s1_;

public string s1
{
get
{
return this.s1_;
}
set
{
if (value != this.s1_)
{
this.s1_ = value;
NotifyPropertyChanged("s1");
}
}
}
public string s2 { get; set; }
}
266デフォルトの名無しさん:2009/09/29(火) 00:05:13

List<Test> testList_ = new List<Test>();

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
testList_[0].s1 = "ababa";

}
private void Form1_Load(object sender, EventArgs e)
{
testList_.Add(new Test { s1 = "a", s2 = "b" });
testList_.Add(new Test { s1 = "c", s2 = "d" });

var customersBindingSource = new BindingSource();
customersBindingSource.DataSource = testList_;
dataGridView1.DataSource = customersBindingSource;
}
}
267デフォルトの名無しさん:2009/09/29(火) 00:25:20
windows movile ソフトウェアを作ってみてためしにcabファイルにしてみたんですが、
インストールに失敗します。
作成環境はVS2005です。
cabで失敗するunicodeは修正しました。

実機にcabを入れてタップすると「インストールに失敗しました」とだけ出ます。
こういう場合どうやって原因を確かめたらいんでしょうか?
268デフォルトの名無しさん:2009/09/29(火) 00:43:47
すぺるみす
269267:2009/09/29(火) 13:57:50
解決しました

ほんとにスペルミスでした

ミスしたのはcabプロジェクト名
本家プロジェクトに上書きしてしまいました orz
270デフォルトの名無しさん:2009/09/29(火) 14:06:38
>>268はエスパーなのか、本当に良くあるミスなのか
271267:2009/09/29(火) 14:13:12
本家プログラムと同じcabファイル名にしようと思うと起こりうることかも知れません

でも相当うっかりしてないとやらないと思います orz
272デフォルトの名無しさん:2009/09/29(火) 15:09:51
movileのことかと思ったわ
273デフォルトの名無しさん:2009/09/29(火) 17:30:16
invokeなんとか、とか、なんとかinvoke とか
たんなる invoke とかいろいろあるんですけど
全部delegateってことですか?
274デフォルトの名無しさん:2009/09/29(火) 18:22:08
invoke自体はただの英単語
何を指すかはメソッド次第
275デフォルトの名無しさん:2009/09/29(火) 20:27:13
各コントロール、フォームなどのフォントサイズを一括して変更する方法はないでしょうか?
276デフォルトの名無しさん:2009/09/29(火) 20:42:53
>>275
君は質問の仕方から勉強する必要がありそう
277デフォルトの名無しさん:2009/09/29(火) 20:53:44
>>275
方法1.フォントサイズを変更するコントロールすべてを一括選択した後にプロパティウィンドウでフォントサイズを変更する。
方法2.フォントなどはアンビエントプロパティなので、特に設定されていない場合(デフォルトの値)は親のコントロール(フォーム)の設定が反映されるようになっているので
     親コントロール(フォーム)のフォントサイズを変更すれば子コントロールにも反映される
278デフォルトの名無しさん:2009/09/29(火) 20:59:59
>>277
「フォントサイズ」なんて概念はそもそも存在しない。
その回答はない。
279デフォルトの名無しさん:2009/09/29(火) 21:02:16
↑君のレスは無用
280デフォルトの名無しさん:2009/09/29(火) 21:13:18
>>279
馬鹿はすぐこれだ。
ならフォントサイズってどういう意味だよ。
281デフォルトの名無しさん:2009/09/29(火) 21:15:21
>>280
フォントのサイズ
282デフォルトの名無しさん:2009/09/29(火) 21:20:44
283デフォルトの名無しさん:2009/09/29(火) 21:33:16
他人をバカ呼ばわり → 逃亡
284デフォルトの名無しさん:2009/09/29(火) 21:34:13
(・∀・)クスクス
285デフォルトの名無しさん:2009/09/29(火) 21:41:53
>>282
お馬鹿だな。
それで、その「フォントサイズ」を>>277の方法でコントロールに適用できるのかよ。
286デフォルトの名無しさん:2009/09/29(火) 21:45:29
「それじゃできない」とかいらないよ。
「こうやったらできる」って言えばいいだけ。

俺としては、方法2 で十分だと思う。
287デフォルトの名無しさん:2009/09/29(火) 21:48:48
>>286
それは「フォント」を設定しているのであって
「フォントサイズ」(そんな概念は存在しないが)を設定しているのではないだろう。

端的に言えば、コントロールごとに書体が違う場合はどうするのか。
288デフォルトの名無しさん:2009/09/29(火) 21:51:49
>>287
とりあえずお前はスレタイ読んで風呂でも入って落ち着けよ、な?
あと、初心者スレに向いてないよ
289デフォルトの名無しさん:2009/09/29(火) 21:54:26
>>288
俺の方から煽った覚えは無いけどね。
初心者だろうがなんだろうが、正しくないことは正しくないといってるだけだ。

このように、馬鹿ってのは決まって偉そうに人に講釈をする規範を
自分には適用しないダブスタ野郎だ。
290デフォルトの名無しさん:2009/09/29(火) 21:54:32
>>273
一般的にはメンバやデリゲートを呼び出すことをinvokeという
純粋に言語としてのC#に話を限ると,メソッドやデリゲートを表す式の後(引数)を付けた式のことをinvocation expressionと呼ぶ
291デフォルトの名無しさん:2009/09/29(火) 21:55:33
フォントサイズの概念から議論しようか
292デフォルトの名無しさん:2009/09/29(火) 22:10:37
>>289
さっさと失せろゴミ
293デフォルトの名無しさん:2009/09/29(火) 22:11:31
>>289
認知症か
なるほど
294デフォルトの名無しさん:2009/09/29(火) 22:15:02
eventの存在意義がわからない
delegateで十分な気が
295デフォルトの名無しさん:2009/09/29(火) 22:18:35
イベントはデリゲートのためのプロパティみたいなもの。
Javaなどではよくイベントの代わりにObserverパターンというのが使われるんだけど,
それに出てくるaddListenerやremoveListenerを一つにまとめたのがイベント。
その点ではgetValue/setValueを一つにまとめたプロパティと似てる。
Observerについてはググれ
296デフォルトの名無しさん:2009/09/29(火) 22:19:00
eventって、複数登録できるんだよな?
297デフォルトの名無しさん:2009/09/29(火) 22:20:17
イベントは複数登録できる
デリゲートは1個だけ
298デフォルトの名無しさん:2009/09/29(火) 22:22:53
マルチキャストといって,デリゲートも呼び出し対象を複数登録できる
本来,イベントがあればaddとremoveの実装次第でどうとでもなるからマルチキャストはいらないんだが
設計当時はイベント以外のデリゲートの使用が想定されてなかったと思われる
299デフォルトの名無しさん:2009/09/29(火) 22:45:35
>>298
さすがに最後の行はない。そういうデタラメを言っては行かん。
例えばRegex.Replaceを見よ。
300デフォルトの名無しさん:2009/09/29(火) 22:53:20
最後の行は言いすぎだけど今みたいにデリゲートをガンガン使うような状況は絶対に想定されてなかった
最適化しづらいだろうし戻り値の扱いとか無理があるし邪魔なだけ
301デフォルトの名無しさん:2009/09/29(火) 22:56:28
delagteもなんで
DelegateクラスとMulticastDelegateがあるんだよう

はじめからDelegateクラスをマルチキャスト可能にしとけよ
302デフォルトの名無しさん:2009/09/29(火) 23:09:52
private List<EventHandler> _ClickA;
public event ClickA { add { _ClickA.Add(value); } remove { _ClickA.Remove(value); } }

private EventHandler _ClickB;
public event ClickB { add { _ClickB = Delegate.Combine(_ClickB, value); } remove { 略

ClickAのようにするのがイベントの概念としては本来の形。
でも通常,addやremoveを省略して普通にイベントを宣言するとコンパイラはClickBのようなコードを生成する。
つまり「どうせデリゲートなんてほとんどイベントにしか使わないでしょ?」ってことでコンテナをくっつけてる。
303267:2009/09/29(火) 23:23:16
えーとデータから作成した画像がピクチャボックスに貼ってあって
それが(10,10)動いたときもとの画像をずらして
上10ピクセルと左10ピクセルだけ描画したいんですが

for文を2重にして
for(x=0;x<=10;x++)
{
for(y=0;y<=10;y++)
{
}
}

ってやると当然10×10ピクセルしか描画しません
上記のように描画したいとき
また移動量(x,y)が逆に動いてマイナスのときにも対応できる
簡単なアルゴリズムはありませんでしょうか?

ちなみにCGのように描画が必要なのでマスクは使えません

ヒントかリンクだけでもけっこうです
よろしくお願いします
304275:2009/09/29(火) 23:24:07
片付いたので見にきたら少し賑やかになってるw

概念はわかるけどemSizeのemはなに?
305デフォルトの名無しさん:2009/09/29(火) 23:25:25
どうでもいいが0〜10の、11回処理してないかい?それ
306267:2009/09/29(火) 23:26:49
あうw
307デフォルトの名無しさん:2009/09/29(火) 23:29:32
何がしたいのかサッパリ
308デフォルトの名無しさん:2009/09/29(火) 23:40:12
x < 10 または y < 10 の領域を描画したいんだろ
309267:2009/09/29(火) 23:45:12
>>308
あ!そうか!そういうことです!

なんかヒントになりました!

ありがとうございました!
310デフォルトの名無しさん:2009/09/29(火) 23:46:00
あらかじめ敵のXY座標を設定しておいて
それらをプログラム全体から利用したいんだけど
どこでどのように定義するのが適切なんでしょうか?

名前空間の内側、classの外側で定義すれば全体から利用できると思ったんだけど
下のを書き込むとフィールドやメソッドは定義できないとエラーがでます

Point TekiPos = new Point(10, 5);
311デフォルトの名無しさん:2009/09/29(火) 23:47:57
Teki.Posとは絶対に書きたくないの?
312デフォルトの名無しさん:2009/09/29(火) 23:48:02
>>310
public staticにしてクラス内にもて。
困ったときはpublic staticだ。
313デフォルトの名無しさん:2009/09/29(火) 23:56:09
まあゲームなんか難しく考えずpublic static(いわゆるグローバル変数)でもいいよ
ゲームは気を使って設計してもどうせ大なり小なり大域コンテキストクラスが出てくる
314デフォルトの名無しさん:2009/09/29(火) 23:56:09
>>311
あ、なるほど、Tekiクラスをプログラム全体で利用できるようにして
そのメンバPosに対してどこかでデータいれるってことかな

>>312
インスタンスを複数必要ないというか、あるとややこしくなるので
staticのほうがわかりやすそうですね

即レスありがとうございます
315デフォルトの名無しさん:2009/09/29(火) 23:59:48
>>314
ゲームって作ったこと無いんだけど
Enemyクラスかなんか作っといて、必要になったらnew Enemy()で
初期化してやった方がスマートなんじゃないの?
316デフォルトの名無しさん:2009/09/30(水) 00:04:29
敵が一体だからグローバル変数にするならまだいいけど,
敵が複数いて,ほかのクラスから特定の敵の座標を取得するためにいったんグローバル変数に入れたりするのは最悪のパターン
317デフォルトの名無しさん:2009/09/30(水) 00:23:04
どんなゲームだろうねえ
318デフォルトの名無しさん:2009/09/30(水) 00:25:45
敵がいて初心者が作るものったらSTG以外に無いだろ
319デフォルトの名無しさん:2009/09/30(水) 00:40:24
>>313
ありがとうございます。
最初からメモリや動作速度とか考えても仕方が無いですね
できるだけ自分にわかりやすく書こうと思います

>>315
敵と味方では振る舞いが違うからそういう風にしたほうがいいかもですね

>>316
そういう感じで設計仕様と思ってたんですが、なぜだめなんでしょうか?
将棋でいうところの盤をstaticで定義してどこからで参照できるようにして
部隊の動き(どの座標に前進後退するかなど)もstaticで定義しようと思っていたんですが

>>317>>318
シューティングは線形代数や三角関数などの数学的知識がいるので無学のわたしには無理です
ターン制の戦略ゲーム的なものを作ろうと思ってます
320デフォルトの名無しさん:2009/09/30(水) 01:02:15
class Matrix{} //フィールド全体とマス目を定義
class Enemy{} //敵のキャラクターを定義

この二つを作っておいてMatrixにEnemyのインスタンスを突っ込むとか
位置はEnemy、移動先はMatrixで定義しておいたほうが安全だと思う
グローバル変数をたくさん作ったり使い回し足りするのはトラブルの元
321デフォルトの名無しさん:2009/09/30(水) 01:09:03
逆だな
位置はMatrix、移動先はEnemy
322デフォルトの名無しさん:2009/09/30(水) 01:10:55
グローバル変数が使いたい時はstaticって何で入門書に書くんだろ
最初が肝心なんだぞ
書くなよ
323デフォルトの名無しさん:2009/09/30(水) 01:14:50
なるほど、グローバル変数を大量に作ってしまうのはそもそも設計に問題ありって感じですか
クラスの中にも自作クラスを入れられて、さらにそのクラスにも自作クラスを・・・
これがオブジェクト指向?
この感覚に慣れないとだめですね

>>321
マス目にenemyを放り込む感じですよね
そのほうがわかりやすそうですね

ありがとうございます
324デフォルトの名無しさん:2009/09/30(水) 01:25:04
動きゃいいんだよ
未完成で放置するのが一番良くない
325デフォルトの名無しさん:2009/09/30(水) 01:32:11
そんなことはないよ
静的変数使い回しなんてしてたら論理的なミスしたときに
わけわかめになりやすい
最初からオブジェクト指向のお作法を意識するのは上達の近道だよと
遠回りした俺が言ってみる久々のてすつ
326デフォルトの名無しさん:2009/09/30(水) 01:35:24
多言語から移った人間を意識してるんだろうけど要らない説明ではある気がする
327デフォルトの名無しさん:2009/09/30(水) 02:44:03
DataTable内に「name」という列を設けてその中に色々な名前を定義しています。

SEQ NAME
連番 名前
1  たろう
2  タロウ
3  TAROU

DataTable.Select("NAME LIKE '%たろう%'");

として検索した時に本来は
1  たろう
のDataRowのみ抽出したいのですが
2  タロウ
まで抽出されてしまいます。厳密に検索をするにはどうすればよいでしょうか?
※また、大文字・小文字も区別して検索するにはどうすれば良いでしょうか?   
328デフォルトの名無しさん:2009/09/30(水) 06:09:00
>>327
CaseSensitiveプロパティをtrueにしてからSelectしる
329デフォルトの名無しさん:2009/09/30(水) 07:50:56
>>302
どういう理屈だよ
330デフォルトの名無しさん:2009/09/30(水) 08:54:11
>>328
サンクス
331デフォルトの名無しさん:2009/09/30(水) 10:50:45
CSとKS,WSは別じゃないの?
プロパティ一覧見た限りだと、ロケールをインバリアントにすれば良さそう
332デフォルトの名無しさん:2009/09/30(水) 12:43:45
vs2008でWindowsフォームアプリケーションを作成しました。
インストーラーを発行して、配布しようとしましたが、.netフレームワーク3.5のダウンロードに30分近く要します。
コンポーネントはクライアントプロファイルのみにしています。
皆さんはどのような手段でインストール方法を取られていますか?
333デフォルトの名無しさん:2009/09/30(水) 15:57:29
ttp://www.microsoft.com/downloads/details.aspx?FamilyId=AB99342F-5D1A-413D-8319-81DA479AB0D7&displaylang=ja
の.NET Framework 3.5 Service Pack 1 (フルパッケージ) をDLしてインストーラに組み込んじゃいかんの?(いかんか)
#再頒布可能パッケージ があればいいんだけどね・・・・
#Microsoft .NET Framework 3.0 再頒布可能パッケージ まではあるのか・・・
334デフォルトの名無しさん:2009/09/30(水) 16:05:09
クライアント専用Frameworkサブセットってとこチェックしても30分もかかるもんなの?
やったことないけど
335デフォルトの名無しさん:2009/09/30(水) 16:25:46
Client Profile v3.5がインストールされる条件が変で、
バージョンを問わずフルセットの.NET Frameworkがインストールされていないこと。
条件が合わない場合は差分をダウンロードしてフルセットでのインストールとなる。
プレインストールのXPやVista以降の場合、基本的に.NETが導入済みなので、
よほど特殊な環境でなければClient Profileは導入されない。
336デフォルトの名無しさん:2009/09/30(水) 20:44:06
>>335
XPにも標準で.netがついているの?
何かのネットで見たら、付いていないと書いていたんだ。
記事はまちがいだったのかな。
337デフォルトの名無しさん:2009/09/30(水) 20:48:56
「プリインストールの」だろ
相当前に使ってたノートPCにもデフォで1.1が入ってたぜ
338デフォルトの名無しさん:2009/09/30(水) 20:50:09
XP はないよ。
2003 が 1.1、Vista が 3.0 だね。
339デフォルトの名無しさん:2009/09/30(水) 20:51:48
でも、今時.net入ってない環境ってどうよ
340デフォルトの名無しさん:2009/09/30(水) 21:04:00
.netが出だした当初って誰も入れたがらなかったけど
.NETを使ったフリーソフトも出だして当たり前になってきたね
341デフォルトの名無しさん:2009/09/30(水) 21:04:56
2.0は入ってるものと考えていいと思うけど3.5はまだきつい
342デフォルトの名無しさん:2009/09/30(水) 21:07:40
まぁでも、2.0 が入ってれば、勝手に 3.5 が Windows Update で入るんだけどな。
343デフォルトの名無しさん:2009/09/30(水) 21:07:59
1.0が入ってないとダメっつーインストーラーは勘弁して欲しいw
344デフォルトの名無しさん:2009/09/30(水) 21:32:02
1.x が必要なアプリは使いたくない
345デフォルトの名無しさん:2009/09/30(水) 21:44:28
2.0とか3.5の入ってる環境なら1.x必須なのも動くんじゃないの?
346デフォルトの名無しさん:2009/09/30(水) 21:47:32
たいていは 2.0 で動くと思うけど、サポート対象にはしたくない。
347デフォルトの名無しさん:2009/09/30(水) 21:48:34
最近コンポーネントエラーって起きたことないな
348デフォルトの名無しさん:2009/09/30(水) 22:18:05
長くなるけど質問お願い
暗号化を作っていて、ボタンのイベントに処理を書くのではなくて
クラスに処理入れて、それをボタン押したときに呼び出すようにするには
どうしたらいいのでしょうか
お力おかしください

public partial class Form1 : Form
{
//バイト配列で変数を宣言
public byte[] DesKey;
public byte[] DesIV;e,
public byte[] cryptData;


public Form1()
{
InitializeComponent();
RC2CryptoServiceProvider TDES = new RC2CryptoServiceProvider();
//TripleDESCryptoServiceProvider TDES = new TripleDESCryptoServiceProvider();
DesKey = TDES.Key;
DesIV = TDES.IV;
}

//暗号化ボタンを押したときの処理
private void button1_Click(object sender, System.EventArgs e)
{
// source 配列から cryptData 配列へ変換
// 文字列を byte 配列に変換します
byte[] source = Encoding.Unicode.GetBytes(genbun.Text);

349デフォルトの名無しさん:2009/09/30(水) 22:18:58
上に続きですよろしくおねがいします
// Triple DES のサービス プロバイダを生成します
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();

// 入出力用のストリームを生成します
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(DesKey, DesIV),
CryptoStreamMode.Write);

// ストリームに暗号化するデータを書き込みます
cs.Write(source, 0, source.Length);
cs.Close();

// 暗号化されたデータを byte 配列で取得します
cryptData = ms.ToArray();
ms.Close();

// byte 配列を文字列に変換して表示します
angougo.Text = Encoding.Unicode.GetString(cryptData);

}
350デフォルトの名無しさん:2009/09/30(水) 22:19:53
>>334
クライアント専用サブセットってどこで設定するの?
351デフォルトの名無しさん:2009/09/30(水) 22:22:59
暗号化とかまったく関係ないな。
352デフォルトの名無しさん:2009/09/30(水) 22:23:59
>>350
プロジェクトのプロパティ
353デフォルトの名無しさん:2009/09/30(水) 22:26:42
>>348
どう、ってインスタンスメソッドにするならボタンクリックでクラスを初期化して
メソッド呼び出せばいいのでは?
staticメンバ一個作っておいてそこにインスタンスぶち込んでstaticぽく呼んでもいいけど
354デフォルトの名無しさん:2009/09/30(水) 22:26:49
>>349
public partial … → public class Encryption
public Form1() → public Encryption()
private void button1_Click(… → public byte[] Encrypt(string sourceText)
byte[] source = … → byte[] source = Encoding.Unicode.GetBytes(sourceText);
angougo.Text = Encoding.Unicode.GetString(cryptData); → return Encoding.Unicode.GetString(cryptData);
355デフォルトの名無しさん:2009/09/30(水) 22:27:35
>>354
訂正
private void button1_Click(… → public string Encrypt(string sourceText)
356デフォルトの名無しさん:2009/09/30(水) 22:34:18
>>348
Class Angouka
{
  publick void Start(){....};
}

Class From
{
  Button_Click()
  {
    Angouka ang=new Angouka();
    ang.Start();
  }
}
357デフォルトの名無しさん:2009/09/30(水) 22:58:49
初心者で考え方がいまいちで申し訳ないです。

クラスを作り
その中に今まで入れていたボタン処理を入れて

そのクラスをボタンイベントに生成して
呼び出せばおkと言う感じ?
358デフォルトの名無しさん:2009/09/30(水) 23:03:13
うん。
359デフォルトの名無しさん:2009/09/30(水) 23:22:12
ボタンが押された時の処理を別のクラスに書くんじゃない
その目的の処理を行うクラスを作って,そのクラスをイベントハンドラから利用するんだ
機械的に移すだけだとあんまり意味がない
360デフォルトの名無しさん:2009/09/30(水) 23:33:12
クラスわけは責務をわけるのと同等
361デフォルトの名無しさん:2009/09/30(水) 23:33:57
こういう違いって理解できない人にはなかなか理解してもらえなかったりするな…
362デフォルトの名無しさん:2009/09/30(水) 23:35:53
どうでもいいけどいやよくないけど
暗号化結果のバイト列をUnicodeEncodingで文字列にするのは無茶だぜ。

まあ諸悪の根源はv1.1の頃のMSのサンプルだったりするんだが。
363デフォルトの名無しさん:2009/09/30(水) 23:38:17
一応そのほかにも使う可能性というか応用で使うので

ひとつのクラスに処理をいておきたいと思っています。
ACIIでやろうと思ってたんですがどうもうまくできなかったので今
それです。これは直したいなと思っております
364デフォルトの名無しさん:2009/09/30(水) 23:41:34
>>352
よく見たらありました。
ボケてきたのかな…。ありがとう。
365デフォルトの名無しさん:2009/09/30(水) 23:48:48
会社とか組織をイメージしてみるといいかも。
実際に仕事やる部署と、注文受ける部署、商品配達する部署・・・・・。
食堂で言うなら厨房と接客・電話番、出前とか。
それぞれは、自分の仕事だけして、あとはどっかに受け渡すだけで
良いようになってる。
下手な部署分けすると役所みたいにたらい回しになって困るが。

バイト列の文字列化ならBase64じゃない?昔から用意されてるし。
366デフォルトの名無しさん:2009/09/30(水) 23:52:02
とか思ってみたらBase64変換クラスがぱっと見で見つからん。あれ?
Javaだったのかな?
367デフォルトの名無しさん:2009/09/30(水) 23:55:31
System.Convert.ToBase64String(byte[])
368デフォルトの名無しさん:2009/09/30(水) 23:57:33
Convert.ToBase64
369デフォルトの名無しさん:2009/10/01(木) 00:11:50
キーボードのキーを押してプログラミングするわけだが
キー自体がプログラミングを理解しているわけじゃないよね
あくまで、文字を入力させる命令を出すためのスイッチに過ぎない

役割分担をさせていくわけだけど、その分クラスはどんどん増える
だがそれでいい
370デフォルトの名無しさん:2009/10/01(木) 00:15:42
オブジェクト指向の話になると現実世界の事象を例えにだすのをよく見るけど、
その例えってそんなにわかりやすいもんなのかな。
むしろそこからどうやってコードに落とすのかと悩むことしきりなんじゃないか。
371デフォルトの名無しさん:2009/10/01(木) 00:21:32
もちろんそうだけど、オブジェクト指向の入り口で躓いているんだから仕方が無い
372デフォルトの名無しさん:2009/10/01(木) 00:44:44
まず、構造化プログラミング・設計を学ぶところから・・・。
373デフォルトの名無しさん:2009/10/01(木) 01:17:57
>>370
わかってる人が例えるからそうなるんだよな。
わからない人向けの説明には向かないと思う。
374デフォルトの名無しさん:2009/10/01(木) 01:31:02
かと言ってわかってない人は向いてる向いてない以前に例えられないから。
375デフォルトの名無しさん:2009/10/01(木) 01:39:15
そこをいくとオブジェクト指向のこころは最高だと思う。
376デフォルトの名無しさん:2009/10/01(木) 02:37:13
憂鬱な
377デフォルトの名無しさん:2009/10/01(木) 03:09:44
貝になりたい
378デフォルトの名無しさん:2009/10/01(木) 03:13:33
引きこもりは家をでないのでスペックがさっぱりわからない
やり取りできる手段は、スカイプやネトゲしかない
でも、こっちの情報をいくら伝えてもスペックを晒そうとはしない
オブジェクト指向ってそんな奴
379デフォルトの名無しさん:2009/10/01(木) 07:21:42
良くも悪くも勘違いされる不幸な子ってイメージだけどな。
きちんと理解してあげれば戦力になるが、間違った認識や過度の期待を持たれるとプレッシャーに負ける人みたいな?
380デフォルトの名無しさん:2009/10/01(木) 08:32:43
お前らスレタイ
381デフォルトの名無しさん:2009/10/01(木) 12:58:49
使ってればわかる
結局はノウハウを一般化しただけのもの
382デフォルトの名無しさん:2009/10/01(木) 14:54:21
自作ソフトのソースを公開しようと思うんですが
プロジェクトファイルなどにPCユーザー名など
固有の情報みたいなのが入っていて見られてしまうんでしょうか?
ソースを公開する上での注意点などありましたら教えてください
383デフォルトの名無しさん:2009/10/01(木) 15:03:39
ユーザ名を短くて無意味な英文字にしておく
.csだけ公開する
384デフォルトの名無しさん:2009/10/01(木) 16:36:09
>>383
いや、さすがに.slnと.csprojくらいは付けようよ。
逆に.csproj.userとか.suoは除外。
385デフォルトの名無しさん:2009/10/01(木) 16:38:41
VC#?
386デフォルトの名無しさん:2009/10/01(木) 17:06:33
binフォルダは削除
slnとcsprojは付いてないと読む気が失せる
387デフォルトの名無しさん:2009/10/01(木) 17:10:33
プロジェクト一つならslnはいらないんじゃ…
388デフォルトの名無しさん:2009/10/01(木) 17:22:34
slnないと保存できないからめどい
389デフォルトの名無しさん:2009/10/01(木) 17:38:30
>>388
プロジェクトのみでも一度保存すればソリューション作成されるよ
390デフォルトの名無しさん:2009/10/01(木) 18:59:34
C#初めてはや1.5ヶ月

いまだにクラス呼び出しとかが曖昧
配列わからん。

プログラム自体初心者ですがこれはかなり遅いほうですよね?
最近は分岐がわかりだしてきたところです
391デフォルトの名無しさん:2009/10/01(木) 19:06:18
俺も、1.7ヶ月ぐらいだけど
オブジェクト思考はよくわからんけど
配列とか、クラス呼び出しぐらいなら一応・・・

まぁ、以前Cとjavaをおさわり程度にやった事有るけど
392デフォルトの名無しさん:2009/10/01(木) 19:16:07
C#はじめて7年
クラス呼び出しなんて初めて聞いた
393デフォルトの名無しさん:2009/10/01(木) 19:22:12
小学生初めてはや5年
職員室呼び出し喰らったのは今年が初めてだ
394デフォルトの名無しさん:2009/10/01(木) 19:57:11
お前らスレタイ
395デフォルトの名無しさん:2009/10/01(木) 20:07:10
あぁ、悪い
クラス定義してメソッド呼び出しとか

これでいい?これも違うのかなw
396デフォルトの名無しさん:2009/10/01(木) 20:11:11
DESCryptoServiceProviderの複合化はパスワードが違う場合、絶対にエラーを吐きますか?
それとも適当に復号したデータを返す時がありますか?
397デフォルトの名無しさん:2009/10/01(木) 20:36:51
>>390
1日にやる量にもよるし、いろいろだろ。
他人にかまわず自分のペースで楽しみなよ。
398デフォルトの名無しさん:2009/10/01(木) 20:58:44
なんだかんだで仕事でつかうと習得が早い
399デフォルトの名無しさん:2009/10/01(木) 20:59:28
俺なんか2年目でやっとデリゲートを唱えることが出来た
400デフォルトの名無しさん:2009/10/01(木) 21:28:48
仕事で必要で学んでいるんですが

やはり全然覚えが悪いのでまじで仕事自体を辞めるべきなのか本当に迷ってる
ものすごく申し訳ない気持ちと焦りでぐだぐだ・・・
401デフォルトの名無しさん:2009/10/01(木) 21:34:36
>>396
原理的には適当に復号化。でないとTripleDESが不可能のはずだから。

テストコードとかで確認もしなかったけど、適当に復号化するだろうと決め込んで、
めんどくさくなって平文にヘッダとトレイラを入れといて復号時にパスワードチェック
とした。

パスワードじゃなくてIVとKeyだろ、なんて無粋なツッコミはナシね。
402デフォルトの名無しさん:2009/10/01(木) 21:41:18
>>400
できなければ辞めるか仕事をかえてくれと言ったほうがいい
ムリなひとはどうやってもムリ
403デフォルトの名無しさん:2009/10/01(木) 22:03:47
>>400
記憶力はあるに越したことはないけど、プログラマとしてそんなに重要な
ファクターじゃないと思うよ。

重要なのは理解力と要領だよ。
どのみち、今時のライブラリが全部頭に入っている奴なんていないわけで、
誰でも多かれ少なかれMSDNやwebの情報を見ながらコーディングしてるんだから。
404デフォルトの名無しさん:2009/10/01(木) 22:13:33
俺なんていまだに@ITの「C# 3.0らしいコードの書き方」とか見て頭混乱してる
405デフォルトの名無しさん:2009/10/01(木) 22:16:50
よくさ、そういう解説サイトで学校クラス学生なんて例を出すけどわけわからんよな
誰が学生名簿なんて作るんだよとww
そこそこの規模のソフトを例にプログラミングしながら学ぶようなのがあればいいんだけど
406デフォルトの名無しさん:2009/10/01(木) 22:25:38
参考書は本当に難しいと思う
C#だけでもリファレンス、デザインパターン、入門と3冊持ってるけど
それでも補完できない部分が独学だと必ず出てくる
クラスとかオブジェクトの理解が進まないうちに実践に入るような参考書掴むと
後から本当に苦労する
407デフォルトの名無しさん:2009/10/01(木) 22:26:44
犬クラス
ポチ、パトラッシユ、しろオブジェクト
408デフォルトの名無しさん:2009/10/01(木) 22:27:09
>>404
あれは書いてあるコードが理解できれば十分
記事の内容を真に受けてはいけない
409デフォルトの名無しさん:2009/10/01(木) 22:34:42
K俣か
410デフォルトの名無しさん:2009/10/01(木) 22:38:44
>>400
やめるなら俺を代わりに雇うよう取り計らってくれ
411デフォルトの名無しさん:2009/10/01(木) 22:40:02
むしろ川俣節は、このアジテーションは過大なのかそれぐ
らい言い切ってしまってもいいのかのこう微妙な感じが
個々に判断できるようになると上級者。

…味があって好きなんだけどなぁ川俣節
412デフォルトの名無しさん:2009/10/01(木) 22:49:50
ttp://www.r-nakai.com/archives/56
ここ見ながらVC#2008Expressで使えるように設定したんだけど、
ぜんぜんステップインしてくれない。もちろんソースコードはDL済みなんだけど。
Expressで使えてる人いる?
413デフォルトの名無しさん:2009/10/01(木) 22:53:47
>404 >408
おれもあの記事かなりわかりにくかった…(´・ω・`)
414デフォルトの名無しさん:2009/10/01(木) 22:58:58
>>411
あれは文体が古い(30年前のパソコン雑誌っぽいw)だけで、アジってほどでもないよ。
まあ今時のプログラマの書く技術解説の文章っぽくないのは確か。

たぶん物書きに憧れがあるっていうか、自己表現しないと気がすまない性格なんだろうw

この人の『Win32API散歩道』って本を持ってるけど、あれ見るといかにもそんな感じ。
415デフォルトの名無しさん:2009/10/01(木) 22:59:19
ちらっと見てみたけど、能書きが多いな。
416デフォルトの名無しさん:2009/10/01(木) 23:00:59
>>414
散歩道のきたあきらって、川俣の別名?
417デフォルトの名無しさん:2009/10/01(木) 23:04:56
>>414
らしいよ。
きたみあきこは別人
418デフォルトの名無しさん:2009/10/01(木) 23:16:25
>>356
できなかったですそれ
419デフォルトの名無しさん:2009/10/01(木) 23:23:41
>>418
>>356を参考にして、どんなコード書いたの?

420デフォルトの名無しさん:2009/10/01(木) 23:34:30
質問です
初心者です

namespace WindowsFormsApplication1
{★
  public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{

}
}
}
とあってclassを★のところに記述するとなぜかフォーム表示が
出来なくなるのですが同対処すべきなのでしょうか
421デフォルトの名無しさん:2009/10/01(木) 23:40:27
そんなところに書かない
1クラス1ファイルを基本にする
422デフォルトの名無しさん:2009/10/01(木) 23:42:38
>>421
1ファイルとはどういうことでしょうか
大変申し訳ないです。

今はクラスとメソッドを外出しにしておいてボタン処理を押したときに
その処理を参照しようとしています
423デフォルトの名無しさん:2009/10/01(木) 23:42:57
>>420
ひ、ひねくれもの!
424デフォルトの名無しさん:2009/10/01(木) 23:43:06
そんなこと聞いてねーよw
おせっかいさんめ
425デフォルトの名無しさん:2009/10/01(木) 23:46:47
>>422
なんだ暗号化君かw

http://msdn.microsoft.com/ja-jp/library/x9afc042.aspx

ここ読みなさいよ
426デフォルトの名無しさん:2009/10/01(木) 23:49:04
>>425
はい、私です。
今日作ってよし出来たと思ったら

内部でクラス作らないで外部で作ってと言われて
あたふたしています。
427デフォルトの名無しさん:2009/10/01(木) 23:49:34
>>420
> このページが表示されている理由
> クラス MainForm はデザインできますが、ファイルの最初のクラスではありません。
>Visual Studio では、デザイナはファイルの最初のクラスを使用する必要があります。
>クラスがファイルの最初のクラスになるようにクラス コードを移動して、デザイナを再度読み込んでください。


やってみたけど、理由も対処方法も表示されるじゃん。

428デフォルトの名無しさん:2009/10/01(木) 23:53:55
外部に作ると言うのは
FORMの外部に作ってそこから呼び出すってわけじゃないんですね・・・

From1の下に作ったら表示されました。
勉強たらなすぎてしにたい
429デフォルトの名無しさん:2009/10/01(木) 23:57:55
>>428
86BASICから引越しされてきたのですか?
430デフォルトの名無しさん:2009/10/02(金) 00:08:17
>>428
いや、そのクラスを使うときに必ずForm1がセットになってしまったら使い辛くは
ないかい?例えば別のアプリで使い回しするとき。
だから、別々の .cs ファイルで管理することを皆は薦めている。

まあ、とりあえず動くなら今は別に気にすんな。

どうせ色々使い回しでコピーしたあげく、嫌になって分かってくるもんだから。
431デフォルトの名無しさん:2009/10/02(金) 00:08:55
エラー見てもちんぷんかんぷんなことが多い

まじで今年やってだめなら辞表考えるわほんとに。
432デフォルトの名無しさん:2009/10/02(金) 00:27:57
>>430
ああああああ
なるほど、使いまわし出来るようにとか言ってたましたそういえば・・・
と言うことはcsを処理の分を作るのが外部と言うことなんですね。

理解度足りないですね
まじでありがとうございます。
433デフォルトの名無しさん:2009/10/02(金) 00:54:30
>>396>>401
どうでもいいが、「復号化」ではないのでリアルで使うと恥じをかくことになると忠告しておこう

>>432
ファイルとクラスは1:1が基本ではあるが、分かり易くなるならM:Nでも問題ない
434デフォルトの名無しさん:2009/10/02(金) 01:06:36
最初に手をつけるのがコレって厳しいのん?
435デフォルトの名無しさん:2009/10/02(金) 01:13:54
かもね
436デフォルトの名無しさん:2009/10/02(金) 01:21:21
やっぱりか……
サンクス
437デフォルトの名無しさん:2009/10/02(金) 01:22:35
いやそういう問題じゃないと思うが。
438デフォルトの名無しさん:2009/10/02(金) 01:24:16
>>431
向いてない奴がやると体壊すか鬱になるよ
そういう奴沢山見てきたし
おれは小学校の頃からプログラミングやってて
何時間やっても苦痛じゃないからな
まあ、仕事だとしんどいこともあるけど
息抜きのために自作ソフトを作るぐらいだからw
そういう人間じゃないとだめなんかもな
439デフォルトの名無しさん:2009/10/02(金) 01:27:38
>>432
右のウィンドウにプロジェクト名が書いてあるでしょ?
それを右クリックして、追加>クラス
を選択すると幸せになるよ
ややこしくなってきたら、同じようにしてフォルダを作るんだ
440デフォルトの名無しさん:2009/10/02(金) 01:36:08
>>433
>どうでもいいが、「復号化」ではないので
突っ込むべきはそこではない。

>原理的には適当に復号化。でないとTripleDESが不可能のはずだから。
これがおかしい。

暗号アルゴリズム単体の処理での動作と
パディング等も含めたスキーム全体の処理での動作を
混同している。
441デフォルトの名無しさん:2009/10/02(金) 01:40:40
もういいから外注しろ
442デフォルトの名無しさん:2009/10/02(金) 07:08:56
1ファイル1クラスは冗談だろ?
Javaかよw




冗談だよね?
443デフォルトの名無しさん:2009/10/02(金) 07:32:14
だいたいの機能でファイル分けるけど
さすがに1クラス1ファイルは無いな(1つの機能が1つのクラスで済むならありうるけど)
444デフォルトの名無しさん:2009/10/02(金) 07:32:45
1つのファイルにWindowsFormが2つ以上同居できないとか、
ファイル内の最初のクラスにするといった制限は
IDE(Visual Studio)の制限で、別に言語の制限じゃない。
445デフォルトの名無しさん:2009/10/02(金) 07:41:42
enumやdelegateも型だから、
分けなきゃいかんのならこれも分けるの?てのもあるね。

javaの場合はpublicなenumはファイル分けなきゃいかんかった。
めちゃ不便。
446デフォルトの名無しさん:2009/10/02(金) 11:41:54
関連性が極めて強い型、殆ど従属してると言って言いような型とか、
列挙やらデリゲートやらは流石にファイル分けたりはしないな。

ただ、大体基本的には1クラス1ファイルになると思うけどね。
447デフォルトの名無しさん:2009/10/02(金) 14:28:27
パブリックなクラスが内部だけで使うプライベートなクラスとかなら
1ファイルに書いたりはする
規模にはよるけど
448デフォルトの名無しさん:2009/10/02(金) 14:57:49
ジェネリッククラスも作る時は一緒のファイルに書いてるかな
449デフォルトの名無しさん:2009/10/02(金) 15:28:30
まあ、その辺は好みだよな
450デフォルトの名無しさん:2009/10/02(金) 17:26:45
子ウィンドウハンドルの取得が出来ません。
EnumWindowsはなんとか出来たので、それを元にやっているのですが
EnumChildWindowsの使い方が理解できてません。

private delegate int EnumerateChildWindowsCallback(IntPtr hwndParent, int lParam);

[DllImport("user32.dll")]
private static extern bool EnumChildWindows(IntPtr hwndParent, EnumerateChildWindowsCallback lpEnumFunc, int lParam);

public int EnumerateChildWindows(IntPtr hwndParent, IntPtr lpEnumFunc, IntPtr lParam)
{
 return 1;
}

public void main(IntPtr hWnd)
{
 EnumChildWindows(hWnd, new EnumerateChildWindowsCallback(EnumerateChildWindows), 0);
}

これで「デリゲート 'LTLimit.WindowHandle.EnumerateChildWindowsCallback' に一致する
    'EnumerateChildWindows' のオーバーロードはありません。」と出ます
451デフォルトの名無しさん:2009/10/02(金) 17:34:18
EnumerateChildWindowsCallbackとEnumerateChildWindowsの引数が合ってないじゃん
452デフォルトの名無しさん:2009/10/02(金) 18:10:51
>>451
レスありがとうございます!
ただ、引数に何を入れるのかが分かりません。

(IntPtr hwndParent, WNDENUMPROC lpEnumFunc, int lParam);
とか
(IntPtr hwndParent, IntPtr lpEnumFunc, int lParam);
など試してみたのですがダメでした。
453デフォルトの名無しさん:2009/10/02(金) 18:28:33
>>451
APIの知識がないんだな
C#云々の問題じゃないし
454デフォルトの名無しさん:2009/10/02(金) 18:36:20
>>452
ちゅーかどっからそんなソースをもってきたんだろう。
引数はIntPtr hWnd, int lParamの2つだけ。
引数名をhwndParentとしているが、ココには親のウィンドウハンドルが渡されるのではなく
列挙された子ウィンドウのウィンドウハンドルが渡される。
455デフォルトの名無しさん:2009/10/02(金) 18:37:44
EnumChildWindowsの引数なんて言ってないんだが…
456デフォルトの名無しさん:2009/10/02(金) 19:23:55
>>454
子ウィンドウを列挙するソースが見つからないので
試行錯誤しているところです。
引数名は何も気にせずコピーしてました。

>>455
なんだか的外れな事をしてしまったみたいですみません。
どこをどう直せば良かったのでしょうか。
457デフォルトの名無しさん:2009/10/02(金) 19:25:58
C#のソースに拘らなくていいだろw
458デフォルトの名無しさん:2009/10/02(金) 19:39:51
>>457
こだわってるんじゃなく、違う言語がまったく読めないのでC#に出来ないのです。
459デフォルトの名無しさん:2009/10/02(金) 19:53:13
>>429
ぶー、88BASIC です。
460デフォルトの名無しさん:2009/10/02(金) 19:56:41
>>442
非常識自慢?w

ネストされたクラスはカウントしないとして、
例外クラスとenum以外は基本ファイルあた1クラスでしょ。

あとは、まあ小さなクラスなら派生クラスも同じファイルに書いちゃうことはあるが。
461デフォルトの名無しさん:2009/10/02(金) 20:06:12
いじわるしないで教えてやれよw
462デフォルトの名無しさん:2009/10/02(金) 20:24:42
何かプログラムしようと思うんだけど何も思いつかない
463デフォルトの名無しさん:2009/10/02(金) 20:42:39
教えてあげないよ

     _,∩_         _,∩_           _,∩_
    (_____)ゝ、     (_____)    y     (_____)
    / :: :: :: ヽ 〉     /-‐:: ::‐-ヽ /       / :: :: :: ヽ
   _./ (・ )ll(・ ) ∨     _/  0) i! 0) ∨      _/ ( ・)i!(・ ) ゙、_
 // :: :: ∈ゝ :: ::ヽ   // ::  ‐-‐ :: ヽ    //  :: ー一 :: ヽ\
. ゝ/:: :: ::  :: :: ::ヽ  ゝ/ :: ::  ::  :: :: ヽ   ゝ/ :: ::  ::  :: :: ヽく
   ̄ ̄ | ̄ ̄ | ̄ ̄     ̄ ̄ | ̄ ̄ | ̄ ̄     ̄ ̄ | ̄ ̄ | ̄ ̄
       |     |             |     |             |     |
    ⊂!     !つ        シ!     !つ        ⊂!     !つ

ジャン♪
464デフォルトの名無しさん:2009/10/02(金) 20:46:36
>>458
だから、APIが読めなければC#にもできないだろw
基本は同じなんだからさ

こんにちはの意味がわかれば、HELLOをどのタイミングで言えばいいかわかるだろ?
それと一緒だ
465デフォルトの名無しさん:2009/10/02(金) 21:07:18
下手な例えだなw
466デフォルトの名無しさん:2009/10/02(金) 21:13:24
>>433
>「復号化」ではないのでリアルで使うと恥じをかくことになると忠告しておこう
DESCryptoServiceProvider.CreateDecryptor メソッド
指定したキー (Key) および初期化ベクタ (IV) を使用して、対称 DES (Data Encryption Standard) 復号化オブジェクトを作成します。

セキュリティ関係用語じゃなくてMicrosoft用語ですだ。
467デフォルトの名無しさん:2009/10/02(金) 21:27:52
>>440
だから、原理的にはって言ってるじゃないか。
どう実装されてるか分からないから、適当に復号化するように実装されてないとは
言い切れない。
ドキュメント斜め読みしても見つからない。
一個かそこら試したとしても不安が残る。
時間は待ってくれない。

だからどっちに転んでも、まあ動くだろうって対応をした。って話。



ところで関係無いんだが、これ実はExcelVBAで利用したと言ったら信じる?
468450:2009/10/02(金) 23:48:40
解決したっぽいです。
レスくれた方ありがとうございました。

private delegate int EnumerateChildWindowsCallback(IntPtr hWnd, int lParam);

[DllImport("user32.dll")]
private static extern bool EnumChildWindows(IntPtr hwndParent, EnumerateChildWindowsCallback lpEnumFunc, int lParam);

public int EnumerateChildWindows(IntPtr hWnd, int lParam)
{
 return 1;
}

public void main(IntPtr hWnd)
{
 EnumChildWindows(hWnd, new EnumerateChildWindowsCallback(EnumerateChildWindows), 0);
}
469デフォルトの名無しさん:2009/10/03(土) 00:51:50
>>467
別に対応がおかしいとは言ってないよ。
実際復号されることもエラーになることもあるから。

>でないとTripleDESが不可能のはずだから。
これがおかしいと言ってるだけ。
470デフォルトの名無しさん:2009/10/03(土) 01:43:39
タラオ「トリプルですぅ〜」
471デフォルトの名無しさん:2009/10/03(土) 03:51:23
>>460
安心したw
今書いているクラスは入れ子になっているものを数えたら30個にもなっててほんの少し焦った。
まぁ、チョロっと必要な定数叩き込むときは1ファイルに2つぐらい書いちゃうけど大丈夫だね。
472デフォルトの名無しさん:2009/10/03(土) 07:07:02
>>469
TripleDESは、
暗号文 = 鍵3でDES暗号化(鍵2でDES復号化(鍵1でDES暗号化(平文)))
という仕様だから、DESはある鍵で暗号化したものを別の鍵で復号化できないと
実現不可能のはずだと考えたんだが、間違ってるのか?
473デフォルトの名無しさん:2009/10/03(土) 08:21:22
しつけえ
474デフォルトの名無しさん:2009/10/03(土) 08:29:56
いちおう書いておこう。

暗号アルゴリズム単体と、
〜Providerとかを使っての処理は
「違う」って言ってる。

DESとか3DESとかの暗号アルゴリズム単体では
ブロックサイズのデータとキーを与えたらブロックサイズの結果を出す単なる関数。
だからキーが違おうが何だろうが処理できる。

でも〜Providerとかを使っての処理は、暗号化のモードとかIVとかパディングを含めた処理
特にパディングがあるから、違うキーで処理したら処理自体に躓いてエラーになる場合が多い。
475デフォルトの名無しさん:2009/10/03(土) 08:49:58
>>460
わざわざ「Javaかよw」って書いてるんだから
例外クラス・enum・数行しかないクラスであっても、例外なくファイルに分けなければいけない ってのを皮肉ってるんだと思った。
476デフォルトの名無しさん:2009/10/03(土) 11:59:12
>>475
俺が無知なだけ・・・。
C#やってるけど今まで本なんて一回も読んだことないし、基礎知識なさすぎ。
最初なんてIfしらなかったせいでgotoで何もかもやってたこともあったしw
すっきりしました
ありがとb
477デフォルトの名無しさん:2009/10/03(土) 12:02:44
本とか言う前に、マニュアル読めよ・・・。
478デフォルトの名無しさん:2009/10/03(土) 12:14:29
いや、ホントの基礎はやっぱり何か入門本でやった方がいいよ。
まあチュートリアルとか、あとトレーニングとかオンラインで無料でできるやつもあるから
そんなのでもいいけど。
いきなりマニュアルはきついだろう。
479デフォルトの名無しさん:2009/10/03(土) 12:21:42
まあそこらの家電製品や普通のアプリと違って
「第一章:Hello worldを表示しよう!」
なんてのはマニュアルにないからなw
480デフォルトの名無しさん:2009/10/03(土) 12:54:14
http://msdn.microsoft.com/ja-jp/library/aa288463%28VS.71%29.aspx

> C# プログラマーズ リファレンス
> Hello World のチュートリアル
>
> このチュートリアルでは、C# 言語による Hello World プログラムのいくつかの記述方法について説明します。
481デフォルトの名無しさん:2009/10/03(土) 13:10:52
オイ俺のコピペ脳、まで読んだ。
482デフォルトの名無しさん:2009/10/03(土) 16:10:02
foreachを逆の順番で回すことはできませんか?
ま、forを使えばいいんだけど・・・
483デフォルトの名無しさん:2009/10/03(土) 16:16:07
出来るわけがない
484デフォルトの名無しさん:2009/10/03(土) 16:16:28
.Reverse()
485デフォルトの名無しさん:2009/10/03(土) 16:35:14
Reverseにしました
486デフォルトの名無しさん:2009/10/03(土) 16:40:27
Reverseは一度内部で最後まで列挙されて、そのバッファから吐き出されてるに過ぎないってことに注意。
但しIListを実装しているものは直接コピーするので、列挙のコストはかからない。
487デフォルトの名無しさん:2009/10/03(土) 16:41:12
ネットワークドライブへの再接続をする方法を教えてください

環境
PC A OS vista x64 sp2
PC B OS xp sp3
AはBのフォルダをネットワークドライブ(Zドライブ)に接続している
ネットワークドライブ(Zドライブ)は起動時に自動的に再接続される。

続く〜
488デフォルトの名無しさん:2009/10/03(土) 16:42:50
ケース1
Aのみ起動している状況で、
string[] drives = Directory.GetLogicalDrives();
をやると、drivesの中にZドライブが含まれない。

ケース2
Aを起動してからBを起動しても
drivesの中にZが入ってこない。

ケース3
Bを先に起動してからAを起動すると、
drivesの中にZが入ってくる。

ケース1 2のどちらでも、エクスプローラーではZドライブアイコンに×が重なって表示されます。
×になっているZドライブをダブルクリックすると、正常にドライブにアクセスでき、
その後は
string[] drives = Directory.GetLogicalDrives();
でdrivesの中にZドライブが入ってくる。

このエクスプローラーをダブルクリックするという作業を、なんとか代替できないでしょうか。

やったこと
DriveInfo di = new DriveInfo("Z");
string[] drives = Directory.GetLogicalDrives();
失敗

string[] test = System.IO.Directory.GetFileSystemEntries("z:\\");
string[] drives = Directory.GetLogicalDrives();
例外で強制終了
存在しないドライブの一覧を取得しようとしたのが問題っぽい。

どなたかお願いします。
489デフォルトの名無しさん:2009/10/03(土) 16:46:31
標準ライブラリじゃ無理のはず
Win32APIのWNetAddConnection2で再接続
490デフォルトの名無しさん:2009/10/03(土) 16:49:55
>>489
情報ありがとうございます。
win32apiは使ったことないですが何とかやってみます。
491450:2009/10/03(土) 18:47:55
Form1からForm2を表示したとき、
位置をForm1のLocationプロパティを参照して決めたいのですが、
参照の仕方を教えてください。
492デフォルトの名無しさん:2009/10/03(土) 18:50:30
考え方が間違ってる
Form1がForm2を表示する際に
var form2 = new Form2();
form2.Location = (this.Locationを基準に決めた位置);
form2.Show();
のようにする
493デフォルトの名無しさん:2009/10/03(土) 19:15:30
>>492
おおお!
ありがとうございます!

まったく思いつかなかったです。
494デフォルトの名無しさん:2009/10/03(土) 19:19:43
this.BackColor = System.Drawing.Color.Blue;

直接16進で指定は出来ないのでしょうか?
495デフォルトの名無しさん:2009/10/03(土) 19:20:13
Thread thread = new Thread(ThreadTask);
thread.Start();
でスレッドを起動するとき、引数はどう渡せばいいんでしょう?
496デフォルトの名無しさん:2009/10/03(土) 19:24:51
497デフォルトの名無しさん:2009/10/03(土) 19:25:22
Color.FromArgb

Colorのリファレンスくらい見たらどうかと思う
498デフォルトの名無しさん:2009/10/03(土) 19:26:45
>>493
いやいやw

普通は(少なくともOOP的には)、別のFormの位置を参照して自分の表示位置を決定して表示する機能を
Form2自身が実装するようにすべき。

その方が分かりやすいでしょ?

ケースバイケースだけど、フツーは>>492みたいのは悪い例。
499デフォルトの名無しさん:2009/10/03(土) 19:36:49
余計な依存ができるだろ
もっとちゃんとした枠組みを作ってそういうことを実現するならいいけど
安易に他のフォームを参照しちゃうようなやり方は良くない
500デフォルトの名無しさん:2009/10/03(土) 19:41:03
>>497
ども、まだヘルプ入れてないんです。始めて二日目。
ありがとう、できました。
501デフォルトの名無しさん:2009/10/03(土) 19:49:21
は? >>500
502デフォルトの名無しさん:2009/10/03(土) 19:59:21
IntelliSenseからそれっぽい名前探し当てるとかできないのかなー。
503デフォルトの名無しさん:2009/10/03(土) 20:01:58
>>499
Locationは"Form1"で実装されてるメンバじゃない。
意味分かる?

依存なんかできないよ。
例えば、

void ShowAtLeft(Form referredForm)

のようにするだけ。
504デフォルトの名無しさん:2009/10/03(土) 20:01:58
Thread thread = new Thread(ThreadTask);
thread.Start(引数);
としたところ、

'System.Threading.Thread.Thread(System.Threading.ParameterizedThreadStart)' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。
引数 '1': 'メソッド グループ' から 'System.Threading.ParameterizedThreadStart' に変換できません。
ってことなんですけど…。
505デフォルトの名無しさん:2009/10/03(土) 20:08:38
ThreadTaskの方が引数受け取る気無いとか言わないだろうな
506デフォルトの名無しさん:2009/10/03(土) 20:12:22
private void ThreadTask(string 引数){}
としてます。
507デフォルトの名無しさん:2009/10/03(土) 20:16:39
ParameterizedThreadStartの引数の型に合わせんとダメ
508デフォルトの名無しさん:2009/10/03(土) 20:29:12
private void ThreadTask(object 引数){}
ってことですか?
それだと、
引数 '1': 'object' から 'string' に変換できません。
なんですが、objectからstringに変換すればオーケーなんですか。
どうやるんだろ。
509デフォルトの名無しさん:2009/10/03(土) 21:06:32
いらいら
510デフォルトの名無しさん:2009/10/03(土) 21:10:08
お前には無理だからあきらめろ。
511デフォルトの名無しさん:2009/10/03(土) 21:19:00
VC# 2008ならこれでいいよ。
new Thread(() => ThreadTask(実引数));
512デフォルトの名無しさん:2009/10/04(日) 00:20:08
できました。感謝です。
513デフォルトの名無しさん:2009/10/04(日) 00:22:56
どういたしまして
514デフォルトの名無しさん:2009/10/04(日) 00:24:48
こちらこそ
515デフォルトの名無しさん:2009/10/04(日) 01:32:50
スレッドでファイルをカウントして、
現在の状況をtextboxに表示しようとしています。

int i;
foreach(string file in files)
{
textBox.text = file + i;
i++;
}

これで「InvalidOperationExceptionはハンドルされませんでした。
有効ではないスレッド間の操作:
コントロールが作成されたスレッド以外のスレッドからコントロール
'textBox' がアクセスされました。」とエラー。
textBoxのプロパティをGUIでModifiers Publicにしても
おなじエラーなんですけど、
コントロールを作成したスレッドをPublicにするのは、
GUIの設定だけじゃだめなんですか?
516デフォルトの名無しさん:2009/10/04(日) 01:33:52
Invoke 使え。
517デフォルトの名無しさん:2009/10/04(日) 09:27:56
過去に同様の質問を見たことがありますが…
レンタルサーバーからインストールできるよう自作アプリケーションをアップしましたが、
.NET Framework の インストールに30分程度の時間が要してしまいます。

(1)
インストールするコンポーネント:
・Windowsインストーラー3.1
・.NET Framework Client Profile
の2つにしています。

(2)
クライアント専用Frameworkサブセットにチェックを入れています。

.Net Frameworkが入っていないXPなどのPCからインストールをしようとすると、
30分程度の時間を要してしまいます。

早くするためのテクニックはないでしょうか。
CDなどのメディアで配布したほうが良いのでしょうか。

教えてください。よろしくお願いします。
518デフォルトの名無しさん:2009/10/04(日) 10:24:50
PictureBoxの画像をマウスドラッグで移動させてるのですがおかしな現象に悩んでます
シングルスレッドで移動させているときはマウスのピクセル移動量と画像の移動量が一致します

しかし、マルチスレッドで移動させるとマウスのスピードに指数比例してすごい勢いで画像が流れます

親スレッドでMouseMoveイベントごとに現在位置のグローバル変数を移動
スレッド呼び出し
グローバル変数に従って画面を書き換え

こんな流れになっていてスレッド呼び出しされた側ではグローバル変数を参照しているだけで
位置情報を書き換える処理はしていないです
スレッドが呼ばれている間の位置移動とか特に意識していません

まあ絶対どっかでミスしてんですが、思い当たる原因のヒントでもいただけたらと・・・
519デフォルトの名無しさん:2009/10/04(日) 10:26:02
Client Profile 使ってなくて想像で悪いけど、
.NET Framework 3.5 Client Profile の数々の仕様って修正されてる?

その中の
・XP sp2以上でないと、結局3.5sp1をフルインストールされる
・他のバージョンの.Netがあると、結局3.5sp1をフルインストールされる
のどっちかという話はないか?

他にも
・インストールしたXPは、これをアンインストールしないとVistaにアップグレードできない
・インストールしたPCには、古いバージョンの.Netをインストールできない
・インストールされていない Oracle データ プロバイダが使用可能であると表示される
とかリリースノートで豪快に仕様扱いなんだなぁ。すげーぜ、さすがはアメリカンw
520デフォルトの名無しさん:2009/10/04(日) 10:26:34
デバッグしろよ
521デフォルトの名無しさん:2009/10/04(日) 11:12:27
クライアントプロファイルは正直使いもんにならん。
522デフォルトの名無しさん:2009/10/04(日) 11:16:24
>>518
スレッドの呼び出し?だけ消したら正常になるの?
一体そのスレッドで何やってんだ?
あとスレッドの呼び出し?って何時やってんの?
まさかマウスが動く度じゃないよね?
スレッド側の処理は一瞬で終わるもの?それともしばらく動き続けるもの?
523デフォルトの名無しさん:2009/10/04(日) 11:26:24
BindingSource bs = new BindingSource();

private void button1_Click(object sender, EventArgs e)
{
List<testclass> testlist = new List<testclass>();
testlist.Add(new testclass { A = "A1", B = "B1" });
testlist.Add(new testclass { A = "A2", B = "B2" });

bs.DataSource = testlist;
dataGridView1.DataSource = bs;

bindingSource1.DataSource = testlist;   ←ここに違うList<>をセットするだけでDataGridViewの中身を切り替えたい
//dataGridView2.DataSource = bindingSource1; ←ここはデザイン時にセットしてある
}

class testclass
{
public string A { get; set; }
public string B { get; set; }
}

上記のdataGridView1は期待通り表示されるのですが
dataGridView2は何も表示されません。
dataGridView2のようにデザイン時にDataGridViewのDataSourceにBindingSourceを
指定した場合はBindingSourceのDataSourceをセット(切り替える)した後に
何かしなければならないんでしょうか?
524デフォルトの名無しさん:2009/10/04(日) 11:40:13
>>523に追加
以下のdataGridView1と同じ動作をdataGridView2にさせたいのですが・・

BindingSource bs = new BindingSource();
List<testclass> testlist = new List<testclass>();
List<testclass> testlist2 = new List<testclass>();

private void button1_Click(object sender, EventArgs e)
{
bs.DataSource = testlist;
dataGridView1.DataSource = bs;

bindingSource1.DataSource = testlist;
//dataGridView2.DataSource = bindingSource1;
}
private void button2_Click(object sender, EventArgs e)
{
bs.DataSource = testlist2;
dataGridView1.DataSource = bs;

bindingSource1.DataSource = testlist2;
}
private void Form1_Load(object sender, EventArgs e)
{
testlist.Add(new testclass { A = "A1", B = "B1" });
testlist.Add(new testclass { A = "A2", B = "B2" });

testlist2.Add(new testclass { A = "a1", B = "d1" });
testlist2.Add(new testclass { A = "a2", B = "d2" });
}
以下略
525デフォルトの名無しさん:2009/10/04(日) 12:12:45
>>519
ありがとうございます。
.NET3.5sp1を入れてはいますが、結局使用はしていません。
.NET3.5のみを配布したら早くなるでしょうか…。
526デフォルトの名無しさん:2009/10/04(日) 12:14:50
>>522
今は暫定的にマウスが動くたびになってます
最終的には移動量が一定量を超えたとき呼び出すつもりです
そのスレッドでは移動量をグローバル変数から取得してそれに応じた小さなファイルを読み込んでメインスレッドのInvcke呼び出し
メインスレッドのハンドラでダブルバッファに書き込んで、移動分だけ画像をシフトしてます
527デフォルトの名無しさん:2009/10/04(日) 12:18:29
自分のアプリでクラスライブラリ(.dll)作って一緒に配布すると
そのライブラリを別のアプリケーションで勝手に使っちゃえると思うんだけど
それを防ぐ方法はないのかな?
528デフォルトの名無しさん:2009/10/04(日) 12:20:36
>>527
ない。
529デフォルトの名無しさん:2009/10/04(日) 12:21:41
>>527
ロード元のアセンブリをチェックすればいいだけだろう
530デフォルトの名無しさん:2009/10/04(日) 13:01:15
>>529
そうか、そうですよね。
調べます。
531デフォルトの名無しさん:2009/10/04(日) 14:17:34
>>529
の方法を簡単に説明してくれ
532デフォルトの名無しさん:2009/10/04(日) 14:19:44
アプリ中のオブジェクトを(型指定して)列挙するにはどうしたいいんでしょうか?
533デフォルトの名無しさん:2009/10/04(日) 14:35:27
>>532
なんでそんなことしたいんだ?
534デフォルトの名無しさん:2009/10/04(日) 17:55:02
>>532
さては他人の作ったソフトウェアのメソッド叩きたいとか考えてるな!
やめとけw
535デフォルトの名無しさん:2009/10/04(日) 18:12:38
恐ろしいことを平気でやってのけてこそ初心者!
536デフォルトの名無しさん:2009/10/04(日) 19:05:37
設定ファイルを読み込むのはメインのFormのコンストラクタ内でするのか、
Loadイベントのハンドラで行うのかどちらがいいのでしょう。
537デフォルトの名無しさん:2009/10/04(日) 19:06:28
C++でCLRのアンマネージインターフェイスを叩く必要があった気がする
538デフォルトの名無しさん:2009/10/04(日) 19:10:33
>>536
内容による。
539デフォルトの名無しさん:2009/10/04(日) 19:10:46
>>532
リフレクションでやってみれば?
540デフォルトの名無しさん:2009/10/04(日) 19:11:38
バグを見つけて臍をかむのがオチなんだよなぁ。
マニュアルの System.Reflection 名前空間見るとか、「リフレクション C#」ググるとか。

単に見たいだけなら一番簡単なのは、VSで参照してオブジェクトブラウザで覗く。
541デフォルトの名無しさん:2009/10/04(日) 19:19:48
>>538
ウィンドウのレイアウトから、オプションダイアログで設定するようなものまであります。
542デフォルトの名無しさん:2009/10/04(日) 19:24:04
リフレクションではオブジェクトそのものは見られないよ
MSがソース公開してるCLRプロファイラやWPFプロファイラは部分的にC++使ってた
543デフォルトの名無しさん:2009/10/04(日) 19:27:32
>>541
Formに関する設定ならばLoadだろうね。
逆にコンストラクタできちんと動く?
544デフォルトの名無しさん:2009/10/04(日) 19:47:32
>>525氏の話だけど、
みんなは配布用アプリを作る時は、インストールに時間がかからないようにどのような工夫をしているの?
545デフォルトの名無しさん:2009/10/04(日) 19:48:16
>>543
現状は問題なくできるのですが、、何か陥りやすい問題とかあるんでしょうか。
コンストラクタのInitializeComponentの後にファイルを読み込んでいます。
546デフォルトの名無しさん:2009/10/04(日) 19:55:03
>>544
最初の一回だけだから気にしてない。
547デフォルトの名無しさん:2009/10/04(日) 20:14:58
>>545
俺も聞きたいねえ。
コンストラクタでやったらまずい処理って思いつかない。

まあFormに限らず、クラスのコンストラクタでイベントを生成するような処理を書いて
嵌ったことは過去に何度かある。

コンストラクタ呼び出し中に発火されたイベントは、事実上誰も拾えないからね。
548デフォルトの名無しさん:2009/10/04(日) 20:53:17
>>546
.net3.5を使用しているアプリを配布しようとしたら、
プレインストールされていないPCは、30分とかかかかるのかい?
549デフォルトの名無しさん:2009/10/04(日) 20:55:13
>>548
回線速度とスペック次第じゃね?
550デフォルトの名無しさん:2009/10/04(日) 20:55:27
かかかか
551デフォルトの名無しさん:2009/10/04(日) 21:01:28
>配布
んなものは、システム要件。
インストールさせようなんてのはお節介。
と思ってる。
552デフォルトの名無しさん:2009/10/04(日) 22:08:41
>>545
なら問題ないんじゃない?
C#やりたてのころに痛い目にあったことが1回だけあったけど、何かはど忘れしちゃった。
明日まで覚えていたら会社のSVN覗いてみるわ。
553デフォルトの名無しさん:2009/10/04(日) 22:26:39
コンストラクタはインスタンスの初期化
LoadはFormの読込み
Shownは表示後

ちゃんと役割があるんだからそれぞれに書いた方がいいと思う
554デフォルトの名無しさん:2009/10/04(日) 22:33:17
LoadはVBの名残みたいなもん
555デフォルトの名無しさん:2009/10/04(日) 22:38:56
そんなことはない
FormがShowされるときにすべき処理はLoadに書くべき
コンストラクタはあくまでインスタンスの初期化処理だけのほうがいい
556デフォルトの名無しさん:2009/10/04(日) 22:51:23
>>553-555
正直、どれもよくわからん俺様ロジックにしか聞こえない。
そんなことはない、というなら聞くが、じゃあ結局>>536の質問には何と答えるんの?

っていうか、そういう意味論にこだわるなら、設定値を読み込んで適用するような処理は
InitializecComponentsの後が一番適切に思えるが。
557デフォルトの名無しさん:2009/10/04(日) 23:00:30
> 正直、どれもよくわからん俺様ロジックにしか聞こえない。

イベントドリブン全否定?
俺様ロジックの俺様というのはC#開発者のこと言ってるんだよな?
558デフォルトの名無しさん:2009/10/04(日) 23:17:49
>>557
日本語読める?
だからね、一般論として、コードは意味的に適切なタイミングで
実行されるように書くべき、というのはその通りだけども、
じゃあ設定を読み込んで反映するのに適切なタイミングっていつだっての。

そんなもの、答えなんかないだろう。
「設定を読み込んで反映すべきタイミング」の意味を与えられたイベントなんて存在しないのだから。
イベントの意味なんかにこだわりすぎると、結局そんな処理なんかどこにも書くべきでない、
って結論にならざるをえない。
559デフォルトの名無しさん:2009/10/04(日) 23:37:07
>>558
あなたの言ってることの方がよっぽど俺様ロジックに聞こえるけど
コンストラクタはインスタンスが生成される瞬間に実行され、
インスタンスの初期化のための引数を渡す機能を持っている
コンストラクタが一つなら、その設定やらに渡す引数も一緒に渡してやれば良いけど
そんなやり方推奨する人どのくらいいるだろうね
560デフォルトの名無しさん:2009/10/04(日) 23:42:15
public Form1() : this(null)とか使おうよ
561デフォルトの名無しさん:2009/10/05(月) 00:08:53
>>560
ごめん。どっかいっててくれるかい?
562デフォルトの名無しさん:2009/10/05(月) 00:30:17












563デフォルトの名無しさん:2009/10/05(月) 00:30:38
Formを継承して「設定を読み込んで反映すべきタイミングのイベント」を追加する
564デフォルトの名無しさん:2009/10/05(月) 00:35:18
そう言うようなことは普通にやるけど、「どのタイミングが最適か」って答えは出ないんだよね。
565デフォルトの名無しさん:2009/10/05(月) 01:03:08
>>559
結局どうすべきだと言いたいの?

というかね、コンストラクタが多重定義したい場合で、
かつどのコンストラクタにも共通する処理がある場合は、
どのコンストラクタからも特定の一つの別のコンストラクタを呼ぶようにするか、
共通部分をメソッドに括り出して呼ぶようにするでしょ。

それを忘れたらどうするのかって?
それはただの「バグ」であって、そんなケースを槍玉に挙げてなんの意味があるのよ。
566デフォルトの名無しさん:2009/10/05(月) 01:04:10
横からその問題だけに絞って考えると、感覚的にはファイル
アクセスなら Load かなぁ。
設定ファイルなら…んー、コンストラクタでもぎりぎりアリか。
567デフォルトの名無しさん:2009/10/05(月) 02:42:08
俺ならそもそもFormのインスタンス生成前に読んじゃうかなあ
多重起動チェック→設定読む→Application.Runみたいな流れ
設定にもよるけど
568デフォルトの名無しさん:2009/10/05(月) 10:09:37
まあ、ハンドル云々というのでなければコンストラクタでいいと思う。
569デフォルトの名無しさん:2009/10/05(月) 14:23:18
「List<string> s 」に入ってる文字をlistboxに表示したいです。

listBox1.Items.Add(s);

とすると(コレクション)と表示されてしまいます。
570デフォルトの名無しさん:2009/10/05(月) 14:30:21
・AddRangeする
・DataSourceに設定する
571デフォルトの名無しさん:2009/10/05(月) 15:16:32
下記で出来ました。
string[] ss = new string[s.Count];
for (i = 0; i < s.Count; i++)
{
ss[i] = files[i];
}
listBox1.Items.AddRange(ss);

一度で出来ないのですね。
ありがとうございました。
572デフォルトの名無しさん:2009/10/05(月) 15:23:57
AddRange使って一発でやりたいならToArray使えばいいじゃない
573デフォルトの名無しさん:2009/10/05(月) 15:26:07
あとDataSourceなら
listBox1.DataSource = s;
だけだし。
574デフォルトの名無しさん:2009/10/05(月) 20:13:19
自分の実力が足りないだけなのに言語のせいにされたらたまらんわ。
575デフォルトの名無しさん:2009/10/05(月) 20:35:38
おまえらどんだけ被害妄想wwww
576デフォルトの名無しさん:2009/10/05(月) 20:57:24
ディスプレイから女の子を救い出すプログラムをC#で移植してます。
C#では無理なんでしょうか。VBではうまくいったんですけど・・・
577デフォルトの名無しさん:2009/10/05(月) 21:02:52
どこが動かないのか詳しく。質問が大雑把過ぎて問題がわからない。
578デフォルトの名無しさん:2009/10/05(月) 21:10:59
美少女ゲームの彼女をリア
579デフォルトの名無しさん:2009/10/05(月) 21:22:21
では将軍様、そのディスプレイから女の子を追い出してください
580デフォルトの名無しさん:2009/10/05(月) 21:26:51
全財産はたいてもいいから俺によこせ
581デフォルトの名無しさん:2009/10/05(月) 21:32:41
WinXP Pro SP3, VS2008 sp1, .net 3.5 sp1での質問です。
言語はC#を利用しており、COMコンポーネントの開発を行っています。

下記のような簡単なクラスを作成し、RegSvr32.exeを実行したところ、下記のようなエラーが発生しました。
このようなエラーが発生した場合の対処法と原因について教えていただけないでしょうか?
よろしくお願いいたします。

------作成したクラス-------
using System;
using System.Runtime.InteropServices;
using System.Text;
namespace Test
{
[ClassInterface(ClassInterfaceType.None)]
[ProgId("Test.Test")]
[Guid("00BB6C80-C01D-4D64-A66B-F5D847480B09")]
public class Test
{
public string Test(string s, int m, int n)
{
return "abc";
}
}
}
---------------------------
------[[エラー]]-----------
.\Test.dll は読み込まれましたが、DllRegisterServer エントリ ポイントが見つかりませんでした。
このファイルが登録されていない可能性があります。
582デフォルトの名無しさん:2009/10/05(月) 21:36:30
.NETのアセンブリの場合regsvr32じゃなくてregasm使う
583デフォルトの名無しさん:2009/10/05(月) 22:04:48
Tlbexp.exe
584デフォルトの名無しさん:2009/10/06(火) 17:03:58
プロセスの一覧で、引数を知るにはどうしたらよいですか?
Notepadを複数起動していて、a.txtとb.txtを開いているときに、a.txtのほうのNotepadのプロセスを取得して終了したいです。
System.Diagnostics.Process[] ps = System.Diagnostics.Process.GetProcessesByName("Notepad");
で引数なしなら取得できます。
System.Diagnostics.Process[] ps = System.Diagnostics.Process.GetProcesses();
で、プロセスの一覧はできます。
デバッグでどちらを見ても、ファイル名が見当たらないのです。
探し方が悪いのかもしれません。
ご指摘お願いします。
585デフォルトの名無しさん:2009/10/06(火) 17:12:54
WMI使ってWin32_ProcessのCommandLineプロパティ取得するのが手っ取り早い
けどファイルを開くで開いた場合を気にしなくて良いの?
586デフォルトの名無しさん:2009/10/06(火) 17:19:14
WebRequest/WebResponse って最初に呼び出すときに結構時間がかかります?
数秒〜数十秒くらい
587デフォルトの名無しさん:2009/10/06(火) 17:20:22
Win32_ProcessのCommandLineプロパティで、
"C:\WINDOWS\system32\NOTEPAD.EXE" C:\a.txt
"C:\WINDOWS\system32\NOTEPAD.EXE" C:\b.txt
は取得できました。
これを終了するのって、どうするんですか?
それぞれのプロセスの個別の取得方法がわからないです。
NOTEPADのプロセスは取得できるけど、それだとaとbを区別できないし。

ファイルを開くで開く場合は、とりあえずいまは関係なしです。
588デフォルトの名無しさん:2009/10/06(火) 17:24:57
>>587
強制終了させるなら、目的の引数を持ってるWin32_ProcessのTerminateメソッドでいい
内容変更時に保存ダイアログが欲しいなら、Win32_ProcessのProcessIdを使ってProcess.GetProcessByIdしてCloseMainWindow
589デフォルトの名無しさん:2009/10/06(火) 19:35:56
>>588
なんとなくできたっぽいです。
ありがとうございました。
590デフォルトの名無しさん:2009/10/06(火) 22:42:55
591デフォルトの名無しさん:2009/10/06(火) 22:47:32
>>586
WPADやなんやでネットワークの応答速度によって時間が掛かる可能性はあるね
592デフォルトの名無しさん:2009/10/06(火) 23:37:29
>>586
数十秒もかからないけど 5秒ぐらいはかかってるかな
593デフォルトの名無しさん:2009/10/07(水) 08:58:18
非同期処理ってマルチスレッドってことなんでしょうか?
594デフォルトの名無しさん:2009/10/07(水) 09:07:37
基本的にはそう
スレッドじゃなくてプロセスだったりするかも知れないが
メッセージ使った擬似非同期とかな
595デフォルトの名無しさん:2009/10/07(水) 09:42:23
ありがとうございます
596デフォルトの名無しさん:2009/10/07(水) 12:11:48
文字列中の
\x28 などのエスケープ文字(?)を ( などに変換するのは
それぞれのエスケープ文字について一つ一つ string.replace などで置き換えるしかないのでしょうか?
597デフォルトの名無しさん:2009/10/07(水) 12:34:47
ソース上の文字列リテラルを置換したいのか、実行時に変換したいのか
まあString.Replaceってとこみると実行時の変換なんだろうけど
エスケープの方法なんて言語次第だから特にライブラリには存在してない
Regex.ReplaceでMatchEvaluator使うのが楽だろうねー
598デフォルトの名無しさん:2009/10/07(水) 13:10:36
string[] files = Directory.GetFiles(@"C:\Documents and Settings\username\Local Settings\Temporary Internet Files\", "*.jpg");
で空なのはどうしたら取得できますか?
599デフォルトの名無しさん:2009/10/07(水) 15:06:24
>>598
実際そこにファイルがないから
600デフォルトの名無しさん:2009/10/07(水) 15:11:55
どこにあるんですか?
調べたら、
その下に、Content.IE5フォルダがあるらしいので、SearchOption.AllDirectories
としても見つけられませんでした。
601デフォルトの名無しさん:2009/10/07(水) 15:42:13
エスパーさんお願いします
602デフォルトの名無しさん:2009/10/07(水) 15:44:11
そこには無いんだよ
603デフォルトの名無しさん:2009/10/07(水) 16:04:13
隠しフォルダの中にある隠しフォルダを探したいってことでしょ

Content.IE5の中には、さらにランダムな名前の隠しフォルダがたくさんあって、
ネットから取得したファイルの本体はそのランダムなフォルダの中に分散して格納してある。
何がどこにあるかはindex.datだったかに書いてある。
604デフォルトの名無しさん:2009/10/07(水) 16:09:26
delphi
s string;
SetLength(s, 64);

c#
string s;
サイズを指定するにはどうするんでしょうか?
605デフォルトの名無しさん:2009/10/07(水) 16:12:06
サイズを指定する必要はないんじゃね?
606デフォルトの名無しさん:2009/10/07(水) 16:13:58
Stringは変更できないのでそういうことはできません。
そもそも変更不可なので長さを伸ばすのは意味がありません。StringBuilderなどを使います。
長さを縮めるというか部分を切り出した新しい文字列を作るのはString.SubstringやString.Removeで可能です。
607デフォルトの名無しさん:2009/10/07(水) 16:16:19
base64とかで必要なんです。
608デフォルトの名無しさん:2009/10/07(水) 16:20:22
StringBuilder使えばいいじゃない
609デフォルトの名無しさん:2009/10/07(水) 16:21:06
つーかencodeing気にしなくちゃならんし、byte[]じゃだめなのか
610デフォルトの名無しさん:2009/10/07(水) 16:21:44
何が必要なのよ?
611604:2009/10/07(水) 16:23:20
d。やりたいことはStringBuilderで出来そうです。
ありがとうございました。
612デフォルトの名無しさん:2009/10/07(水) 16:24:09
base64は.NETの標準機能でサポートされてるけど
613デフォルトの名無しさん:2009/10/07(水) 16:53:28
http://www.atmarkit.co.jp/fdotnet/vblab/uiframework_02/uiframework_02_01.html

ここのソース貼り付けて実行したらWPFだとちゃんと動くけどSilverlightだと動かない
んですけどなぜなんです?
614デフォルトの名無しさん:2009/10/07(水) 16:55:19
試用なんだぜ
615デフォルトの名無しさん:2009/10/07(水) 18:10:55
>>603
Content.IE5フォルダの下に30JAKIJ7みたいなフォルダがあることはわかってます。

隠しフォルダのなかのファイルを再帰的に列挙するにはどうしたらよいですか?
616デフォルトの名無しさん:2009/10/07(水) 18:37:01
3番目にSearchOption.AllDirectoriesつけたら?
617デフォルトの名無しさん:2009/10/07(水) 18:52:44
>>616
SearchOption.AllDirectoriesは600でもう試しました。
618デフォルトの名無しさん:2009/10/07(水) 19:00:03
あのさー
こっちは実際に動かして出ることを確認してレスしてんだよ
エクスプローラで見るとそこにちゃんとあるのか?
環境は?
IEのオプションでもそこに設定してあるか?
619デフォルトの名無しさん:2009/10/07(水) 19:01:47
実体が無いんだろ
620デフォルトの名無しさん:2009/10/07(水) 19:28:10
>>618
失礼しました。
あらためてもういちどトライしたらできました。
すみません。ありがとうございました。
621デフォルトの名無しさん:2009/10/07(水) 22:57:34
しーね
622デフォルトの名無しさん:2009/10/08(木) 00:33:44
試してなかったのか試したつもりで見すってたのか
どっちにしろきちんと試さんと自分が困るだけだよ。
623デフォルトの名無しさん:2009/10/08(木) 01:29:24
>>618
ちゃんとこのスレにもまともな回答者がいたんですね。
尊敬します。これからも初心者を見捨てずお願いします。
624デフォルトの名無しさん:2009/10/08(木) 05:31:46
いままでまともな解答者がいないと思ってたのに質問してたのか
変なの
625デフォルトの名無しさん:2009/10/08(木) 07:44:34
リストボックスにアイテム追加して水平スクロールが出たとき、
水平方向の一番後ろを表示する方法を教えてください
626デフォルトの名無しさん:2009/10/08(木) 09:56:06
>>625
スクロールバーが出たときに一番後ろを表示すればいい
627デフォルトの名無しさん:2009/10/08(木) 09:56:54
>>625
ヒント:マウスホイール
628デフォルトの名無しさん:2009/10/08(木) 12:11:20
リストボックスに水平スクロールバーって出せたっけ?
629デフォルトの名無しさん:2009/10/08(木) 15:00:48
普通に出せる
630デフォルトの名無しさん:2009/10/08(木) 15:11:33
ActiveX 経由で Windows Media Plyaer を使おうと思います。

_player = new AxWindowsMediaPlayer;
_player.uiMode = "none";

とすると2行目でエラーが発生します。
まだ、ActiveX コントロールが生成されてないからと思います。

いまは、タイマーで __player.Created を監視して、
true になるのを待つという方法で回避していますが、
ActiveX コントロールが生成されたというイベントはないでしょうか?
631デフォルトの名無しさん:2009/10/08(木) 15:25:58
FormのLoadイベントでならだいじょぶ
632デフォルトの名無しさん:2009/10/08(木) 19:06:07
質問よろしいでしょうか?
Windowsでコピー&ペーストのペースト先の情報(ファイル名やファイルのパス)を得るにはどうすればよいでしょうか?
よろしくお願いします.
633デフォルトの名無しさん:2009/10/08(木) 19:27:01
C# ファイル ドロップ
でググる
634デフォルトの名無しさん:2009/10/08(木) 19:30:35
ペーストされたアプリの側の自由だろ
わかるわけがない
635デフォルトの名無しさん:2009/10/08(木) 19:37:09
すみません.言葉足りずでした
Windows上のアプリケーションを監視するソフトを考えているのですが,
例えば文字列をコピーしたものをパワーポイントに貼り付けた場合,
貼り付け先のパワーポイントのファイル名やファイルのパスを得たいという質問の内容です.
636デフォルトの名無しさん:2009/10/08(木) 19:57:33
もし、張り付け先がファイルとか扱わないソフトだったら?
637デフォルトの名無しさん:2009/10/08(木) 20:20:10
ペーストされたデータの扱いや、どのファイルを開いているかなどは完全にアプリケーションの責任
一般には対象のアプリのプログラムを意味論で解析でもしないかぎり不可能
638630:2009/10/08(木) 20:26:33
>>631
レスありがとうございます。
Loadイベントなら大丈夫とは知りませんでした。
しかし、今回は、フォームデザイナで配置して使用している訳ではなく、
コード内でオブジェクトを作っているため、生成済み通知してくれる
イベントがあればいいなと思い質問しました。
639デフォルトの名無しさん:2009/10/08(木) 20:33:56
タイトルバーにファイルパスやファイル名を表示するタイプのソフトなら
そっから取得できるか?すべてのソフトでどうなってるのか調べなきゃだが
640デフォルトの名無しさん:2009/10/08(木) 20:47:45
開いてるファイルとは全く無関係なところへのペーストだったら?
どう頑張っても使いものにならないから諦めろ
641デフォルトの名無しさん:2009/10/09(金) 06:18:21
asp.netにて リピーターを使ってDataTableをDataSorceにDataBindしています。
DataColumnとしてcolTitle, colValue があるとします。
asp側のコードで
<%# Eval("colTitle") %> <img src="./img/hoge.jpg"> <%# Eval("colValue") $#>
として colTitleとcolValueの間に画像を表示しています。
colValueは文字列で、文字列が空もしくはnullのとき、
hoge.jpgを表示させないようにしたいのですが、
どうしたらいいのかさっぱりわかりません。
<% if ([条件]) { %> <% } %> とするとデータバインド後に一回しか
実行されませんし、
DataBoundイベントを使った場合、どう記述したらいいのか思いつきません。
どなたか教えていただけませんか?
642641:2009/10/09(金) 06:20:08
<%# Eval("colValue") $#> 訂正→<%# Eval("colValue") #>
なんで$マーク。

643デフォルトの名無しさん:2009/10/09(金) 06:20:49
職業的にもCでは使えない状況ですし。
644デフォルトの名無しさん:2009/10/09(金) 10:44:22
お前の職業なんか知らぬ!
645641:2009/10/09(金) 15:38:44
自己解決。
646デフォルトの名無しさん:2009/10/09(金) 18:16:03
>>625
だれかお願いします。
言葉が足りませんでした。
マウス操作やキーボード操作無しで表示する方法です。
647デフォルトの名無しさん:2009/10/09(金) 18:37:59
TopIndex
648デフォルトの名無しさん:2009/10/09(金) 22:48:47
私はとうとう会社を辞めることにしました。
コボラーだった私が今春に社内SEに採用され、
急に未経験のC#をやれと言われてがむしゃらに勉強しましたが、
結局誰も協力はしてくれず1人で中途半端なシステムを作ってしまいました。
土日祝日もC#に明け暮れる毎日。
会社のために休みを完全に削ってがんばってきました。
ここでも何度か質問をし、回答をいただきました。

最終的には最悪な評価に終わりそうです。
私は会社を辞めます。
このスレの皆さんに代わってもらいたいです。

皆さんありがとうございました。
会社は離れてもC#は大切にします。
649デフォルトの名無しさん:2009/10/09(金) 23:03:54
せっかくスポーツニュース見て浮かれてる所に
切ない文章を書くな
650デフォルトの名無しさん:2009/10/09(金) 23:10:49
皆さんが質問に答えてくださったおかげで、
ユーザビリティーの高いシステムになりました。
本当は、使いやすいシステムなんです。
けど、納期が厳しすぎました。バグが出てしまったんです。
悔しいですが、誰もテストしてくれなかったし時間がありませんでした。
今となっては言い訳ですが…。
無理のあるスケジュールに振り回された自分を戒めつつ、
退職してしばらくC#の未消化技術を習得し、
明日につなげたいと思います。
651デフォルトの名無しさん:2009/10/09(金) 23:43:35
うちで働かないか
652デフォルトの名無しさん:2009/10/10(土) 00:03:03
C#そして.NETはおもしろい言語とフレームワークだから会社と関係なく楽しめるよ
C#とは関係ないが納期についておもしろいスライドがあった
http://www-06.ibm.com/software/jp/rational/events/rsc2009/pdf/k2_j.pdf
653デフォルトの名無しさん:2009/10/10(土) 00:03:09
俺はC#どころかCですらHello worldレベルのプログラムしか作ったことなかったのに
納期ギリギリで人が足りないからってC#のプロジェクトに引きずり込まれて、
その日の帰りに慌てて本屋で入門書を買ってVS2008Expressをインスコして徹夜で勉強して…
654デフォルトの名無しさん:2009/10/10(土) 00:05:28
マ板でやれ
655デフォルトの名無しさん:2009/10/10(土) 11:55:39
マ板って何?
656デフォルトの名無しさん:2009/10/10(土) 12:01:37
>>652
読んだけど意味が高度すぎてよく分からなかった。
要するに、
「ウチは、スケジュールに遅れずにいい品質の開発をしまっせ!」
ということ?
657デフォルトの名無しさん:2009/10/10(土) 14:10:10
>>651
C#の経験者だけど、今、転職は難しいんだろうなぁ。
なんとなく肩身が狭くなってきたので会社を去りたいんだが。
658デフォルトの名無しさん:2009/10/10(土) 14:47:14
会社やめて同人エロゲ作って1年で家買えたわ
やめてよかった
659デフォルトの名無しさん:2009/10/10(土) 15:01:53
スレチ乙
660デフォルトの名無しさん:2009/10/10(土) 18:07:58
俺は転職に失敗したからアルバイトのコーダーになっちまったよまったく
661デフォルトの名無しさん:2009/10/10(土) 18:28:45
>>653
インスコってなんだい?
662デフォルトの名無しさん:2009/10/10(土) 18:34:34
インストだろ インストール
文脈も読めないの?
663デフォルトの名無しさん:2009/10/10(土) 20:01:55
FTPサーバーのファイルをサーバー上で移動できますか?
wc.DownloadFile(fileName, locelfileName);
wc.UploadFile(newfileName, locelfileName);
ではできます。
この場合、通信の途中でエラーがあると、ファイルが破損するので、サーバーだけで操作したいと考えてます。
アドバイスお願いします。
664デフォルトの名無しさん:2009/10/10(土) 20:07:40
できます
665デフォルトの名無しさん:2009/10/10(土) 20:15:14
>>663
どっかからftpクライアントのライブラリをもってくるのがいいと思う。
666デフォルトの名無しさん:2009/10/10(土) 21:26:18
あと、通信中に切れてもいいように、転送先の一時ファイルに転送して、転送
終了後にリネームするのが定石。ダウンロードも当然同じく。
667デフォルトの名無しさん:2009/10/10(土) 23:17:25
>>666
何いってんだおまえは
668デフォルトの名無しさん:2009/10/11(日) 00:13:20
サーバー間でコピーさせたいんでしょ
FtpWebRequest みたいなんではできないと思う
Socketで片方Passiveにしてそのポートでもう片方ひらいてStoreとRetieveする
669デフォルトの名無しさん:2009/10/11(日) 00:28:37
FTPじゃできんだろ
670デフォルトの名無しさん:2009/10/11(日) 00:37:12
同一サーバー上なら、ディレクトリ間の移動はリネームするだけのはずなんだが。
サーバー間の移動ならFTPよりrsyncがお勧め。
671デフォルトの名無しさん:2009/10/11(日) 00:40:26
プロトコル自体にリネームがないと思うが
まあ、davでも使えと
672デフォルトの名無しさん:2009/10/11(日) 00:47:07
davならぁ〜
673デフォルトの名無しさん:2009/10/11(日) 00:50:23
クソ
不意をつかれた
674デフォルトの名無しさん:2009/10/11(日) 00:56:24
675デフォルトの名無しさん:2009/10/11(日) 00:58:18
671みたいな古臭い脳みその人は順次退場して欲しいもんだ
676デフォルトの名無しさん:2009/10/11(日) 00:59:20
563 名前:仕様書無しさん[sage] 投稿日:2009/09/23(水) 20:15:18
    2chで調べ物をしたい時は「教えてください」って書いても
    なかなか教えてもらえない。

    そういう時は、知ったかぶり風に間違ったことを自信満々に書く。
    そうすると、ものすごい勢いでツッコミを入れてもらえる。
677デフォルトの名無しさん:2009/10/11(日) 01:01:31
コピペ君って馬鹿だな、まで読んだ
678デフォルトの名無しさん:2009/10/11(日) 01:08:46
>>667
・・・仕事としてやったこと無いんだな坊ちゃん。
679デフォルトの名無しさん:2009/10/11(日) 04:07:18
>>187
選択状態、位置の管理を君がしてないから

これ以上の説明が必要ならソース出せ
680デフォルトの名無しさん:2009/10/11(日) 10:25:54
たぶんもう見てない
681デフォルトの名無しさん:2009/10/11(日) 12:26:47
C#で人工知能作れますか?
682デフォルトの名無しさん:2009/10/11(日) 12:31:28
天然無能にC#は使えません
683デフォルトの名無しさん:2009/10/11(日) 15:19:24
最強に初心者でちょっとプログラミングってものに興味持ち出したんですが
何から始めたらいいかよくわからなくて
このスレにいけとかここのサイトから見て始めろとかあれば教えてもらえるとありがたいです。
684デフォルトの名無しさん:2009/10/11(日) 15:24:10
前提がわからんと何とも、、、本当に何もなし?
とりあえずここ見て、どこからわからんか考えてみ
ttp://www.atmarkit.co.jp/fdotnet/csharp_abc2/index/index.html
685デフォルトの名無しさん:2009/10/11(日) 15:27:51
>>684
恥ずかしながら無いに等しいと思います。
VB?というやつですか?それなら少しだけしたことはあるのですがそれもとても簡単なやつだったと思います。
URLありがとです。
とりあえず読んでみます!
686デフォルトの名無しさん:2009/10/11(日) 15:27:59
>>683
C#は基本的にはビジネスユースのプロが使う言語だからな。
裾野も広ければ奥行きもある。
本格的にやりたいなら入門書を買うことをお勧めする。

まあ、だからといってアマチュアが触れないのかといえばそうでもないが。

まず、ここは外せないな。
http://ufcpp.net/study/csharp/index.html

本当にゼロから始めるならここでもいいが、
http://homepage2.nifty.com/c_lang/

こっちは技術的なうそがいっぱい書かれてることで有名なところだから、
(にもかかわらず分かりやすいということで書籍化までされているのが厄介)
うそをうそと見抜けるようになるまで勉強したまえ。
687デフォルトの名無しさん:2009/10/11(日) 15:40:12
>>686
PCをゲーム機としてだけで置いておくのはかわいそうだと思ってやってみようかと
とりあえずブックマークさしてもらいました!

いきなり質問と言うか躓いてしまったのですが
Visual Studio .NETというソフトは有料なんでしょうか?
もし代わりとなるようなソフトがあればありがたいとは思うのですが・・・
688デフォルトの名無しさん:2009/10/11(日) 15:42:46
express edition なら無料で使える
689デフォルトの名無しさん:2009/10/11(日) 15:48:02
Visual Studio .NETってのは2002の頃ので有料版だけど、
2005以降は無料のExpressEditionがあってMSのサイトからDLできる。
最新は2008SP1ね
690685:2009/10/11(日) 15:50:01
>>688>>689
ありがとうございます!
Visual C# 2008 Express Edition with Service Pack 1というのでおkですかね?
691デフォルトの名無しさん:2009/10/11(日) 15:59:31
それでおk
692685:2009/10/11(日) 16:07:47
インスコしてみたのですがどうしても2008SQLサーバー?ですかね
それだけインスコできませんでしたとの表示が出て終了してしまうのですが・・・w
なにかインスコに関して制約とかこのOSだと駄目とかそういうものは
693デフォルトの名無しさん:2009/10/11(日) 16:08:28
最近組んだファイルの管理を行うロジックでDirectory.filenameとか言うのを叩いてファイルの列挙してるんだけど、
配列じゃなくコレクション型を使いたいということで後先考えずIListを使ってしまって
今になってよかったのかと思ってる。
クラスとかじゃなく、インターフェイスとなっているものを直に変数として宣言するのは気持ち悪いんだけど、この場合何か別の方法ってないのかな?

string tempFN = Directry.filename(***);
List<string> FN = List<string>();
FN.Addrange=tempFN;

とかなんか回りくどいのがあまり好きじゃないし、俺の低脳さも好きじゃない。
知恵と知識をおくれ
694デフォルトの名無しさん:2009/10/11(日) 16:11:09
>>693
原則として、フォルダ中のファイル一覧のような外部の事情で
いつ変更が加わってもおかしくないような
リソースに対してはキャッシュそのものを行わず、
必要なときにそのたびに取得するようにする。
695デフォルトの名無しさん:2009/10/11(日) 16:11:35
始めてプログラムするならC#とC++どっちがお勧めですか?
696デフォルトの名無しさん:2009/10/11(日) 16:15:20
断然C#
初めてでいきなりC++に挑戦すると挫折する可能性が高い
697デフォルトの名無しさん:2009/10/11(日) 16:16:44
というか、ことWindowsでプログラミングするときに
C++をわざわざ選択する意味がほとんどないな。現在では。
698デフォルトの名無しさん:2009/10/11(日) 16:20:10
>>694
ぅーん・・・、検索とか比較をする必要がある場合だったんでコレクション型に落として処理したかったんだけど、
こういったstring[]系のものを一発でList<string>に変換できる技があればなと思ってる。

配列から検索とか比較するのってなにか複雑に見えてしまう。
それにあの構文が見た目不安定に思えて仕方ないw
699デフォルトの名無しさん:2009/10/11(日) 16:22:34
配列は IEnumerable だから List のコンストラクタに入れられるだろ
700デフォルトの名無しさん:2009/10/11(日) 16:29:56
暗黙的に変換できないから一々Addrangeしないといけないからやだなぁって。
そういうことじゃない?
701デフォルトの名無しさん:2009/10/11(日) 16:33:55
ごめん・・・
.ToList();でけた
702デフォルトの名無しさん:2009/10/11(日) 16:34:22
LINQ使えるんだったらそもそもリストにする必要ないだろ
703デフォルトの名無しさん:2009/10/11(日) 16:34:40
つ DarkBASIC
704デフォルトの名無しさん:2009/10/11(日) 16:34:41
.NET 3.5 で C# 3.0 だったのかよ
705デフォルトの名無しさん:2009/10/11(日) 16:37:03
List<T>.FindなんかそのうちObsolete来るかもね
Silverlightではすでに削除されてる
706デフォルトの名無しさん:2009/10/11(日) 16:39:24
>>705
なぜ?
707デフォルトの名無しさん:2009/10/11(日) 16:40:09
LINQ (to Objects)があれば不要だから
708デフォルトの名無しさん:2009/10/11(日) 16:42:44
聞いたことはあるけど使ったことが無い。
というよりあまり魅力とは思わないんだけど、使い始めたらやめられない位つかうことになる?
709デフォルトの名無しさん:2009/10/11(日) 16:43:26
>>707
そんな理由で非推奨にしたらどれだけのメソッドが非推奨になるんだい
710デフォルトの名無しさん:2009/10/11(日) 16:45:17
>>692
とりあえずSQLサーバーとかいらんだろ
711デフォルトの名無しさん:2009/10/11(日) 16:47:38
とりあえずVisual Stadioはサーバー系とモバイル系、オフィス系を省いて、C++をフルインストール、後はデフォルト。
C++はフルにしないとツールや、コンパイルのときAnyCPUの選択ができなくなる。
712デフォルトの名無しさん:2009/10/11(日) 16:48:58
あとはDXperience
713デフォルトの名無しさん:2009/10/11(日) 16:52:27
>>708
よくWebの記事なので紹介されてるクエリ式( from x in items where … ) はあまり使わないだろうけど
メソッド形式( items.Where(x => x.Value < 10).ToList() みたいに書く方)は使いまくることになる
MSDNでSystem.Linq.Enumerableクラスを見てみるといいよ
714デフォルトの名無しさん:2009/10/11(日) 16:59:55
何かちょっと魅力と思えてきた。
これ使いこなせれば、今書いてるコードとかキュッと出来そうw

人に渡すと説明いりそうだけどw
715デフォルトの名無しさん:2009/10/11(日) 17:54:54
LINQは麻薬
716デフォルトの名無しさん:2009/10/11(日) 18:06:07
アルゴリズムを分かった前提でLINQを使ってほしいね
組み合わせ問題をLINQで無理やり書いて
速度が出ないコードを量産されたらたまらん
717デフォルトの名無しさん:2009/10/11(日) 18:06:31
何でもLINQで書きたくなる病を発症する人は多いな。
718デフォルトの名無しさん:2009/10/11(日) 18:09:16
今必死に抑えてるよ…
719デフォルトの名無しさん:2009/10/11(日) 18:18:46
LINQ to flickrとかね
720デフォルトの名無しさん:2009/10/11(日) 18:20:42
っは・・・し、静まれ・・・俺のLINQよ・・・怒りを静めろ!!
721デフォルトの名無しさん:2009/10/11(日) 18:25:34
やめろぉおおおおお
なんでもかんでもIEnumerableインターフェースを実装しようとするんじゃねエエエエエエエエエ
722デフォルトの名無しさん:2009/10/11(日) 18:26:09
あるあるw
723デフォルトの名無しさん:2009/10/11(日) 20:02:06
ほうらこんなものも列挙できるんだよ・・・
みてごらん・・・
724デフォルトの名無しさん:2009/10/11(日) 20:09:06
本当に麻薬だなw
725デフォルトの名無しさん:2009/10/11(日) 20:20:53
javaの1.4で仕事してるけど、ループを書くたびに、linqならああ書けるのにって
妄想してしまう。
726デフォルトの名無しさん:2009/10/11(日) 20:21:49
今時Java 1.4なんて苦行そのものだな。お疲れさん。
727デフォルトの名無しさん:2009/10/11(日) 20:41:21
>>693
var files= Directory.GetFiles(@"c:\work", "*.*", SearchOption.AllDirectories)
.Select(f => new FileInfo(f));
// .Select(x => new FileInfo(x)).ToArray()で配列;
foreach (var file in files)
Console.WriteLine(file.ToString());

728デフォルトの名無しさん:2009/10/12(月) 00:52:04
>>727
わざわざありがとうございます!

何か作っているうちにいろいろやって見たんだけど、これ中毒化する・・・。
ハンドルとか捕ってく時に無駄に使いまわしそうw
.Selectがいっぱい尻尾に着くとかとても自己満z
729デフォルトの名無しさん:2009/10/12(月) 12:49:57
DrawStringで矩形の中に改行しながら最大に近いサイズで文字を表示する方法を教えてください。
730デフォルトの名無しさん:2009/10/12(月) 12:56:04
DrawString(string, Font, Brush, RectangleF)
731デフォルトの名無しさん:2009/10/12(月) 12:57:24
MeasureText
MeasureString
732デフォルトの名無しさん:2009/10/12(月) 13:49:08
フォントサイズを変更しながらMeasureStringで収まってるかどうかループ回すってことですか?

それしかないのか・・・
733デフォルトの名無しさん:2009/10/12(月) 13:56:46
えーっと、比例とか分数って小3ぐらいで習うよな…
仮にそれで誤差が出るとしても、バイナリーサーチと同じアルゴリズムが使えると思うが
734デフォルトの名無しさん:2009/10/12(月) 14:36:28
そっか!
735デフォルトの名無しさん:2009/10/12(月) 18:55:51
音楽プレイヤーについて質問があります。
WindowsMediaPlayerを使って音楽を再生しようとしています。
再生はできたので、次の段階で、評価の値を取得して、気に入った曲だけ再生しようとしています。
http://d.hatena.ne.jp/aont/20080419/1208600078
を参考に、メタデータを取得しようとしています。
ここで疑問点が出てきました。
評価の項目が見当たらないのです。
曲の評価は5なのですが、値が5のデータもありません。
評価を取得するにはどうしたらよいでしょう。
736デフォルトの名無しさん:2009/10/12(月) 19:10:51
列挙したら何が取れるの?
737デフォルトの名無しさん:2009/10/12(月) 19:11:52
ちっとはMSDN見ろ?
ttp://msdn.microsoft.com/en-us/library/dd564793.aspx
属性の名前についてはこっち見ろと書いてある
ttp://msdn.microsoft.com/en-us/library/dd562375.aspx
オーディオ関連に使用する属性に限定したリストがこれ
ttp://msdn.microsoft.com/en-us/library/dd562379.aspx
で評価は大体ratingの訳語だからratingをページ内検索
後は片っ端から詳細ページを確認
738デフォルトの名無しさん:2009/10/12(月) 21:45:47
>>737
thanks
739デフォルトの名無しさん:2009/10/12(月) 23:39:13
ちと悩んでて質問させてくれ
C#のフォームに複数のswf組み込んでそのswfに同時キー処理を渡したいんだ
どうすればいい?
swfを貼り付けるとこまではサイト見ながらなんとか出来たが
swfの同時処理がわからん・・・。1日調べたけどお手上げだった俺に誰か救いの手をくれ
740デフォルトの名無しさん:2009/10/13(火) 00:01:28
同時ってのがあれだけど、スレッドとかか?
でもブラウザにswfにキーイベントとか渡せるかどうかわかんない
741デフォルトの名無しさん:2009/10/13(火) 00:17:03
いや、普通のフラッシュゲームとかと考えてもらっていい
イメージ的には1つのフォームに2つ以上のフラッシュゲームをおいて
キー操作で全く同じ動きする感じ。
742デフォルトの名無しさん:2009/10/13(火) 00:23:35
そもそも、そのswfが同時入力という概念があるのかすら決まってないんじゃないの?
743デフォルトの名無しさん:2009/10/13(火) 00:33:21
フォームに組み込むからフォーム側でコントロールすれば複数のオブジェクト(今の場合はswf)に
キーイベントを送ることは出来るとは思うんだが・・・。
リストとかテキストボックス複数に同時に同じキーイベント送ることが出来たからswfでも出来ると思ったけど
swfは無理なのかのう(´・ω・`)
744デフォルトの名無しさん:2009/10/13(火) 00:35:05
複数に同時、ってのは無理。
745デフォルトの名無しさん:2009/10/13(火) 00:40:16
無理なのか・・・(;´Д`)
他に方法は無いだろうか?もうC#じゃなくてもいいや
746デフォルトの名無しさん:2009/10/13(火) 00:42:21
じゃ、スレ違いだからどこかに消えてなくなれよ。
747デフォルトの名無しさん:2009/10/13(火) 00:51:30
どんな言語だろうと同時は無理だろう
748デフォルトの名無しさん:2009/10/13(火) 01:13:43
キーの制御だからC系でいけると思ったけど
C#で無理ならしゃーないな(´・ω・`)
ありがとう
749デフォルトの名無しさん:2009/10/13(火) 02:15:36
お前らの同時は質問者の同時と別だろうなw
750デフォルトの名無しさん:2009/10/13(火) 02:48:15
キー制御とか書いてあるから人間が操作する前提のフラッシュゲームを
自動で動かしたいとかそんなことなんだろう。
ならばリフレッシュレートより短い時間差があっても問題になることは少ないはず。
この程度の考察ができないようでは、とてもまともなプログラマーとは言えない。
許容誤差とか、仕様に不明な点があれば確認すべきだし。
751デフォルトの名無しさん:2009/10/13(火) 03:06:08
仕様ってなんだよw
仕事じゃあるまいし、なんでそんなに懇切丁寧にやらにゃならんのだ。
頭おかしいんじゃないの?
752デフォルトの名無しさん:2009/10/13(火) 03:29:46
遊びで手を抜くやつは仕事でも手を抜くんだよなあ
人間、そんなに器用に習慣を変えることなんてできないんだから
ちょっとしたことでも態度に出たのを見られてるから注意した方がいいよ
753デフォルトの名無しさん:2009/10/13(火) 03:37:12
仕事で手を抜くのは基本
仕事振られずに給料もらうのがベストソリューション
754デフォルトの名無しさん:2009/10/13(火) 06:44:18
>>752
おまえ働いたことないだろw
755デフォルトの名無しさん:2009/10/13(火) 08:06:09
いかに品質を落とさずに手を抜くかだよな〜
あらゆるツールはそのためにある
756739:2009/10/13(火) 08:22:01
>>750が言う通り少々の時間誤差あるくらいなら全然構わない
ちと説明不足だったすまない
757デフォルトの名無しさん:2009/10/13(火) 08:40:35
飛行機のネジには遊びがあるんだぜ
全てのネジを完璧に締めちゃうと飛び立った後で空中分解するんだぜ
仕事も同じ
俺は後輩にこう教えて来た
758デフォルトの名無しさん:2009/10/13(火) 09:42:00
今は接着剤だがなw
759デフォルトの名無しさん:2009/10/13(火) 09:49:24
それがツールというものか。

なんかつながった
760デフォルトの名無しさん:2009/10/13(火) 10:01:43
効率化を提言すると手を抜いてると言い出すのは日本の会社の宿命だよ
今まで自分が築いたものを否定されるに等しいと思ってるからね
帰属意識を持てという割に共同体だという概念がない
761デフォルトの名無しさん:2009/10/13(火) 10:14:11
んなこたない
762デフォルトの名無しさん:2009/10/13(火) 10:58:17
ツールツール言ってる奴はツールに問題があった時の
工数増加まで見積ってるんだろうな?
763デフォルトの名無しさん:2009/10/13(火) 10:58:54
当たり前
764デフォルトの名無しさん:2009/10/13(火) 11:06:17
というかツールってなんだよ、アドインとかか?ライブラリか?
765デフォルトの名無しさん:2009/10/13(火) 11:35:45
ツール・ド・フランス
766デフォルトの名無しさん:2009/10/13(火) 12:16:49
パスツール
767739:2009/10/13(火) 12:25:48
739だがいつの間にかかやの外にいてワロタ
で、結局>>739は実現可能なのだろうか?
ちょっと前にも書いたけど少しの誤差は無問題
似たような処理ならどんな方法でも基本おkだ
よろしくたのむ
768デフォルトの名無しさん:2009/10/13(火) 12:56:09
>>767
並列処理させればいいだけだろ
おまえにはポジトロニックブレインがついてないのか?
769デフォルトの名無しさん:2009/10/13(火) 13:57:41
カタブツとよく言われております
770739:2009/10/13(火) 14:05:00
ポジなんとかはよくわからんがその並行処理のやり方がわからないんだ
swfにキーを並行処理で渡すってのが俺の中で超難解
771デフォルトの名無しさん:2009/10/13(火) 14:42:57
多少の時間差があってもいいんなら、順番に処理すればいいだけ
人間の目には同時に見えるる
772739:2009/10/13(火) 15:16:59
何度も申し訳ない説明不足だった
swfを組み込むのが初めてでキーコントロールの渡し方もわからんトーシロなんだ
その辺も含めて教えてくれると助かる
ソースコードとか
773デフォルトの名無しさん:2009/10/13(火) 15:27:25
今はどうやって表示してるの?
ActiveXかなんか?
774デフォルトの名無しさん:2009/10/13(火) 15:41:42
>>739
ここで回答を待つよりも賢明な方法がある
ぐぐれ
775739:2009/10/13(火) 15:57:14
SHOCKWAVEなんたらって出るからたぶんActiveX

ぐぐりながら今もいろいろ試してるけど全然ダメなんだ…
なんせC#自体ほとんど触ったことないから(´・ω・`)
776デフォルトの名無しさん:2009/10/13(火) 16:13:10
CopyFromScreenで取得した2枚の画像を
高速で比較して、異なる部分を抜き出す方法ってある?
777デフォルトの名無しさん:2009/10/13(火) 16:19:54
知ってるなら教えてあげればいいのに。
778デフォルトの名無しさん:2009/10/13(火) 16:23:32
異なる部分とは?
単純に差分でなくて、林檎と蜜柑の違いとか?
779デフォルトの名無しさん:2009/10/13(火) 16:24:15
上で偉そうにしてた奴は、騒ぐだけ騒いで教えずに居なくなったな
780デフォルトの名無しさん:2009/10/13(火) 16:26:42
>>776
バイナリで比較すればいい
781デフォルトの名無しさん:2009/10/13(火) 16:30:32
>>775
C#というよりプログラミング自体初心者に近いんじゃないのか?
横着しないでまず文法を理解しなさい
782デフォルトの名無しさん:2009/10/13(火) 16:37:18
>>775
単純な差分。
CombineRgnのRGN_DIFFみないな。

>>780
1ピクセルづつ比較したら遅くね?

783デフォルトの名無しさん:2009/10/13(火) 16:46:35
>>782
基本的にCPUで処理する場合は1ピクセルずつ処理するしかないぞ。
せいぜいSSEなどのパックド命令を使うことだけどこれはC++でやるべきこと。
Graphics/Bitmapで差による描画がないようなら自前でやるしかないな。
Marshal.Copyを使えばそれほど難しいことではないだろう。
784デフォルトの名無しさん:2009/10/13(火) 16:49:33
>>783
Marshal.Copyの後、
forループで比較?
やっぱりこれしかない?
1280x1024 のbitmapの場合、0x500000の配列になるんだよね・・・
785デフォルトの名無しさん:2009/10/13(火) 16:56:43
ポインタ使えばええやろ
786デフォルトの名無しさん:2009/10/13(火) 17:00:41
9000枚くらい画像処理してるけど結構速いよ
787デフォルトの名無しさん:2009/10/13(火) 17:05:18
>>784
今更1Mピクセルくらいなによ、って感じ。

>>785
C#はアンマネージドなバッファに対するアクセス法が3種類ほどあるが、
ポインタとしてアクセスするのはunsafeキーワードでも足りず、
プログラムのビルドオプションを変更する必要がある。
そうするとほかのモジュールとのリンクも影響を受けかねないし、
よほどボトルネックになってない限りはお勧めできない。

>>786
同意。
788デフォルトの名無しさん:2009/10/13(火) 17:10:30
>>786
>>787

そうか、そんなものか。
とりあえずやってみるよ。
サンキュ。
789786:2009/10/13(火) 17:13:29
類似画像比較の処理を書いていて、
最初はサンプリング部だけC++のモジュールに投げようと思ってたんだけど
試したら3%も早くならなかったので止めてC#で書いた
790デフォルトの名無しさん:2009/10/13(火) 17:17:16
あんま、参考にならないと思うけど、
一応、俺も類似画像検索ツール作ったことがある。
50x50サイズの画像を10000件検索したときは約5秒かかった。
791デフォルトの名無しさん:2009/10/13(火) 17:19:13
イメージほど遅くはなくなったんだけどな
イメージ先行してるよなw
792デフォルトの名無しさん:2009/10/13(火) 17:25:49
画期的なアルゴリズムを編み出したいんだろうけど
画像なんてのは規則性がないからな
異なる部分を抜き出すだけなら
1ピクセルごとに比較するのが単純で速い

類似画像検索となると、それなりの手法がいるがな
793デフォルトの名無しさん:2009/10/13(火) 18:08:42
>類似画像検索
たとえば、どんな風にやるの?
794デフォルトの名無しさん:2009/10/13(火) 18:26:07
大雑把な説明だと、各画像の特徴ベクトルを算出して比較

特徴ベクトルの中身や算出方法の具体的なアルゴリズムは説明しきれないから、
興味があるなら画像処理スレ行くとか、適当に論文を当たるとかしてくれ
795デフォルトの名無しさん:2009/10/13(火) 18:30:36
まあ、でも普通は2枚の画像の差分を目で評価できれば十分なので。
以前とあるマイナーな画像形式のコンバーターを作ったんだが、
可逆なはずの色域変換の逆変換でデータが化けてしまったときにお世話になった。

あ、そうだ。便乗質問するんだが、.NETの標準で対応してない画像形式のローダーを.NET向きに作るときって、
なにとして読めるように作ったらいいんだ?
汎用ローダーならIO.Streamでいいんだが……。
796デフォルトの名無しさん:2009/10/13(火) 18:37:23
WinForm向けならSystem.Drawing.Image(実体はBitmapだろうけど)
WPFも視野に入れるなら……DIB的なもの
797デフォルトの名無しさん:2009/10/13(火) 18:38:56
>>775
同時処理以前にキーの送信もできてなかったのか。
そっちを先に聞くべきだったね。
フラッシュ側でどうやってキー入力とってるかにもよるんじゃないのかな。

試しにSendInput使ったら送れたけど、これだと送る前にフォーカスセットしなくちゃならないけど
それでもいいかな?ちなみにキーボードフォーカスはPC上で1つしか持てないから
このやりかただと同時は不可能
798デフォルトの名無しさん:2009/10/13(火) 19:25:21
>>795
WIC(Windows Imaging Component)
799デフォルトの名無しさん:2009/10/13(火) 20:14:39
フォーカスの切り替えも一瞬だから
切り替えとキーイベントなりキーコード送信を順番にやればいいだけだよ
800デフォルトの名無しさん:2009/10/13(火) 21:19:46
C#に向いてるエディタってありますか?
801デフォルトの名無しさん:2009/10/13(火) 21:20:28
VisualC#2008以外ありえない
802デフォルトの名無しさん:2009/10/13(火) 21:58:18
誰もがお前らの思いどうりには行動しません。

協調とは性格や考え方の違うもの同士が譲り合って調和をはかること
すなわち同調ではない。
自分と他人は違う人間なんだから、
十人十色、いろんな考え、趣味、価値観があって当然。

よく私たちは「誤解された」といって憤慨することがありますが、
そのような人は自分の考えをはっきりと発言しているのでしょうか。 
自分の意見を明確に発言もしないで、誤解されたと憤慨するのは、
自分で一言も発言しないで「俺の考えていることを当てて見ろ」
と言っているのと同じことではありませんか。
お互いに自分の意見をもっとはっきり言うべきだと思います。 
自己主張をするときに最も注意すべき点は、感情的にならないことです。 
感情的になったら、勝ち負けを争っていることになります。 
主張するときは冷静で、しかも論理的に話すことが求められます。 
自分の常識が相手にも通じる時代は終わったのです。 
自分と相手の常識は違うのです。よく言えば価値観が多様化してしまったのです。
803デフォルトの名無しさん:2009/10/13(火) 22:05:18
コピペ君って馬鹿だな、まで読んだ。
804デフォルトの名無しさん:2009/10/13(火) 22:06:05
まず.NET Frameworkのクラスライブラリはインテリセンス環境で使うことが前提だから
やたら綴りが多くてとてもじゃないけどふつうのテキストエディタでは書いてられない。
805デフォルトの名無しさん:2009/10/13(火) 22:10:47
MonoDevelop
806デフォルトの名無しさん:2009/10/13(火) 22:20:46
それは秀丸+csc+NUnit+NAnt+NDocでグループウェア作った俺への挑戦だな。
っていうか、確かにシンどいです御免なさい勘弁してください。

ついでにサーバは秀丸+javac+JUnit+Antですた。御免なさい勘弁してください。
807デフォルトの名無しさん:2009/10/13(火) 22:28:42
C#のためにVisualC#が作られたというより,
VisualC#のために作られた言語だし
808デフォルトの名無しさん:2009/10/13(火) 22:30:13
ん?VisualC#の為じゃなく.NETの為に作られたのがC#だろ?
809デフォルトの名無しさん:2009/10/13(火) 22:32:49
実際VSとセットで設計されてるんだよ
810デフォルトの名無しさん:2009/10/13(火) 22:42:44
VisualJがクソミソにされたからブチぎれて大金かけてパクった言語ですが?
811デフォルトの名無しさん:2009/10/13(火) 22:46:19
はやくJava7出せよw
812デフォルトの名無しさん:2009/10/13(火) 22:51:04
Visual Jはこけてくれた良かった。
お陰でC#という最高の言語の一つが出来たのだから。
813デフォルトの名無しさん:2009/10/13(火) 22:54:51
Java7大したもの実装されなそうなのに何であんな時間かかってるんだろうな
正直言って見限り気味
814739:2009/10/13(火) 23:08:53
>>797
ありがとう参考になった。sendinputは使ってなかったわ

とりあえず今日も一日頑張ったけど無理だった。方法としては
・フォームをKeyPreview = trueに設定する⇒特殊アプリ(swfとか)には無効
・KeyDown += delegate(object o, KeyEventArgs e)の後に普通に
 ActiveControl = swf1;
 ActiveControl = swf2;と処理⇒片方しかキー処理しない
・上記のswf2をスレッド処理⇒片方しかキー処理しない

そもそもキーの渡し方がわからんかったからこんな変な処理になった
もうお手上げ\(^o^)/
815デフォルトの名無しさん:2009/10/13(火) 23:44:21
質問させてください。Excelに差込印刷をしてみたいので
C#が良いと後輩に教えてもらいました。

部下に指示するにしても、自分でまずやったほうがい良いと思い書き込みしてます。

どうやればいいでしょうか?
816デフォルトの名無しさん:2009/10/13(火) 23:53:16
>>815
騙されてるよ。
C#はCOMと相性が悪い。
普通にVBAでいい。
817デフォルトの名無しさん:2009/10/13(火) 23:56:32
>>815
お前は部下持ちなのに、自分の頭で考える能力も経験もないのか?
818デフォルトの名無しさん:2009/10/13(火) 23:57:49
>>816
なるほど。VBAを購入してマスターすればいいのですね。
大変参考になりました。60点です。
819デフォルトの名無しさん:2009/10/14(水) 00:01:49
>>818
おまえは0点だよw
820デフォルトの名無しさん:2009/10/14(水) 00:08:14
>>798
ふぅ〜む……。
Vistaでは標準で入ってるけどXPでは.NET Framework 3.5に同梱かぁ。
COMベースであるところが気に入らないが、HD Photoも対応してるようだし
サードパーティーが拡張できるようにすること前提になってるようだし、興味深いな。

WIC、使ったことある人があれば感想とか聞いてみたいね。

試して見る価値はあるような気がする。ありがとう。
ただ自分の使いたい用途とは必ずしも一致しない。
System.IO.Stream系で1行あたりのバイト数で区切られた
長方形状のメモリに直接読み書きできるようなクラスがあれば
それの形で実装できればなと思ってる。
821デフォルトの名無しさん:2009/10/14(水) 00:08:50
>>818
VBAを購入するのか
大変だなw
822デフォルトの名無しさん:2009/10/14(水) 03:10:31
あまりに初歩的で申し訳ないのですが

たとえばApplication.cs から Option.cs を開くために
Application.cs[Design] で Option 項目を作成し
クリックされた時のイベントに何を書けば
Option のウィンドウを開くことができるのでしょうか?
823デフォルトの名無しさん:2009/10/14(水) 04:29:07
アプリケーションの作成手順が知りたいんだけど

例えば、URLを右クリックして保存する時に出てくるウィンドウを設計する場合

まず、フォームにコンポーネントを追加していって
作業に必要なデータセットをつくって
次はイベント処理を作っていくのが一般的?
824デフォルトの名無しさん:2009/10/14(水) 06:31:22
そんなんでデータセットなんて使わんだろ。
825デフォルトの名無しさん:2009/10/14(水) 08:41:16
>>822
Application.csからOption.csを開くって何?
C#ではソースコード同士を開いたりという概念は無いよ。
(コンパイルしたら実行時には関係なくなるから)

それから、その2つはFormを定義してるのかな?
それなら、そんなクラス名をつけるのはあまり一般的ではないよ。
Formクラスを継承するんだらMainFormとかそういう名前をつけるといい。

ちょっと基本的なレベルで突っ込みどころが多すぎるので、
まずは教科書どおりに書いてその意味を考えてもらえないだろうか。
826815:2009/10/14(水) 10:03:19
今日、部下に相談したら「私がやりますから」って不機嫌そうな顔をしてたので
彼は左遷だと社長に直訴しました。私をだれだと思ってるんだまったく。
827デフォルトの名無しさん:2009/10/14(水) 10:07:28
>>826
お前論外。カエレ
828デフォルトの名無しさん:2009/10/14(水) 10:08:21
まさかとは思いますが、この部下とは、あなたの想像上の存在にすぎないのではないでしょうか。
829デフォルトの名無しさん:2009/10/14(水) 10:20:46
たぶん自分が上司という設定も想像上
830デフォルトの名無しさん:2009/10/14(水) 11:35:19
みんな何と戦ってるんだ……
831デフォルトの名無しさん:2009/10/14(水) 12:13:59
>>826
おまえみたいな仕事の出来ないSEが多くてかなわん
832デフォルトの名無しさん:2009/10/14(水) 12:48:05
そうだ、その席俺によこせ
833デフォルトの名無しさん:2009/10/14(水) 14:26:51
>>825
レスありがとうございます。
共にFormクラスを継承していますので名前を変更しました。

まず、MainFormを作って次にOptionFormを作った場合
実行するとMainFormのみ表示されます。

実行時にOptionFormを表示するにはどのようにすれば良いのでしょうか?
834デフォルトの名無しさん:2009/10/14(水) 14:30:57
OptionFormをいつ表示させたいの?
MainFormの代わりならnew MainForm() してるとこを探してみそ。

任意の時点なら、new OptionForm()して.ShowDialog()とか
835デフォルトの名無しさん:2009/10/14(水) 14:31:42
ソースコード全部漁るとMainメソッドでApplication.Runを実行している所がある
そこで引数として渡すFormを変更する
836デフォルトの名無しさん:2009/10/14(水) 15:26:29
>>834
できました。ありがとうございます。
837デフォルトの名無しさん:2009/10/14(水) 20:32:33
abstract class Foo}
838デフォルトの名無しさん:2009/10/14(水) 20:47:28
コンパイルエラーになりますた
839デフォルトの名無しさん:2009/10/14(水) 20:52:25
public abstract class Foo{}
public class Bar:Foo{}
public class Baz:Foo{}

public class BarContainer{
public List<Bar> Children;
}

public class BazContainer{
public List<Baz> Children;
}

というクラスがあって、BarContainer と BazContainer の両方を扱えるように、

interface IParent<T> where T:Foo
{
List<Foo> Children;
}

public class BarContainer:IParent<Bar>{
public List<Bar> Children;
}

というのを定義したんですが、
var x=(IParent<Foo>)(new BarContainer());
とはできないんですね。

なんかいい方法ない?
840デフォルトの名無しさん:2009/10/14(水) 20:55:03
public abstract class FooContainer {
841デフォルトの名無しさん:2009/10/14(水) 21:01:02
>>839
http://msdn.microsoft.com/ja-jp/library/ms228359.aspx
その問題についてはこの記事が詳しい
MSDNの中でも指折りの良質な記事だと思う
842デフォルトの名無しさん:2009/10/14(水) 21:21:22
単純に
public abstract class Foo { }
public class Bar : Foo { }
public class Baz : Foo { }
interface IParent<T> where T : Foo {
List<T> Children { get; set; }
}
public class MyContainer<T> : IParent<T> where T : Foo {
List<T> lis;
public List<T> Children {
get { return lis; }
set { lis = value; }
}
}
class Program {
static void Main(string[] args) {
var x = (IParent<Foo>)(new MyContainer<Bar>());
var y = (IParent<Foo>)(new MyContainer<Baz>());
}
}
という話ではないのか?と思ったんだが、違うのか。
843デフォルトの名無しさん:2009/10/14(水) 21:25:35
一見正しそうに見えるけどコンパイル通らないよそれ
理由は>>843を嫁
844デフォルトの名無しさん:2009/10/14(水) 21:27:37
こんにちは

質問があります。
今座席表を簡単なものを作っています。

ラベルで席の場所を作り、その中に名前を入れておくのですが
このときの名前はForm2にメンバー表をテキストボックスで作っておき
それに対応したラベルをForm1で参照して表示にしようと思っています。

そして、Form2のテキストボックスの名前を変えて保存ボタンを
押せば簡単に席替えしたときに変えられる
と言うな物を作りたいのですが。

@Form1からForm2のテキストボックスが参照できない
Aexeで起動したときテキストボックスの中身を入力で替えたとき
保存は出来るのか?

以上を教えてください。なお、あまりよくない作りになりそうでしたら
そこも助言いただけるとうれしいです
845839:2009/10/14(水) 21:32:23
みなさまレスありがとう。
>>840
ごめん、サンプルでは簡略化のために省きましたが、
Bar/BazContainer には基底クラスがあるので、その手は使えないっす。

>>841
ビンゴなレスありがとう。お礼にフェラチオしてやりたいくらいだ。
でも、記事内容がちょっと俺には高度っぽい。
理解できるだろうか。

>>842
>System.InvalidCastException はハンドルされませんでした。
>Message="型 'ConsoleApplication1.MyContainer`1[ConsoleApplication1.Bar]' のオブジェクトを型 'ConsoleApplication1.IParent`1[ConsoleApplication1.Foo]' にキャストできません。"
846デフォルトの名無しさん:2009/10/14(水) 21:33:25
>>844
フォーム等の特定の入出力に依存しない座席表クラスを作って,
そのインスタンスを両方のフォームから参照する。
保存や読み込みもそのインスタンスだけ。
847デフォルトの名無しさん:2009/10/14(水) 21:38:38
>>839
よく見てないけど、
C#4.0でサポートされるジェネリックの共変・反変性と関係するのかな?
ちと調べてみる。
848デフォルトの名無しさん:2009/10/14(水) 21:40:23
関係は大いにあるけどC#4.0では解決しない
List<T>は書き込みと読み取りの両方の操作をサポートしているので共変も反変も使えない
849842:2009/10/14(水) 21:48:14
なるほど、だから >841 なのか。納得しました。
850デフォルトの名無しさん:2009/10/14(水) 21:53:51
>>846
なるほどテキストボックスとかで貼り付けたのを使うのでなく
あくまでもプログラムで参照させるやり方ですね?

初心者で申し訳ないですが

座席表クラスには座席番号と氏名を入れて
それを対応したラベルなりに表示させるようにして
変更時は
Form2に保存ボタンを作り名前が入ってるテキストボックスに入力させて
ボタン押してプログラムに上書きをさせていく感じでしょうか?

一応座席が76個ほどあります・・・・
初心者ですいません。
851デフォルトの名無しさん:2009/10/14(水) 22:30:41
>>850
初心者スレで初心者ですみませんとか何度も言われると煽られているのかと思ってしまう。

それはさておき、>>846の言うことがよく理解できないなら
テキストボックスを参照させたいならテキストボックスのアクセシビリティを
デフォルトの private から internal とかに上げる方法もある。
852デフォルトの名無しさん:2009/10/14(水) 22:41:45
こないだわからないことがあったんで質問します


<asp:FormView ID="formView1" runat="server">
<ItemTemplate>
      ・・・・
<asp:Panel ID = panel1 runat="server">
・・・・

コードの概要は上記のような形で.cs側でpanle1のvisibleを制御したいんだけどやりかたがわかりませんでした。
調べたら恐らくできるんだろうことはわかったんですが・・・

試したことは

 Panel pnl = (Panel)formview1.findcontrol("panel1");
   これでpnlがnullになってしまいます

 Panel pnl = (Panel)formview1.row.findcontrol("panel1");
   rowに何もはいってません

なんか推測でも理由分かる人いたらおねがいします



853デフォルトの名無しさん:2009/10/14(水) 22:42:55
>>850
一個一個入力という意味?それでも問題ないけど。

一例として入力フォームはダイアログボックスとして席の位置に76個のテキストボックスを配置。
モーダル表示した時に846の座席表クラスの76個のString(配列とかリストとか)からそれぞれ貼り付け。
変更後にOKボタンで逆に座席表クラスに取り込む。Cancelなら内容は破棄。
なんてのはどう?

モーダルにしない場合、他の画面で更新かかったときに動的に書き換えたりと初心者の範疇を越えてしまう。
854850:2009/10/14(水) 23:04:07
>>851
ごめんなさいそういうつもりは一切ありません。
言わんとしてることは分かるのですが、どうも説明したり
口で言うのが苦手なのでうまくまとめられてないです。

internal明日会社で調べてみます!ありがとうございます。

>>853
ダイアログ使ったことないんでちょっと調べてみて
参考にしたいと思います!

しない場合は難易度アップなんですね・・・
明日会社で検討してみます!
ありがとうございます。

またクルかと思いますが申し訳ないですがそのときはよろしくお願いします。
855デフォルトの名無しさん:2009/10/14(水) 23:19:30
C#, C♯, C#相談室 Part54 で質問したんですが
スレが終了してしまったのでこちらで再質問させていただきます。
-------------------------------------------------
ArrayList.Add でリストの最後ではなく
リストの最初に追加するにはどうすれば良いですか?
-------------------------------------------------

995 名前:デフォルトの名無しさん[sage] 投稿日:2009/10/14(水) 20:20:40
関係ないけど今更ArrayListなんか使うな

1000 名前:デフォルトの名無しさん[sage] 投稿日:2009/10/14(水) 20:47:19
List<T>

というレスをもらいましたが、Listでも
リストの最初に要素を追加する方法はわかりませんでした。
回答いただけたら大変助かります。
856デフォルトの名無しさん:2009/10/14(水) 23:25:16
C#, C♯, C#相談室 Part55
http://pc12.2ch.net/test/read.cgi/tech/1255530225/

立てといた
857デフォルトの名無しさん:2009/10/14(水) 23:26:05
>>855
994でレスもらってるじゃねーか

>>856
858デフォルトの名無しさん:2009/10/14(水) 23:26:40
>>855
list.Insert(0, x);
859デフォルトの名無しさん:2009/10/14(水) 23:27:02
994 名前: デフォルトの名無しさん [sage] 投稿日: 2009/10/14(水) 17:28:58
Insert

↑なんでこれみてないの?これ答えたの俺じゃないけど、答えそのままじゃん。
List<T> でも同じ名前と同じやり方だよ。
860デフォルトの名無しさん:2009/10/14(水) 23:28:01
45→55ってどういうこと?
861デフォルトの名無しさん:2009/10/14(水) 23:28:40
バージョンアップ
862デフォルトの名無しさん:2009/10/14(水) 23:32:26
一瞬立て間違えたかと思ってビビった
863デフォルトの名無しさん:2009/10/14(水) 23:38:18
>>859
アンカーも付いてないのになんでもくそもないわ。
答える側の能力が低いだけだ。
864デフォルトの名無しさん:2009/10/14(水) 23:44:04
質問の直後のレスで、その言い方はないわ
ほかに混同するレスもないのに
865デフォルトの名無しさん:2009/10/15(木) 00:02:10
c:\data\a\good01.jpg
c:\data\a\bad02.jpg
c:\data\a\other03.txt
c:\data\b\good04.jpg
c:\data\b\bad05.jpg
c:\data\b\music06.mp3
c:\data\c\good07.jpg
c:\data\c\bad08.jpg
のような構造から、goodのjpgだけ抜き出したいと考えました。
string[] photofiles;
string[] allphotofiles = Directory.GetFiles(@"c:\data", "*.jpg", SearchOption.AllDirectories);
string photolist;
foreach(string allphotofile in allphotofiles) {
if (allphotofile.Contains("good)){
photolist = photolist + allphotofile + "\n";
}
}
photofiles = photolist.Split('\n');
でできているのですが、ひどく無駄な処理をしている気がしてます。
こういうときに、LINQを使うとスマートになるんですか?
866デフォルトの名無しさん:2009/10/15(木) 00:07:43
何が「ひどく」とまでいうほど無駄と感じるわけ?
別にLINQ使ったからって大して変わるわけでもないけど。
867デフォルトの名無しさん:2009/10/15(木) 00:13:15
配列に入れたものを文字列にして、
もう一度配列にしているのが無駄な気がしてます。
直接配列に入らないのかな〜と。
あと、LINQはこのあいだ盛り上がっていたのと、
まだ使ったことがないので、なんとなくあこがれて。
868デフォルトの名無しさん:2009/10/15(木) 00:15:52
yield returnだろうとLINQだろうと配列コピーだろうとなんだろうと
目的の機能を達成すれば全ておk
好きな方法を使え
869デフォルトの名無しさん:2009/10/15(木) 00:17:04
>>857>>858
あ、ほんとだ。
すいません、2回ぐらい見たはずなのに
自分へのレスだと気づけませんでした…。
870デフォルトの名無しさん:2009/10/15(木) 00:17:55
Directory.GetFiles(@"c:\data", "good*.jpg", SearchOption.AllDirectories);

こうはできないんだっけ
871デフォルトの名無しさん:2009/10/15(木) 00:27:43
>>864
まあそうなんだけどさ、それは分かってる側の理屈だよね。
もちろん答える側の自由なんだけど、せっかく答えたのに
相手に伝わらなければもったいないよ。
質問内容で明らかにかなりの初心者だってわかるんだし、
その僅かな気配りが出来るか出来ないかで能力に雲泥の差が出るよね。
872デフォルトの名無しさん:2009/10/15(木) 00:27:52
var files= Directory.GetFiles(@"c:\work", "*good*.jpg", SearchOption.AllDirectories)
.Select(f => new FileInfo(f));
でできるよ。
873デフォルトの名無しさん:2009/10/15(木) 00:36:25
わかってる、というより質問しといて新しいレスが増えたのに、
自分宛じゃないからって無視する精神の方がおかしいわ
874デフォルトの名無しさん:2009/10/15(木) 00:37:17
コードは、な
875874:2009/10/15(木) 00:39:37
ごば
876デフォルトの名無しさん:2009/10/15(木) 00:47:05
>>873
うん、だからさ、その程度の事はアンカーを付ければ
簡単に避けれるのは理解できるかな?

決して気づかなかった無能な初心者を庇っている訳ではないんです。
877デフォルトの名無しさん:2009/10/15(木) 00:54:40
>>876
まあ、日本人は説明能力が欠如してる人間が多すぎるからね。

質問側にも回答側にも、本人とエスパー以外に読解不可能な文章を平気で書いて
それで人に伝わるつもりになってる奴が多すぎる。
明らかに教育の問題だな。

まあ、君がもし回答者は質問者に親切に<すべき>と思ってるなら、
そういうクレーマーチックな押し付けがましい考えもどうかと思うけど。
878デフォルトの名無しさん:2009/10/15(木) 01:12:38
質問です。
病院、診療所の検索システムを作成しています。
病院の検索ボックスに、例えば「ちゅうおう」と入力すると、
文字列変換前に、右手のパネルに「ちゅうおう」のフリガナを含む全病院、診療所が表示され、
そこで、Enterキーで確定させる前に、
Tabキーまたは右カーソルキーの押下で右手のパネルにフォーカスを移したいと思っています。
Enterキーで確定後に右手にフォーカス遷移させることはできたのですが、
確定させる前の、入力文字列に点線の下線がある状態で、
Tabキーまたは右カーソルを検出し、フォーカスを移動させたいんです。
それは可能でしょうか?
もしできるなら、どのようなコーディングになるのでしょうか。
教えてください。よろしくお願いします。
879デフォルトの名無しさん:2009/10/15(木) 01:39:01
2ちゃんでの答えに説明力不足もくそもない。
直後に書いた答えに説明力不足もくそもない。
一言使うメソッド教えるのに説明力不足もくそもない。
読解不可能な答えでも何でもない。
880デフォルトの名無しさん:2009/10/15(木) 01:45:05
>>872
System.IO.FileInfoって、配列じゃなくない?
>>870
できそうなのですが、条件を間違えてました…。
c:\data\a\good\photo01.jpg
c:\data\a\bad\photo02.jpg
c:\data\a\other\text03.txt
c:\data\b\good\photo04.jpg
c:\data\b\bad\photo05.jpg
c:\data\b\music\music06.mp3
c:\data\c\good\photo07.jpg
c:\data\c\bad\photo08.jpg
でした。
Directory.GetFiles(@"c:\data", @"\good\*.jpg", SearchOption.AllDirectories);
とかやったけどだめっぽい。
881デフォルトの名無しさん:2009/10/15(木) 01:49:10
>>879
後輩に嫌われそうなタイプだなw
882デフォルトの名無しさん:2009/10/15(木) 01:51:35
自アプリ以外から起動したinternet explorerの特定のタブのHtmlDocumentを取得するのって自前でCOMの処理書かないと無理なの?
簡単にアクセス出来るクラスとか無いの?
COM使った実装は実現出来ているんだけどもっと簡単な方法が無いかなって思っての質問だけど
883デフォルトの名無しさん:2009/10/15(木) 01:54:48
少なくとも標準ライブラリにはない
Shell32とか使えば多少は楽になるかも知れんがまあ大差なかろ
884デフォルトの名無しさん:2009/10/15(木) 01:56:14
>>881
ここは2ちゃん
885デフォルトの名無しさん:2009/10/15(木) 02:00:53
>>883
サンクス
なんかこの当たりもっと対応して欲しいよね
C#は先進の技術で作られているのにM$純正のアプリですらレガシーな技術を使わないとアクセス出来ないとか意味不明すぎる
IEに至っては構造が歪すぎて本来COMで提供されているべき機能がWindowMessageを使わないとアクセス出来ない機能まであるし
886デフォルトの名無しさん:2009/10/15(木) 02:03:40
>>880
パスに含まれる、ならそりゃ第二引数は使えない これはファイル名のフィルタだから
Whereなりif文なり自分で分けるしかないな

Selectは型の変換 IEnumerable<TInput>をIEnumerable<TOutput>にする
GetFilesならstring[] : IEnumerable<string> で、
SelectでそれぞれのstringがそれぞれFileInfoに置き換えられてIEnumerable<FileInfo>を返す
まあFileInfoがいらないならこのSelect文は不要だな

取り敢えず\nでくっつけて後でSplitはあり得ない
List<string>にAddしていくようにすれば良いんじゃね
887デフォルトの名無しさん:2009/10/15(木) 02:05:38
>>885
他のプロセスの内容をのぞき見るとか、マネージドという方向性とは正反対じゃねーか
888デフォルトの名無しさん:2009/10/15(木) 02:08:14
>>884
それも含めて言ってる
889デフォルトの名無しさん:2009/10/15(木) 02:11:45
>>887
いやいやw自分のアセンブリから他のアセンブリのパブリックメソッドを呼び出すのは実にマネージド的じゃんw
IEがアセンブリでちゃんとそう言うメソッドを公開していれば
ブラックボックスになっている他プロセスをわざわざ覗き見る必要なんてないじゃんかよ?w
890デフォルトの名無しさん:2009/10/15(木) 02:21:11
>>880
・GetDirectories()→GetFiles()の2段階にする
・条件緩めてGetFiles()→自前でフィルタ
のどちらかだろうな

とりあえず前者をLINQで書いてみた (SelectMany便利だねぇ)

Directory.GetDirectories(@"c:\data", "good", SearchOption.AllDirectories)
    .SelectMany(d => Directory.GetFiles(d, "*.jpg"))
891デフォルトの名無しさん:2009/10/15(木) 03:17:44
>>886
\nでくっつけて後でSplitはあり得ない
自分でもそう思います。はい。レベルアップしたいです。
List<string>を試してみます。
List<string>って、ListBoxと扱いはいっしょ?

>>890
これがLINQですか…。
string[] photofiles = Directory.GetDirectories(@"c:\data", "good", SearchOption.AllDirectories)
.SelectMany(d => Directory.GetFiles(d, "*.jpg"))
だと、
型 'System.Collections.Generic.IEnumerable<string>' を 'string[]' に暗黙的に変換できません。明示的な変換が存在します。(cast が不足していないかどうかを確認してください)
なんですけど、この変換が、886さんのいう型変換ですか?
892デフォルトの名無しさん:2009/10/15(木) 04:07:29
ToArray()でクエリを評価して結果の配列を受け取ればおk
列挙子(IEnumerable<string>)が返されるってのはLINQの重要なポイントなんで、今は分からなくとも頭の隅に置いとくといい。

string[] photofiles = Directory.GetDirectories(@"c:\data", "good", SearchOption.AllDirectories)
.SelectMany(d => Directory.GetFiles(d, "*.jpg")).ToArray();
893デフォルトの名無しさん:2009/10/15(木) 06:05:10
>>891
個人的な意見だが
今のレベルではLINQ理解しようとしてもただただ混乱が増えるだけに見える。

勉強目的ならば、Listを使って>>865を改善できるように頑張った方がいい
LINQにこだわりたいのならば、誰かに作ってもらった動くものを
今はコピペするだけにとどめておいた方がいい
と思う。


あと変数名の付け方もちょっと気になる
894デフォルトの名無しさん:2009/10/15(木) 06:26:23
>>880
ToArray()

もうちった勉強しろ
895デフォルトの名無しさん:2009/10/15(木) 06:42:22
>>878
ですが、どなたかご存知ではないでしょうか?
これができれば使いやすくなるのですが…。
896デフォルトの名無しさん:2009/10/15(木) 07:07:22
右パネルに移動したとして検索フォームには何も入力されないまま?
というかそれ使いやすいか?
897デフォルトの名無しさん:2009/10/15(木) 07:16:59
昔はImmほにゃらら関数とWM_IME_COMPOSITIONで可能だった
今はどうだかしらんが
898デフォルトの名無しさん:2009/10/15(木) 08:15:47
>>878
そんなIMEの実装に依存するような動作はやめたほうがいいと思う。
MS-IMEは変換中のキー入力の起動を任意にカスタマイズできるし、
ほかのIMEが入ってる環境ならなおさらだ。
899デフォルトの名無しさん:2009/10/15(木) 09:19:57
>>876
?
900デフォルトの名無しさん:2009/10/15(木) 11:21:29
>>878
表示される文字とは別にKeyDownイベントで
キー入力だけチェックするのはどうよ

「ちゅうおう」って打ってる後ろで
[chuuou]って取得しつつ検索結果を常に別窓に表示する
901デフォルトの名無しさん:2009/10/15(木) 12:00:03
>>878
個人的には>>898,896と同感

あと
>右手のパネルに「ちゅうおう」のフリガナを含む全病院、診療所が表示され、
って、それは読み仮名検索を実装していて病院名検索とは別のもの、ってこと?


>>900
それは、後々整合性保つのがめんどくなっていくと思うなあ
902デフォルトの名無しさん:2009/10/15(木) 12:05:53
今議論してる話は、Youtubeの検索欄が実現できてるな。
(どうやってブラウザで確定前の入力が取れるのかが激しく謎だが)

便利かなと思わないでもないが、確定前に候補が出てくるので
今入力中の検索ワードを確定したらいいのかせんでいいのか迷ってしまう感じ。
903デフォルトの名無しさん:2009/10/15(木) 12:20:26
というか、googleのインクリメンタルサーチだと思ったが
いやまあ根本的に同じものなんだけどさ
まあアレはブラウザのサイズによってはすごくキモイ挙動になるけど・・・
クリックでも、確定してから矢印キー操作でもお好きな方でどうぞ。

ブラウザ上だったら、タイマー使って簡単に実現できるよ
DOMからvalueの中身を見るだけで未確定でも取ってこれる。
904デフォルトの名無しさん:2009/10/15(木) 12:48:44
少し逸れた質問かもしれないが、変換ツールがIMEかそれ以外かを判定しる方法ってありますか?
905デフォルトの名無しさん:2009/10/15(木) 12:53:00
>>904
ユーザーに『パン作った少年』と変換・入力させて、
『パンツ食った少年』が入力されればMS-IME :)
906デフォルトの名無しさん:2009/10/15(木) 13:07:25
>>905
すでに修正変換していた場合、むりだろw
907デフォルトの名無しさん:2009/10/15(木) 13:12:44
Messagebox.Show("パンツは食えません!","エラー");
908デフォルトの名無しさん:2009/10/15(木) 13:20:01
ImmGetDescriptionとかImmGetIMEFileNameとかで判断する
909デフォルトの名無しさん:2009/10/15(木) 17:46:39
>>892
できました。動きました。大感謝。
>>893
おっしゃるとおり。LINQはとりあえず892さんの作っていただいたのを眺めながら勉強したいと思います。
そう、そのまえに自分ではListをやってみないと。
Listで865を直してみます。
>>894
わかった!
ありがと。勉強するぜっ!
910850:2009/10/15(木) 19:00:53
お世話になってます。
なんとか参照して表示までこぎつけましたが内部はかなりへんてこなきがします
どうなのでしょうか

public class zasseki
{
public string zs1()
{
string a = "名前";
return a;
}
と言うのを73個作り
newを使いクラス生成
そして、form1に
public void Form1_Load(object sender, System.EventArgs e)
{
label1.Text = zsk.zs1();
とずらーっと入れました。
なんか他にも出来そうですが一応表示は出来てるので
このまま進めてもいいんでしょうか
911デフォルトの名無しさん:2009/10/15(木) 19:03:04
> と言うのを73個作り


  /'           !   ━━┓┃┃
-‐'―ニ二二二二ニ>ヽ、    ┃   ━━━━━━━━
ァ   /,,ィ=-;;,,, , ,,_ ト-、 )    ┃               ┃┃┃
'   Y  ー==j 〈,,二,゙ !  )    。                  ┛
ゝ.  {、  - ,. ヾ "^ }  } ゚ 。
   )  ,. ‘-,,'   ≦ 三
ゞ, ∧ヾ  ゝ'゚       ≦ 三 ゚。 ゚
'=-/ ヽ゚ 。≧         三 ==-
/ |ヽ  \-ァ,          ≧=- 。
  ! \  イレ,、         >三  。゚ ・ ゚
  |   >≦`Vヾ        ヾ ≧
  〉 ,く 。゚ /。・イハ 、、     `ミ 。 ゚ 。 ・
912デフォルトの名無しさん:2009/10/15(木) 19:03:45
話を聞くだけで頭が痛くなるコードだな…
913デフォルトの名無しさん:2009/10/15(木) 19:06:44
もういっそエクセルでやってくれ・・・
914デフォルトの名無しさん:2009/10/15(木) 19:12:14
もうそれ紙に書いた方が良いよw
915デフォルトの名無しさん:2009/10/15(木) 19:15:36
>>910
もうどこから指摘して良いのやら全然ダメなやり方です
C#の本を1冊買って読みながら作った方がいいと思うよ
基礎をおろそかにしては次のステップへは進めない
916デフォルトの名無しさん:2009/10/15(木) 19:20:19
まずクラス名のザッセキが気になる
917デフォルトの名無しさん:2009/10/15(木) 19:28:27
うん、まずは配列覚えようか
918デフォルトの名無しさん:2009/10/15(木) 19:31:55
取り合えず
配列
でググろうか
919デフォルトの名無しさん:2009/10/15(木) 19:32:49
俺は本なんてよまないからいまだにオブジェクト指向とか意味わかってないけど経験でなんとかやってこれた。
あたって砕けて覚えていくのが楽しいものですといいたが、苦労したくなかったら本読め
920デフォルトの名無しさん:2009/10/15(木) 19:44:28
さすがに本読んでなくても
70も同じコード書いてたらなんかおかしいって思うだろ普通
921デフォルトの名無しさん:2009/10/15(木) 19:51:18
プログラム書くときって普通合理化しようと思うものじゃないの?
初心者とか以前に最低限、初心者用の本を読むとかアルゴリズムの入門編くらいは知っておけよ
922デフォルトの名無しさん:2009/10/15(木) 19:52:46
テキストボックスに、数字以外のものを入力させたくないのですが
どのような方法があるでしょうか?

右クリック、コピペでの貼り付けは考えなくて結構です。
923デフォルトの名無しさん:2009/10/15(木) 20:11:09
>>922
Validatingとか
924デフォルトの名無しさん:2009/10/15(木) 20:18:59
かれこれ2ヶ月やってこれです。

死んだほうがいいですかね。
925デフォルトの名無しさん:2009/10/15(木) 20:21:03
あ、↑910です

まじめに会社を辞めようかとも思ってます。ありがとうございます
926デフォルトの名無しさん:2009/10/15(木) 20:26:36
>>924
二つ質問があるんだけど
本は読んでいますか?読んでいれば何という本を読んでいますか?
927デフォルトの名無しさん:2009/10/15(木) 20:29:50
>>926
読んでいる最中で
猫でもわかるのC#を読んでいます。

やってるときは普通にこれじゃ意味ないなとか思ってたんですが
どうしたらいいか分からず上のようになっています。

ちゃんと読んで、サンプルも作ったり改造したりしてるのですが
全然だめですね。ほんとに死にたくなると同時に無能さを感じました。
928デフォルトの名無しさん:2009/10/15(木) 20:31:00
>>924
うそ、だろ・・・
俺も8月頃C#始めたけど(勉強のためにこのスレ見てる)
さすがに配列くらいわかるわ・・・
929デフォルトの名無しさん:2009/10/15(木) 20:34:11
初心者本が初心者にやさしいとは限らないからねえ
910の場合、本読んでるなら本の影響だろ
930デフォルトの名無しさん:2009/10/15(木) 20:39:45
どんな初心者本でも配列くらい載ってると思うけど…
931デフォルトの名無しさん:2009/10/15(木) 20:45:55
プログラムにバグがあるとき以外
発生しない状態になったときは
InvalidOperationException 投げておけばいい?

それとも、ApplicationException?
932デフォルトの名無しさん:2009/10/15(木) 20:54:17
>>931
その状態ってのが具体的にどういう場合なのか
引数がおかしければInvalidArgumentだし
メンバが変な値になってればInvalidOperationだし
なんかアプリ固有の例外を投げるべきかも知れないし
どんな例外もピンと来ない場合はなんとなくInvalidOperation投げることもあるけど

ApplicationExceptionは元々アプリ固有の例外を定義するための基底クラスとして用意されてた
ただし全部Exceptionから派生するようにガイドラインが変更されたので死にクラス
933デフォルトの名無しさん:2009/10/15(木) 21:02:54
「使い方が間違ってる。コードを修正しろ。」という意味で例外を投げる場合は
InvalidArgumentExceptionやInvalidOperationExceptionのようないい加減な例外を投げておくべき。
わざわざ固有の型を作るとキャッチしてくれという意味に取られかねない。
934デフォルトの名無しさん:2009/10/15(木) 21:08:02
>>922
KeyPress() イベントで e.KeyChar と e.Handled を使ってふんだらら。
ごめん。詳しくは覚えてない。
935デフォルトの名無しさん:2009/10/15(木) 21:08:34
zassekiにほれたのでやってみた。
呼び出し側のForm

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.ZassekiEvent += Sekigae;
frm.Show();
}
private void Sekigae(object sender, EventArgs e)
{
var txtBox = sender as TextBox;
if (txtBox != null)
{
this.Controls.OfType<TextBox>()
.Where(t => t.Name == txtBox.Name)
.Single().Text = txtBox.Text;
}
}
}
936デフォルトの名無しさん:2009/10/15(木) 21:09:55
席の情報をもつForm

駄作だがうけとってくれw

public partial class Form2 : Form
{
public delegate void ZassekiEventHandler(object sender, EventArgs e);
public event ZassekiEventHandler ZassekiEvent;

public Form2()
{
InitializeComponent();

foreach (var txt in this.Controls.OfType<TextBox>())
{
txt.TextChanged += new EventHandler(zasseki_TextChanged);
}
}
void zasseki_TextChanged(object sender, EventArgs e)
{
ZassekiEvent(sender, e);
}
}
937デフォルトの名無しさん:2009/10/15(木) 21:12:07
Form1とForm2のTextBoxは同じ名前という前提で頼む。
Form1.TextBox1とForm2.TextBox1がつがいになる。
保存を考えたら外部のリソースにたいしてバインドするほうがいいだろうな。
938デフォルトの名無しさん:2009/10/15(木) 22:16:34
リソースとバインドの意味がわかりません
939デフォルトの名無しさん:2009/10/15(木) 22:19:36
>>846みたいな設計にするってことだろ
いわゆるデータバインディングなどを使うかどうかは別にして
940デフォルトの名無しさん:2009/10/15(木) 22:19:48
辞書ひけカス
941デフォルトの名無しさん:2009/10/15(木) 22:24:49
C#初心者って言ってんのにデリゲート唱えるコードとかwwwドSw
942デフォルトの名無しさん:2009/10/15(木) 22:31:27
LINQ避けてわざわざforeachで回されると長くなってうざい
どうせイベントとか使ってる時点で理解できないだろうから短く貼ってくれた方がいい
943デフォルトの名無しさん:2009/10/15(木) 22:34:54
この程度で長いって……
944デフォルトの名無しさん:2009/10/15(木) 22:37:24
ここでLINQを使うならいったいどのように書くんだ?
そっちの方が横に長くなると思うけど
945デフォルトの名無しさん:2009/10/15(木) 22:44:45
奥に長くしてくれ
946942:2009/10/15(木) 22:45:52
いや>>941が.Where(t => t.Name == txtBox.Name)に文句付けてるのかと勘違いした
たぶんイベント使ってるのが難しいと言いたいんだろうな
947デフォルトの名無しさん:2009/10/15(木) 22:56:42
初心者がやるならテキストファイルから入出力でしょうね。
配列、入出力あたりは早めに覚えておきたい。
948942:2009/10/15(木) 23:01:34
フォーム間のやり取りにわざわざテキストファイルを介するの?
そこまでして無理に今やることはないと思うぞ
さっさとオブジェクト指向の勉強とか済ませてしまった方が早い
949デフォルトの名無しさん:2009/10/15(木) 23:52:32
それよりいまの問題は配列をしらない事だろうw
950デフォルトの名無しさん:2009/10/15(木) 23:53:55
これを題材に、一歩ずつ学べるようにリファクタリング&機能追加するような教材を作ったら・・・
別に売れないかなw
951デフォルトの名無しさん:2009/10/15(木) 23:56:38
>>942
保存はどうするの?
952デフォルトの名無しさん:2009/10/15(木) 23:56:46
あれか、一回70個コピペさせて
面倒でしょ?そんな時に配列!ってか
953デフォルトの名無しさん:2009/10/15(木) 23:58:58
配列!そういうのもあるのか!
954942:2009/10/16(金) 00:00:24
Excelでいいじゃん
955デフォルトの名無しさん:2009/10/16(金) 00:01:56
×そういうのもある
○最低限の知識
956デフォルトの名無しさん:2009/10/16(金) 00:07:03
これは面倒すぎるありえないっていう感覚は大事だと思う
957デフォルトの名無しさん:2009/10/16(金) 00:12:35
ttp://uchukamen.com/Programming1/ToRecycleBin/index.htm
を参考にして、ファイルをゴミ箱に入れようとしています。

ダイアログを出さないようにフラグを
sh.fFlags = Shell.FOFlags.FOF_NOCONFIRMATION ;
に変えたら、ゴミ箱に入らずに消えてしまいました。

ダイアログを出さないようにゴミ箱に入れるには、FOF_ALLOWUNDOも同時に指定する必要があると思うんですが、
+でつなげても0x0050にしてもエラーが出てしまいます。
同時指定のやり方を教えてもらえませんか。
958デフォルトの名無しさん:2009/10/16(金) 00:17:32
>>955
孤独のグルメ
959デフォルトの名無しさん:2009/10/16(金) 00:24:02
で、その配列とやらをどう活かすですか
960デフォルトの名無しさん:2009/10/16(金) 00:36:42
>>957
組み合わせ可能な列挙体を組み合わせるのはビットごとの論理和演算子である | を使う
961デフォルトの名無しさん:2009/10/16(金) 00:52:36
>>960
あっさりと想定通りの動きをしました。
ありがとうございました。
962デフォルトの名無しさん:2009/10/16(金) 01:02:35
>>935-936
設計と命名以外でダメ出してみる (×:MUST be fixed、△:SHOULD be fixed)

×Form2.ZassekiEventイベントのソースがForm2のインスタンスじゃない
  → ソースはそのイベントを定義している型かその派生にする

×Form2でZassekiEventがnullのときにNullReferenceException
  → nullチェックを入れるかnullにならないようにする

△ZassekiEventHandlerのシグネチャがEventHandlerと同じ
  → 単に無駄というだけでなく、EventHandlerには「イベントデータが無い」という意味がある

△Form1.Sekigaeメソッド内のWhere(...).Single()は無駄
  → Single、Firstなどには条件を指定できるオーバーロードがある
963デフォルトの名無しさん:2009/10/16(金) 01:05:54
ウザ
964デフォルトの名無しさん:2009/10/16(金) 01:29:35
次スレの予感・・・
965デフォルトの名無しさん:2009/10/16(金) 02:05:32
>>924
おれはプログラミングはじめて1ヶ月でAPIを駆使して
winnyのリストボックスの内容を取得して
ハッシュを収集したり無視したり自動でキャッシュ削除するソフトを作ったよ

向いている向いてないがあるんだろうな
966965:2009/10/16(金) 02:11:57
プロパティ、フィールド、クラス、値型とか意味知ってるか?
おれはまず文法を一通り読んだ
それでわからなかったら、初心者サイトで調べ、それでもわからなければ
別の初心者サイトを見る。
わからないことをわからないままで横着して進めようと焦る気持ちはわかるが
他と違って、プログラミングはコツコツ覚えていくしかない

体で覚えていこうなんてするなよ
967デフォルトの名無しさん:2009/10/16(金) 03:02:00
>>965
みんなお前みたいに暇じゃないんだよw
一ヶ月根詰めればそれぐらい出来るわ
968965:2009/10/16(金) 03:16:12
おっさんのおまえらには無理だろうなww
969デフォルトの名無しさん:2009/10/16(金) 07:09:02
細かく調べる前に勘で書いて体で覚えたけど
最初に作りたい物が決まってるならこの方が早い
そのあと詰まった所で随時調べる
970デフォルトの名無しさん:2009/10/16(金) 07:35:24
>>962
指摘thx

>>→ ソースはそのイベントを定義している型かその派生にする
プロパティでget/setできればOK?

>>→ nullチェックを入れるかnullにならないようにする
このケースでnullになるかな?けれどもnullチェックはしたほうがいいね。

>>単に無駄というだけでなく、EventHandlerには「イベントデータが無い」という意味がある
よくわからん。

>> Single、Firstなどには条件を指定できるオーバーロードがある
Whereいらなかったね。ひとつ賢くなった。
971デフォルトの名無しさん:2009/10/16(金) 08:39:02
また夜中なのに異常に伸びたなと思ったら予想通り
972デフォルトの名無しさん:2009/10/16(金) 10:28:50
ポインタを使ったアルゴリズム、チェインとか木とかあるけど
同じような動作をするものでunsafeしないでC#で行うことはできますか?

厳密なメモリアドレスへの操作というわけじゃなくて
あるカプセルの参照と値を持つカプセルを関連付けていければいいだけなんだけど
973デフォルトの名無しさん:2009/10/16(金) 10:35:20
何言ってるかわかんね
LinkedListでも何でも好きなの使えよ
974デフォルトの名無しさん:2009/10/16(金) 10:36:27
>あるカプセルの参照と値を持つカプセルを関連付け

Dictionary<TKey,TValue>で両方に参照同じ渡せば。
975デフォルトの名無しさん:2009/10/16(金) 10:42:57
フォルダを作ってそこにクラスファイルを入れると
そのクラスを利用する場合

フォルダ名.クラス名

としなければなりませんよね?
でも、パっと見でフォルダ名なのかクラス名なのかがわかりにくいと思いませんか?
わざわざフォルダ名を書かなければいけないのっておかしい気がするのですが
976デフォルトの名無しさん:2009/10/16(金) 10:44:19
namespace変更すればいいだろ…
VSに文句言う前に言語仕様から理解しような
977デフォルトの名無しさん:2009/10/16(金) 10:47:07
MyClass.System.TxtReader

があり、TxtReaderをSystemフォルダにいれた場合

System.TxtReader

と書くと、Systemはフォルダ名なのかクラス名なのかわかりにくくないですか?
978デフォルトの名無しさん:2009/10/16(金) 10:48:21
>>976
じゃあ、フォルダの数だけnamespaceを作れと?
namespaceを大量生産するってそれこそありえないと思うんだけど
979デフォルトの名無しさん:2009/10/16(金) 10:48:32
名前空間でググレカス
980デフォルトの名無しさん:2009/10/16(金) 10:49:57
TxtReader.csのnamespaceをMyClassにすりゃいいでしょう。
馬鹿としか言えない。
981デフォルトの名無しさん:2009/10/16(金) 10:50:23
>>978
誰もユニークにしろとは言ってないぞw
982デフォルトの名無しさん:2009/10/16(金) 10:51:30
ググレといのはこのスレの本分ではないと思うのですが?
983デフォルトの名無しさん:2009/10/16(金) 10:52:48
new System.IO.DirectoryInfo(@"c:\");

これの"IO"はフォルダ名なのかクラス名なのか分かりにくいだろうか。
984デフォルトの名無しさん:2009/10/16(金) 10:55:03
フォルダ名と呼ぶのをやめて欲しい
そんな用語はない
VSがフォルダと同じ名前の名前空間を自動生成しているだけ
985デフォルトの名無しさん:2009/10/16(金) 10:55:15
>>978
お前が何を悩んでいてどうしたいのかさっぱり分からない。
C#はjavaと違って好きに名前空間を指定出来るぞ。
俺はフォルダ名と一緒が一番いいと思うが。
986デフォルトの名無しさん:2009/10/16(金) 10:56:10
次ぎたててくる
987デフォルトの名無しさん:2009/10/16(金) 10:57:08
>>984
そういうことかわかった^^
988デフォルトの名無しさん:2009/10/16(金) 10:59:02
989デフォルトの名無しさん:2009/10/16(金) 11:13:07
>>975
そんな規則はない。
コーディング規約的にnamespaceとディレクトリ配置が一致していることが望ましいだけ。
間違った思い込みをする前に、MSDNで一次情報に当たる習慣をつけよう。
990デフォルトの名無しさん:2009/10/16(金) 12:58:02
.NETの命名ガイドラインに従うと,確かにA.B.C.Dだけ見て
名前空間とクラスとプロパティを見分けることはできないんだけど
実際それで困ることある? だいたい分かるじゃん
java.lang.System.outとかキモい
991デフォルトの名無しさん:2009/10/16(金) 15:07:04
おそらく、開発環境ソフトが見分けをサポートすべきという思想なんだろうな
カーソルでポイントすればヒントが表示されるみたいな
992デフォルトの名無しさん:2009/10/16(金) 15:11:42
つーか、大文字小文字を打ち間違えたときも、
大文字と小文字を入れ替えたら名前が見つかってエラーがでなくときは、自動で修正してほしいもんだ
993デフォルトの名無しさん:2009/10/16(金) 15:39:45
俺も昔、スペルチェック機能みたいなのが欲しいと思ってた。MS-Wordでできるんだから
Visual Studioでもできるだろう、と。
でも今はインテリセンスあるからいらない。みんな最初から候補に出てくる。
994デフォルトの名無しさん:2009/10/16(金) 15:44:02
>>992
VBは実際にそれやってくれる
C#は大文字と小文字を区別するのでわざとその機能は付けてないんだと思う
仮に現在大文字と小文字だけが違う複数の名前が無かったとしても,
そういう機能があるとつい無頓着になってミスが発生しやすいからね
995デフォルトの名無しさん:2009/10/16(金) 16:03:59
大文字小文字が違うだけの変数名を作ることはまずなのにに
なぜ区別するようにしたんだろうな
publicの場合は先頭だけ大文字、privateは小文字って決め付ければいいのに
996デフォルトの名無しさん:2009/10/16(金) 16:05:58
メインターゲットがC++やJavaからの移行者だから当たり前
それとVBとの差別化
997デフォルトの名無しさん:2009/10/16(金) 16:39:12
List<>の勉強中です。
List<string> photolists = new List<string>();
string[] photofiles = Directory.GetFiles(@"c:\data", "*.jpg", SearchOption.AllDirectories);
foreach(string photofile in photofiles) {
if (photofile.Contains("good")){
photolists.Add(photofile);
}
}
すこし書いてみました。動作のテストもしました。
List<>とstring[]とふたつ使っているところが、まだいまいちな気がします。
もっとスマートになりますよね?
foreachを使わず直接配列を追加することは可能ですか?
998デフォルトの名無しさん:2009/10/16(金) 16:50:35
フィルタリングが入る時点で「直接配列を追加」は不可能だろ
次のステップはContains("good")をメソッドに取り出した上でArray.FindAll、辺りかな
この場合はList<T>の出番が無くなるけど
999デフォルトの名無しさん:2009/10/16(金) 16:52:02
LINQを使うしかない
var goodphotos = photofiles.Select(photofile => photofile.Contains("good"));
photolists.AddRange(goodphotos);
1000999:2009/10/16(金) 16:52:43
ごめんSelectじゃなくてWhereだった
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。