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

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

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

前スレ

ふらっとC#,C♯,C#(初心者用) Part26
http://pc11.2ch.net/test/read.cgi/tech/1206238049/
2デフォルトの名無しさん:2008/04/15(火) 17:41:44
C#, C♯, C#相談室 Part45
http://pc11.2ch.net/test/read.cgi/tech/1200911737/

C♯, C#相談室 Part34
http://pc11.2ch.net/test/read.cgi/tech/1162467959/

【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】
http://pc11.2ch.net/test/read.cgi/tech/1162950198/

Windows Live プログラミング
http://pc11.2ch.net/test/read.cgi/tech/1188112572/

初心者のためのプログラミング言語ガイド Part8
http://pc11.2ch.net/test/read.cgi/tech/1208186034/
3デフォルトの名無しさん:2008/04/15(火) 17:42:05
4デフォルトの名無しさん:2008/04/15(火) 17:44:23
>>1

次スレは>>950
5デフォルトの名無しさん:2008/04/15(火) 23:22:01
このスレの住人なら知っていますね、あの糞開発ツールのことを

・自分のプログラムのバグなのかコンパイラのバグなのかわからない
・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している
・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている
・糞開発ツールを批判すると「性格が悪いから糞ツールを批判するんだ」と言われる

糞だけど、政治的な理由で無理やり使わされているんですよね。
もう、あんな厨の作った糞ツールを我慢して使うのはやめましょう。

・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。
 上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。
・糞開発ツールを使わせる上司の下では働けません、と上司の上司に直訴しましょう。
・あの糞開発ツール提供会社には「おたくの糞開発ツールは話にならない」と突き放しましょう。
 バグレポートなどしてはいけません。改善要求などもってのほかです。
 あの会社はあなたたちのことをテスター/モルモットとしか思っていません。
・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」
 なんて話が出たら力強く机を叩き、会議室を出ましょう。
 あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。

糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。
6デフォルトの名無しさん:2008/04/15(火) 23:28:11
コピペ君って馬鹿だな、まで読んだ。
7デフォルトの名無しさん:2008/04/18(金) 14:15:47
>>前スレ994
Microsoft Math Add-inってどこにあるん?
8デフォルトの名無しさん:2008/04/18(金) 14:19:27
>>7
http://www.microsoft.com/downloads/details.aspx?FamilyID=030fae9c-704f-48ca-971d-56241aefc764&displaylang=en

日本語はなかったりする。
英語でぐぐったらすぐ出てくる。
9デフォルトの名無しさん:2008/04/18(金) 17:32:06
>>8
Word 2007 Add-in: Microsoft Mathって書いてあるけど
Excelはないの?
10デフォルトの名無しさん:2008/04/18(金) 23:41:58
>>9
あー、Word 限定なんだなぁ・・・
なんと中途半端な。
Word で書いた数式、クリップボード経由でエクセルに張り付けると、
単なるビットマップになる・・・
11デフォルトの名無しさん:2008/04/19(土) 03:05:44
なぜかInvailid Product keyってなって落とせん・・・
だれかうpしてクレー
12デフォルトの名無しさん:2008/04/19(土) 04:17:39
割れ厨氏ね
13デフォルトの名無しさん:2008/04/19(土) 20:33:24
割れじゃないのにDLできん
14デフォルトの名無しさん:2008/04/19(土) 22:33:33
週明けにでもMSに電話しろよ
15デフォルトの名無しさん:2008/04/19(土) 23:17:06
コントロールにTagプロパティってあるじゃん。
デザイナ上で 3.14 とか書いてもstring型になっちゃうんだが
double型を設定したい場合はプログラム上で書くしかないん?
VC#2008 Express
16デフォルトの名無しさん:2008/04/19(土) 23:45:26
>>15
Designer.csを開いてダブルクォーテーション消せばいいんでないの?
プロパティウインドウから触ったらstringに戻るから、
他の人もさわるならやめたほうがいいと思うけど。
1715:2008/04/20(日) 00:03:54
デザイナ上で全ての設定済ましたかったけど、できないんならしょうがないか。
thx
18デフォルトの名無しさん:2008/04/20(日) 14:09:57
質問ですが C#でランダムな数字を作るにはどうすればよいですか?
教えてください
19デフォルトの名無しさん:2008/04/20(日) 14:14:00
そのまんまRandomクラス
20デフォルトの名無しさん:2008/04/20(日) 14:23:18
ありです。 C# randomでぐぐったら例文のってました。
21デフォルトの名無しさん:2008/04/20(日) 15:26:04
過去ログがもう流れてるし・・・
無駄なスレ多すぎなのか開発環境がそんだけ多いのか・・・
22デフォルトの名無しさん:2008/04/20(日) 17:35:31
●買えよ
23デフォルトの名無しさん:2008/04/20(日) 17:41:39
24デフォルトの名無しさん:2008/04/20(日) 19:32:09
>>23
ari
25デフォルトの名無しさん:2008/04/21(月) 04:56:26
Randomの精度ってどうなの?
MTとかなの?
CのRandは使い物にならなかったけど。

あと高精度のタイマーって何?
マルチメディアやゲームにも使えるタイマーありますか?
26デフォルトの名無しさん:2008/04/21(月) 05:04:09
こういうのが作られてるから MT じゃないんだろう。多分。
ttp://takel.jp/mt/
27デフォルトの名無しさん:2008/04/21(月) 09:14:55
グラフィックスを描画するとき、半透明とかグラデーションとかいろいろ機能がありますが、
ピクセル毎に描画する色を最終決定しているのはどこなのでしょうか?
CPUがいちいち計算して出しているのか、それともGPUに任せているのか
どちらなのでしょうか?
28デフォルトの名無しさん:2008/04/21(月) 10:55:23
【レビュー】GeForce FX 5950 Ultra/5700 Ultraを速攻レビュー (5) ベンチマーク -1- | パソコン | マイコミジャーナル
ttp://journal.mycom.co.jp/articles/2003/10/25/28/bench/004.html

ここの文章でグラボでGDI+の描画性能が決まることがはっきりわかりました。
GPUに任せているということですね。
29デフォルトの名無しさん:2008/04/21(月) 11:18:13
そうなんか!
30デフォルトの名無しさん:2008/04/21(月) 11:31:10
>>28
グラボ(笑)
31デフォルトの名無しさん:2008/04/21(月) 11:35:13
というか両方使われるのでもっと詳しく聞いてくれんと微妙にしか
答えられんがアルファはGDIとGDI+ならCPUが頑張ってることが多い。
32デフォルトの名無しさん:2008/04/21(月) 11:48:01
フレームを利用したWEBページのhtmlソースを取得しようとして
sw = new StreamWriter(filename, false, Encoding.GetEncoding("EUC-JP"));
int len = (int)webBrowser1.DocumentStream.Length;
byte[] doc = new byte[len];
webBrowser1.DocumentStream.Read(doc, 0, len);
Encoding enc = Encoding.GetEncoding(webBrowser1.Document.Encoding);
sw.Write(enc.GetString(doc));
sw.Close();
とDocumentCompletedイベントに記述したのですが、webbrowserでは表示できているにも拘わらず、
ファイル側にはフレームに未対応のブラウザは〜としか書き込まれません。
何が問題なのでしょうか?
33デフォルトの名無しさん:2008/04/21(月) 12:49:29
何が問題かと問われても、何も問題ない(そういうもの)としか答えようがない
強いて挙げるなら、>>32のHTMLに対する理解が不足してることくらい

フレームの中に表示されているhtmlも保存されるようにしたい、ということなら
自分で保存する処理を書けばいい
34デフォルトの名無しさん:2008/04/21(月) 14:13:41
レイヤ付きペイントツールを作ろうと思ってます
とりあえずはペイントの部分の、ユーザが自由にラインを引ける部分あたりを作りたいのですが、何からはじめていいのやら

参考になるモノ、サイトなどありませんか?
35デフォルトの名無しさん:2008/04/21(月) 14:17:29
Paint.NETのソース
36デフォルトの名無しさん:2008/04/21(月) 16:31:43
>>33
確かに問題ないようですね。
foreach (HtmlWindow hw in webBrowser1.Document.Window.Frames)
{
HtmlDocument hd = hw.Document;
text_memo.Text = hd.GetElementsByTagName("html")[0].OuterHtml;
}
とすると取得できましたが、どこかのインターフェースを介しているためオリジナルのソースと違った物が得られます。
これはどうやって回避すればいいのでしょうか?
37デフォルトの名無しさん:2008/04/21(月) 19:31:47
>>34

そんなことココで聞いている時点で止めといた方が良いと思うが、あえて
やるなら35の言うとおり、Paint.Netのソースを追ってみるのがいいんじゃないか?
ラインだけ引けたってレイヤ付きペイントツールの道はまだまだだからな。
38デフォルトの名無しさん:2008/04/21(月) 21:11:51
>>25
時間測るだけならStopwatch
39デフォルトの名無しさん:2008/04/21(月) 23:58:44
TubeCastっていうSourceforgeにあるソフトのことで相談です。
これYoutubeに複数のファイルをバッチアップロードするソフトなんだけど
アップロード後のpublic/pravate(公開/非公開)が設定できないのです(設定項目が無い)。

これ同種のソフトが色々ある中ではかなり使いやすくて、
唯一こいつは日本語のファイルパスが通るので、もし上記の設定が出来たら
自分も含めてかなり需要あると思うです。

誰か直してくれませんか? ソース見たけどC#全然分からないッス。
http://sourceforge.net/project/showfiles.php?group_id=189431&package_id=221912
40デフォルトの名無しさん:2008/04/22(火) 00:24:20
C#, C♯, C#相談室 Part45が、そろそろ限界なんだが規制で新スレが立てられない。
誰かお願いします
41デフォルトの名無しさん:2008/04/22(火) 00:31:16
スレチガイです
42デフォルトの名無しさん:2008/04/22(火) 00:32:20
43デフォルトの名無しさん:2008/04/22(火) 00:38:25
>>42
乙です、ところでテンプレは?
一緒になって書いてぐちゃぐちゃになったら困るので、もし書かないなら返答お願いします。
44デフォルトの名無しさん:2008/04/22(火) 00:44:01
いなくなった?
無責任だな、とりあえずテンプレ自分書きます、他の人書かないでください。
45デフォルトの名無しさん:2008/04/22(火) 00:46:55
スレ立ててもらったんだから、
テンプレぐらい自分ではれよw
46デフォルトの名無しさん:2008/04/22(火) 00:47:34
>>39
youtubeにファイルをアップする際のバッファのどの部分にどのように記述すれば
public/privateの設定ができるのかを教えてくれたら考えてもいい。
47デフォルトの名無しさん:2008/04/22(火) 00:49:04
>>45
立てて放置はねぇーだろ
48デフォルトの名無しさん:2008/04/22(火) 00:52:38
あるよ
49デフォルトの名無しさん:2008/04/22(火) 00:57:00
全然あるな
50デフォルトの名無しさん:2008/04/22(火) 01:05:31
>>46
お世話になります
これから調べてくるッス
日付が変わるまでにはなんとか
51デフォルトの名無しさん:2008/04/22(火) 03:28:01
dllの中身が
void hoge(char *str){
  printf("%s",str);
}
のとき

[DllImport("hoge.dll")]
static extern void hoge(string str);
とすると
hoge("hoge");
で呼び出せて

[DllImport("hoge.dll")]
static extern void hoge(char[] str);
とすると
hoge("hoge".ToCharArray());
で呼び出せるみたいなんだけど、これってコンパイラがstringをchar[]に勝手に変えてくれてるの?
仕組みとか注意点とかあれば教えていただきたい。
52デフォルトの名無しさん:2008/04/22(火) 06:33:59
>>51
StringがChar[]に変換されるのではなく、StringもChar[]もchar*に変換されてDLLに渡される。
.NETの型ごとに、プラットフォーム呼び出しの時、どんな型に変換されるか決まっている。くわしくは「規定のマーシャリング」でググれ。
53デフォルトの名無しさん:2008/04/22(火) 07:13:09
>>46
おそらくここだけだと思う。宜しくご検討お願いします。

<form method="post" enctype="multipart/form-data" action="http://lax-v133.lax.youtube.com/my_videos_post" name="theForm" id="theForm" onSubmit="return formValidator();">

// private(非公開)
<input type="hidden" id="field_privacy" name="field_privacy" value="private">
// public(公開)
<input type="hidden" id="field_privacy" name="field_privacy" value="public">

</form>
54デフォルトの名無しさん:2008/04/22(火) 08:36:00
>>52サンクス
55デフォルトの名無しさん:2008/04/22(火) 08:48:28
ヘジは人をラムダに導くためにイベント、匿名メソッド、ラムダと段階を踏んできたんだな
56デフォルトの名無しさん:2008/04/22(火) 09:43:32
前スレで質問をしたのですが、回答を見る前にdat落ちしてしまいました。
どなたかdatファイルをいただけないでしょうか。
57デフォルトの名無しさん:2008/04/22(火) 10:20:32
vs2005のtabcontrolなんですが、タブ6つを
| 5 | 6 |
| 3 | 4 |
| 1 | 2 |
って風に3段に並べたいだけなんだけど、ビルドすると勝手に
| 3 | 4 |
| 5 | 6 |
| 1 | 2 |
のように並べ変えられる。これって自分だけ?
何か対処法を知ってたら教えてください。
58デフォルトの名無しさん:2008/04/22(火) 11:19:32
C#ではUInt型は扱えないのでしょうか?
DBにInt型で保存されてる値を取り出す時にUInt型として扱いたいのですが
59デフォルトの名無しさん:2008/04/22(火) 11:41:39
>>58
uintやUInt32はあるけど?
60デフォルトの名無しさん:2008/04/22(火) 13:27:34
61デフォルトの名無しさん:2008/04/22(火) 13:38:06
初期値やデザイナへの表示の有無を変えたい=属性を変える必要がある
と思って下のようにコードを書いたのですが、
もっと簡単に属性を変える方法はありますか?

public class MyListView : ListView
{
public MyListView() {
View = View.Details;
}
//[Browsable(false)]
[DefaultValue(View.Details)]
public new View View { get { return base.View; } set { base.View = value; } }
}
62デフォルトの名無しさん:2008/04/22(火) 18:54:11
if文から強制的に抜けるにはgoto文以外でだったらどうすればよいですか?
breakを使うとwhile文の中のif文では、while文を抜けてしまいます。
どうすればいいかおしえてください。
63デフォルトの名無しさん:2008/04/22(火) 18:55:03
>>60
ありがとうございます。助かりました。
回答をくださった方もありがとう。
64デフォルトの名無しさん:2008/04/22(火) 18:55:57
>>62
強制的に抜けなくてもいいよう、もう一段ifをネストする
6546:2008/04/22(火) 20:55:06
>>53
手が空いてるときにやるから気長に待ってておくんなさい。
66デフォルトの名無しさん:2008/04/22(火) 21:56:50
小学生のトキ、夏休みの宿題に昆虫採取をするコトにしました。
まぁ、毎日アミ持って野山を駆け回って遊んでただけなんだけど、ある日すごいのを捕まえました。

体長13.5cmのトノサマバッタ(足含まず)

まぁ、もちろん標本にして学校に提出したんだけど、次の日には学校中の噂が広がって展示場の理科室は昼休みなんかメチャ混みになっちゃったんだよね。
でも、2日ほどで撤去されちゃった上、学校が全校生徒にこんな内容のプリントを配った。

理科室にあった標本のバッタは、トノサマバッタではなく、外国のバッタである事がわかりました。
日本の生物では無いので、気にしないように。

その後、両親と共に校長室に呼ばれ、先生ではない数人の大人と話をし、両親はハンコを押したり、生活指導方針がどーとか難しいコトを言われてました。
子供心に「怒られてるんだ」ってのはわかりました。

それから十数年が経ち、なにげなく当時の事を思い出して両親に尋ねると・・・

  名前     大きさ     つかまえた場所
トノサマバッタ  13.5cm  浜○原子力発電所緑地公園
                  ↑
                コレが、まずかったらしい。
67デフォルトの名無しさん:2008/04/22(火) 21:58:10
コピペ君って馬鹿だな、まで読んだ。
68デフォルトの名無しさん:2008/04/22(火) 22:14:15
C#暦2週間ほどなのですが、ちょっと教えてください。

public class hoge{
・・・
}
と定義してあって、
hoge Vhoge = new hoge();
でインスタンスを生成し、Vhogeにはバイナリのデータが入ってるとします。
System.Io.File.WriteAllBytes を使ってバイナリを出力したいのですが、
そのような場合、第二引数としては、何を渡したらよいのでしょうか?
69デフォルトの名無しさん:2008/04/22(火) 22:23:34
出力したいバイナリを、byteの配列で渡す
70デフォルトの名無しさん:2008/04/22(火) 22:36:21
もっと真摯に回答しろよ。
71デフォルトの名無しさん:2008/04/22(火) 22:38:59
分からないなら答えないでください><
72デフォルトの名無しさん:2008/04/22(火) 22:39:48
ローカルルール
一、UCがセゾン傘下である事実を受け入れること
一、UCは流通系となった事実を受け入れること
一、クレディセゾンを誹謗中傷しないこと
一、セゾンUCを大切にすること
7368:2008/04/22(火) 23:17:32
>>69
やっぱり、Vhogeをbyte[]に変換しないとダメですか・・・。
変換する方向で考えてみます。
74デフォルトの名無しさん:2008/04/22(火) 23:20:14
>Vhogeにはバイナリのデータが入ってる
からbyte[]のメンバを持ってるんじゃないの?
何か別のかたちで持ってる?
75デフォルトの名無しさん:2008/04/22(火) 23:21:23
>>68
bytes
型 : System.Byte[]

ファイルに書き込むバイト。
7668:2008/04/22(火) 23:43:11
>>74
実際には、こんな定義になってます。
(とあるサンプルなので、中身は置いておいてもいいとは思いますが)
[StructLayout(LayoutKind.Explicit)]
public class hoge
{
[FieldOffset(0)]
public short type_a;
[FieldOffset(2)]
public short type_d;
[FieldOffset(4)]
public short datano_s;
[FieldOffset(6)]
public short datano_e;
[FieldOffset(8),
MarshalAs(UnmanagedType.ByValArray, SizeConst = 10000)]
public byte[] cdata;
}
これを、そのままのイメージでバイナリ出力したかったのですが・・・。
で、Vhogeのアドレスを渡したら、出力できるかと思ったのですが、
型の変換ができなかったので、いい方法はないかと思案中です。
77デフォルトの名無しさん:2008/04/23(水) 00:32:19
Marshal
78デフォルトの名無しさん:2008/04/23(水) 06:47:30
>>76
なんでそこまできっちり定義してるのに、>>68に略したのかわからん。
68の書き方じゃ求めていた答えが返ってくるわけがない。
P/Invokeで出来るんだから、何か方法があると思うのが普通。
初めて調べたけど正解は、Marshal.StructureToPtrかな?
79デフォルトの名無しさん:2008/04/23(水) 07:13:49
ってbyte[]にする必要があるんだった。コンパイルもしてないけど、こんな感じ?
2回コピーするのが気に入らん。

int size = Marshal.SizeOf(Vhoge);
byte[] data = new byte[size];
IntPtr pnt = Marshal.AllocHGlobal(size);
try{
Marshal.StructureToPtr(Vhoge, pnt, false);
Marshal.Copy(pnt, data, 0, size);
} finally {
Marshal.FreeHGlobal(pnt);
}
80デフォルトの名無しさん:2008/04/23(水) 07:19:26
AllocHGlobalなんて怖いことしなくてもfixedやGCHandle.Allocで十分ですよ
81デフォルトの名無しさん:2008/04/23(水) 08:53:15
マネージメモリに unsafe でアクセス != marshal レイアウト
82デフォルトの名無しさん:2008/04/23(水) 09:17:47
>>81
お前は何を言っているな
83デフォルトの名無しさん:2008/04/23(水) 09:55:01
あ一回はコピー生成してるのかごめん
84デフォルトの名無しさん:2008/04/23(水) 14:01:28
コンテキストメニューの項目数を設定で自由に変更できるプログラムを作成したいです。

とりあえず下記の様に通常コードを作成しましたが
headlineの項目をこの様に決め打ちするのでなくforループなどで動的に追加したいと思っています
どのようなに書けばいいでしょうか。ご助言願いたいです。

// コンテキストメニューの動的作成
public void ContextMenuCreate(int number)
{
// イベントハンドルを宣言
EventHandler eh = new EventHandler(MenuFactorOnClick);

MenuItem[] ItemMenu = {
new MenuItem("headline_" + 1, eh),
new MenuItem("headline_" + 2, eh),
new MenuItem("headline_" + 3, eh),
};

ContextMenu = new ContextMenu(ami);
}
85デフォルトの名無しさん:2008/04/23(水) 14:04:08
二つほど記述ミスがありました、申し訳ありません。

引数のintはforループに用いようと思っていたのを消し忘れました。

ContextMenuの宣言で[ami]となっていますが[ItemMenu]の間違いです。
86デフォルトの名無しさん:2008/04/23(水) 14:19:44
ContextMenu.MenuItems.Add()又は
MenuItem.MenuItems.Add()
87デフォルトの名無しさん:2008/04/23(水) 15:09:37
迅速なお返事ありがとうございます。
下記の用に書くことで目的の動作を果たせました。


// コンテキストメニューの動的作成
public void ContextMenuCreate(int number)
{
// イベントハンドルを宣言
EventHandler eh = new EventHandler(MenuFactorOnClick);

// コンテキストメニューを作成
ContextMenu = new ContextMenu();

// メニュー数を設定
ItemMenu = new MenuItem[number];

// メニューの追加
for (int i = 0; i < number; i++)
{
ItemMenu[i] = new MenuItem("headline_" + i, eh);
ContextMenu.MenuItems.Add(ItemMenu[i]);
}
}
88デフォルトの名無しさん:2008/04/23(水) 15:15:33
サーバー側で接続待ちをしていない状態で、
クライアント側からTcpClient.Connect();で接続しようとすると
「接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。
または接続済みのホストが応答しなかったため、確立された接続は失敗しました。」
ってエラーが発生します。
エラーになるまで20秒くらいかかってしまうのですが、
もっと早く接続できないと判断することはできないのでしょうか?
8962:2008/04/23(水) 16:22:39
ifを入れ子してやってみたのですが、できません。
どうすればいいですか?
90デフォルトの名無しさん:2008/04/23(水) 16:25:03
コードも出さずにどうすべきか聞くとはどういう事だ?
何故それで駄目かくらい書け。
91デフォルトの名無しさん:2008/04/23(水) 16:32:33
>>88
とりあえずMSDNみてみ
92デフォルトの名無しさん:2008/04/23(水) 16:37:41
>>90
いや、62はコード出す・出さない以前の問題じゃね?
if 文を break で抜けれるとか思ってる時点で何かおかしい。
93デフォルトの名無しさん:2008/04/23(水) 16:55:00
>>91
レスありがとう。
だがMSDNのどこを調べればいいのかわからない。
できたら場所を、教えてください。
94デフォルトの名無しさん:2008/04/23(水) 16:56:16
breakは括弧閉じまでジャンプするもんだと誤解してるのかも
95デフォルトの名無しさん:2008/04/23(水) 16:57:46
そこで括弧閉じればいいのにね
96デフォルトの名無しさん:2008/04/23(水) 17:01:31
目的:
Control.ModifierKeysを使ってモディファイアキーを判定したい。
詰まっている箇所:
複数のモディファイアを判定する方法がわからない(Shift + Alt + Vなど)

どなたかアドバイスいただけないでしょうか
97デフォルトの名無しさん:2008/04/23(水) 17:06:01
>>96
Keys構造体はただのビット値。

(Control.ModifierKeys & Keys.Shift) != Keys.None) & ((Control.ModifierKeys & Keys.Control) != Keys.None)
こんな感じでいけるはず
98デフォルトの名無しさん:2008/04/23(水) 17:11:12
(Control.ModifierKeys & (Keys.Shift | Keys.Control) != 0)
99デフォルトの名無しさん:2008/04/23(水) 17:13:16
Delphiの列挙値は比較が楽だったんだけどなあ。
なんでC#は似たような比較方式を採用しなかったんだろう
100デフォルトの名無しさん:2008/04/23(水) 21:10:06
ヘジたん的になにか気に入らないところがあったのでは
101デフォルトの名無しさん:2008/04/23(水) 21:10:31
TcpListener で質問なんですが
0.0.0.0 とやれば全指定なんですが

範囲指定したい場合、例えば
192.168.1.0とかやると
192.168.1.0〜192.168.1.255
とかできるんでしょうか?
102デフォルトの名無しさん:2008/04/23(水) 21:24:02
>>97
>>98
ありがとうございました。
うまく動作させることができました
103デフォルトの名無しさん:2008/04/23(水) 21:25:10
>>101
192.168.1.0であれば192.168.1.0のみになる。
0.0.0.0は特例でそういう使い方は普通ワイルドカードを利用する。
104デフォルトの名無しさん:2008/04/23(水) 21:51:06
>>103
ありがとうございました。
105デフォルトの名無しさん:2008/04/23(水) 22:15:26
>>95
do { } while(false)
とか?

>>99
((enumValue & flag) == flag)
を返す演算子があってもよさそうだよな
10668:2008/04/23(水) 22:17:31
いろいろヒントありがとうございました。C# Marshalでぐぐって、

MyStruct o = new MyStruct();
...
IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(o));
try {
Marshal.StructureToPtr(o, ptr, false);
byte[] bytes = new byte[Marshal.SizeOf(o)];
Marshal.Copy(ptr, bytes, 0, Marshal.SizeOf(o));
...
} finally {
Marshal.FreeHGlobal(ptr);
}

に当たったので、>>79 さんのサンプルでいいみたいです。
助かりました。
107デフォルトの名無しさん:2008/04/23(水) 22:38:29
>>105
フラグはわざと便利にしてない感じがするなあ
分からないなら使わなくていい,使うにしても控えめに,っていうような意図を感じる
108デフォルトの名無しさん:2008/04/24(木) 00:51:00
>>107
間違いなくその通りだろうな、Win32APIのラッパーが避けられない以上、やむなく残した
としか思えないところがあるな。
109デフォルトの名無しさん:2008/04/24(木) 00:53:43
javaからc#に転向することになって本読んでます。
パッと見javaと似てるけど、なんじゃこれは?
というのもあります。

public xclass() : base(xclass.MethodA()) {
Console.WriterLine("XClass constructor");
}

xclass()メソッドの後ろにある、コロンとメソッド、
これは一体なんですか。
メソッドの直後にメソッドて・・・・??。

想像もつかんです。
しかもこの本には意味が書いてない。。

どういう動作になるんでしょう?
110デフォルトの名無しさん:2008/04/24(木) 00:55:42
なんとなく理由が分かった、ビットフィードが無くなったのもこれが理由だな
マルチスレッドだね、使用しないビットに対してもリードもライトもロックが必要になるが、どこまでロックが必要か訳わからんようになる。
111デフォルトの名無しさん:2008/04/24(木) 00:56:14
基底クラスのコンストラクタに引数を与える構文。
112デフォルトの名無しさん:2008/04/24(木) 01:02:39
>111
ありがとうございます。
他の本で読んだ記憶がうっすらよみがえってきました。。
113デフォルトの名無しさん:2008/04/24(木) 01:06:04
少し不思議なことがあるのですが・・・xclass.MethodA()
って何、コンパイルできないような気がしたので、自分の知識が不足しているのか、間違っているのか気になる。
114デフォルトの名無しさん:2008/04/24(木) 01:12:42
>>113
デリゲートが引数になっているメソッドには、そのデリゲートに合うメソッドを引数として渡せる。
実際には、デリゲートのインスタンスが生成されているんだけど。
115デフォルトの名無しさん:2008/04/24(木) 01:18:03
MethodA の後ろの () が、タイプミス?
MethodA の正体は static 関数?
ちょっと原文みてみたいですね、'WriterLine' だしw
116デフォルトの名無しさん:2008/04/24(木) 07:02:10
kakenai
117デフォルトの名無しさん:2008/04/24(木) 07:05:22
C#で
http://sakuratan.ddo.jp/uploader/source/date79504.png
上の画像のようなGUIを扱いたいのですがどうすればよいのでしょうか?
118デフォルトの名無しさん:2008/04/24(木) 07:50:04
そのPNG画像を読み込んで貼り付ければいんじゃね?
119デフォルトの名無しさん:2008/04/24(木) 08:22:53
>>117
ユーザコントロールを作る
OnPaintBackgroundをオーバーライドして背景を描画しないようにする
OnPaintをオーバーライドして各頂点およびエッジを描画する

その他にも細々と設定しないといけないプロパティとかあるかも。
パフォーマンス?さぁ…
120デフォルトの名無しさん:2008/04/24(木) 09:03:00
enum.first.tostring()で"first"は得られるのですが
enumに同期させてenum.firstならば"最初"
enum.secondならば"二回目"とか任意の文字列を得るのに
スマートな実装方法を教えて下さい
121デフォルトの名無しさん:2008/04/24(木) 09:09:42
enum使わないでstructにする
122デフォルトの名無しさん:2008/04/24(木) 09:16:13
TypeConverter 実装するとか
123デフォルトの名無しさん:2008/04/24(木) 09:32:34
(int)enum.first
明示的にバラバラしてるんならできないけど
124デフォルトの名無しさん:2008/04/24(木) 10:00:02
>>120
Dictionaryじゃダメな理由を聞こうか
125デフォルトの名無しさん:2008/04/24(木) 10:27:06
>>88だけど

どなたか知ってたらヒントください。
126デフォルトの名無しさん:2008/04/24(木) 12:57:38
127デフォルトの名無しさん:2008/04/24(木) 12:57:58
>>125
Recieveにはタイムアウト設定できたと思うが、Connectには無理だったと思う
128デフォルトの名無しさん:2008/04/24(木) 13:46:50
>>127
はい、できません。
最近のWindowsなら、レジストリいじればシステムグローバルな
値は変更できると思うけど。
TCP周りのいろんな設定値はユーザーランドではいじれない実装の
OSがほとんどです。
12988:2008/04/24(木) 18:30:05
>>126-128
ありがとうございます。
130デフォルトの名無しさん:2008/04/24(木) 19:58:22
Equalsって何と発音するのでしょうか・・?
131デフォルトの名無しさん:2008/04/24(木) 20:01:02
辞書引けよ
132デフォルトの名無しさん:2008/04/24(木) 20:16:01
コンテキストメニューにショートカットを設定したいです。

メニューの数が可変であるためにVSに頼らず動的に作成しているのですが
生成番号に対応したショートカットを動的に与えるにはどのようにすればいいでしょうか
下記の様なイメージです。

Item1(&Alt + 1)
Item2(&Alt + 2)
Item3(&Alt + 3)
133デフォルトの名無しさん:2008/04/24(木) 20:17:18
>>130
無理矢理日本語で言うなら「いーくぉーる」かな。
ちなみに日本語で言う「イコール」のことな
134デフォルトの名無しさん:2008/04/24(木) 20:42:20
C#でWindowsUI付きのFTPクライアントを作っているのですが、
UI(WinForm)をロックさせないためにBackgroundWorkerを使用しています。
BackgroundWorkerからはFTPコマンドを扱うクラス(FTPClass)のメソッド(UploadMethod)を呼び出しています。
この時、UploadMethodの進捗をUI(WinForm)に表示させたいのですが、
この場合UploadMethodの中でWinFormのコントロールを操作する処理をさせるしか
ないのでしょうか?
(実際にはWinFormはSTAなのでBackgroundWorkerのメソッドを介してUI変更を行います)

というのも、その場合UploadMethod内のUI変更の処理は上位クラス(WinForm)の
実装を意識しないといけなくなるわけで、クラス間の結合が密になってしまうのは
好ましくないかなと感じまして。
135デフォルトの名無しさん:2008/04/24(木) 20:43:02
>>130
いーくぁるず

>>132
ちょっと↑の方のレス見ろ
136デフォルトの名無しさん:2008/04/24(木) 20:48:12
>>132
ショートカットを設定することは出来るが、Altは使えないんじゃないかな。
Altを押した時点でコンテキストメニューは消えると思う。

ショートカットの設定は、ToolStripMenuItemなら
.ShortcutKeys = (Keys)(Keys.D0 + i);
でできる。
137デフォルトの名無しさん:2008/04/24(木) 20:49:45
>>135
レスありがとうございます。

>>84-87のところでしょうか?
私が行いたいのは(&Alt + 1)の数字の部分を要素にあわせてインクリメントする(イメージ)なので
コンテキストメニュー自体を動的生成している>>84-87とは問題が違ってしまいます。

説明不足申し訳ありません。
138デフォルトの名無しさん:2008/04/24(木) 20:50:39
>>134
UploadMethodが進捗を返すのなら(返すか知らんけど)BackgroundWorker内で
PeportProcessイベントを発生させればフォームに進捗を伝えられる
139デフォルトの名無しさん:2008/04/24(木) 20:55:59
>>132
なんか発想が変な気がするよw

別にコンテキストメニューである必要もないし、メニュの数を動的に変える
必要も必ずしもないんじゃないの?
ディセーブルにすれば十分に思うし、その方がユーザーにとっても明示的で
わかりやすいよ。

もしコンテキストメニュー「も」必要なら、ポップアップするタイミングで
メインメニューのメニューを丸ごと奪い取ればいいんだし。
140デフォルトの名無しさん:2008/04/24(木) 21:00:15
>>137
括弧でアンダーラインが入ってるパターンのなら
ToolStripMenuItem.Text = "背景色に設定(&1)";
みたいに前に&つけるだけだよ
141デフォルトの名無しさん:2008/04/24(木) 21:02:55
ショートカットキーのこと言ってるのかただのアクセレーターキーのこと言ってるのか
判然としないねw

いずれにせよちょっとピンボケした発想だと思う
142デフォルトの名無しさん:2008/04/24(木) 21:08:29
>>136
レスありがとうございます。
ToolStripMenuItemでなくMenuItemで行ったのですが
.ShortcutKeys = (Keys)(Keys.D0 + i);でキャストエラー

.ShortcutKeys = (Shortcut)(Keys.D0 + i);でコンパイルは通りますが
実行時に「引数値'value'(50)は列挙型'Shortcut'に大して無効です。」とエラーになります。

>>139
ホットキーでコンテキストメニューを呼び出し全ての操作をメニュー上で行うという
かなり変則的なプログラムを作っております。
通常の操作であればディセーブルで十分なのはご指摘の通りだと思います。
レスありがとうございます。

>>140
レスありがとうございます。
えと、それはItem1(1)の1の下にアンダーバーが表示されるだけで
それだけでショートカットとして認識される訳ではありませんよね?


>>141
申し訳ありません。
ショートカットキーとアクセレーターキーの違いを知りませんでした。
アクセレーターキーを実装したいと考えています。
143デフォルトの名無しさん:2008/04/24(木) 21:11:09
>>142
ねえ、だからそれメインメニューじゃいかんの?
なんでそんなウィンドウズの標準のお作法から外れたことをしたがるのか理解できんよ。
144デフォルトの名無しさん:2008/04/24(木) 21:31:03
>>138
UploadMethod内では
1.アップロードファイルの確認
2.アップロードコマンドの発行
3.アップロードコマンドの終了
と3つのプロセスに分かれているのですが、それぞれのプロセスが終了するごとに
UIに通知したいと考えています。各プロセスをさらにメソッド単位に分解し、
それぞれの完了ごとにReportProgressを呼ぶことも考えましたが、何かスマートな方法
は無いかものかと。

例えばWinForm側にリスナのようなものを追加し、それぞれのプロセスが終了するごとに
イベントを発生させ、リスナからReportProgressを呼び出す。と言ったような事は
可能なものでしょうか?
145デフォルトの名無しさん:2008/04/24(木) 21:34:26
>>142
デザイナで実際に設定してみればわかると思うけど、ショートカットにはCtrlかAltが必ず必要だったと思う。
それにデザイナで設定できることは、実際に設定してみてDesignet.csがどう生成されたか見るのが早い。

ToolStripMenuItem.ShortcutKeys = (Keys)(Keys.Alt | (Keys.D0+i));
試してないけどみたいな感じで出来るんじゃないかな。
146デフォルトの名無しさん:2008/04/25(金) 05:48:07
>>143
必ずそういうこと言う人がいるけど質問者の条件を変えようとするレスは書かなくていいです。
147デフォルトの名無しさん:2008/04/25(金) 07:32:18
>>144
可能
Javaの人?
148デフォルトの名無しさん:2008/04/25(金) 08:21:57
>>146
君のような思考を「フェティシズム」って言うんだよ
149デフォルトの名無しさん:2008/04/25(金) 09:45:18
フェチのこと?
なんで?
150845:2008/04/25(金) 09:46:50
変な仕様を指摘すると「お前は言われたとおりに組んでればいいんだよ!」とかいう奴はいるなぁ
たいては後で直さなきゃいけなくなるんだけど
151デフォルトの名無しさん:2008/04/25(金) 10:18:54
お前誰だよ↑
仕様にケチつけると話題がそっちに流れるだろ。
もうちょっと考えような。
152デフォルトの名無しさん:2008/04/25(金) 10:38:38
奇妙な仕様を指摘して何が悪いんだか。
153デフォルトの名無しさん:2008/04/25(金) 11:00:52
ファシズムって言いたかったとエスパーw
154デフォルトの名無しさん:2008/04/25(金) 11:17:48
むしろ悩んでる原因は変な仕様だってことが多いからな
155デフォルトの名無しさん:2008/04/25(金) 11:20:40
別にケチつけるわけじゃなく、スタンダードな方法を提示したレスをするならいいと思うけどね
156デフォルトの名無しさん:2008/04/25(金) 11:21:45
まあ大体の初心者は変な思いつきと思い込みで阿呆な仕様にしてるよねw
157デフォルトの名無しさん:2008/04/25(金) 12:11:42
>>155
それならいいよね。建設的だし。
でも批判するだけなら分かってない人でも出来ちゃうから厄介。
158デフォルトの名無しさん:2008/04/25(金) 12:20:54
>>147
JavaとC#の二束の草鞋です。
C#の場合はリスナそのものに該当する仕組みは無く、
delegateを使用してリスナ相当を実装する必要があるのかなと考えているのですが
159デフォルトの名無しさん:2008/04/25(金) 13:10:50
フォーム操作可能にしたいマルチスレッドならdelegate()が一番簡単と思うけど
160デフォルトの名無しさん:2008/04/25(金) 13:21:20
>>158
@FtpClassにOwnerプロパティを実装

 public Form Owner{ get; set;}

AUploadMethodを呼ぶ前にOwnerにthis(つまりWinForm)をセット

 ftpClass.Owner = this;

BUploadMethod内のイベントを通知したいタイミングでOwner.Invoke()を呼ぶ

 if(Owner!=null && UploadFileCheckEventHandler != null)
  Owner.Invoke(UploadFileCheckEventHandler(FtpEventArgs))


これでどうだろうか
 
161158:2008/04/25(金) 13:28:19
ちと変だな
訂正

public event FtpUpLoadEventHandler UpFileChecked;
public event FtpUpLoadEventHandler UpLoadStarted;
public event FtpUpLoadEventHandler UpLoadFinished;

こんなようなイベントを実装して、

if(Owner!=null && UpFileChecked != null)
  Owner.Invoke(UpFileChecked(FtpEventArgs))

とかで呼び出す
162デフォルトの名無しさん:2008/04/25(金) 14:37:12
>>160
C#のイベント処理に疎いので、少し教えていただきたいのですが、
この場合Ownerで示されるFormクラスのインスタンスに、UpFileCheckedイベントが通達
されるという認識でよろしいでしょうか?

その場合、Owner.Invokeでイベントを発行している形なので、FTPClassがイベントを
通達できるのはFormクラスのインスタンスに限られてしまい、FTPClassはFormクラスと
依存関係になってしまうのではと考えているのですが。
163デフォルトの名無しさん:2008/04/25(金) 14:49:02
C# (.NET) でコントロールを透明化したいんですけど、
obj.Parent 以外に対しても透明化というのは、無理なんでしょうか?
もしくはレイヤードパネルみたいなものはないですか?

やりたいのは
// A,B 両方表示(A,B は完全に重なっているコントロール)
A.Parent = parent;
B.Parent = parent;

// A だけ表示
A.Visible = true;
B.Visible = false;

// B だけ表示
A.Visible = false;
B.Visible = true;

みたいなことなんですが・・・
164134:2008/04/25(金) 14:58:41
すいません今更ですが >>134
×(実際にはWinFormはSTAなのでBackgroundWorkerのメソッドを介してUI変更を行います)
○(実際にはWinFormはSTAなのでWinFormのInvokeメソッドを介してUI変更を行います)
165デフォルトの名無しさん:2008/04/25(金) 15:12:27
>>164
FTP クラスが ProgressChanged みたいなイベント公開すればいい。
アップロード中に適当に状況が変わるなりすればイベントを起動する。
Form は その ProgressChanged イベントのイベントハンドラで Invoke して GUI に反映させる。
Owner はいらんな。SynchronzingObject ならあってもいいけど。
166デフォルトの名無しさん:2008/04/25(金) 21:45:27
>>163
見た目を気にするなら諦めてWPFに乗り換えましょう
167デフォルトの名無しさん:2008/04/25(金) 22:03:36
http://proxy.f3.ymdb.yahoofs.jp/bc/4811d5fe_a9ed/bc/%a5%de%a5%a4%a5%c9%a5%ad%a5%e5%a5%e1%a5%f3%a5%c8/slot.txt?bcIzdEIBwa.jLV2N
これを見た感想おしてください(しょぼすぎますがその辺はご了承ください)
168デフォルトの名無しさん:2008/04/25(金) 22:06:55
>>158
二足のわらじって、君思いっきりJava脳じゃん?
まぁ>>161でもちらっと出てるけどeventを作ればいいよ
http://dobon.net/vb/dotnet/vb2cs/event.html
169デフォルトの名無しさん:2008/04/25(金) 22:10:55
>>167
たいへんよくできませんでした
170167:2008/04/25(金) 22:12:08
それは自分でも自覚してる。
あとどんなものつけたら面白くなりますか?
171デフォルトの名無しさん:2008/04/25(金) 22:28:51
はじめはこんなもんだとは思うけどとりあえずgotoは封印しましょう
同じような処理はメソッドにまとめましょう

どうでもいいけどhRandomっていう名前がキモい
参照型変数にhを付けることにしてるのか知らないけどそんなのあんまり意味無いし
付けるならslotにも付けないとおかしい
172デフォルトの名無しさん:2008/04/25(金) 22:29:17
>>167
感想言っていいのか?本当にいいのか?
173デフォルトの名無しさん:2008/04/25(金) 22:31:06
いいよ
174167:2008/04/25(金) 22:36:02
この場合gotoつかわないとすれば何つかえばいいですか?
175デフォルトの名無しさん:2008/04/25(金) 22:37:36
Hyoujiメソッドを呼び出せばいいんじゃないか?
176デフォルトの名無しさん:2008/04/25(金) 22:40:27
>>160,165,168
教えていただいたことを参考にFTPClassにイベントを追加し
呼出元でイベントをハンドリングすることで希望通りの動作ができました。
ありがとうございました
177デフォルトの名無しさん:2008/04/25(金) 23:08:55
>>167 とりあえずコメントは書こうな
using System;
class slot{
static void Main(){
Console.Write("コインのもち数を入力してください");
int coin = int.Parse(Console.ReadLine());
int bell = 10,suika = 6,replay = 3;
int[] slot = new int[9];
Random rand = new System.Random();
while (coin >= 3){
coin -= 3;
int koyaku = rand.Next(1, 101);
//スロットの値設定
for(int i = 0;i < slot.Length;i++){slot[i] = rand.Next(1,4);}
//約100回に一回当たるよく分からないなにか
if(koyaku == 1){
coin += 5;
Console.Write("○ ○ ○\n○ 5 ○\n○ ○ ○\ncoin={0}\n\n",coin);
}
//通常処理
for(int i = 0;i < slot.Length;i+=3){
if(slot[i] == slot[i+1] && slot[i] == slot[i+2]){
coin += (slot[0] == 1) ? bell : (slot[0] == 2) ? suika :replay;
}
}
//表示
for(int i = 0;i < slot.Length;i+=3){Console.Write("{0} {1} {2}\n",slot[i]+i, slot[i+1]+i, slot[i+2]+i);}
Console.WriteLine("ncoin=" + coin);
Console.ReadLine();
}
}
}
178167:2008/04/25(金) 23:25:09
177さん手直しありがとうございます。
プログラム初心者なんでそんなfor文使うなんて考えてませんでした。
ありがとうございます。
179デフォルトの名無しさん:2008/04/26(土) 01:37:56
XMLシリアライズした結果をファイルではなく、変数とかに保持したいのですが可能ですか?
180デフォルトの名無しさん:2008/04/26(土) 01:39:04
普通にstringにすりゃXMLになってるだろ
181デフォルトの名無しさん:2008/04/26(土) 01:43:33
できました。サンクスです
182デフォルトの名無しさん:2008/04/26(土) 02:18:30
PDF作り方教えろ
183デフォルトの名無しさん:2008/04/26(土) 02:35:30
まずadobeのサイトに行きます
184デフォルトの名無しさん:2008/04/26(土) 07:15:58
http://www.madprops.org/mabster/pics/news/databars2.png
の画像のようなDataGridViewを作りたいと思っているのですが「Age」の列のオプションをどのように設定すればよいのか分かりません。
どうかよろしくお願いいたします。
185デフォルトの名無しさん:2008/04/26(土) 08:58:56
>>184
背景グレー
スタティック(変更不可)
クリッカブル(選択可)

よく知らないけど。
186デフォルトの名無しさん:2008/04/26(土) 10:47:13
KeyEventArgsイベントで押したキーではなく、
押されているキーを取得するにはどうすればいいのでしょうか?
187デフォルトの名無しさん:2008/04/26(土) 11:00:56
>>186
それってキーボードを直読みだから .netじゃ無理な気がするけど。
188デフォルトの名無しさん:2008/04/26(土) 11:04:23
>>187
ありがとうございます。
じゃあおとなしくフラグ使ってやります。
189デフォルトの名無しさん:2008/04/26(土) 11:05:25
WPFのKeyboardとか
GetKeyboardStateをdllimportしてくるとか
190デフォルトの名無しさん:2008/04/26(土) 15:06:16
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
MainForm hogefrm = new MainForm();
hogefrm.Show();
}
と書いたところ、Formが一瞬表示されてすぐに終了してしまうのですが何故でしょうか?
191デフォルトの名無しさん:2008/04/26(土) 15:08:22
>>190
>MainForm hogefrm = new MainForm();
>hogefrm.Show();
をApplication.Run(new MainForm());にすればいいと思うよ
192デフォルトの名無しさん:2008/04/26(土) 15:12:03
>>191
回答どうもありがとうございます。
Main内で
hogefrm.なんとかかんとか
と行いたいのでApplication.Runは使用したくなかったのですが......
Main内に書かずMainForm.Loadに書くべきなのでしょうか?
193デフォルトの名無しさん:2008/04/26(土) 15:15:02
いやいやいや
MainForm form = new MainForm();
form.Hoge();
Application.Run(form);
ってすればいいから
194デフォルトの名無しさん:2008/04/26(土) 15:15:29
hogefrm.なんとかかんとかをしたあとに
Application.Run(hogefrm);とすればいい
195デフォルトの名無しさん:2008/04/26(土) 15:42:27
>>193,194
どうもありがとうございます。
おかげさまで解決しました。
196デフォルトの名無しさん:2008/04/26(土) 17:02:56
ちなみにhogefrm側でcloseするとアプリが終わっちゃうからな
197デフォルトの名無しさん:2008/04/26(土) 17:57:19
やっと3.0始めたけどラムダ式が省略されすぎて直感で理解しずらいお( ^ω^)
198デフォルトの名無しさん:2008/04/26(土) 18:22:34
アクセサって変だと思う。
関数作って値かえせばええやん、みたいなとこでも
使われてません?

型とか修飾子あるから別になくてもいいじゃん。何か問題ある訳?
199デフォルトの名無しさん:2008/04/26(土) 18:30:25
日本語で
200デフォルトの名無しさん:2008/04/26(土) 18:47:11
>>198
そこはアクセサじゃなくてプロパティと言うべきところ。
201デフォルトの名無しさん:2008/04/26(土) 19:05:03
Javaはプロパティがないせいで
命名規則とリフレクションでプロパティのようなことをやらざるをえなかったけどな
202デフォルトの名無しさん:2008/04/26(土) 19:09:50
「IDEに優しい言語」と公言してるわけだから
203デフォルトの名無しさん:2008/04/26(土) 19:18:59
しすてむどっとこんぽーねんともでる

…イベントも忘れないであげて
204デフォルトの名無しさん:2008/04/26(土) 19:29:40
>>197
ラムダ式に慣れたら匿名メソッドを見ると吐き気を催すようになる
205デフォルトの名無しさん:2008/04/26(土) 19:48:35
// Graphics オブジェクトの取得
Graphics grfx_moji = MainForm.mainform.CreateGraphics();
// フォント、ペン、ブラシの定義
Font font = new Font("MS P ゴシック", 30F);
Pen pen = new Pen(Color.Magenta);
SolidBrush brush = new SolidBrush(Color.Orange);
grfx_moji.Clear(Color.Gainsboro);
grfx_moji.DrawString(
s, // 描画文字列
font, // Font
brush, // SolidBrush
10, // X位置(左上の)
30 // Y位置(左上の)
);
font.Dispose();
brush.Dispose();
pen.Dispose();
grfx_moji.Dispose();
と言うコードを、30fpsでループさせてフォームに描画しているのですが、
文字がちらつきます。
60fpsにしてもちらつくのですが、何が原因なのでしょうか?
206デフォルトの名無しさん:2008/04/26(土) 19:50:55
理由はいろいろあるだろうけど
GDI+で30fpsとかそもそも間違いw
DirectXかWPFでも使えば
207デフォルトの名無しさん:2008/04/26(土) 19:58:40
>>206
お返事ありがとうございます。
5fpsにしてもちらつくのですが……。

WPFは嫌いなので使うとしたらManagedDirectXですかね〜。
208デフォルトの名無しさん:2008/04/26(土) 19:59:50
というかGDIベースあたりのやつは根本的なティアリング対策は
無理。減らすにはダブルバッファリングして高精度なタイマー使う
のがヨス。

スピードもGDI+でも丁寧に使えば大丈夫だろうけども、30とか
60fps要求で文字列を直接書こうっつーのはDirectXつかっても
キビシス。WPFもちょっとトリックしているはずだし。
209デフォルトの名無しさん:2008/04/26(土) 20:05:18
文字は変更するときだけビットマップに描画してそれを使いまわすとかね
その辺は基本的にDirectXでも一緒だけど
210デフォルトの名無しさん:2008/04/26(土) 20:12:10
C#, C♯, C#相談室 Part46
http://pc11.2ch.net/test/read.cgi/tech/1208791919/
との違いが分からない
211デフォルトの名無しさん:2008/04/26(土) 20:12:47
すまんミスった
212デフォルトの名無しさん:2008/04/26(土) 20:16:11
クラスのフィールドとか配列の中身をusingにするにはどうすればいいの?
213デフォルトの名無しさん:2008/04/26(土) 20:18:27
フィールドは普通にできるよ
配列は諦めてfinallyでdisposeするかラッパー作る
214デフォルトの名無しさん:2008/04/26(土) 20:24:47
いや配列でもリストでもなんでもOKみたい
using (list[0] = new MyClass())
{
}
215デフォルトの名無しさん:2008/04/26(土) 20:26:01
>>185
ありがとうございます。
背景色を変更するには少し調べたところDataGridColumnsStyleを継承し、Paintをオーバライドしなければいけないようで面倒くさそうです。

「Age」の列の背景色がtextboxなどでReadOnlyをTrueにしたときと同じということから何かオプションがあるのだと思いますがよくわかりません。
何度もお手数をお掛けしますがよろしくお願いいたします。
216デフォルトの名無しさん:2008/04/26(土) 20:26:10
>>212
usingはあきらめてtry〜finallyを使う。
this._image = null;
try
{
  this._image = Image.FromFile(...);
  // usingの中に書きたい処理
}
finally
{
  if (this._image != null)
    this._image.Dispose();
}
217デフォルトの名無しさん:2008/04/26(土) 20:29:12
できましたー。
218デフォルトの名無しさん:2008/04/27(日) 08:18:34
>>215
をよろしくお願いします...
219デフォルトの名無しさん:2008/04/27(日) 08:26:23
>>208
ありがとうございます。
ダブルバッファリングを採用したらちらつきが無くなりました。

タイピングゲームを作っているのですが、
Direct3DかDirectDrawを使うべきでしょうか……。

タイピングゲームくらいなら使わなくてもいけるんじゃないかなーと思っているのですが。
220デフォルトの名無しさん:2008/04/27(日) 08:28:35
連投ごめんなさいorz
>>209
ありがとうございます。
ビットマップに描画の意味がよく分からないので、
ちょっとググってきます。
221デフォルトの名無しさん:2008/04/27(日) 11:41:49
>>219
タイピングゲームなら30あれば十分じゃない?
でも、ちゃんとしたゲームにしたいなら文字も画像で書かなきゃいけなくなるだろうし
この際だからDirectX覚える方がいいかもね

>>209じゃないけどビットマップに描画ってのはダブルバッファリングのことじゃないかな
いつもみたいに直接ウィンドウに描画するんじゃなくて
メモリ上のビットマップで描きたいものを整形して
ウィンドウには最後の最後一枚絵だけ描画させる
こうすることでちらつきがなくなって見える訳ね
222デフォルトの名無しさん:2008/04/27(日) 12:46:14
>>221
ありがとうございます。

ManagedDirectXは一応使えるのですが、XNAなるものが出てしまったのでご無沙汰してます。
ぶっちゃけるとタイピングゲームくらいで面倒だなあ……
と言う理由でDirectInput以外使っていませんでした。
ですが、やはり使った方が後々良さそうですね。

もう一つ質問をさせていただきます。
Direct3Dを使えばダブルバッファリングは不要という認識なのですが、
それで問題ないでしょうか?
223デフォルトの名無しさん:2008/04/27(日) 13:36:30
>>222
いや、どの程度本気かってことだよ
暇つぶしにちょっとやってみっかー位ならGDI+でやるのも乙だと思う。
初心者本とかだとGDI+で嬉しそうに円描いたりしてるが
ぶっちゃけ普段C#で組んでる上では殆ど使わないし、新しい経験になるだろう

ただ、公開しようとか考えてるなら初めからDirectX使った方が楽だと思うよ。

質問はちょっと意味がわからん。
ちらつきは人間の目の問題だからDirectXだろうがOpenGLだろうが必要だよ
GDIでやるより意識を軽く実装できるってだけの話し。
224デフォルトの名無しさん:2008/04/27(日) 13:36:54
DxLibオヌヌメ
225デフォルトの名無しさん:2008/04/27(日) 13:38:40
VisualC# 2008expressからVisual studio 2008proに乗り換えたんですが、何をするにしてもexpressより処理が遅い印象を受けます。
機能が多くなった分だけ仕方ない事でしょうか?
226デフォルトの名無しさん:2008/04/27(日) 13:46:31
>>224
今もC++でお世話になってるわw
俺がC#でゲーム作らない理由の一つがそれだな
227デフォルトの名無しさん:2008/04/27(日) 14:03:46
>>223
ありがとうございます。

確かに円描いたソフトなんて公開したことないですね……。
公開しようと思っているので、DirectX使います。

質問についてですが、ちょっとアホな子になってました。
すみません。

>>224
ありがとうございます。

C#用のDxLibってあるんですか?
C++やったこと無いんですよ。
ググってみます。
228デフォルトの名無しさん:2008/04/27(日) 14:59:15
>>225
デフラグしてみたら、俺もそれやったけど変化は感じられなかったし。
229デフォルトの名無しさん:2008/04/27(日) 15:07:17
>>205
GDIを使うときにちらつきを抑えるには、GDIではなく、描画先のコントロール(GDIではなくこちらに設定がある)をダブルバッファにして、背景再描画をオフ(仮想関数をオーバーライドする)にしないと駄目だよ。
ティアリングが問題になるようなら、フレームレートは上げるのでは落とすこと、その方が目立ちにくい。
ティアリング問題に関してはPCではお手上げだからあきらめる、XNAを使ってXBox360で開発する。
これについてはPCである以上、DirectXを使っても解決しない。
230デフォルトの名無しさん:2008/04/27(日) 15:26:05
.NETのexeファイルって他のプロジェクトから参照させるとdllと変わらないんだな
ばらまくプログラムはpublicにするかどうかちゃんと考える必要があるのか
231デフォルトの名無しさん:2008/04/27(日) 15:28:39
>>230
実は.NETに限らずだが、その事実を知る者は少ないのかw
232デフォルトの名無しさん:2008/04/27(日) 15:34:56
>>229
ありがとうございます。
それでやってちらつきは抑えれました。
ですが、DirectXを使ったプログラムを作ってしまいましたので、GDIは使いそうにありません。
申し訳ないです。

ティアリングについてですが、問題なさそうです。
233デフォルトの名無しさん:2008/04/27(日) 16:25:02
C#用のDxLibあるんだな。
使ったことある人いる?
234デフォルトの名無しさん:2008/04/27(日) 17:52:30
初歩的な質問なんですが、
子クラスを親クラスにキャストする事が出来るのはなんでですか?
親クラスを子クラスにキャストする事が出来ないのはなんでですか?

感覚的に、後者の方は大は小を兼ねる(親より子の方が大きい)のでキャスト出来そうですが…
235デフォルトの名無しさん:2008/04/27(日) 17:54:13
親を子にキャストして、子にしかないメソッドを呼び出したら困るでしょ
236デフォルトの名無しさん:2008/04/27(日) 17:59:56
両方できるだろ?
後者は暗黙には出来ないが。危険だからな。

.   A 親
   ↑
 ┌┴┐
. B  C 子

という継承関係があった場合、
A a; に入ってるインスタンスの本当の型は A, B, C の3つの可能性がある。
a を B にキャストした際、本当は A や C であるものが B にキャストされるなんてことも起こりうる。
その状態で B にしかないメソッドを呼んだりしたら・・・恐ろしいよね。

前者ではそういう問題が起こらない事については自分で考えれ。
237デフォルトの名無しさん:2008/04/27(日) 18:01:13
>>234
ControlとTextBoxのメソッドの数をくらべてみ?
大と小が逆になってると思うよ。
238デフォルトの名無しさん:2008/04/27(日) 18:07:46
>>234
オブジェクト志向(この単語出すのいやなのだが)の継承ってのは特殊化、
つまり、動物(親)→犬(子)みたいな関係。下に行くほど特殊なものになる。
犬クラスは必ず動物クラス(アップキャスト)だけど、動物クラスは必ずしも犬
クラス(ダウンキャスト)ではない。この例が抽象的過ぎると感じるなら、コント
ロール→テキストボックスとかでも思い浮かべてくれればいい。

継承は確かに拡張する感覚があるんだが、概念的には「狭める」方向に
進んでいくの。
239234:2008/04/27(日) 18:45:00
初めに思ったのは、
・子から親へのキャストは、差分を知らない親だからキャスト出来なくない?
・親から子へのキャストは、キャストによって差分が拡張されるのだから当然出来るんじゃない?
って直感的に思いました。
けど全く逆なんですね。

子クラスにあって親クラスにないメソッドが呼び出されたら…って考えたらその通りですね。
てことは親クラスにキャストされたら差分のメソッドは消えてなくなるって感じでいいんでしょうか?
この「消えてなくなる」って感じがfloatからintへのキャストのように精度がなくなるかのようでもやもやしてました。
240デフォルトの名無しさん:2008/04/27(日) 18:46:52
操作できる範囲が限られると考えるといいよ。
241デフォルトの名無しさん:2008/04/27(日) 19:06:14
参照型はキャストしてもインスタンス自体の型が変わるわけじゃないから。
242デフォルトの名無しさん:2008/04/27(日) 19:11:09
>>234
238の説明で正しいとは思うんだけどちょっとわかりにくい気もするのでおせっかいにも補足。
次のように考えたらどうだろう。

 ・「データ型」とは、そのオブジェクトが持つすべての機能の「お品書き」のこと。
 ・「オブジェクトaを型Bにキャストする」とは「aをBとみなして扱う」こと。

ラジオの設計図(親)に回路を追加(つまり継承)してCDプレイヤー付きラジオの回路(子)を
設計したとする。

このとき「CDプレイヤー付きラジオ」は、必要なら単に「ラジオ」として扱うこともできる。
なぜならラジオのすべての機能を継承しているから。
つまり「CDプレイヤー付きラジオ」は「ラジオ型」にキャストすることができる。
「ラジオ型」というお品書きに書いてある全部の機能を持っているから。

でも逆(「ラジオ」を「CDプレイヤー付きラジオ」としてあつかうこと)は無理。
仮に無理に「ラジオ」を「CDプレイヤー付きラジオ型」にキャストしたとする。
キャストした以上、それは「CDプレイヤー付きラジオ」として扱えなければならない。
つまり「CDプレイヤー付きラジオ型」のお品書きに書いてあるすべての機能が
こなせなければならない。

だが、ただのラジオに「CDを最初のトラックから再生開始せよ」とか、
「ランダム再生開始せよ」とか命令してもそれは無理難題だろう。
243234:2008/04/27(日) 20:01:15
>>236>>241のレスが気になったので調べてみました。
このコードがばっちり通ったので、「消えて」はなくならないみたいですね。
class Program
{
 static void Main(string[] args)
 {
  SubClass obj = new SubClass();
  SubClass obj2 = (SubClass)((MyClass)obj);
 }
}
public class MyClass
{
}
public class SubClass : MyClass
{
}
なんとなく理解できましたけどこんな風に親から子へのキャストは元々子だったobjのようなインスタンス限定なのですかね?
それってコンパイラが覚えてくれてるものですか?
それともこういうキャストはやらない方がいいですか?(どれが親から子へキャストできるのかわからなくなりそうで…)
244デフォルトの名無しさん:2008/04/27(日) 20:05:10
XNAって初めて見たけどすげーんだな!!
おれってグラフ作成とか応用できるの?
245デフォルトの名無しさん:2008/04/27(日) 20:06:42
>>243
全然理解してないじゃんw
246デフォルトの名無しさん:2008/04/27(日) 20:16:20
class Parent{
public int A;
public int B;
}

こういうクラスがあったら、Parentは

int A用の領域4バイト
int B用の領域4バイト

こんな風になってる(だいぶ単純化した話だけど)

これを継承してChildを作る

class Child : Parent{
public int C;
}

こうすると、Parentにint Cが足される

Parentの領域8バイト
int C用の領域4バイト

Parent parent = new Child();

ChildをParentにキャストするという処理は、
ChildのうちParentの領域8バイトだけを見る、ということで、
Childのデータ自体は何も変わらない。
Childの中のParentの領域だけを見れば、それはParentと全く同じなので、
Parentと同じように使える
247デフォルトの名無しさん:2008/04/27(日) 20:16:29
継承の概念については、superclass/subclassという単語が的を射てるな
集合で考えれば、superset/subsetに対応するし
248234:2008/04/27(日) 20:28:29
>>246
よくわかりました!
具体的なものの方がイメージしやすいと思いました。(イメージできるって大切ですよね!)

>>245
ちょうど>>246と理解して書いたつもりですけどどこか間違ってますか?
(SubClass)((MyClass)obj);
はダウンキャストなので本来(?)ダメなはずなんですが
この例のように一度親クラスにキャストしたあとなら可能みたいなので疑問に思ったわけです。
249デフォルトの名無しさん:2008/04/27(日) 20:33:33
コンパイラが覚えてくれるとか言ってるあたりでしょ
それは全く見当違いで,ダウンキャストに成功するかどうかは実行時の問題
250デフォルトの名無しさん:2008/04/27(日) 21:01:56
C系の言語だとintをfloatに「変換」するようなこともキャストというから
234みたいな混乱と誤解が起こるんだろうね。

結局234は>>241の指摘を理解せず、キャストとはintをfloatに変換するような
何らかのバイナリ操作を伴うものだと思い込んでるんじゃないか。
251デフォルトの名無しさん:2008/04/27(日) 21:03:07
SlimDX
252デフォルトの名無しさん:2008/04/27(日) 21:05:59
intをfloatに変換することに何か問題でも?
253デフォルトの名無しさん:2008/04/27(日) 21:13:57
あんた何言ってんの?
254デフォルトの名無しさん:2008/04/27(日) 21:16:01
32bit 同士だから MaxValue 近辺では普通に桁落ちしねぇ?
まぁまったくそんな話じゃないが。
255デフォルトの名無しさん:2008/04/27(日) 21:23:26
intからfloatへの変換でも値が失われることはあるよね
256デフォルトの名無しさん:2008/04/27(日) 21:30:46
>>248
入れ物と中身がごっちゃになってる。
257デフォルトの名無しさん:2008/04/27(日) 21:31:35
キャスト=変換だぞ。
ビット数の同じ整数型(ポインタを含む)同士の変換なら
内部表現形式が変わらないだけで変換はされている。
258デフォルトの名無しさん:2008/04/27(日) 21:33:04
禅問答みたいになってきたな
259デフォルトの名無しさん:2008/04/27(日) 21:40:27
参照型のキャストは見方を変えるだけ
動物⇔哺乳類⇔ゾウ
みたいに
260デフォルトの名無しさん:2008/04/27(日) 21:44:44
なんかよくわかってないやつも混じってるなw
261256:2008/04/27(日) 21:45:00
禅問答っつーかさ、変数名は入れ物に過ぎないってのを理解しないと。
C++のvoid *に相当するものが、Object。中になんでも入るけど、
中身が変換されてしまうわけではない。

static void Main(string[] args)
{
Object obj1 = "string";
Object obj2 = 0;
Console.WriteLine(obj1.GetType());
//->System.String
Console.WriteLine(obj2.GetType());
//->System.Int32
}
262デフォルトの名無しさん:2008/04/27(日) 21:47:14
>>261
半分正しいが、それは「契約」という考え方を捨象してるだろうw
263デフォルトの名無しさん:2008/04/27(日) 22:06:41
>>261
お前だな、>>260の言ってたやつは
264デフォルトの名無しさん:2008/04/27(日) 23:05:05
>>248
例えば、TextBox型のインスタンスをControl型にキャストしたとする。
これは単に「Control型の変数に代入した」だけであって、なんら変換などは起こっていない。
TextBoxをControlにキャストしたからといって、いきなり中身が消えちゃったりしたら変だろ?
実体がTextBoxなんだから、TextBox型にダウンキャスト出来るのは当たり前だ。
265デフォルトの名無しさん:2008/04/27(日) 23:34:21
今から鈴木君を動物として扱います。
そして、このぬこを鈴木君として扱います。
266デフォルトの名無しさん:2008/04/27(日) 23:53:47
>>247
サブクラスは全然部分集合じゃないだろ
むしろスーパークラスがサブセット
267デフォルトの名無しさん:2008/04/28(月) 00:39:53
ふとC#の本を見てて驚いた。
インターフェースの既定のアクセシビリティはpublicって書いてあった。
が、少なくともvs2008/C#3.0だとinternal。
msdnのvs2005/C#2.0でもpublicって書いてあるから、C#2.0→C#3.0で仕様変更でもあったのかね
268デフォルトの名無しさん:2008/04/28(月) 00:47:08
既定の「メンバ」アクセシビリティじゃね?
269デフォルトの名無しさん:2008/04/28(月) 00:59:48
ほんとだ。
じゃあ単純に標準C#入門の216pが誤植か。
270デフォルトの名無しさん:2008/04/28(月) 01:10:53
>>266
ふと気になったので。
サブクラス∈スーパークラスでしょ。

・多態性でスーパークラスのコレクションをforループする時。
・自己参照型構造体っぽくインターフェイスを作っておく時。
・一時的にアップキャストする時。

どの場合もサブクラスはより大きな概念のスーパークラスにキャストしてるべ。
271デフォルトの名無しさん:2008/04/28(月) 01:19:17
266は概念じゃなくて使えるメソッドの数かなんかで考えてたんじゃね
272247:2008/04/28(月) 01:27:27
>>266
インスタンスの集合と考えると自然
{ o | o is Superclass } ⊃ { o | o is Subclass }

イメージとしては、生物の分類で界、門、網、…と細分化するのと同じ

>>270
記号の意味を間違えてないか
273デフォルトの名無しさん:2008/04/28(月) 01:37:33
>>272
自分でもレスした後に気づいた。突っ込まないでくれ。
274デフォルトの名無しさん:2008/04/28(月) 03:38:05
いいや突っ込むね!!
275デフォルトの名無しさん:2008/04/28(月) 07:34:10
>>274
ら、らめ〜
276デフォルトの名無しさん:2008/04/28(月) 08:23:43
気色悪いな。
こういう連中がプログラマの評価を不当に下げている気がする。

いや、実際問題こういう感性が人間の平均とズレている奴が多いから
不当な評価じゃないのかもしれんが・・・
277デフォルトの名無しさん:2008/04/28(月) 08:43:45
とりあえずマならその短絡思考、推論ジャンプなんとかしたほうがいいんじゃないか?
278デフォルトの名無しさん:2008/04/28(月) 10:50:49
禿同
279デフォルトの名無しさん:2008/04/28(月) 15:57:16
てst
280167:2008/04/28(月) 16:44:10
http://proxy.f3.ymdb.yahoofs.jp/bc/4811d5fe_a9ed/bc/%a5%de%a5%a4%a5%c9%a5%ad%a5%e5%a5%e1%a5%f3%a5%c8/slot2.txt?bcpXYFIBPmnuIYh1
167でスロットつくってた人ですが、for文を使ってなおしてみたのですが、
不具合がおきてしまいました。(4回目には必ずエラーで停止する)
一応自分でもなんとかしようとおもうのですが、できればどこを直せばいいか
おしえてください。
281デフォルトの名無しさん:2008/04/28(月) 17:02:24
4回目って何の4回目?
ステップ実行とかしてみた?
あとまだ中までは見てないんだが
while (true)
{
 if (coin < 3)
 {
  break;
 }
こうするくらいなら、
while (coin >= 3) でいいべ
282デフォルトの名無しさん:2008/04/28(月) 17:04:36
あと、配列の添字は 0 からな。
したがってfor文も 0 で初期化でいいべ
283167:2008/04/28(月) 17:31:28
>>281
ありがとうございます。
おかげでちょっとだけプログラムがすっきりしました。
>>282
言われたとおり0にするとちゃんと動くようになりました。
ありがとうございます。
284デフォルトの名無しさん:2008/04/28(月) 17:40:52
通常のグラフィックの描画はうまくいったのですが
タイマーでtimer1_Tick()のとび先で描画すると
windowを手動で画面外へ出してもどすということをしなければ
画面更新できませんでした。

VbでのPicture1.Refreshにあたるような命令はありますか?
285デフォルトの名無しさん:2008/04/28(月) 18:02:13
Invalidateとか
286284:2008/04/28(月) 18:29:07
g = Graphics.FromImage(_bmp);
で定義してあるもんで
探すと
this.Invalidate;
の使用例ばかりでてきて どうInvalidateしていいにかまだ・・・
もうちょっと調べてみます。
287デフォルトの名無しさん:2008/04/28(月) 18:40:59
ただ
Invalidate();
だけでいいんですね できました。
ありがとうございます。
288デフォルトの名無しさん:2008/04/28(月) 18:42:23
それ呼び出してるのは多分Formだと思うけど
フォーム全面を再描画要求する必要があるの? とか
289デフォルトの名無しさん:2008/04/28(月) 19:05:57
>>288
そうですね _bmpだけ更新したいのですが。

ところで
timer1.Interval = 100;
この値をいくつに変えても間隔が全くかわらないのですが。
他になにか記述が必要でしょうか?
290デフォルトの名無しさん:2008/04/28(月) 19:33:15
>>289
> そうですね _bmpだけ更新したいのですが。
違う。
ディスプレイに描画する責務があるのは画像じゃないだろう?
その画像を表示するコントロールが指定された画像をディスプレイに描画する。
つまりその画像を表示するコントロールのInvalidateを使えってこと。
なのでそのBitmapをたとえばForm.BackgroundImageに指定してるのならForm.Invalidateで正しい。

> ところで
> timer1.Interval = 100;
> この値をいくつに変えても間隔が全くかわらないのですが。
そんなことはないが。
どこかでうっかりIntervalを再設定してるとか?
291デフォルトの名無しさん:2008/04/28(月) 19:49:28
Intervalの単位を勘違いしてるだけ に全部
292デフォルトの名無しさん:2008/04/28(月) 19:54:04
Interval の件
Form1_Load から別の場所に移すとうまくいきました。
293デフォルトの名無しさん:2008/04/28(月) 23:13:07
D3DXCreateTextureFromFileExはManagedDirectXにはないのでしょうか?
294デフォルトの名無しさん:2008/04/28(月) 23:17:18
TextureLoader.FromFileの引数の多いオーバーロードはそれに当たる
295デフォルトの名無しさん:2008/04/28(月) 23:22:39
>>294
ありがとうございます。
後でやってみます。
296デフォルトの名無しさん:2008/04/28(月) 23:25:33
>>233
あるぜ
297デフォルトの名無しさん:2008/04/28(月) 23:34:36
293です。

TextureLoader.FromFileの最後に引数は何を意味しているのでしょうか?
255やら0やら適当に入れても動くので問題ないのですが、
きちんとした意味を知りたいのですが……。
298デフォルトの名無しさん:2008/04/28(月) 23:44:00
> colorKey
> 型 : System::Int32
> 透明な黒で置き換えられる値。カラー キーを無効にする場合は 0 (ゼロ) を指定します。
> ソース イメージの形式とは関係なく、colorKey は常に 32 ビットの ARGB カラーです。
> アルファは有意であり、通常、カラー キーを不透明にする場合は FF に設定する必要があります。
> たとえば、不透明な黒の場合、値は 0xFF000000 となります。
299デフォルトの名無しさん:2008/04/28(月) 23:49:14
>>298
ありがとうございます。

もっとググる能力鍛えないとなあorz
MSDNも活用しきれない……。
300デフォルトの名無しさん:2008/04/29(火) 00:10:45
英語版のほう見ないと大抵まともな情報ないよ
ちなみに>>298のはMicrosoft.WindowsMobile.DirectX.Direct3D名前空間の方の解説
301デフォルトの名無しさん:2008/04/29(火) 10:20:16
お世話になっております。

fileversioninfoで取得したバージョン文字列を比較する方法ってどうやるんですかのう・・・
stringのcomparetoだとうまくいきそーもないです・・・

comparetoだと例えば、 1.0.15.0と1.1.5.0を比較すると、1.0.15.0が大きいって結果になっちまいます。
302デフォルトの名無しさん:2008/04/29(火) 10:24:49
Versionオブジェクト作ってやればいいよ
Versionクラスは比較演算子もオーバーロードしてる
303デフォルトの名無しさん:2008/04/29(火) 10:29:34
!!
マヂですかー。

ありがとー つД`)
304デフォルトの名無しさん:2008/04/29(火) 13:12:04
C#(というか.NET)ではどのようなDBエンジンがありますでしょうか?

・使いやすいと思われるもの
・WindowsXP以上でインストールなしで利用可

のものを教えていただけないでしょうか?
ぜひあなたがお使いのものも教えて頂きたいです。
305デフォルトの名無しさん:2008/04/29(火) 13:14:02
C#で整数の除算はバックスラッシュとありますが入力できません。
\ではエラーになってしまいます。
どうすればいいですか?
306デフォルトの名無しさん:2008/04/29(火) 13:15:34
C#で整数の除算はバックスラッシュではありませんよ

307デフォルトの名無しさん:2008/04/29(火) 13:18:16
>>300
ありがとうございます。
英語中学レベルくらいしかできないんですよね……orz
日本ももっと情報充実しないかなあ
308デフォルトの名無しさん:2008/04/29(火) 13:23:36
>>304
sqlite.NETとか。
sqliteをADO.NETのクラスでラップしたもので、特徴はsqliteに準ずる。sqliteのバイナリも内蔵しているから、DLLひとつ参照設定するだけですむし。
sourceforge.net/projects/sqlite-dotnet2
309デフォルトの名無しさん:2008/04/29(火) 13:29:03
>>306
どう書くんでしょう?
関数やキャストを使わなければだめですか?
310デフォルトの名無しさん:2008/04/29(火) 13:32:58
311デフォルトの名無しさん:2008/04/29(火) 13:37:04
バックスラッシュを使うというのはどこから持ってきたのか。
「整数の除算」とは、具体的に何を差すのか。
/ ではいけない理由を書かないと誰にもわからない
312デフォルトの名無しさん:2008/04/29(火) 13:39:18
スラッシュとバックスラッシュを勘違いしてるだけだろ
313デフォルトの名無しさん:2008/04/29(火) 13:39:46
ManagedDirectXで、
テクスチャが多くなるとメモリ使用量が多くなって困るのですが、
1画像に1テクスチャはおかしいのでしょうか?
314デフォルトの名無しさん:2008/04/29(火) 13:41:08
>>310
型指定するんですね わかりました。

>>311
検索でVBのが混ざって出てきてしまいました。 VBでは'5 \ 2'ですね。
小数点を出さずに 5 \ 2 = 2 と余りを切り捨てる除算のことです。
315デフォルトの名無しさん:2008/04/29(火) 13:52:54
型指定てのが何を差してるのかだけど、
両方整数型なら / はそのまま切り捨てられる。
逆に最終的に代入する型が浮動小数点だったとしても、
式の途中の整数演算は切り捨てられるから要注意。

例えば
1+8/3 =3
1.0+8/3 =3.0
1+8.0/3 =3.6666666666666665
※小数点が付いているのは浮動小数点型
316デフォルトの名無しさん:2008/04/29(火) 13:53:18
>>314
int a = 5 / 2 ;
Console.Write(a);
ReadKey();

これをコンパイルしてみろ
317デフォルトの名無しさん:2008/04/29(火) 13:56:37
>>315
>>316
了解しました。ありがとうございます。
318デフォルトの名無しさん:2008/04/29(火) 13:57:06
>>304
RDBMSに拘らず、データが保存できれば良いだけならLinq to XMLという選択肢も
319デフォルトの名無しさん:2008/04/29(火) 16:35:37
先生ども、質問です。

Process[] ps= Process.GetProcessesByName("TARGETPROCESS");

// --- 見つかったプロセスに対する処理 ----

for(int i= 0; i< ps.Length; i++) {
ps[i].Close();
ps[i].Dispose();
ps[i]= null;
}
ps= null;

System.Threading.Thread.Sleep(1000);
System.GC.Collect();

↑を、定期実行してるんですが、メモリが開放されないっぽく、メモリ使用量がウナギのぼりです。(´・ω・`)
何か足りないですかね?

ちなみに、開放されないのは GCのTotalMemoryを参照して確認したですよ。
コメントの範囲の処理をコメント化して、上記のコードだけでも開放されてないス(´・ω・`)
上記コードをコメント化するとメモリの増加は抑えられます。
320デフォルトの名無しさん:2008/04/29(火) 16:39:58
GCてのはメモリが足りなくなって初めて動きます
321デフォルトの名無しさん:2008/04/29(火) 16:44:05
>>307
こういうドキュメントは中学程度の文法で十分読めるよ
322デフォルトの名無しさん:2008/04/29(火) 17:04:41
>>320
なるほどー!
ありがとうございました。

ちょっと放置して状態をしらべてみようと思います。。。
323デフォルトの名無しさん:2008/04/29(火) 17:05:57
GC.Collect()はGCの強制実行だろ
324デフォルトの名無しさん:2008/04/29(火) 17:17:36
>>319
プロセスに対する処理がサンプルコードなのかもなんだけど、
CloseMainWindow()してKill()してやらないと
メモリ解放できずにプロセスが終わっちゃってたりしないのかな。
全然関係無いかもしれないけど。
325デフォルトの名無しさん:2008/04/29(火) 18:08:14
>>319
メモリ使用量って一体何で調べてるの?
326デフォルトの名無しさん:2008/04/29(火) 21:03:07
一般的な言語なら知らなくても、大抵書いてあることの意味はある程度想像が付くけど、
C#の場合例えば

void hoge(string fileName) {
Invoke((MethodInvoker)delegate() {
var file = Files.Find(item => item.FullName == fileName);
if (file != null)
file.hogehoge();
});
}
とか書かれると、まるで意味不明になるのが諸刃の剣
327デフォルトの名無しさん:2008/04/29(火) 21:31:02
もうちょっとしたら一般的な言語にもラムダが実装されるよ
328デフォルトの名無しさん:2008/04/29(火) 21:31:07
どれとどれの諸刃なんだ?
329デフォルトの名無しさん:2008/04/29(火) 22:12:31
>>326
正直全然イミフなコードに見えん。

というかそれ以前にそのコードは書いた人の意図も見えんので糞サンプル
だと思う。

varでがやがやしてた時も思ったが「で?」っていいたくなるような
無理矢理書きましたみたいな役にたたんサンプル作るやつが多すぎる気がするよ。
330デフォルトの名無しさん:2008/04/29(火) 22:52:20
byte配列を構造体にキャストして使用したいと思っています(VS2008 .NET3.5使用)
色々調べた結果、下のような処理になったのですが、もっとC#らしい(?)やり方が
あったりするのでしょうか?
目的は「配列をある型を通してアクセスしたい」で、構造体でなくても問題はありません。

using System;
using System.Runtime.InteropServices;
namespace ConsoleApplication1 {
class Program {
[StructLayout(LayoutKind.Sequential, Pack = 1)]
unsafe struct MyStr {
public fixed byte pathName[3];
public short sval;
public int ival;
}

static void Main(string[] args) {
byte[] buf = new byte[] {0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
0xFF, 0xFF, 0xFF, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C,
0xFF, 0xFF, 0xFF, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12};
unsafe {
for (int i = 0; i < 3; i++) {
fixed (byte* p = &buf[sizeof(MyStr) * i]) {
MyStr* myStr = (MyStr*)p;
short sval = myStr->sval; // このようにアクセスしたい
}
}
}
}
}
}
331デフォルトの名無しさん:2008/04/29(火) 22:56:46
きめえw
332デフォルトの名無しさん:2008/04/29(火) 23:03:43
>>330
> byte配列を構造体にキャストして使用したい
っての自体がC#らしくない
333デフォルトの名無しさん:2008/04/29(火) 23:04:55
キャストじゃなくて普通に代入するといいと思うよ
334デフォルトの名無しさん:2008/04/29(火) 23:05:39
>>330
無いと思いますよ、基本XML、もしくはバイナリフォーマッターを通して
環境依存を可能な限り避けるが基本方針ですから。
335デフォルトの名無しさん:2008/04/29(火) 23:08:41
もうひとつ、構造体の内部情報に直接アクセスできないのはセキュリティーの問題もあります。
private にしておいたデータを外から改ざんされないようにする為です、ネットワークを通じてコピーするようなケースは重要。
336デフォルトの名無しさん:2008/04/29(火) 23:14:36
要はCでいう共用体的に使いたいという事か
337デフォルトの名無しさん:2008/04/29(火) 23:16:48
C++からこちにに来ればいちばん最初に考えて、アレッてなる所だからな
Win32APIとの相互運用のために各種機能はあるが、キッパリ諦めるが正解。
338330:2008/04/29(火) 23:47:19
やっぱりらしくないですよね

1.TCPでの受信や、ファイルにバイナリで保存されているデータの先頭を、ヘッダ構造体にキャスト
2.上記キャストしたデータ中にある、データ種別を取得
3.ヘッダ以降のデータを、上記データ種別毎の構造体にキャスト
4.データ種別毎の構造体を通してデータにアクセス
  (ヘッダにあるデータ数分ループしたりもする)
5.データの構造が変更になった場合は、構造体を変更すれば既存部分は変更無し

こんな処理をよく作っていて、それをC#に移植しようとしていました。
もう少し色々なサンプルを見てみようと思います。
ありがとうございました。
339デフォルトの名無しさん:2008/04/30(水) 00:09:11
>>338
System.Runtime.InteropServices.Marshalクラス内に使えそうなの無い?
PtrToStructureメソッドとか。
340デフォルトの名無しさん:2008/04/30(水) 00:46:24
>>338
わざわざ自分で作ろうとしないで、素直にSOAPなり使ってWebサービスとして実装したほうが楽チンな予感が・・・
341デフォルトの名無しさん:2008/04/30(水) 00:55:05
>>338
データのバイナリ構造を定義するDSLと、
それを使ってバイトストリームを処理するコードに分けて考えればいいんじゃない?

あと、C言語の場合、確かに構造体定義はバイナリ構造の定義に転用しやすかったけど、
そういう用途に最適だったとは言い難いよね。
パディングやアライメントに関してはコンパイラ拡張でごまかしてるし。
342デフォルトの名無しさん:2008/04/30(水) 01:03:24
バイナリファイルの読み書きかと思ってたよ。
ネットワーク腰の場合はunsafe等を使うとアプリやライブラリの融通が利かなくなってくるから、全面改訂した方が今後の為かと・・・
全面書き換えを強くお勧め。
343デフォルトの名無しさん:2008/04/30(水) 01:24:34
初めはStructureToPtrを使用してと考えていたのですが、
>>330のようにループしながらキャスト位置を変えて処理
という事がしたくて、>>330のようなロジックになりました。

今もMarshalクラスを見直していたのですが、なかなか難しいですね

やぱり根本的な考え方を変えないと難しそうですね
>>339-342さん、色々とアドバイスありがとうございました。
344デフォルトの名無しさん:2008/04/30(水) 01:30:07
>初めはStructureToPtrを使用してと考えていたのですが、
>>330のようにループしながらキャスト位置を変えて処理
>という事がしたくて、>>330のようなロジックになりました。
StructureToPtrを使ってもできるから使わない理由付けとしては弱いが。
345デフォルトの名無しさん:2008/04/30(水) 02:53:42
XmlTextReader/Writerについて質問
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6387.txt

17行目の trwite.Formatting = Formatting.Indented; を書かないとpriceが取得できないみたいなんだけどどうして?
346デフォルトの名無しさん:2008/04/30(水) 07:36:11
デスクトップのアイコンの位置を取得して、
こちらで位置を指定して移動させたいです。

おそらくこんなこと↓だと思うのですが、
http://7ujm.net/C++/DesktopIconPoint.html
++で書いてあるようで僕には分かりません。。。

どなたかC#で教えてもらえませんか?
よろしくお願いします。
347デフォルトの名無しさん:2008/04/30(水) 08:24:12
>>345
http://msdn.microsoft.com/ja-jp/library/ms162529(VS.80).aspx
> このメソッドは、開始タグと要素の内容を順に読み取り、リーダーを終了要素タグの後に移動します。
Indentedにしない場合は商品名ノードでReadElementContentAsStringを呼んだ直後に
XmlTextReaderの位置が価格ノードの先頭に来るけど、そのままwhileの次のループにいって
Read()してしまうので価格が正しく取得できてない。
Indentedの場合、ReadElementContentAsStringを呼んだ直後は商品名ノードの後ろかつ価格ノードの前にある
空白要素(改行)にいるので正しく取得できる。
348デフォルトの名無しさん:2008/04/30(水) 08:37:10
>>346
C++というより、ほとんどWin32API
MSDNライブラリとかググりながら何やってるか調べてみればいい。
.NETでもほとんどは結局API呼び出してるし、憶えて損はない
APIを呼び出す方法はP/Invokeかなんかをキーワードにググってみれ。

唯一俺には謎なのがListView_GetItemPositionやるためだけにVirtualAllocExやってることだけど。
LVM_GETITEMPOSITIONをSendMessageするだけじゃだめなのかな?
試してみるぜ。
349デフォルトの名無しさん:2008/04/30(水) 08:46:46
>>346
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2155754&SiteID=1
アイコンの位置の取得方法。
移動はSendMessageすればいいだけ。のはず。
350デフォルトの名無しさん:2008/04/30(水) 10:18:31
>>348
プロセス越しにポインタ扱う場合は必須よ。
lParamがPOINT*で位置を返してくるからね。
351デフォルトの名無しさん:2008/04/30(水) 17:09:53
クラス勉強してから関数を勉強したのですが

クラスと関数の違いがよくわかりません

どんな違いがあるのでしょうか?
352デフォルトの名無しさん:2008/04/30(水) 17:26:31
>>351
もう少し具体性のある質問をしないとまともな回答は付かないと思うぞ。
C#が始めてのプログラミング言語なのか?
もしそうならC#での関数は必ずクラスのメンバとして記述する必要がある。
353デフォルトの名無しさん:2008/04/30(水) 18:19:16
深い悟りを開けばクラスと関数に違いはないと言えるようになるかも知れない
354デフォルトの名無しさん:2008/04/30(水) 19:32:34
全く定義の異なるものが同じに思えるとは悟りの境地ですな。
355デフォルトの名無しさん:2008/04/30(水) 19:39:04
>>351
真面目に答えると(いや本当)違いがわかるまで勉強する、が正しい。
本当は先にC(別にVBでもいいんだけど)の構造体を理解してるとクラスの意味を理解しやすいんだけどね。
356デフォルトの名無しさん:2008/04/30(水) 19:44:35
クラス=構造体+関数
357デフォルトの名無しさん:2008/04/30(水) 19:47:16
なんでやねん。
358デフォルトの名無しさん:2008/04/30(水) 21:14:37
関数を遅延評価するとクラスになる
359デフォルトの名無しさん:2008/04/30(水) 21:17:33
Cの関数 = C#の静的メソッド
360デフォルトの名無しさん:2008/04/30(水) 21:55:39
歩く(人間1, 3歩); 走る(人間1, 5歩); 止まる(人間1); こう書くより,
人間1.歩く(3歩); 人間1.走る(5歩); 人間1.止まる(); こう書いた方が自然でしょ
ただそれだけのこと
361デフォルトの名無しさん:2008/04/30(水) 22:44:02
>>347
なるほどサンクス
362デフォルトの名無しさん:2008/04/30(水) 22:48:34
今15歳です
今年プロコンに出ることになったのですがほとんどプログラミングできません
(cでifwhileがほんの少しわかるくらい)
先輩がこのゴールデンウィーク中にできるだけc♯を覚えて来いといわれました

開発環境はvisual c# 2008です
できるだけ短時間でわかりやすい(書けなくてもいいからコードが読めるようになる)
サイトを教えてください
363デフォルトの名無しさん:2008/04/30(水) 22:55:01
364デフォルトの名無しさん:2008/04/30(水) 22:55:33
ならアンタ教えてくれよ、ってその先輩に言えばいいじゃん。
なんといっても人に教わるのが一番早いよ。
まあ「教師」がアホならそうとも限らないが・・・

それがダメならどんな糞本でも書籍を読んだ方がいい。
web上のテキストなんて(個人差もあるだろうが)長時間読む気しないでしょ。
365デフォルトの名無しさん:2008/04/30(水) 23:09:46
>>363
thx

>>364
先輩はググレだそうです

本も一冊買ってみようかな
366デフォルトの名無しさん:2008/04/30(水) 23:26:23
>>365
それは先輩が正しい。
ぐぐって出てくるところ、並みの本より情報そろってるぞ。
367デフォルトの名無しさん:2008/04/30(水) 23:36:41
そうかな。
初心者がweb上の断片的な情報から体系的に学べるわけないと思うけどね俺は。

まあ@itの連載とか「猫でもわかる」みたいなある程度まとまった文章もあるにはあるが。
368デフォルトの名無しさん:2008/04/30(水) 23:42:00
そうかな。
初心者が本の断片的な情報から体系的に学べるわけないと思うけどね俺は。
369デフォルトの名無しさん:2008/04/30(水) 23:44:52
どうせベターCとして使うんでしょ?
370デフォルトの名無しさん:2008/04/30(水) 23:45:55
なんで頭悪い奴の振る舞いってのはこうも類型的なんでしょw
371デフォルトの名無しさん:2008/04/30(水) 23:47:13
この間プログラミングを初めて始めた俺は本の方がわかりやすいと思ったよ
372デフォルトの名無しさん:2008/04/30(水) 23:50:40
自分に合いそうな学習方法を選択できるならすればいいし
できないなら言われたようにすればいい。
373デフォルトの名無しさん:2008/04/30(水) 23:51:34
>>370
お前が言うか
374デフォルトの名無しさん:2008/05/01(木) 00:16:08
>>369
ベターC C#が?無い無い
375デフォルトの名無しさん:2008/05/01(木) 00:18:56
根拠も 無い無い
376デフォルトの名無しさん:2008/05/01(木) 00:19:14
>>362を見る限り,GUIを使うためだけにCじゃなくてC#を使うだけなんじゃないの
377デフォルトの名無しさん:2008/05/01(木) 00:22:20
またプロコンか・・・
378デフォルトの名無しさん:2008/05/01(木) 00:25:09
enumの要素数を取得するいい方法ありませんか?
379デフォルトの名無しさん:2008/05/01(木) 00:27:23
Enum.GetValuesでいいんじゃね
380デフォルトの名無しさん:2008/05/01(木) 00:28:25
>>378
Enumのstatic メソッドにあったはずと思うが。。
381デフォルトの名無しさん:2008/05/01(木) 00:32:19
>>379-380
ありがとうございます。
382デフォルトの名無しさん:2008/05/01(木) 00:53:38
>>362
まず日本語書けるようになれ。
まじめな話し人に質問する時は書き込む前の推敲くらいしてこい
383デフォルトの名無しさん:2008/05/01(木) 01:02:43
優しさがねえなあ
384デフォルトの名無しさん:2008/05/01(木) 01:04:31
どうでもいいが書けないけど読めるっていうのはどういう状態なんだろうな
385デフォルトの名無しさん:2008/05/01(木) 01:05:13
書くより読むほうが難しいなたいがい
386デフォルトの名無しさん:2008/05/01(木) 01:10:17
>>382じゃないがコメントが日本語で書かれてるはずなのに日本語じゃないやつとか居るしなw

>>362
俺はプログラミングWindowsのC#編で勉強したわ
C#はこれといって難解な言語という訳じゃないと思うが
まるっきり書けないやつだと意味わからない機能(なぜ作られたのか、とか、何ができるのかとか)は多いだろう。
どの程度のレベルの学校か知らんが、正直一週間でプロコンでどうこうできるレベルになるのは無理。
387デフォルトの名無しさん:2008/05/01(木) 01:14:06
>>384
わかりやすく国語に例えるとこういうこと

薔薇、憂鬱
388デフォルトの名無しさん:2008/05/01(木) 01:19:57
独習C#と、オライリーのプログラミングC#
どっちか読もうと思うんだけど、どっちがいい?
389デフォルトの名無しさん:2008/05/01(木) 01:24:03
>>387
いや、少なくとも読むためには構文理解しなきゃだめだろ?
構文理解したら、遅いとしてもヘルプ読みながらなら書けるだろ?
英語じゃあるまいしフィーリングで読むか?当たりを付けて読むのはありだが。
390デフォルトの名無しさん:2008/05/01(木) 01:33:58
C#でDictionaryの値の更新について、分からないことがあります。

Dictionary<int, int> a = new Dictionary<int, int>();
a.Add( 1, 1 );
a.Add( 2, 1 );
foreach ( int key in a.Keys ) {
 a[ key ] = 2;
}

というコードを書いたんですが、二つ目の要素を更新する際に、
System.InvalidOperationException: コレクションが変更されました。列挙操作は実行されない可能性があります。
という例外が返ってきました。
foreachの中でコレクションに追加、削除した場合にこの例外が発生するのはわかるのですが、
要素を更新した場合でも起こるのでしょうか。
また、であれば、Dictionaryの一括代入(例えば初期化)はどのようにすればいいのでしょうか。
よろしくお願いいたします。
391デフォルトの名無しさん:2008/05/01(木) 01:46:42
確認してないけど、とりあえず思い付きで

KeysがIEnumerable<>あたりになってるんだろうから、
ToArray()してみるとか一時変数に入れてみるとか
392デフォルトの名無しさん:2008/05/01(木) 01:53:13
>>391
KeysをToArray()はできないようです。
というか、Dictionaryの値をかきかえているのに、KeysをToArray()したり一時変数に入れたりするのですか?
393デフォルトの名無しさん:2008/05/01(木) 01:56:19
>>391
あ、一時変数入れたらできたみたいです。
ありがとうございます。
ちなみに、Keysを書き換えている訳ではないのに、なぜ怒られたのでしょうか。
394デフォルトの名無しさん:2008/05/01(木) 02:17:23
>>309
それってDictionary<string,string>でも起こる?
395デフォルトの名無しさん:2008/05/01(木) 03:21:13
>>388
独習C#はお勧めしない。その2つならオライリー。
オライリーも章構成がおかしい気がするけど。
396デフォルトの名無しさん:2008/05/01(木) 09:39:34
>>388
つ 宇宙仮面のC#プログラミング
397デフォルトの名無しさん:2008/05/01(木) 12:22:55
もうそのガキ臭い名前だけで見る気しないんだよね俺なんか。
398デフォルトの名無しさん:2008/05/01(木) 14:54:59
ITmediaの連載でいいんじゃね
俺はその後プログラミング.NETFramework読んで学んだ
399デフォルトの名無しさん:2008/05/01(木) 15:01:18
>>388
独習C#の方がいいよ。
400デフォルトの名無しさん:2008/05/01(木) 15:11:20
http://ufcpp.net/study/csharp/index.html

俺はよくここのお世話になる

2.0や3.0からの差分が解説してあってわかりやすい
401デフォルトの名無しさん:2008/05/01(木) 15:15:26
>>400
それ俺もお気に入り
一応全部読んだ
402デフォルトの名無しさん:2008/05/01(木) 16:01:38
すいません VS2005 のデバッガで、ある変数の値が変化したときにブレイクインするようなことってできますか?
ある変数が意図しない内容に変ってしまうので、追跡をしようかと思っています。
403デフォルトの名無しさん:2008/05/01(木) 16:49:16
それってC++のほうにしかなかったような。
setter 使ってるならそこで止めればいいだけだけど、そうでないならログ出力かなあ
404デフォルトの名無しさん:2008/05/01(木) 16:58:09
>>403 のレスをヒントに、変数をプロパティにして、そこでブレイクして呼び出し履歴で確認しました。
考えれば当たり前なのですが、気づきませんでした。
ありがとうございましたm(__)m
405デフォルトの名無しさん:2008/05/01(木) 17:05:56
条件付ブレイクってできたよな
なんか今探しても出てこないんだがExpressだからかな
406デフォルトの名無しさん:2008/05/01(木) 17:11:16
Ctrl+B で無理なら知らん
407デフォルトの名無しさん:2008/05/01(木) 17:49:23
pdbファイルというのが勝手に作られるのですが、
これは消しても問題ないのでしょうか?
408デフォルトの名無しさん:2008/05/01(木) 17:59:30
それはデバッグ情報。しないなら問題ない
409デフォルトの名無しさん:2008/05/01(木) 19:02:17
>>408
ありがとうございます。
410デフォルトの名無しさん:2008/05/01(木) 21:16:19
>>400
オレもおれも
411デフォルトの名無しさん:2008/05/01(木) 21:49:55
数値演算のプログラムを書いたのですが、
.NET2003 と .NET2005 で同じソースを実行しても
計算結果が若干異なります。なぜですか。
412デフォルトの名無しさん:2008/05/01(木) 22:03:16
>>411
仕様です。
413デフォルトの名無しさん:2008/05/01(木) 22:22:20
浮動小数点数に精密さを求めちゃなんねぇぜ(誤差をきっちり考慮して記述した場合を除く)
414デフォルトの名無しさん:2008/05/01(木) 22:24:29
>>412-413
適当なこと言うなよw

>>411
そういう時は黙ってソース出すんだよボケ。
415デフォルトの名無しさん:2008/05/01(木) 22:36:19
>>414
ソース準備にはちょっと時間かかりますが、
.NETユーザには常識かどうか知りたかったのです。

416デフォルトの名無しさん:2008/05/01(木) 22:40:00
>>405
[Conditional("DEBUG"), DebuggerHidden]
static void BreakIf(bool condition) { if (condition) Debugger.Break; }
こういうの作っとくと便利だよ
ヒットカウントもラムダ式で簡単に作れる
417デフォルトの名無しさん:2008/05/01(木) 22:52:20
>>415
コンパイルオプションの確認は当然してるよな
418デフォルトの名無しさん:2008/05/01(木) 23:33:39
>>417
していないです。。どういうオプションなら計算結果変わるのですか。
419デフォルトの名無しさん:2008/05/01(木) 23:41:46
こいつ、バカだろ。
420デフォルトの名無しさん:2008/05/01(木) 23:47:16
VC++にはあったけど、C#にもあるんだっけ
421デフォルトの名無しさん:2008/05/02(金) 00:38:33
>>414
どう考えても原因はアプリだろ。仕様です。
422デフォルトの名無しさん:2008/05/02(金) 02:30:15
>>421
頭オカシイ人?w
自分で何を言っているか理解してるかい?
423デフォルトの名無しさん:2008/05/02(金) 06:59:40
とにかく、さっさとIL晒せや。
424デフォルトの名無しさん:2008/05/02(金) 07:21:17
>>412 が正解

Java strictfp でぐぐれ。

多分.NET 2.0からJITコンパイラがSSEガンガン使い出したので
そのせいで結果が変わったんだろう。
425デフォルトの名無しさん:2008/05/02(金) 08:40:40
>>424
そんなはずねえだろ、と思うけどな。

もっとも、実装方法によって誤差が変わる算術関数の話をしてるのなら不思議はないけど。
少なくとも普通に四則演算の組み合わせなら変わるわけがない。
426デフォルトの名無しさん:2008/05/02(金) 08:46:46
>>425
特に除算に関してはプラットフォーム間の差異が激しいぞ。
一部の RISC には除算命令が存在しない場合だってあるし。
427デフォルトの名無しさん:2008/05/02(金) 08:56:47
>>424
それだと2005と2008で結果が異なるのはおかしかろう。
とにかくソースがないことには検証できっこない。
428デフォルトの名無しさん:2008/05/02(金) 09:30:34
>>427
2003と2005
429デフォルトの名無しさん:2008/05/02(金) 10:01:19
>>425
>少なくとも普通に四則演算の組み合わせなら変わるわけがない。

x87 FPUは80 bitの浮動小数点数レジスタ(スタック)を持っている。
floatだろうがdoubleだろうが、スタックに読み込まれたら80 bitに拡張される。

スタック同士の演算精度をどれぐらいに保つかはFPUコントロールレジスタで制御される。
高精度演算モードだと、float同士の演算も80 bitで行われることになる。
ただしメモリに書き出すときには自動的に丸められる。

結果的に、レジスタ上で演算を繰り返す限りは
データ型のサイズに関わらず拡張doubleの精度で演算が行われることになる。


一方、SSEのレジスタは32 bitと64 bitを厳密に区別している。
JITコンパイラが最適化を行った結果、
floatの演算がSSEレジスタ上で演算を繰り返す場合、
中間状態は常にfloat精度ということになる。


演算途中の格納精度が異なるため、単なる四則演算でも演算結果が変わることがある。
もちろんどの環境でも同じコードにJITコンパイルされるなら同じ結果が得られるようになる。
が、.NETにそういう仕組みはない。
430デフォルトの名無しさん:2008/05/02(金) 10:28:20
>>429
x87命令だけでもメモリへの書き出しを行うかどうかで変わるから厄介かな。

例えば次のコードをVisual C# 2008でReleaseビルドすると、
F5実行とCtrl+F5実行で結果が違う。(64 bit環境の人は同じになるかも)
同じILというだけでは計算結果が同じことは保証されないよ。

float x = 0.00000000000001f;
float y = 1.0f + x;
float z = y -= 1.0f;
Console.WriteLine("is x zero? {0}", z == 0);

CLRのバージョンが変わって、
最適化のパターンが変わると、同じILであっても計算結果が変わっておかしくないかな。
431デフォルトの名無しさん:2008/05/02(金) 11:25:16
decimal使うんではだめなの?
432デフォルトの名無しさん:2008/05/02(金) 11:38:04
メモリをたくさん使うからじゃね?
3日前にプログラミング始めた初心者だから知らんけど
433デフォルトの名無しさん:2008/05/02(金) 11:46:44
退路を確保したすばらしいレスですね
434デフォルトの名無しさん:2008/05/02(金) 12:08:21
仕様ですと言い切る強い心を持て
435デフォルトの名無しさん:2008/05/02(金) 12:13:07
仕様ですみません
436デフォルトの名無しさん:2008/05/02(金) 12:16:42
仕様ですすみません
437デフォルトの名無しさん:2008/05/02(金) 12:23:14
仕様ですすすみません
438デフォルトの名無しさん:2008/05/02(金) 12:24:09
ソース晒さないバカだから、ネタだろ。
439デフォルトの名無しさん:2008/05/02(金) 12:30:56
>>429-430
昔の常識は通用しないのなスマン。。
まあPCの実数の扱い方知ってれば普通はそれでも無問題なんだけど。

演算の結果についてナニがどこまで保証されてるのかってドキュメントになってったっけ?
440デフォルトの名無しさん:2008/05/02(金) 12:36:15
ゲームのリプレイデータの互換性とかでも問題になっていた気がする
441デフォルトの名無しさん:2008/05/02(金) 13:03:37
ソースが用意できました。

void tmpcalc()
{
double a = -0.00000717;
double b = 0.446;
double c = 0.100;
double d=1.248;
double result;
double e1 = 124.0 *(1.0/12.0);
//double e2 = 124.0 /12.0;

result = ((a * e1 + d) * Math.Exp(-b * e1) + c);
//result = ((a * e1 + d) * Math.Exp(-b * e2) + c);

//NET2005 result = 0.11243570180467005
//NET2003 result = 0.11243570180467004


これだけだと微小な差ですが、最終計算結果はかなり変わってきます。
他に原因あるかもしれませんが、ひとまずソース書きます。
442デフォルトの名無しさん:2008/05/02(金) 13:07:09
コンパイルオプションは同じ?
443デフォルトの名無しさん:2008/05/02(金) 13:08:42
> 最終計算結果はかなり変わってきます。

浮動小数点は誤差があるのを考慮して、
計算順序等を考えるのが基本
444デフォルトの名無しさん:2008/05/02(金) 13:10:41
コンパイラやコンパイルオプションが変わると
全く同じ計算順のコードにコンパイルされるとは限らないから、
コンパイラ変わるとそういう誤差が出るのは仕方が無い。

ほぼ差がない値同士の差での割り算が式に含まれてると、
凄い大きな値になるというのと組み合わせて考えると、
最終計算結果が大きく変わるということは十分あり得る話。
445デフォルトの名無しさん:2008/05/02(金) 13:20:56
カオスの再発見ですね、わかります
446デフォルトの名無しさん:2008/05/02(金) 13:22:29
バタフライエフェクトですね、わかります
447デフォルトの名無しさん:2008/05/02(金) 13:25:01
風が吹いて桶屋が儲かったんですね、わかります
448デフォルトの名無しさん:2008/05/02(金) 13:36:07
桁落ちでググ(ry
449デフォルトの名無しさん:2008/05/02(金) 15:02:44
>>442
特に注意するコンパイラオプションはどれですか?
450デフォルトの名無しさん:2008/05/02(金) 20:16:35
で、再現した奴いるの?
451デフォルトの名無しさん:2008/05/02(金) 20:54:20
つまり狼少年ってことですね、わかります
452デフォルトの名無しさん:2008/05/02(金) 21:41:01
ということにしたいんですね、わかります
453デフォルトの名無しさん:2008/05/02(金) 21:47:42
これと同じなのかな
ttp://homepage3.nifty.com/blacksword/readme_j.htm
> SSEを持ったCPU向けのバイナリでは浮動小数点演算をFPUからSSEスカラー演算に置き換えますが演算精度が32ビットなため出力結果に誤差が生じ出力ファイルの内容とサイズがリファレンスと異なる結果となります。SSE最適化パッチでも同様の問題が発生します。
454デフォルトの名無しさん:2008/05/02(金) 22:55:08
>>441
変わらないところを書いても意味無いぞ、変わるところが重要なところだ。
大抵、足し算・引き算のある場所、1/x や log では、無限大の周辺に問題は集中するから追ってみろ。

例1
double s = 0 ;
double dt = 0.00001 ;
for( int t = 0 ; t < 100 ; ++t )
{
  s += f(t) * g(t) * dt ; // こういうのを見つけたら += の部分を追ってみろ、大抵ここで起こる。
}

例2
x = 1.00001;
y = (x*x + 2*x - 1)/(x*x - 1); // 分母が 0 近傍で、分子も 0 近傍だ、こういう時は log を取って足し算・引き算に書き換えろ。
455デフォルトの名無しさん:2008/05/02(金) 23:01:26
>431
誤差が出てはいけない状況では普通にdecimal使ってるだろ。
456デフォルトの名無しさん:2008/05/02(金) 23:03:30
>>455
十進数で割り切れる場合のみの有効な誤差無しを使ってどうする、一度基礎から勉強しなおしたほうがいいぞ。
457デフォルトの名無しさん:2008/05/02(金) 23:51:55
>>454
確かにそうですが、2003/2005 両方比較していくのは
なかなか難しいです。連休明けに調査再開します。
ありがとう。
458デフォルトの名無しさん:2008/05/03(土) 02:41:34
ILの差分みればいいんじゃね
459デフォルトの名無しさん:2008/05/03(土) 08:56:00
Win32APIのPathCompactPathを使用してステータスバーに収まるようにパスを表示したいのですが
第1引数に何を渡せばいいのかが分かりません。
どうかご教授のほどよろしくお願いいたします。
460459:2008/05/03(土) 09:12:17
StringBuilder str = new StringBuilder(fileName);
Graphics g = this.statusStrip1.CreateGraphics();
PathCompactPath(g.GetHdc(), str,
this.statusStrip1.ClientSize.Width);
this.toolStripStatusLabel1.Text = str.ToString();
で自己解決しました。
お騒がせしました。
461デフォルトの名無しさん:2008/05/03(土) 09:24:13
GetしたものはReleaseしなくちゃ
CreateしたものはDisposeしなくちゃ
462デフォルトの名無しさん:2008/05/03(土) 09:44:34
結局、ガベコレというのは幻想でしたね。
463デフォルトの名無しさん:2008/05/03(土) 10:09:06
それなりには役に立つよ
464デフォルトの名無しさん:2008/05/03(土) 10:24:17
WinFormのオブジェクトがアンマネージドリソースを
抱えすぎているのは構造的な欠陥だとは思うな。
そのせいで>>462のような論調が後を絶たない。
WPFを見るとわかるけどほとんどDisposeは不要になってる。
465デフォルトの名無しさん:2008/05/03(土) 11:18:14
WPFは普及しない。なぜならDisposeが不要だからだ。
466デフォルトの名無しさん:2008/05/03(土) 11:51:02
じゃあManageDirectX普及してくださいよ……
467デフォルトの名無しさん:2008/05/03(土) 11:52:46
そんなものはありませんでした
468デフォルトの名無しさん:2008/05/03(土) 12:45:34
わかります
469デフォルトの名無しさん:2008/05/03(土) 12:55:07
>>464
そもそもその「>>462のような論調」が的外れだと思うんだけど。。

Disposeが必要かどうかはアンマネージリソース使ってるかどうかと
関係ないだろうw
470デフォルトの名無しさん:2008/05/03(土) 13:19:40
あんた何いってんのww
471デフォルトの名無しさん:2008/05/03(土) 13:27:36
469はDisposeが必要な設計になってるのがおかしいと言いたいんだろ
472デフォルトの名無しさん:2008/05/03(土) 13:32:45
もうぬるぽでいいよ
473デフォルトの名無しさん:2008/05/03(土) 13:39:07
>>471
違うよw
そもそもGCとは「リソース管理の自動化」と「リソースの効率的な活用」という
二つの二律背反の命題を両立させる銀の弾丸ではない、ということ。
474デフォルトの名無しさん:2008/05/03(土) 14:04:10
なんでStreamReaderとかってGCしてくれないの?
475デフォルトの名無しさん:2008/05/03(土) 14:06:12
「俺様」がストリームを使わなくなるタイミングをエスパーして自動で閉じろっての?
476デフォルトの名無しさん:2008/05/03(土) 14:06:34
放置しとけばそのうちGCされるときに呼ばれるファイナライザ内で閉じられる
でもそんなの気持ち悪いでしょ? GC云々とはまた別の問題
477デフォルトの名無しさん:2008/05/03(土) 14:14:42
全然気持ち悪くない。それが理想のプログラミング。
自分で破棄なんて旧世代の考え
478デフォルトの名無しさん:2008/05/03(土) 14:16:05
理想と現実 だいぶ違うから 夢から覚めなさい〜
479デフォルトの名無しさん:2008/05/03(土) 14:17:47
>>478
Hカップか?
480デフォルトの名無しさん:2008/05/03(土) 14:18:08
>>477
統合失調脳だねw
だからお前がいつファイルならファイルを閉じたいと思っているかはコンピュータには
ワカンネエの、わかる?

いや本気で、統合失調の奴もこういう思考をするんだよね。
「思考盗聴」とかなんとか言って、自分の思考が読まれてると感じられるらしいw
481デフォルトの名無しさん:2008/05/03(土) 14:19:38
というか、477の頭には他のスレッドとか他のプロセスのことがないのかもしれないね。
482デフォルトの名無しさん:2008/05/03(土) 14:25:22
>>475
オブジェクトが参照から外れたら閉じてくれてもよさそうじゃね
483デフォルトの名無しさん:2008/05/03(土) 14:27:20
>>477
あほか?閉じる処理自分ですべき。それ以降はGC。
484デフォルトの名無しさん:2008/05/03(土) 14:27:22
>>482
その「オブジェクトが参照から外れた」を確認するのにコストがかかるんだよ。
485デフォルトの名無しさん:2008/05/03(土) 14:28:02
↑は448へのレス
486デフォルトの名無しさん:2008/05/03(土) 14:29:08
なんだこのスレ リアル厨が休みで荒れてきたか?
487デフォルトの名無しさん:2008/05/03(土) 14:37:35
スコープから外れる度に参照をスキャンするのは効率が悪いな
まぁusingあるんだからそれで良しとしようや
488デフォルトの名無しさん:2008/05/03(土) 15:32:30
>>486
GWだ
489デフォルトの名無しさん:2008/05/03(土) 15:45:48
>>485の意味が分からないんだけど、誤爆?
490デフォルトの名無しさん:2008/05/03(土) 16:18:19
そのうち無停止GCが並列処理して参照から外れたものをバンバンFinalizeしてくれるようになるさ
491デフォルトの名無しさん:2008/05/03(土) 17:07:33
C++/CLIは、スコープを抜けたら自動的にDisposeを呼んでくれるんだけどね。
ただし、参照じゃなくて、ローカル変数として宣言した場合だけど。
492デフォルトの名無しさん:2008/05/03(土) 17:14:58
あれはどう考えてもわかりにくくないか
わざわざブロック切ってusingみたいにしたくなりそう
493デフォルトの名無しさん:2008/05/03(土) 17:15:06
C#にはコピーコンストラクタがないから、
デフォルトで勝手に捨てられるようにすると不便。
494デフォルトの名無しさん:2008/05/03(土) 17:24:00
>>492
従来のC++と全く一緒だから、分かりにくいことなんてないでしょ。

/* C++ */
class C;
{ C c;
} // destructed
{ C* c = new C();
delete c; // destructed
}

/* C++/CLI */
ref class C;
{ C c;
} // disposed
{ C^ c = gcnew C();
delete c; // disposed
}

/* C# */
class C;
{ using(C c = new C()) {
} // disposed
}
{ C c = new C();
c.Dispose(); // disposed
}
495デフォルトの名無しさん:2008/05/03(土) 17:51:18
deleteしなくていいんだよ
C++ではローカル変数に作ったものはスコープを抜ける時にデストラクタが呼び出される
496デフォルトの名無しさん:2008/05/03(土) 18:07:40
えーと…
497デフォルトの名無しさん:2008/05/03(土) 18:08:25
C++の知識がなくて困っているのは分かったから、C++のスレでやれよ
498デフォルトの名無しさん:2008/05/03(土) 18:16:37
だから、
C#:
using(var fileStream = new FileStream("hogehoge.txt"))
{
...
}

C++
FileStream fileStream("hogehoge.txt");
...
は等価で、C++ではスコープを抜ける時に勝手にDisposeされる
499デフォルトの名無しさん:2008/05/03(土) 18:26:33
>>498
DisposeするのはすでにC++じゃないし、C++の知識がなくて困っているのは分かったから、C++のスレでやれよ
500デフォルトの名無しさん:2008/05/03(土) 18:30:59
↑話を理解してない馬鹿
501デフォルトの名無しさん:2008/05/03(土) 18:32:00
スレのタイトルも読めないバカに言われたくはない
502デフォルトの名無しさん:2008/05/03(土) 18:37:15
↑話を理解してない馬鹿
503495,498:2008/05/03(土) 18:38:58
すまん>>494と同じこといってた
サンプルを誤解してしまった
504デフォルトの名無しさん:2008/05/03(土) 18:41:21
ひどい荒らしだ
505デフォルトの名無しさん:2008/05/03(土) 18:46:03
今後は、これで決定だよ、ウザイものは全部なくなって終わり。以上終了。
>WPFを見るとわかるけどほとんどDisposeは不要になってる。
>そのうち無停止GCが並列処理して参照から外れたものをバンバンFinalizeしてくれるようになるさ
506デフォルトの名無しさん:2008/05/03(土) 19:03:09
CPUはマルチコアがトレンド、この方向性に沿わない物は遠からず消えてなくなる運命
マルチスレッドで全部のオブジェクトについて把握しきってDisposeしろとか無茶もいい所だよ。
GCも遠からず並列処理が入るだろう。
507デフォルトの名無しさん:2008/05/03(土) 20:02:23
if(myForm.showdialog()==DialogResult.ok)
~~~~~~~~~~~~~~~~~~~

このDialogResultみたいなのを自分で用意したいのですが、
これってなんていう型?になるんでしょうか?
構造体みたいな定数みたいな・・・
508デフォルトの名無しさん:2008/05/03(土) 20:04:11
enum
509507:2008/05/03(土) 20:38:23
>>508
ありがとうございます!
510167:2008/05/03(土) 21:24:21
Console.Write("")のなかに文章をかいたのですが、
内容がながくて編集部分がひろがってしまい、そのうえみにくいので
右端で折り返したいのですがどうすればいいですか?
(出力時ではなくてコードをかいているときです)
ちなみにMicrosoft Visual Studio 2008をつかっています
511デフォルトの名無しさん:2008/05/03(土) 21:25:25
""
""
""
512510:2008/05/03(土) 21:30:25
すいません511さんの言うとおり(?)
改行して""で囲んだのですがエラーがでました。
お願いですが実際に例をみせていただけないでしょうか?
513デフォルトの名無しさん:2008/05/03(土) 21:38:58
"..."
+ "..."
514デフォルトの名無しさん:2008/05/03(土) 21:40:00
改行したならプラスを付けなきゃ
"foo"
+"bar"
+"baz"
515510:2008/05/03(土) 21:41:52
513様ありがとうございます。
516510:2008/05/03(土) 21:44:44
連スレすいません、もうひとつ質問です
if文で真の場合に処理AとBをして偽の場合は処理Bをするとしたら
・goto文を使う
・真のところにも偽のところにも処理Bを書く
のどちらがよいですか?おしえてください
517デフォルトの名無しさん:2008/05/03(土) 21:47:12
>>516
trueでもfalseでもBをやるなら、ifの外に置けば?

if (・・・) {
  A
}
B
518デフォルトの名無しさん:2008/05/03(土) 21:47:21
if(foo == ture){A;}
B;
519デフォルトの名無しさん:2008/05/03(土) 21:47:50
if(...){
 処理A;
}
処理B
520デフォルトの名無しさん:2008/05/03(土) 21:48:14
if(条件)
{
// 処理A
}
処理B
521510:2008/05/03(土) 21:48:53
ありがとうございます。
522デフォルトの名無しさん:2008/05/03(土) 21:52:04
510、大人気だな。
523デフォルトの名無しさん:2008/05/03(土) 23:07:56
>>507
WPFではbool?を返してくるようになったからそっちにしてもいいかも
524510:2008/05/03(土) 23:50:15
あと、お金がないのでカンパお願いします。m(_ _)m
525デフォルトの名無しさん:2008/05/03(土) 23:57:38
>>524
口座番号書いとけば、物好きが振り込んでくれるかもよ。
526510:2008/05/04(日) 00:01:39
あと、彼女欲しいので女の子紹介してください。m(_ _)m
527510:2008/05/04(日) 00:37:23
とりあえず今からオブジェクト指向について学びたいので
俺みたいな厨房でもわかる解説サイトおしえてください
528510:2008/05/04(日) 00:46:40
口座は持ってないので電話番号書いておきます
0120-・・・
529デフォルトの名無しさん:2008/05/04(日) 00:59:04
おまえら初心者向けのスレで悪ふざけは程々にしとけよ
530デフォルトの名無しさん:2008/05/04(日) 13:08:43
>>318 >>308
遅レスですが、ありがとう。

SQLiteの.netラッパーもあるんですね。検討してみます。
531デフォルトの名無しさん:2008/05/04(日) 16:56:12
既存のでかいプロジェクトを開いたときに
エントリポイントってどうやって探すものなんでしょう?

アセンブリ情報のスタートアップオブジェクトは「なし」
だったんで、Main( を検索しちゃいました。
532デフォルトの名無しさん:2008/05/04(日) 17:20:30
それでいいんじゃねえの
533デフォルトの名無しさん:2008/05/04(日) 17:20:42
>>531
でかいプロジェクトってなに?
534デフォルトの名無しさん:2008/05/04(日) 21:47:48
そういえばいつも思ってたんだけど、グローバル関数、何で採用してないんだろC#。
エントリポイントの構造に未だに気持ち悪さを感じるんだが、
仮にエントリポイントが単体で定義できてしまうとかえって気持ち悪いのかな?
535デフォルトの名無しさん:2008/05/04(日) 21:54:15
メソッドを見てもそれがどこに定義されてるのか分からないのはよろしくないということなんだろう
そんなこと言っても拡張メソッドはまさにそうなんだけども
536デフォルトの名無しさん:2008/05/04(日) 22:19:33
アプリケーション/プログラムクラスのプライベートメソッドというのは
個人的にはしっくりくるんだが…
537デフォルトの名無しさん:2008/05/05(月) 01:17:16
Static関数じゃ不満なの?
538デフォルトの名無しさん:2008/05/05(月) 01:27:58
不満だねえ
539デフォルトの名無しさん:2008/05/05(月) 01:29:11
名前空間やめてpartial classの内部クラスにしちまえばいいんじゃないの
540デフォルトの名無しさん:2008/05/05(月) 08:32:53
いままでC言語鹿経験無くて
これからC#始めたいと思ってるのですが
CとC#の違いを解説しているサイトなどが
あれば教えていただきたいです
541デフォルトの名無しさん:2008/05/05(月) 08:36:10
ない
542デフォルトの名無しさん:2008/05/05(月) 08:55:52
>>540
C の経験ないんだったら素直に C# 入門サイトだけ見りゃいいと思う
543デフォルトの名無しさん:2008/05/05(月) 09:03:35
確かに知らないものと比べても意味ないなw
どういう意図なんだろ。
544デフォルトの名無しさん:2008/05/05(月) 09:46:38
わざわざより理解の難しい言語との違いをなんで求めるか?
545デフォルトの名無しさん:2008/05/05(月) 09:50:07
鹿はしかなんじゃないのか?
546デフォルトの名無しさん:2008/05/05(月) 10:14:33
取りあえず猫C#をやってる始めたばかりの者ですが、この本ではメソッドの修飾子は全てpublicになっています。
別の入門サイトでは、基本的にprivateが推奨されているという記述があったのですが、
どちらが一般的なのでしょうか?
547デフォルトの名無しさん:2008/05/05(月) 10:17:45
>>546
基本はprivateだよ。
なんでもpublicにするのは悪い作法。
クラス外部からアクセスさせるメソッドだけをpublicにする。
548デフォルトの名無しさん:2008/05/05(月) 10:17:51
>>546
基本的にprivateが推奨されているのはメンバ変数。
メソッドがpublicなのは普通。privateメソッドを定義するのも普通。
549デフォルトの名無しさん:2008/05/05(月) 10:20:04
あー確かに公開する必要のないメソッドまでpublicにする必要は無いですね。
>>548は訂正します。
550デフォルトの名無しさん:2008/05/05(月) 10:23:05
>>546
猫は良くないからやめとけ。
551デフォルトの名無しさん:2008/05/05(月) 10:45:01
>>543
ではDelphi使いのためのC#入門というのはあるでしょうか?
552デフォルトの名無しさん:2008/05/05(月) 10:49:41
Delphi使いならカンで使え、作者は同じだ。
553デフォルトの名無しさん:2008/05/05(月) 11:34:25
Delphi歴は趣味で10年程度(DBは知らない)、C#に触り初めて4ヶ月の俺的印象

言語としてDelphiと大きく違うのは
・完全オブジェクト指向(グローバル変数・関数がなく、int含め全ての型がオブジェクト扱い)
・構造体(record)は継承できないクラスという感じ
・集合型がない
・文字はユニコード
・stringもStringBuilderも、Delphiのstringとは違う。
・DLL呼び出しが簡単
 使いたいpublicクラスが定義されたDLLやEXEを参照とusingに追加するだけで、そのまま使える
・ジェネリック型・デリゲート型がある
・.NETと密接に絡んでいるので、C#の機能なのか.NETの機能なのか区分けも難しい

VCLと.NETを比べると
・ActionManagerがない
・汎用TListのジェネリック型List<>等、リスト処理用のクラスが多数ある
・VCLよりWin32APIやらCOMやらを呼ばなくてもいいことのほうが多いが、
 逆にFindWindowやSendMessageとかのハンドル・メッセージを直処理する機能はないから、
 ラッパー関数を作るまでが面倒

開発環境
・コードの自動レイアウト機能がある
 }や;を入力した瞬間に、あらかじめ設定しておいたフォーマットに整形できる。
 入力時にインデント等を気にしなくてもいい反面、
 上下で=の位置を揃えていても下手に}を入力してしまうと水の泡になったりする。
・コードの補完機能がDelphiよりも強力な気がする
・メソッドの前で///と入力することでIDEから参照できるコメントが簡単につけられる
・デバッガ上でインタプリタ的にそのまま式やメソッドを実行できる
・デバッグ中に次に実行する行を変えたり、ソースを修正して変えたソースでそのまま続行できる
554デフォルトの名無しさん:2008/05/05(月) 11:39:54
ケチ付ける気はないけど暇なんだねえお宅も
555デフォルトの名無しさん:2008/05/05(月) 11:55:05
匿名メソッドとラムダ式
556デフォルトの名無しさん:2008/05/05(月) 11:58:36
>構造体(record)は継承できないクラスという感じ
違うだろw
557デフォルトの名無しさん:2008/05/05(月) 12:07:17
↑話を理解してない馬鹿
558デフォルトの名無しさん:2008/05/05(月) 12:09:20
>>557
556じゃないが、お前は本当に馬鹿だと思うよw
559デフォルトの名無しさん:2008/05/05(月) 12:10:19
構造体ほど言語によって定義がバラバラなのはないから、話が理解できなくて当然。
560デフォルトの名無しさん:2008/05/05(月) 12:14:35
なんでも揚げ足を取りたい思春期メンタリティーのとっちゃん坊やを例外とすれば、
大雑把な印象として「継承できないクラス」でいいと思うけどね。

「継承を禁止された」、とは言ってないわけだからねえ。
561デフォルトの名無しさん:2008/05/05(月) 12:21:50
メソッドの付いてないクラス、じゃないかなぁ
562デフォルトの名無しさん:2008/05/05(月) 12:22:57
>>556>>558
無知なんだから黙っとけ。
563デフォルトの名無しさん:2008/05/05(月) 12:23:45
564デフォルトの名無しさん:2008/05/05(月) 14:06:20
>>562
ヤツの行動パーターンの馬鹿さ加減に無知は関係ないだろw
565デフォルトの名無しさん:2008/05/05(月) 14:11:09
↑馬鹿
566デフォルトの名無しさん:2008/05/05(月) 14:31:30
>>547-549
ありがとうございます。
把握しました。そう読み替えようと思います

>>550
何かお勧めがありますでしょうか?
良ければ教えていただきたいです
567デフォルトの名無しさん:2008/05/05(月) 14:38:24
たぶん一つの本とか一つのwebページに固執というか深入りせずに
金と時間の許す範囲でいろいろザッピングするのがいいと思うよ。

書き手もそんなに精読される前提で文章書いてないし、
そうでなくてもガイジンさんと違って日本人はだいたい網羅的に説明するのって苦手だから
たった一人の書き手に依存するのは危険でもある。
568デフォルトの名無しさん:2008/05/05(月) 14:41:59
>>566
逆引きリファレンスみたいなのがいいよ
実行結果の画像とコードがしっかりのってる奴
569デフォルトの名無しさん:2008/05/05(月) 14:46:45
>>566はお勧めの入門書、ということで…
570デフォルトの名無しさん:2008/05/05(月) 14:49:46
ありがとうございます。
>>567
なるほど…一冊の本に依存するのは駄目ですか。
色々見るのが良いという訳ですね
>>568
本屋に佇む相当分厚い奴らの事でしょうか
今度ちょっと見てきます
571デフォルトの名無しさん:2008/05/05(月) 15:13:51
>>567
全く同じ文章を前にもどこかで読んだ
572デフォルトの名無しさん:2008/05/05(月) 15:54:06
俺が持ってる本
独習JAVA、C言語によるはじめてのアルゴリズム入門
Visual C++入門 ビギナー編、逆引きハンドブックVisual C#
573デフォルトの名無しさん:2008/05/05(月) 16:00:49
>>566
オライリーの初めてのC#がお勧め。
消防の僕にも完璧に理解が出来たぐらいだからすごく分かりやすい。

ちなみにリファレンス的なものは良くないと思う。
何も理解しなくても作れるし。
574デフォルトの名無しさん:2008/05/05(月) 18:07:34
処理をデリゲートのみで行ってて
参照できないインスタンスって
GCの回収対象になっちゃう?
575デフォルトの名無しさん:2008/05/05(月) 18:09:44
いいえ
576デフォルトの名無しさん:2008/05/05(月) 18:11:46
ありがとう
577デフォルトの名無しさん:2008/05/05(月) 18:55:14
逆引きリファレンスはクソだな
もっているだけで成長の道を閉ざす
578デフォルトの名無しさん:2008/05/05(月) 19:04:24
おれは役にたった。超便利。
オイラリーとか当り前のことを冗長に書きすぎてて、読むのは時間の無駄。
スキルや目的に合わせて選ぶのが吉。
579デフォルトの名無しさん:2008/05/05(月) 19:09:07
逆引き本とか見てコピペ君になる奴がいると仮定して(本当か?)
そいつは最初からその程度の人間なんじゃないか、と俺も思うね。
580デフォルトの名無しさん:2008/05/05(月) 19:15:11
逆引き本は逆引きが目的なんだから、
それで何かをマスターする目的で買う奴はいないと思う。
581551:2008/05/05(月) 19:51:09
とりあえず「C#の絵本」は読みやすかったよ

>>553
ありがとう
一番の問題は長年世話になったコンポーネント類なんだ
582デフォルトの名無しさん:2008/05/05(月) 20:17:53
>>581
C#覚えてオマイが実装して公開すればよくね?
583デフォルトの名無しさん:2008/05/05(月) 20:58:48
>>580
いや逆引き本の存在意義ってのは言語やライブラリを解説している本には書いてない、
細々とした個別のテクニックとかHow toを紹介することだろう本来。
584デフォルトの名無しさん:2008/05/05(月) 21:18:32
アプリケーション設定(Properties.Settings.Defaultでアクセスできるアレ)に
"hoge"という名前のstring型があるんだけど
これをXAML上でTextBoxにBindingってできるの?
585デフォルトの名無しさん:2008/05/05(月) 21:33:47
こまごました知識が得たかったら検索するかリファレンスを読むべき
逆引き本を見るような初心者には一番必要なことだ
586デフォルトの名無しさん:2008/05/05(月) 21:39:01
素人に初心者扱いされるとは。
587デフォルトの名無しさん:2008/05/05(月) 21:49:54
>>585
アンタ逆引き本とか読んだことないだろ?w
588デフォルトの名無しさん:2008/05/05(月) 21:51:28
逆引き本は役に立つ
役に立つから成長に邪魔なんだ
589デフォルトの名無しさん:2008/05/05(月) 21:56:04
開発の仕事だとな、納期ややっつけ仕事というのがあってだな・・・
590デフォルトの名無しさん:2008/05/05(月) 21:59:53
C#のプロパティってUMLのクラス図描く時
属性に書くの?操作に書く?どっち?
591デフォルトの名無しさん:2008/05/05(月) 22:01:42
属性は英語でプロパティ
592デフォルトの名無しさん:2008/05/05(月) 22:10:05
属性はattributeだろ。
593デフォルトの名無しさん:2008/05/05(月) 22:14:43
UMLのクラス図の属性は英語でプロパティ
594デフォルトの名無しさん:2008/05/05(月) 22:16:37
まじかよ。それ誤訳だろ。
595デフォルトの名無しさん:2008/05/05(月) 22:23:07
でも、Javaとかでget, setメソッドは操作に
書くじゃない?
596デフォルトの名無しさん:2008/05/05(月) 22:27:33
それはJava使いがUMLを誤解してるんだな
属性をフィールド、操作をメソッドのことだと思っとる
597デフォルトの名無しさん:2008/05/05(月) 22:32:08
単なるアクセサなら普通操作としてUMLに書かないよな
フィールドを属性として書く
598デフォルトの名無しさん:2008/05/05(月) 22:50:03
プロパティのsetで変換とか計算とか入ってても属性?
599デフォルトの名無しさん:2008/05/05(月) 22:53:10
場合によるんじゃね?
例えばControl.ClientSizeなら属性にするね
600デフォルトの名無しさん:2008/05/05(月) 22:58:47
操作になるようなものは、そもそもプロパティにしない。
601デフォルトの名無しさん:2008/05/05(月) 23:21:51
boolを返すsetterの中でメッセージループ回してるキモいコードみたことあるぞw
しかもMSのオフィシャルなサンプルだった希ガス
602デフォルトの名無しさん:2008/05/05(月) 23:49:02
>>584
<TextBox
   xmlns:prop="clr-namespace:Properties"
   Text="{Binding Source={x:Static prop:Settings.Default}, Path=hoge}"
  />
でいいんじゃない?
603デフォルトの名無しさん:2008/05/06(火) 00:22:27
>>602
それでできました。thx
いろいろ実験してBindingの仕組みはなんとなく分かった気がするけど
マークアップ拡張?とかまだよく分からんなぁ…
604デフォルトの名無しさん:2008/05/06(火) 09:29:22
Artistic Licenssってどういうライセンスでしょうか?
605デフォルトの名無しさん:2008/05/06(火) 09:31:32
>>603
XML 属性中に {} 内に書けるのは MarkupExtension を継承するクラスのみ。
例えば、

<Button Background="{StaticResource myBrush}"/>

とか書くと、対応するC#コードは(うろ覚えだけど多分)

new Button {
 Background = (new StaticResourceExtension {
  ResourceKey = "myBrush"
 }).ProvideValue
};

になる。
606デフォルトの名無しさん:2008/05/06(火) 09:32:04
あっ、ProvideValue の後ろに () 忘れてる。
607デフォルトの名無しさん:2008/05/06(火) 14:36:34
>>605
あぁ、分かった気がする。
>>602の場合、x:Static(System.Windows.Markup.StaticExtension)のコンストラクタは
"prop:Settings.Default"を受け取って、ProvideValue()でリフレクション(だっけ?)使って
Settings.Defaultプロパティの値を返すということか。
608デフォルトの名無しさん:2008/05/06(火) 20:39:56
C#を勉強しているのですが、どうやったら画像とかを表示して
本物のゲームみたいにできますか?いまは文字を表示することしかできません。
おしえてください
609デフォルトの名無しさん:2008/05/06(火) 20:43:53
まずは文字のみでテトリスやシューティングゲームを作ってみてはいかがでしょうか。
まだスキルが低すぎて難しい気がします。
610デフォルトの名無しさん:2008/05/06(火) 20:45:50
ほうほう、テトリスやシューティングを・・・・・・。
わかりました、ありがとうございます。
611デフォルトの名無しさん:2008/05/06(火) 20:57:09
あのー質問2丁お願いします

C#でPg作る時 テキストとかボタン を Wクリックして
イベント書き始めるじゃないですか

その後このイベントいらないーと思った時
消すと落ちるじゃないですか
デルファイは使ってないコードコンパイル時に
自動的に消されるんですがC#はそういう機能ないんでしょうか?
自分で関連したところ消さなくてはいけないんでしょうか

後・・・「ボタン」のイベントで、Name変更しても
消す前のボタンの名前が残ってしまう&Wクリックすると昔(その)のボタンの
コードの場所に飛ばされてしますのですが・・・修正する時がんがって消してから
イベント書かなくてはいけないのでしょうか

よろしくおねげえします^^;
612デフォルトの名無しさん:2008/05/06(火) 21:30:15
日本語でお願いします
613デフォルトの名無しさん:2008/05/06(火) 21:51:00
>>611
ついダブルクリックしちゃうんだよね
するとクリックイベントコードが作られちゃうんだけど消したい
自分で消してるけど

name変えてもButton1_Clickのままってことかな
仕様でしょ
614デフォルトの名無しさん:2008/05/06(火) 22:01:01
>>613
やはり自分で消すんですか
デザイナ.CSの中を見て、消さなくてはいけないので
めんどいな、とおもいますた

ありがとうございます

>>612
らじゃ
615デフォルトの名無しさん:2008/05/06(火) 22:08:05
あと印刷系を実現する時
皆さんはどうやってます?

基本の印刷は地味で・・・
町で見かける領収書みたいのを作成
したい場合どうやってます

クリスタルレーポートですか
ジャイブレポートですか
エクセルにはいて印刷ですか
そもそもそんな用途にはむいてないんだよですか?
616デフォルトの名無しさん:2008/05/06(火) 22:18:12
>>611
プロパティ ウインドウのイベントから消せば、デザイナのコードもちゃんと消してくれるよ。
617デフォルトの名無しさん:2008/05/06(火) 22:24:16
>>616
今から やってみます
618デフォルトの名無しさん:2008/05/06(火) 22:27:27
>>611
イベントハンドラ名の上にカーソルを置いてCtrl+(R+R)
619デフォルトの名無しさん:2008/05/06(火) 22:27:50
なるほどクリックの上でリセットですね
ありがとうございます m^^m
620デフォルトの名無しさん:2008/05/06(火) 22:31:26
>>618
キーの組み合わせ(Ctrl+R Ctrl+R)現在使用できないコマンド・・・略
出来ませんでした^^;
621デフォルトの名無しさん:2008/05/06(火) 22:34:11
コード表示画面だよ。

あと、名前を変えたいメソッドや変数の文字列の上で右クリックして、
そのメニューの「リファクタ−「名前の変更」でも出来る。
622デフォルトの名無しさん:2008/05/06(火) 22:38:42
なるほど
>>621さんできました
変更する時はつわかせていただきます^^v
623デフォルトの名無しさん:2008/05/06(火) 22:41:17
ソース上でイベント処理用のメソッド名を変更した後に、Shift+Alt+F10したほうが早い
624デフォルトの名無しさん:2008/05/06(火) 22:44:46
Shift+Alt+F10を使ったusing追加は神
625デフォルトの名無しさん:2008/05/06(火) 22:50:51
Delphiだとコントロールの名前を変えると、
デフォルト名のままのイベントハンドラ名も追随して変わってくれるから
この点だけはVSは賢くないと思う。
626デフォルトの名無しさん:2008/05/06(火) 22:59:01
>>625
おいらわ初心者なんでよく分からないけど
<HOGE>で検索かけた時<HOGE>を使ってる一覧表見たいのが
「がーーーー」と、でないかなと思ってる
デルファイであったんだけど、C#にあるのかなと言うよりIDEとして

こんな感じ
***********************
PG AAA        INT HOGE
PG BBB        INT HOGE
PG CCC        INT HOGE 
PG CCC        INT HOGE

HOGEは4箇所で使われています
***********************
627デフォルトの名無しさん:2008/05/06(火) 23:14:11
C++からこれに移ってきて
あまりの書きやすさに目に鱗の日々なのですが
にも関わらず、いまいち普及してないのはどうしてなんでしょ?
628デフォルトの名無しさん:2008/05/06(火) 23:16:43
出たばかりだからだと思います
629デフォルトの名無しさん:2008/05/06(火) 23:16:54
>>627
ヒント:セグメント
630デフォルトの名無しさん:2008/05/06(火) 23:24:16
631デフォルトの名無しさん:2008/05/06(火) 23:25:29
右肩上がりだな
632デフォルトの名無しさん:2008/05/06(火) 23:40:18
旧VBでやってたような領域は、C#かVB.NETに移行せざるをえないからな。
633デフォルトの名無しさん:2008/05/07(水) 02:12:01
Javaより普及してんの?
流石にそれはなくない?
634デフォルトの名無しさん:2008/05/07(水) 02:36:42
>>633
もしかして:JavaScript

JavaScriptではなくJavaを入れると、はいこの通り。
ttp://www.indeed.com/jobtrends?q=java%2C+JavaScript%2C+C%23%2CC%2CC%2B%2B&l=
しかし、まだまだC強いな。
とはいえCの案件と聞きつつ、Cと他の何かを使うことが多かったけど。
635デフォルトの名無しさん:2008/05/07(水) 03:32:54
>>624
でも、デフォルトのShift+Alt+F10って押しにくいよな
何でこんなキーバインドにしたんだろ

HHKだとShift+Alt+Fn+0とさらに無茶苦茶な組み合わせに
636デフォルトの名無しさん:2008/05/07(水) 03:41:07
>>634
sqlとかhtmlとか入れると結構あるな
637デフォルトの名無しさん:2008/05/07(水) 05:29:08
スレの趣旨から脱線してるからこのくらいにしたいけど、ひとことだけ。
調査法でまったく結果が変わる。
案件ベースなのか、金額ベースなのか、ステップ(命令・ワード)ベースなのか、
求人ベースで調べるのか、雇用中を対象にするのか、
アマチュアを対象に含むか、単独回答か複数回答か、などなど。
開発ツールのダウンロードのときなどのにこの手のアンケートをやらされるとこがあるが、
自分がどの程度まともに回答するか思い浮かべてみよう。
638デフォルトの名無しさん:2008/05/07(水) 05:36:16
>>637
お前・・・すごいな
いい釣り師になれると思うよ
639デフォルトの名無しさん:2008/05/07(水) 07:05:34
これから始めたいのですが
おすすめの本とかありますか?
640デフォルトの名無しさん:2008/05/07(水) 09:47:14
俺もそれ聞きたいです
特にC++でいうSTLにあたるクラスとメソッドの解説が充実してるやつ
641デフォルトの名無しさん:2008/05/07(水) 10:41:31
>>640
C#にテンプレートは無い、似ているが違うから同様の処理は不可能。
STLで良くつかわれる方法は代替としてリフレクションで行える、が考え方は全然別物なので比較の意味なし。
ジェネリックスの範囲なら同様だがSTLが解るなら説明するまでも無いだろう。
642デフォルトの名無しさん:2008/05/07(水) 19:44:01
いやいや640が求めているのは(ジェネリックコレクションと)LINQのことだろう
643デフォルトの名無しさん:2008/05/07(水) 20:10:06
じゃんけんゲームを作っているのですが勝ち負けの判定をどうしたら言いかまよっています。
if文だと長いのでほかの方法がいいのですが、何かいい方法はありますか?おしえてください
enum じゃんけん : byte
{
グー =1,
チョキ = 2,
パー = 3
}
static void Main()
{
Random Random = new System.Random();
Console.Write("グーなら1、チョキなら2、パーなら3を入力してください;");
int ken = int.Parse(Console.ReadLine());
int ransu = Random.Next(1, 4);
for (int i = 1; i <= 4;++i )
{
if (ken == i)
{
switch(ken)
{
case 1:
Console.Write("あなた;{0}\nあいて;{1}\n", (じゃんけん)i,(じゃんけん)ransu);
break;
case 2:
Console.Write("あなた;{0}\nあいて;{1}\n", (じゃんけん)i, (じゃんけん)ransu);
break;
case 3:
Console.Write("あなた;{0}\nあいて;{1}\n", (じゃんけん)i, (じゃんけん)ransu);
break;
}
644デフォルトの名無しさん:2008/05/07(水) 20:15:56
二次元配列とか
645デフォルトの名無しさん:2008/05/07(水) 20:17:53
2人じゃんけんならば引き算する方法もあるな
646デフォルトの名無しさん:2008/05/07(水) 20:23:46
すいません、わからないので実際にコードかいてみてくれませんか?
おねがいします
647デフォルトの名無しさん:2008/05/07(水) 20:33:30
(グー - チョキ + 3) % 3 を (グーとチョキをあれこれ変えて) 計算してみれ
648デフォルトの名無しさん:2008/05/08(木) 01:37:54
サロゲートペアの文字ってcharに入らないよね?
どうしたらいいんだ。
649デフォルトの名無しさん:2008/05/08(木) 02:15:45
>>643
enum じゃんけん
{
グー = 1,
チョキ = 2,
パー = 3
}
static void Main()
{
Random rdm = new System.Random();
Console.Write("グーなら1、チョキなら2、パーなら3を入力してください;");
int player = int.Parse(Console.ReadLine());
int cpu = rdm.Next(1, 4);
//結果判定
int d = player - cpu;
string result;
if (d == 0) result = "あいこです";
else if (d == 1 || d == -2) result = "あなたの負けです";
else result = "あなたの勝ちです";
//結果出力
Console.Write("あなた;{0}\nあいて;{1}\n", (じゃんけん)player, (じゃんけん)cpu);
Console.WriteLine(result);
}
650デフォルトの名無しさん:2008/05/08(木) 02:28:56
>>648
charを2つ使う
651デフォルトの名無しさん:2008/05/08(木) 15:41:05
XP+C#2008です。
SplitContainer を使用して左右にTextBoxを配置し、最初に右側へフォーカスを
持たせたいのですが必ず左がフォーカスを持ってしまいます。
タブオーダーもいじったのですが変わりませんでした。
Focus使えばやりたいことは出来るのですが、どうやって順番を変えるのでしょうか。
652デフォルトの名無しさん:2008/05/08(木) 16:54:05
(コンテナも含めて)全てのタブオーダーを適切に設定したのか?
653643:2008/05/08(木) 17:22:17
なるほど、数値化して引き算の値で結果を求めるのですね。
ありがとうございます。もう一度一からつくりなおしてみます。
654デフォルトの名無しさん:2008/05/08(木) 18:55:02
タブオーダーってかぶった数値はかぶったままになるから設定しづらいんだよな
655デフォルトの名無しさん:2008/05/08(木) 19:36:13
麻原彰晃とツーショットに収まるダライラマwww

↓↓この写真、オウムが駅で配布してた宣伝雑誌とかポスト放り込みチラシに載せまくってたから
記憶にある人もいると思う。

http://www.foyun.com/bbs/upload/200626-145517-admin.jpg
http://www.iivs.de/~iivs01311/SDLE/Part-2-13-Dateien/image002.jpg

ダライラマの正体はこんな卑しいことばっかやって日銭稼いでる生臭テロ坊主。
生き仏とやらなら、極悪犯罪者の正体見抜けなかったのかwww
(ちなみにこの写真の撮影時期は坂本弁護士一家惨殺事件よりずっと後ね。
犯罪者予備軍どころではなく、バレてないだけの既に凶悪犯罪者。)

べっとり握手までしとる・・・・うああああ
類は友を呼ぶんだなw
656デフォルトの名無しさん:2008/05/08(木) 19:48:34
コピペ君って馬鹿だな、まで読んだ。
657651:2008/05/08(木) 20:07:14
コンテナってのはSplitContainer 自体のことでいいのかな。
テスト的につくったフォームで試したところ、タブオーダーは
SplitContainer 0
TextBox1 0.0.0
TextBox2 0.1.0

となっていました。
貼り付けたコントロールは上記三つだけです。
658デフォルトの名無しさん:2008/05/08(木) 21:24:52
>>657
全ての先祖コンテナの設定が必要
(たとえ、IDEで表示されなくても)

そのまま貼り付けただけだとこうなる

-- splitContainer1 ――――――― 0
   +- splitContainer1.Panel1 ―― 0.0
   |   `- textBox1 ――――― 0.0.0
   `- splitContainer1.Panel2 ―― 0.1
       `- textBox2 ――――― 0.1.0

見たところ、splitContainer.Panel{1,2}がデフォルトのまま
659デフォルトの名無しさん:2008/05/09(金) 08:48:32
>>653
いや俺は>>643で書いたコードがわかりやすくて良いと思う
660デフォルトの名無しさん:2008/05/09(金) 10:17:30
え?w
661デフォルトの名無しさん:2008/05/09(金) 12:45:46
>>649 >>659
おれもそう思う、しかし enum で定義しておきながら、それを case で使っていないのがとても気になる、一番肝心なところが間違っている。また、byte も余計だろう。
次点は剰余を使ったものだが、かなり数学に強くないと衝撃が大きいので自分専用ならOKか。
662デフォルトの名無しさん:2008/05/09(金) 13:24:21
>>643で書いたコードがわかりやすいって
仕様どおりじゃないしそもそも動かない。
663デフォルトの名無しさん:2008/05/09(金) 13:26:27
まあ誰が見ても良くないのはbyte
664デフォルトの名無しさん:2008/05/09(金) 13:32:40
>>662
if と case があって、それ以外にも手段があるかとか、それを聞いているだけだろ
コードは途中で切れているから、仕様通りかなどという判断はできんし、見てほしいとも思っていないかと思っている。
665デフォルトの名無しさん:2008/05/09(金) 14:12:21
数値演算せずに、条件分岐を避けるなら、

const string[][] ResultString = {{"あいこ", "あなたの勝ち", "あなたの負け"},
{"あなたの負け", "あいこ", "あなたの勝ち"},
{"あなたの勝ち", "あなたの負け", "あいこ"}};

としておくと、ResultString[ken-1][ransu-1]が結果。
666デフォルトの名無しさん:2008/05/09(金) 14:18:23
俺もそれでいいんじゃないかと思うけどなぁ。
単純だけど汎用性もあるし
667デフォルトの名無しさん:2008/05/09(金) 15:44:46
多重かジャグかはっきりしろよ
668デフォルトの名無しさん:2008/05/09(金) 19:28:25
いいえ、ケフィアです。
669デフォルトの名無しさん:2008/05/09(金) 20:00:19
勝ち負け判定したいって仕様だろ
670デフォルトの名無しさん:2008/05/09(金) 21:15:53
>>669
やりたい事は分かるし、手法も問題ないが

宣言はジャグなのに初期化は多次元になってるとか
constは使えないとか

# 667で多重とか書いちゃったけど、多次元の間違い
671デフォルトの名無しさん:2008/05/09(金) 21:18:44
たぶん文字列を配列と見なしてのジャグなんでしょ
672デフォルトの名無しさん:2008/05/09(金) 22:39:14
Java出身なのですが、APIドキュメントのようなものはどこで配布されているのでしょうか?
673デフォルトの名無しさん:2008/05/09(金) 22:42:48
674デフォルトの名無しさん:2008/05/09(金) 23:14:56
675デフォルトの名無しさん:2008/05/09(金) 23:21:54
>>673>>674
ありがとうございましたー!!!
しかしながらC#のクラスライブラリの仕様が見あたらない・・・
文書量が膨大なのでゆっくりと探していきます。ありがとうございました。
676デフォルトの名無しさん:2008/05/10(土) 00:10:43
C#の〜じゃなくて.NETの〜で探さないと。
677デフォルトの名無しさん:2008/05/10(土) 00:14:20
Win32 APIをC#で利用しようと思い、GetAsyncKeyStateを使う以下のような小さいクラスを作ってみたのですが、
実行中、GetAsyncKeyStateを呼んだ地点でNullReferenceExceptionが発生してしまい(ちなみにcatchできない)、悩んでおります。
原因おわかりでしたら、教えていただけると助かります。

class GetKey{    Dictionary<int,bool> bKey;

    [DllImport("user32.dll")]
    static extern short GetAsyncKeyState(int vKey);

    public bool Get(int key){
        short result=0;
        result=GetAsyncKeyState(key);
        if((result&0x8000)!=0)
            if(bKey[key])return true;
            else{ bKey[key]=true; return false; }
        else return false;
 
678デフォルトの名無しさん:2008/05/10(土) 00:16:11
すいません、コードの最後が少し欠けましたが、
内容自体はそれで全部です
679デフォルトの名無しさん:2008/05/10(土) 00:22:03
>>676
一発で見つかりましたw
まだ.NETって何って感じなんでそっからやった方がよさそうですね。
ありがとうございました。
680デフォルトの名無しさん:2008/05/10(土) 02:38:10
Javaプラットフォーム、J2SEってところかな。
681デフォルトの名無しさん:2008/05/10(土) 03:28:25
>>677
>GetAsyncKeyStateを呼んだ地点で
というのが怪しい。場所が違う気がするからスタックトレースを見直してみよう。
ソースを見た感じではbKeyがnullのせいだと思える。
682デフォルトの名無しさん:2008/05/10(土) 10:44:21
>>681
確かにそうでした。GetAsyncKeyStateのある行をコメントアウトしたら収まったため、
完全にWin32 APIの問題だと思い込んでしまっていました。
(実際には、判定結果の違いでif(bKey[key]に到達しなかっただけ)
bKeyを初期化し、bKey[key]を必要に応じて作成するようにしたら解決しました。

初歩的なミスばかりなのに、教えていただいてありがとうございました。
683デフォルトの名無しさん:2008/05/10(土) 11:36:33
C#の入門書でおすすめは?
684デフォルトの名無しさん:2008/05/10(土) 12:09:11
685デフォルトの名無しさん:2008/05/10(土) 12:15:51
自分は黒白基調なカバーのの標準C#入門で覚えた。
手元にあるやつだと2箇所程度ミスを確認してるけど、何だかんだでお世話になった。
686デフォルトの名無しさん:2008/05/10(土) 13:01:32
ctrl + xって無駄に便利だね
正確に言うとその行を切り取るんだけど、単にその行を削除できる感じ
コピーしたのを貼り付けようとして間違えてctrl + c押しちゃってウゼーって思ってたけど
687デフォルトの名無しさん:2008/05/10(土) 13:05:41
へぇ。
688デフォルトの名無しさん:2008/05/10(土) 16:09:23
無駄じゃないだろ
689デフォルトの名無しさん:2008/05/10(土) 18:43:35
失礼しms。

ttp://www.uploda.org/uporg1415339.c.html

上記のようなコードを書いたのですが、
bの領域を解放するときに
”Windows によって aaaaa.exe でブレークポイントが発生しました。ヒープが壊れていることが原因として考えられます。aaaaa.exe または読み込まれた DLL にバグがあります。”
のようなエラーが出てしまいます・・・。。。

確保していない領域にアクセスし、それをフリーしようとしたときにおこるエラーみたいなことがググったら書いてあったのですが、
double** b; が確保されている領域と、callocで追加確保された領域が連続でないということでしょうか?
またそのせいでこのエラーがおこっているのでしょうか?

ご教授願います。よろしくお願いします。。。
690689:2008/05/10(土) 18:44:12
すみません。誤爆しました><
691デフォルトの名無しさん:2008/05/11(日) 03:50:28
コンストラクタ中でbaseキーワードを使って親クラスのコンストラクタを呼ぶ前に、
別のメソッド等を呼び出すことはできるのでしょうか?

例えば下記みたいな感じで、
Hoge.GetPersonalData( name, out old )が戻り値がoutで返ってくるため、base()に直接入れられないのです。

//親
public class Oya {
 public Oya( string name, int old ) {}
}

//子
public class Ko : Oya {
 public Ko( string name )
   : int old;
   Hoge.GetPersonalData( name, out old );
   base ( name, old ) {}
}
692デフォルトの名無しさん:2008/05/11(日) 04:08:30
子のインスタンスを作る前に呼べばいいじゃない
693デフォルトの名無しさん:2008/05/11(日) 04:43:45
>>692
子のコンストラクタを呼ぶ側でHoge.GetPersonalDataを先呼んでやって、
子のコンストラクタの引数を一つ増やして、Ko( name, old );とするということでしょうか。
694デフォルトの名無しさん:2008/05/11(日) 04:49:46
うん。
もしくはhogeをそのまま渡せば?
695デフォルトの名無しさん:2008/05/11(日) 04:56:59
あーごめ。
hogeはstaticか。
696デフォルトの名無しさん:2008/05/11(日) 05:20:04
うーん、呼ぶ側の操作はなるべく簡単にしたいので、
可能な限りコンストラクタの内部処理として隠してしまいたいんです…。
697デフォルトの名無しさん:2008/05/11(日) 07:52:01
こういう逃げ方しかないだろうな
public class Ko : Oya { 
 private static int GetPersonalAge(string name) {
  int old;
  Hoge.GetPersonalData(name, out old); 
  return old;
 }
 public Ko(string name) : base(name, GetPersonalAge(name)) {}
698デフォルトの名無しさん:2008/05/11(日) 08:25:24
横やり、うぇっうぇっっっ
自分はあきらめていたよ、そういう手があったか
class C { public static void Age(out int age) { age = 5; } }
class A { public A(int i) { } }
class B : A
{
public B(string name) : base((new Func<int>(() => { int age; C.Age(out age); return age; }))()) { }
}
次からはこうしよう
699デフォルトの名無しさん:2008/05/11(日) 11:10:59
>>697
>>698
ありがとうございます。
700デフォルトの名無しさん:2008/05/11(日) 11:33:00
どういたしまして
701デフォルトの名無しさん:2008/05/11(日) 13:33:53
親のコンストラクタ呼び出しの前にコード書くことが禁止されているのは
なにか合理的な理由があるんだっけ?
702デフォルトの名無しさん:2008/05/11(日) 13:51:24
普通に考えたら気持ち悪いだろ
703デフォルトの名無しさん:2008/05/11(日) 13:53:17
未初期化のprotectedフィールドをさわってしまううっかりさん対策
704デフォルトの名無しさん:2008/05/11(日) 13:55:12
継承元のクラスの部分から順番に初期化してゆく必要があり
コンストラクタも継承元のから順に実行されてゆく。
コーディング上、継承先のコンストラクタから継承元のコンストラクタを
呼び出しているように見えるが実際は逆。
705デフォルトの名無しさん:2008/05/11(日) 14:04:48
それが正確なら>>697のようなコードは書けないはずだと思うんですが。。
706デフォルトの名無しさん:2008/05/11(日) 14:06:47
>>705
staticだから呼べる
707デフォルトの名無しさん:2008/05/11(日) 14:20:41
guiプログラミングのよいサイトはありますか?
708デフォルトの名無しさん:2008/05/11(日) 14:20:52
string x = Console.ReadLine();
ってやると文字を入力できますが、日本語が入力できません。
日本語を入力してもらうにはどうすればいいですか?
709デフォルトの名無しさん:2008/05/11(日) 14:24:44
でもこんなstaticの使い方はなしだな
710デフォルトの名無しさん:2008/05/11(日) 14:30:13
普通はおとなしくファクトリメソッドを準備する
711デフォルトの名無しさん:2008/05/11(日) 14:43:40
頼む。助けて。
課題でN88BASIC互換ソフト使ってグラフ
作れって言われたんだけど、データはあるんだけど
N88互換がXPだからか、ダウンロードできないorz
どうやったらいいんだろう?HELP読んでも解決
出来なかったし、マジ困った。
712デフォルトの名無しさん:2008/05/11(日) 14:49:37
スレ違い子ね
713デフォルトの名無しさん:2008/05/11(日) 14:52:05
質問です
Windowアプリ作る時
大体終了ボタン作る時
場所って大体同じ場所に作りますよね
それって雛形登録したいのですがどうしゅればいいのかな
デルファイでいう リポジトリ見たいなものなんですが
714デフォルトの名無しさん:2008/05/11(日) 14:53:57
すいません
すべって書き込みボタン押してしまいました
へんな日本語に・・・
日本語でおkってことで 読んで栗
715713:2008/05/11(日) 15:02:10
回答まだかよサッサとしろよハゲども
716デフォルトの名無しさん:2008/05/11(日) 15:03:29
日本語でおk
717デフォルトの名無しさん:2008/05/11(日) 15:03:57
baseとなるformにそのボタンをつけて、それを実装したいフォームは継承する。
もしくはカスタムコントロールでググレ馬鹿
718708:2008/05/11(日) 15:10:41
だれかおしえてください
719デフォルトの名無しさん:2008/05/11(日) 15:15:59
日本語が入力できる環境で使う
720デフォルトの名無しさん:2008/05/11(日) 15:19:57
的確な回答吹いたw
721708:2008/05/11(日) 15:22:20
説明のしかたがわるかったようなので実際にコードをのせますね。
下のコードを実行するとkonnitihaとアルファベットで打たないといけませんが、
自分自身がこんにちはと入力できるようにしたいということです
using System;

class kaiwa
{
static void Main()
{
string kaiwa = Console.ReadLine();
switch (kaiwa)
{
case "konnitiha"://要するにここのkonnitihaが「こんにちは」でできるようにしたいということ
Console.Write("こんにちは\n");
break;
}
}
}
722デフォルトの名無しさん:2008/05/11(日) 15:26:39
本物713だが
715てめー 失礼なこと書くな
馬鹿とか書かれたろー
なんか恨みでも あんのかよぉ
723デフォルトの名無しさん:2008/05/11(日) 15:28:11
意味がわかんね
コマンドプロンプトで日本語入力ができない初心者ですという事?
724708:2008/05/11(日) 15:28:54
そういうことです。出力はConsole.Write("こんにちは\n");ってできても
入力するときはアルファベット・・・・・。
どうすれば日本語を入力できるのですか?
725デフォルトの名無しさん:2008/05/11(日) 15:29:03
もしかして:Alt + 半角/全角キー
726デフォルトの名無しさん:2008/05/11(日) 15:29:09
>>721
日本語が使える環境なんだね?
コマンドプロンプトを立ち上げて、日本語入力できるか試してみて。
単純に「半角+Alt」押してないだけだろうけど。
727708:2008/05/11(日) 15:31:08
できません、下のコードを実行してaltと半角全角をおして入力してもできません。
なぜですか?
using System;

class kaiwa
{
static void Main()
{
string test = Console.ReadLine();
}
}
728708:2008/05/11(日) 15:32:39
あ、できました。どうやらIMEが正常に起動してなかったようです。
みなさまありがとうございました。
729デフォルトの名無しさん:2008/05/11(日) 15:33:59
本物の713だが
altを押しながら(半角全角)ボタンを1回押してみてもダメ?
730デフォルトの名無しさん:2008/05/11(日) 15:34:52
708
おk
コマンドプロンプト ぐぐってきま
731デフォルトの名無しさん:2008/05/11(日) 15:35:53
732デフォルトの名無しさん:2008/05/11(日) 15:35:57
ggttkrkygrks
733デフォルトの名無しさん:2008/05/11(日) 16:18:41
>>713
Winアプリって大抵終了ボタンついてないけど?
×ボタンがあるからいらないじゃん
734デフォルトの名無しさん:2008/05/11(日) 16:20:12
ダイアログの場合は右下についてる事が多いんじゃないかな。
735本物の713:2008/05/11(日) 16:33:58
>>733

たあーしかに、そうなんだけど
まあ例としてです ^^b
要するに雛形が欲しかったので

カスタムコントーロールむずい・・・・
なんか理解できない
更にググってきます
736デフォルトの名無しさん:2008/05/11(日) 17:40:15
フォーム起動時に一瞬テキストボックスがグレーになるんですが
起動時からグレーではなく表示する方法ってありますか
737736:2008/05/11(日) 18:06:23
以下2つは試しました
 1.SuspendLayout,ResumeLayout(false)
 2.SetStylesでダブルバッファを指定する方法
以下の構成で、1.は各子コントロールのAddの前後に、2.はメイン画面に設定してます
メイン
 SplitContainer
  Textbox
  SplitContainer
   TreeView
   RichTextBox
738デフォルトの名無しさん:2008/05/11(日) 18:54:50
>>736
グレーになったことがないんだが。
enableってどうなってる?
739736:2008/05/11(日) 19:54:15
すべてtrueでした
(InitializeComponentの最後にthis.Visible.ToString()をメッセージボックスで表示させてます)
起動時点で29メガ消費するんですが関係あります・・よね、きっと。
740736:2008/05/11(日) 19:59:16
すみません、VisibleではなくEnabledですね
各コントロールのEnabled.ToString()を表示させてみましたが
やはりすべてtrueです
741デフォルトの名無しさん:2008/05/11(日) 20:38:36
>>736
ぱっと見で気になるレベルなのか?
普通に書いてりゃならンと思うが・・・
742デフォルトの名無しさん:2008/05/11(日) 20:46:36
その現象が起きるのはそのプログラムだけなのか。
デバッガ通しでなく、直接exeを起動してもそうなるのか。
CPUとメモリは?

つまり遅いだけなんじゃないかと予想してみる。
743736:2008/05/11(日) 21:50:37
機能を削除して、フォームだけを表示するプログラムにしてみたんですが
あまり状況はかわりませんでした。(リリースビルドしても同様)
CPU使用率は、タスクマネージャで見た感じほとんど0です。
(このとき、起動時のメモリ使用量が22メガぐらいです)

結局原因はよくわからないですが
グレーの部分が見えるのは0.1〜0.2秒ぐらいなんで、
NETが単に重いだけだと思うことにします
(C#のフォームを表示させるだけのプロジェクトで起動時に13Mぐらいメモリ使ってました)

みなさんありがとう。
744デフォルトの名無しさん:2008/05/11(日) 21:52:11
Enabledを一度falseにしてから、最終的にtrueに直してる可能性は?
処理の最初にfalseに設定されてて、初期処理の終わりのほうでtrueにしてたら、
処理している途中はずっとfalseなわけだし・・
745デフォルトの名無しさん:2008/05/11(日) 21:56:59
[DllImport("kernel32.dll")]
private static extern bool SetProcessWorkingSetSize(IntPtr proc, int min, int max);
private static void タスクマネージャのメモリ使用量を小さく見せる細工() {
 SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1);
}
746736:2008/05/11(日) 22:33:59
>>743
 んー、Enabledのfalseとtrue試してみましたがやはり、同様でした
 また、Enabledをfalseにしたまま実行してみたところ、その場合もちらついてます
 (RichTextBoxの矩形がSplitContainerのペインに一瞬表示され、
  その後SplitContainerのペイン全体に広がっているように見えます。 DockStyleはFillです)

>>744 これは・・メモリ使用量が半分以下に・・
747デフォルトの名無しさん:2008/05/11(日) 23:44:35
C#2008はソリューション構成ってなくなったのでしょうか?
748デフォルトの名無しさん:2008/05/11(日) 23:48:43
>>747
いいえ
749デフォルトの名無しさん:2008/05/11(日) 23:54:02
どこにあるのでしょう^^
Debugとリリース切り替えるかっこいい奴
とりあえずぐぐってきま
750デフォルトの名無しさん:2008/05/11(日) 23:55:06
困ったらツールバーを右クリックだ
751デフォルトの名無しさん:2008/05/12(月) 00:00:38
困ったまんまですが
眠いので失礼島
752デフォルトの名無しさん:2008/05/12(月) 00:03:47
>>749
VS2002(or 3)からの移行組?
2005以降はなぜかデフォでは表示されない設定になってる気がした。
オプションで表示されるように設定しなおすよろし
753デフォルトの名無しさん:2008/05/12(月) 00:32:23
あらりがとうでもわからなかった ねますありがおうZzz
754デフォルトの名無しさん:2008/05/12(月) 01:10:06
なくなったと思えば気にならないよ
755デフォルトの名無しさん:2008/05/12(月) 08:16:13
>>754
どんなアマチュアだよw
756デフォルトの名無しさん:2008/05/12(月) 08:23:43
ツール→オプション→「全ての設定を表示」にチェック
→プロジェクトおよびソリューション→ビルド構成の詳細を表示
757デフォルトの名無しさん:2008/05/12(月) 10:47:30
>>754
Debugクラスとか[Conditional("Debug")]とか使わないのかよ
758デフォルトの名無しさん:2008/05/12(月) 11:00:20
>>752
わが国のITはユーザに使用法を十分説明する時間がありません。
このため、初心者がベテランに疑問についてたずねる光景を目にすることがあります。
しかし本来は事故(情報漏えいなど)が発生した場合の責任は、
接続業者、サーバ運営者、システムを開発したエンジニアにあります。
メーカあるいは購入店にたずねるべきです。
利用者の仕事は自治(掲示板の秩序を守ること)です。助言を行ってはなりません。
素人が専門技術に言及するのは「親切」ではありません。「無責任」です。
海外のプロフェッショナルは、「私の仕事ではない」と答えるはずです。
759デフォルトの名無しさん:2008/05/12(月) 11:22:46
1.1なんですが
DateTime のミリ秒だけ切り捨てることってどうやりますか?
とりあえず
new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second)
みたいに書いてるんですが。
760デフォルトの名無しさん:2008/05/12(月) 12:05:46
>>759
まずは、この書き方やめね?素人っぽいぞw
761デフォルトの名無しさん:2008/05/12(月) 12:33:15
Ticksを1千万で割って1千万を掛ければ
762デフォルトの名無しさん:2008/05/12(月) 12:34:38
>>759
幾つか方法はあるけど、最も汎用性が高いのは
こんな感じの拡張メソッドを作って

static class DateTimeEx {
  public static DateTime Truncate(this DateTime old, long eps) {
    return new DateTime((old.Ticks / eps) * eps);
  }
}

使い方は、丸め幅をタイマ刻み数(100nsec単位)で指定するだけ

dateTime.Truncate(TimeSpan.TicksPerSecond); // 1秒未満を切り捨て
dateTime.Truncate(TimeSpan.TicksPerSecond*30); // 30秒未満を切り捨て

他には、Roundとか作っておいても良いと思う
763デフォルトの名無しさん:2008/05/12(月) 13:14:38
VS2008なんですが突然
「System.Windows.Forms.Design.IEventHandlerService は既にサービス コンテナに存在します。」
とか言ってデザイナが開かなくなったんですが何故でしょうか?
764デフォルトの名無しさん:2008/05/12(月) 13:15:34
よく分からんけどミリ秒に0突っ込んでやれば良いんじゃないの?
765デフォルトの名無しさん:2008/05/12(月) 13:29:20
>>762
それだとDateTime.Kindを無視しちゃってないか。コンストラクタの2つ目のパラメータにold.Kindを指定しないと。
>>764
DateTime.Millisecondは読み取り専用。
766デフォルトの名無しさん:2008/05/12(月) 13:35:03
DateTime dt = DateTime.Now;
dt = dt - dt.Millisecond;
767デフォルトの名無しさん:2008/05/12(月) 13:36:03
>>766
コンパイルエラーw
768デフォルトの名無しさん:2008/05/12(月) 13:43:56
>>763
bin,obj消してリビルドするとどう?

>>765
確かに、入れた方がいいね

でも、よく見たら1.1とか書いてるよ
拡張メソッド使えないじゃんorz

普通のstaticメソッドに読み替えてくれ
あと、DateTime.Kindも2.0からみたいだな
769デフォルトの名無しさん:2008/05/12(月) 13:57:29
dt.AddMilliseconds(-1.0 * dt.Millisecond);
770デフォルトの名無しさん:2008/05/12(月) 17:53:36
VisualStudio2008で、プロジェクトの新規作成が.NetFramework3.5しか選べないのですが、
どうすれば2.0とかも選べるようになるのでしょうか。
前は選べたような気がしたのですが……。
771デフォルトの名無しさん:2008/05/12(月) 18:44:54
3.0/3.5のオブジェクトを使わなければ、2.0と一緒だから。
772デフォルトの名無しさん:2008/05/12(月) 18:47:37
>>770
Express版?
プロジェクトのプロパティから選べない?
773デフォルトの名無しさん:2008/05/12(月) 22:59:39
>>770

alt+p alt+pでどうよ
774デフォルトの名無しさん:2008/05/12(月) 23:05:08
おっと自分の質問忘れた
sqlサーバーコンパクトのノースウインドいじっているんですが
catgoryのクエリーってすごく遅いんですけど
普通にドロッアンドペーストして
fillで出した方が早いですよね?
こういうものなんですか?

皆さんはアダプターからクエリー使ってます?
まあおいらのpcがぼろいと言えばぼろいんだが・・・涙
775デフォルトの名無しさん:2008/05/12(月) 23:13:44
>>756
分かりませんでしたぁああ
すいません 涙
776デフォルトの名無しさん:2008/05/13(火) 00:01:02
>>756が分からないならプログラミングなんて諦めるべき
777デフォルトの名無しさん:2008/05/13(火) 12:13:18
質問させてもらいます。
フォームの中にNumericUpDownを使ったものを考えていて、
UpDownButtonを押すとそれぞれのとき設定した最小値や最大値に一回でなるようにしたいと思っています。
また、インクリメントするためのUpDownButtonを残して
その横にMaxMinButtonを付けるなど拡張したものが作れないかと思っています。
テキストエリアと、Up Down Max Minの4つのボタンが付いたコントロールのことです。
どのようにして作ればいいかなどのアドバイスをよろしくおねがいします。
778デフォルトの名無しさん:2008/05/13(火) 12:51:13
>>777
UserControlにNumericUpDownコントロールとButtonを貼り付けて
ButtonのClickイベントハンドラでNumericUpDownの値を最大/最小値に設定すればいいんじゃないかと。
テキストエリアとUp/Downを分けたいならNumericUpDownじゃなくてTextBoxとButtonにすれば。
779デフォルトの名無しさん:2008/05/13(火) 16:52:26
XP SP3をクリーンインストールしてみたけど、.NETの扱いが微妙なんだね。
一応2.0は入ってるみたいだけど、Microsoft Updateしてみるといくつかパッチがあったから完全じゃないみたい。
DirectXはドライバの日付は4/14になってたけど、Managedは入っていないから、結局2008/03版を入れ直した。
780デフォルトの名無しさん:2008/05/13(火) 17:05:02
>>779
HFSLIPで.NET2.0SP1以降とかDirectXredist_Mar2008とかを好みに応じて統合すればいいじゃん。
781デフォルトの名無しさん:2008/05/13(火) 17:37:19
C#でテトリスつくりたいのですが、どうすればいいかおしえてください
(できれば参考サイトをおしえてください)googleで検索しても
でないのでおねがいします。
782デフォルトの名無しさん:2008/05/13(火) 17:38:54
783デフォルトの名無しさん:2008/05/13(火) 17:43:26
すいません厨房なので日本語のサイトをおねがいします。
784デフォルトの名無しさん:2008/05/13(火) 17:45:51
プログラムに英語も日本語もねえよ。
785デフォルトの名無しさん:2008/05/13(火) 17:46:28
悪いことは言わん
あきらめろ
786777:2008/05/13(火) 18:09:26
>>778
> UserControlにNumericUpDownコントロールとButtonを貼り付けて
> ButtonのClickイベントハンドラでNumericUpDownの値を最大/最小値に設定すればいいんじゃないかと。

やはりそれが一番なんでしょうね
もしNumericUpDownの継承先から作るとしたらどういう設計になりますかね
787デフォルトの名無しさん:2008/05/13(火) 18:15:47
>>786
キモイ設計になる。
考慮する価値は全くない。
788デフォルトの名無しさん:2008/05/13(火) 19:13:25
WPFのTabControlについて質問です。

Windowを要素に持つコレクションを、ItemsSourceにしていて、
(1) Windowのタイトルをタブのヘッダに表示する。
(2) WindowのContentをタブに表示する。

というのを作りたいのですが、ItemTemplate、ContentTemplateをどのように記述すればよいのでしょうか。
789デフォルトの名無しさん:2008/05/13(火) 19:59:09
C#に限ったことでないけど,一応C#で開発しているのでここにポスト

今ListBoxをオーナードローで使っていて,そのListBoxの内部にユーザコントロールを配置している.
で,そのListBoxのDrawItemイベントで内部のユーザーコントロールを適当な位置に配置しているんだが,
このときListBoxのSelectedChangeイベントやMouseMoveが内部のユーザーコントロールに握りつぶされてしまい,
ListBoxの項目の選択やマウスホバーによる項目の表示切替(浮き上がってみせるとか)ができない.

どなたかListBoxをオーナードローにして内部にコントロールを配置したとき,ListBoxまでイベントを上げる方法を教えてください
790デフォルトの名無しさん:2008/05/13(火) 20:47:53
>>776
分かりましたー
最後のやつチェック入れるのがポイントでしたー

みなさんthk
791デフォルトの名無しさん:2008/05/13(火) 22:36:35
すみません、まだ小さなプログラムしか作ったことが無い者です。

そろそろ難しいプログラムに挑戦したいってことで、
データベースを使ったプログラムの計画は練ったんですが
データベースとの接続クラスってどうやって保持するのが一般的ですか?

DBConnectionってやつです。

C#とSQLServerを使って作る予定で
とりあえずはじめはWindowsFormとローカルのデータベース、
次にサーバーにデータベースを移動させて、
最終的にはASP(?)とかも使えるといいなーって感じです。

とりあえず今は起動用のvoid Mainが入ったexeをひとつ、
そこからログインフォームを呼び出して、
ログインが完了したらメインメニューとメイン画面を呼び出すつもりです。

データベースのコネクションって、
どこでインスタンス化して、どこに保存しておくのがベストですか?
初心者すぎる質問かも知れませんが、宜しくお願い致します。
792デフォルトの名無しさん:2008/05/14(水) 00:10:59
使う場所で保存する、としか言えんぞ
793デフォルトの名無しさん:2008/05/14(水) 00:19:48
教えて下さい。m(_ _)m

デスクトップ上のアイコンの場所を移動するのに、

C++だと、

//デスクトップのハンドルを取得
HWND hWnd;
hWnd = FindWindow("ProgMan",NULL);
hWnd = GetWindow(hWnd, GW_CHILD);
hWnd = GetWindow(hWnd, GW_CHILD);
if(!hWnd)
return false;
SendMessage(hWnd, LVM_SETITEMPOSITION, (WPARAM)0, (LPARAM) MAKELPARAM
((int)10, (int)10)); //set

でいけるようなんですが、
これをC#で書くにはどうすればいいのでしょうか??
794デフォルトの名無しさん:2008/05/14(水) 00:32:30
P/Invoke
795デフォルトの名無しさん:2008/05/14(水) 00:45:01
796デフォルトの名無しさん:2008/05/14(水) 05:54:39
>>788
> (2) WindowのContentをタブに表示する。
これ無理
797デフォルトの名無しさん:2008/05/14(水) 09:18:33
>>789
WPFに行こうってことだよきっと
798デフォルトの名無しさん:2008/05/14(水) 15:10:01
>>797
やっぱりMSの陰謀だったか・・・
まぁとりあえず,ListBoxのイベントは起こらないことを前提に,ユーザコントロール側でゴニョゴニョすることにした
799デフォルトの名無しさん:2008/05/14(水) 15:55:59
> オーナードローにして内部にコントロールを配置
って具体的にどうやるんだ?てか、どうやってる?

>>789から読み取れる情報から考えても、
「まさか、コントロールを重ねて配置とか馬鹿げたことをしてないよな?」
という疑念しか生まれなかったんだが
800デフォルトの名無しさん:2008/05/14(水) 15:57:17
>>799
ユーザコントロールをロードしてParentをListBoxにした後,DrawItemイベントで適切な位置に配置してる.
801デフォルトの名無しさん:2008/05/14(水) 16:45:10
>>772
ありがとうございます。
プロジェクトのプロパティからは選べるのですが、
プロジェクトを作るときに前選べたような気がしたのでできないかな〜と。
Express版です。

>>773
ありがとうございます。
どの画面ででしょうか?
802デフォルトの名無しさん:2008/05/14(水) 17:36:31
visualC#でテキストボックス内に変数を入れたいのですが、
下のように書いてもできません。どうすればテキストボックス内に変数をいれられますか?
namespace _001
{
public partial class Form1 : Form
{
int test = 1;
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = test;
}
}
}
803デフォルトの名無しさん:2008/05/14(水) 17:40:33
画像をドラッグスクロールできるようXAMLを下のように書きましたが、イベントハンドラが呼ばれません。
(イベントハンドラにブレークポイントを仕掛けて確認)
いろいろ試してみたところ、ScrollViewerのFocusableをfalseにすると呼ばれるようになったのですが
どうしてそうなるのか理由がわかりません。
何故なんでしょうか?

<ScrollViewer Name="scrollViewer"
 HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"
 MouseLeftButtonDown="scrollViewer_MouseLeftButtonDown"
 MouseLeftButtonUp="scrollViewer_MouseLeftButtonUp"
 MouseMove="scrollViewer_MouseMove">
 <Image Name="image" Stretch="None" />
</ScrollViewer>
804デフォルトの名無しさん:2008/05/14(水) 17:42:14
>>802
できないとは、どうなるためにできないのか。
エラーならその内容も書くように。

textBox1.Text = test.toString();
とかは?
805デフォルトの名無しさん:2008/05/14(水) 17:45:15
エラー内容は「型 'int' を型 'string' に暗黙的に変換できません。」です。
ちなみに>>804さんの言ったようにやってもできませんでした。
ちなみにmicrosoftvisualC#をつかっています。
806デフォルトの名無しさん:2008/05/14(水) 17:57:13
>>805
>エラー内容は「型 'int' を型 'string' に暗黙的に変換できません。」です。
>>804のようにすればこのエラーは消えるよ。
それでもできないってことはまた別のエラーが出たって事なんだからそれも晒して。
toString()がToString()の間違いとかそんな事のような気はするけど。
807デフォルトの名無しさん:2008/05/14(水) 17:58:35
これ、通ったから>>804で合ってると思うけど。

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
int test = 1;
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = test.ToString();
}
}
}
808デフォルトの名無しさん:2008/05/14(水) 18:00:08
ああ、そういうことか。
エラーメッセージはちゃんと読みましょう。
809デフォルトの名無しさん:2008/05/14(水) 18:15:35
「できません」の一言でいままで過ごしてきたから原因不明だったんだろうね
そうですね
810デフォルトの名無しさん:2008/05/14(水) 18:28:11
>>803
ScrollView の中の要素がHandledにしたんだろう
811デフォルトの名無しさん:2008/05/14(水) 19:28:47
ああ、toString()はすぐ気がついたがIDEで候補出るからわかるべ、と放置してしまった・・・
812デフォルトの名無しさん:2008/05/14(水) 19:33:00
"" + test でも出来るよ
813デフォルトの名無しさん:2008/05/14(水) 19:52:24
そんなjavaScriptちっくな書き方は嫌だ。
814デフォルトの名無しさん:2008/05/14(水) 20:20:25
>>796
マジですか……地道にC#で書きます、ありがとうございました。
815デフォルトの名無しさん:2008/05/14(水) 20:57:08
>>814
無理ってのは、ほかの要素ツリーの下に入ってる要素を
そこから切り離さずにほかの要素ツリーの下に入れるのが無理ってことだぞ
Window.ContentはWindowの下にすでに入ってるからTabItemの要素ツリーには入れられない
816デフォルトの名無しさん:2008/05/14(水) 21:04:45
最近始めた者ですが、C#の推薦図書って何があります?
C/C++やJavaはいろいろ見るのに#は全然見かけない…
817デフォルトの名無しさん:2008/05/14(水) 21:12:55
簡単な言語だから本を書くまでもない。
818デフォルトの名無しさん:2008/05/14(水) 21:16:50
俺も知りたい
c#からプログラミングを始めるとしたらどんな本ががいいの?
俺が知ってるのは

猫でも分かる・・・
独習C#
C#の絵本 くらいなんだが
819デフォルトの名無しさん:2008/05/14(水) 21:24:03
>>818
最近はどうか知らないけど、俺が本当の初心者の時はVisual C#.NET入門 基礎編って本がよかった。
かなり読みやすいよ。
820デフォルトの名無しさん:2008/05/14(水) 21:47:13
>>818
プログラミング自体が初めてだったら、猫でもかな
それ以外読んだことないけど
って言っても好き嫌いあるんで、立ち読みか図書館でも見てみたら
821デフォルトの名無しさん:2008/05/14(水) 21:49:52
そもそもプログラミングど素人にC#は向いてない気もするんだけど
822デフォルトの名無しさん:2008/05/14(水) 21:54:53
それはない
823デフォルトの名無しさん:2008/05/14(水) 21:55:50
最初からオブジェクト指向的に考える癖がつく方が
何かと良いんじゃね?
824デフォルトの名無しさん:2008/05/14(水) 22:03:29
一切書籍に頼らずMSDNと既存のソースコードだけを見る俺は異端なのか
825デフォルトの名無しさん:2008/05/14(水) 22:05:47
>>824
自分もはじめのうちはそれで勉強してたけどね
最近は本も読むようになったよ
826デフォルトの名無しさん:2008/05/14(水) 22:08:30
>>824
もともとプログラミングに向いてる人はそれでいける
が、不向きなのにやらなきゃいけない人もいるんだよ
827デフォルトの名無しさん:2008/05/14(水) 22:08:49
言語仕様自体はともかく初学者のための情報が多くないからなあ
VBとは違ってMSDNにも初心者向けの言語解説記事が全く無い
828デフォルトの名無しさん:2008/05/14(水) 22:10:43
てゆーか、本じゃないと読む気しない
829デフォルトの名無しさん:2008/05/14(水) 22:12:24
本だとパラパラ捲って探すのが楽なんだよね
830デフォルトの名無しさん:2008/05/14(水) 22:12:46
>>810
ルーティングイベントの仕組みを調べてみました。
ScrollViewerのフォーカス関連の処理でHandledにされたんだろうなぁ
ということで納得しました。
831デフォルトの名無しさん:2008/05/14(水) 22:43:39
しかし最近からプログラミングを始める人って大変だろうなあ
いきなりオブジェクト指向の知識が必要だったり、巨大なライブラリから目的の関数を探し出したり。
俺は少しずつハードルが上がってったから苦労がわからないぜ。
832デフォルトの名無しさん:2008/05/14(水) 22:51:58
しかし最近からプログラミングを始める人って楽だろうなあ
検索するだけでいきなり必要な知識が手に入るし、
OPコード表は暗記しなくて済むし、ハンドアセンブルしなくて済むし、
巨大なライブラリがあるから呼ぶだけで高度な処理ができるし。
掛け算ルーチンから作る苦労とかって分かってもらえないだろうな。
833デフォルトの名無しさん:2008/05/14(水) 22:54:06
初心者がブチあたる壁:検索単語が分からない

\ いろいろやってみましたが動きません.どうすればいいですか? /

(^o^) xx調べれ
834デフォルトの名無しさん:2008/05/14(水) 22:59:09
>>824
C#関連はプログラミングC#って本を一冊だけ持ってるけど、殆ど開いてない。
ググって解決する方が遥かに多いw
835デフォルトの名無しさん:2008/05/14(水) 22:59:56
ここの板の人たちって現場ではどのくらいのレベルなの?
回答する人たちね。
836デフォルトの名無しさん:2008/05/14(水) 22:59:58
初心者は高度なことと簡単なことの区別がつかないので、
いきなり高度のことしようとするから。かといって検索の便利さ知ってるから
助言されても絶対頭からドキュメントを読もうとはしない。
837デフォルトの名無しさん:2008/05/14(水) 23:02:07
>>833
ググレカスだと糞の役にも立たんけど、xxでググレカスだと
それだけで解決しちゃう事も多いな。
838デフォルトの名無しさん:2008/05/14(水) 23:04:03
最近、キーワード出してもソース張らないと逆ギレする奴、多いよな。
839デフォルトの名無しさん:2008/05/14(水) 23:04:07
>>835
俺の場合プログラミングは本職じゃなくて趣味と研究の道具
学生の頃バイトしてた事はあるけど
840デフォルトの名無しさん:2008/05/14(水) 23:18:59
たった一言で助けられたキーワードとしてはTypeConverterとIDesignerHost
本一冊分くらいある価値ある一言だった。

あと、俺の中での最も役に立ったキング・オブ・ツンデレレスは
DxScanのソース嫁カスwwwwwwww
DirectShowが一気に理解できた。今でも神レスだと思ってるw
841デフォルトの名無しさん:2008/05/15(木) 00:27:59
WebControlの話もここでよかと?
842デフォルトの名無しさん:2008/05/15(木) 00:36:09
よかよ
843デフォルトの名無しさん:2008/05/15(木) 06:23:09
>>840
こういうのがいるから
スレが荒れてゆくのか・・・
844デフォルトの名無しさん:2008/05/15(木) 12:10:58
TypeConverterって使ったこと無いけどクラス名を見ただけで死ぬほど不吉な匂いがするな
845デフォルトの名無しさん:2008/05/15(木) 12:18:18
>>844
不思議な感覚の持ち主だね。
846デフォルトの名無しさん:2008/05/15(木) 13:27:00
XP SP3クリーンインストールしたら、WPFのMediaElementが使えなくなった。
Source指定してPlay()してもエラーが出るわけでもなく、何も再生されない状態。

メディアプレイヤー10を入れたら直ったけど、どこかに動作環境書いてあるのかなあ。
847デフォルトの名無しさん:2008/05/15(木) 13:32:40
おいらも見つけられなかったけどWPFのAV系はWMP10が必須ぽ。
> MediaElement および MediaPlayer は、いずれもオーディオ、ビデオ、
> オーディオ コンテンツ付きビデオを提供します。
> どちらの種類も対話的に、またはクロックで制御でき、メディア再生用の
> Microsoft Windows Media Player 10 OCX への依存は最小限で済みます。
848デフォルトの名無しさん:2008/05/15(木) 23:55:31
ものすごく基本的な質問で申し訳ないのですが
ボタン1を押したときは、テキストが更新されますが
ボタン2の場合はテキストに何も表示されません
クラスを自作した場合に、フォームのコントロールは変更できないのでしょうか?

private void button1_Click(object sender, EventArgs e)
{
bb("button1");
}
public class test : Form1
{
public void aa( string str)
{
bb( str );
}
}
public void bb( string str )
{
textBox1.Text = str;
}
private void button2_Click(object sender, EventArgs e)
{
test a = new test();
a.aa("button2");
}
849デフォルトの名無しさん:2008/05/16(金) 00:09:31
>>848
下の余白に書かれたプログラムは一体なんのためにつけたの?
もちろん最初の質問とは無関係なのは分かってるが
850デフォルトの名無しさん:2008/05/16(金) 00:58:22
しょうむない質問ですんません。

internalってアセンブリ内で使えるとあるんだけど、
アセンブリって具体的にどの範囲までなのかよくわかんないです。
DLL、EXEを作る単位ということは・・・・
プロジェクト内のソースって理解であってますか?

ちがってたら、どこ見れば、このクラスはアセンブリ内か外かわかるのだ?
851デフォルトの名無しさん:2008/05/16(金) 01:19:47
>>850
アセンブリよくわからん
でもそこまで話広げる必要はないんじゃないかと思われ
852デフォルトの名無しさん:2008/05/16(金) 02:47:09
1プロジェクト=1アセンブリ
でいいと思うけど
そうじゃないふうにも出来たはずだけど
853759:2008/05/16(金) 11:04:41
>>760
だからとりあえずって言ってるじゃないですかコノヤロウ><
>>761以下
ありがとうございます。
854デフォルトの名無しさん:2008/05/16(金) 14:21:32
Resources.Add("foo", new double[] { 1.1, 2.2, 3.3 });

ウィンドウのResourcesにdouble型の配列を設定したいのですが、XAMLではどう書くのでしょうか?
VC#2008EE WPFアプリ
855デフォルトの名無しさん:2008/05/16(金) 15:39:20
<x:Array x:Key="foo"
xmlns:si="clr-namespace:System;assembly=mscorlib"
Type="{x:Type si:Double}">
<si:Double>1.1</si:Double>
<si:Double>2.2</si:Double>
<si:Double>3.3</si:Double>
</x:Array>
856デフォルトの名無しさん:2008/05/16(金) 16:03:09
XAMLっていうかXMLが冗長で可読性も最悪だあ
857デフォルトの名無しさん:2008/05/16(金) 17:15:34
>>855
それでできました。マークアップ拡張機能ってやつなんですね。
ありがとうございました。
858802:2008/05/16(金) 17:16:48
返信遅れました。みなさんありがとうございます。無事解決できました。
また質問ですがvisualC#で乱数をつかえません。下のようにすると
静的でないフィールド、メソッド、またはプロパティ 'System.Random.Next(int, int)' で、オブジェクト参照が必要です
とでます。理由をおしえてください
namespace _001
{
public partial class Form1 : Form
{
Random Random = new System.Random();
int coin = 100;
int check = 3;
int[] count = new int[] { 1,1,1 };
int[] koma = new int[] { Random.Next(1, 4), Random.Next(1, 4),Random.Next(1, 4),};
public Form1()
{
InitializeComponent();
}

private void start_Click(object sender, EventArgs e)
{
check = check - 3;
if (check == 0){
coin -= 3;
for (int i = 0; i <= 2; ++i)
{
count[i] -= 1;
}textcoin.Text = coin.ToString();
}}}}
859デフォルトの名無しさん:2008/05/16(金) 17:18:40
Random Random = new System.Random(); を
Random random = new Random();

にしてみ
860デフォルトの名無しさん:2008/05/16(金) 18:33:30
>>858
どこがおかしいのか調べるコツはコードを小さくにしていくことだよ。
861デフォルトの名無しさん:2008/05/16(金) 18:37:34
ビットマップを配列にして使いたいんですが
Bitmap[] _bmp0;
で宣言して
_bmp0[0] = new Bitmap(320, 240, PixelFormat.Format32bppArgb);
後からこれで定義すると
コンパイルはできるのですが 実行すると白地に赤×マークになり うまくいきません

配列のビットマップはどう書けばいいですか
862デフォルトの名無しさん:2008/05/16(金) 19:03:18
Bitmap[] _bmp0 = new Bitmap[3];
と先に入れ物を用意しとかないと
というかList<T>の方が使いやすいような
863デフォルトの名無しさん:2008/05/16(金) 19:07:03
できました サンクスです
864デフォルトの名無しさん:2008/05/16(金) 19:27:55
UrlCreateFromPath相当の機能って、どのクラスにある??
865デフォルトの名無しさん:2008/05/16(金) 20:11:13
その関数がどういう機能なのか具体的に書くのが質問のコツだぜ

System.Uri
866デフォルトの名無しさん:2008/05/16(金) 20:39:40
>>865
Very thanks!
期待通りでした。
867デフォルトの名無しさん:2008/05/16(金) 21:26:30
<Window.ContextMenu>
 <ContextMenu>
  <MenuItem Header="あああ" Command="c:Window1.MyCmd" />
 </ContextMenu>
</Window.ContextMenu>
<Window.CommandBindings>
 <CommandBinding Command="c:Window1.MyCmd" Executed="CommandBinding_Executed" CanExecute="CommandBinding_CanExecute" />
</Window.CommandBindings>
<Window.InputBindings>
 <KeyBinding Command="c:Window1.MyCmd" Gesture="Ctrl+Q" />
</Window.InputBindings>

public partial class Window1 : Window {
 public static readonly RoutedCommand MyCmd = new RoutedCommand();
 private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e) { MessageBox.Show("コマンド実行"); }
 private void CommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = true; }
}

Ctrl+Qでコマンドは実行できるのですが、コンテキストメニューの項目が灰色で選択できない状態です。
e.CanExecuteを常にtrueにしているのに、何故コンテキストメニューの方は無効になってしまうのでしょうか?
868デフォルトの名無しさん:2008/05/16(金) 22:07:34
869デフォルトの名無しさん:2008/05/16(金) 22:27:34
>>868
バグっすか。こういうのって後でちゃんと修正されるのかな…
リンク先の通りやったら有効になりました。thx
870858:2008/05/16(金) 22:28:19
>>859
書き換えてみましたけど、なぜかできませんでした。
やはりvisualC#では乱数を使うことができないのでしょうか?
(そんなことないとは思うのですが・・・・・。)
871デフォルトの名無しさん:2008/05/16(金) 22:34:10
>>870
Random.Next(1, 4) の方も random.Next(1, 4) にした?

そもそもオブジェクトって考え方わかる?
C言語のrand関数みたいなのだと、複数の独立した乱数列作れないのよ。
C#だと、
Random rnd1 = new Random();
Random rnd2 = new Random();
みたいに複数の乱数列作れる。
rnd1.Next() みたいに使う。
872デフォルトの名無しさん:2008/05/16(金) 22:35:35
>>870
Random Randomとか宣言してるけど、これそもそもコンパイル通る?
Random randomとかしないと、コンパイラには型とインスタンス変数の
見分けつかないんじゃないかな?
873デフォルトの名無しさん:2008/05/16(金) 22:44:59
>>872
それが通るんだなあ
クラスと同じ名前のプロパティとかあるでしょ
874デフォルトの名無しさん:2008/05/16(金) 22:56:47
>>873
うそで〜とか思って試してみたら通ったΣ(´Д`; )
警告すら出ないとか、びっくりしたわw
今の今まで気づいてなかった俺もちょっとどうかと思うがorz
875デフォルトの名無しさん:2008/05/16(金) 23:07:20
>>858
Random random = new System.Random();
int[] koma;

private void Form1_Load(object sender, EventArgs e)
{
koma = new int[] { random.Next(1, 4), random.Next(1, 4), random.Next(1, 4), };
}
876デフォルトの名無しさん:2008/05/17(土) 10:17:02
>>870
「なぜかできませんでした」とかふざけてるの?
どうできなかったかくらい書けや。
877デフォルトの名無しさん:2008/05/17(土) 15:05:29
通る通らないじゃなく、書くべきか書かないべきかを論じた方が良い
878858:2008/05/17(土) 16:04:49
>>871
言うとおりやってみましたけど、エラー内容も同じで通りませんでした。
>>875
それを入力してみましたがコンパイルはとおりましたが、テキストボックスや
ボタンなどが表示されなくなりました。
879デフォルトの名無しさん:2008/05/17(土) 17:22:56
そのエラー内容をそのままここにアップしろてことだよ
880デフォルトの名無しさん:2008/05/17(土) 17:25:36
<Window.ContextMenu>
 <ContextMenu>
  <MenuItem Header="ほげ" Command="c:Window1.MyCmd"
          CommandTarget="{Binding Path=PlacementTarget, RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}}" />
 </ContextMenu>
</Window.ContextMenu>

public static readonly RoutedCommand MyCmd = new RoutedCommand("MyCmd", typeof(Window1),
 new InputGestureCollection(new InputGesture[] { new KeyGesture(Key.A, ModifierKeys.Control) }));

コンテキストメニューに"ほげ Ctrl+A"と表示され、Ctrl+Aでコマンドも実行されることを確認しました。
試しに
MyCmd.InputGestures.Clear();
MyCmd.InputGestures.Add(new KeyGesture(Key.B, ModifierKeys.Control));
と動的にショートカットを変更する処理を入れてみたところ、動作自体はちゃんと変更されたのですが
コンテキストメニューの表示が"ほげ Ctrl+A"のままでした。
表示も更新させるにはどうやればいいのでしょうか?
881デフォルトの名無しさん:2008/05/17(土) 18:37:25
>>878
871の通りにやってみたらなぜかできました。
882デフォルトの名無しさん:2008/05/17(土) 18:39:14
なぜか(笑)
883デフォルトの名無しさん:2008/05/17(土) 18:47:10
>>878
コントロールが表示されなくなったってのは、一体どこまで書き換えてるんだという感じだな。
プログラミングの基本的なことも知らなさそうだから、
先ずは一通り入門書やってみた方がいいんじゃないか?
でないといつまで経っても、乱数を使うなんて超基本的なことも出来ないぞ。
884デフォルトの名無しさん:2008/05/17(土) 20:32:26
リッチテキストについて質問です。
テキストエディッタによくある「指定文字列で改行」を実装したいのですが
どのような方法で実装していけばいいでしょうか
885884:2008/05/17(土) 20:35:04
誤字申し訳ないです。
「指定文字列で改行」でなく「指定文字数で改行」です。

よろしくお願いします。
886デフォルトの名無しさん:2008/05/17(土) 23:40:55
>>885
回数指定クラスを使った正規表現を思い付いた
887デフォルトの名無しさん:2008/05/17(土) 23:54:35
個人的にはその辺になるともうRichTextBoxじゃ首が回らなくなると思うけどな
EM_SETWORDBREAKPROCEX でなんとかなるかな?
888デフォルトの名無しさん:2008/05/18(日) 00:33:14
var point = new Point(
  123,
  456
); <- ここのインデントを自動的に下げる機能はVC# Expressにはない?
889858:2008/05/18(日) 00:52:59
>>883
ありがとうございます、みたところ変なところまで書き換えてしまっていました。
もう一度冷静になってやってみたところ成功しました。
もうひとつ質問なのですが、さっき問題になっていたkoma
をテキストボックスに表示しようとしたのですが、実行してボタンを押すと
ハンドラされていない例外が発生しましたといわれました。おそらく
どこかを大きく間違っているとおもうのですがわからないのでおしえてください
namespace _001
{
public partial class Form1 : Form
{
Random random = new System.Random();
int coin = 100;
int check = 3;
int[] count = new int[] { 1, 1, 1 };
int[] koma;
public void Form1_Load(object sender, EventArgs e)
{
koma = new int[] { random.Next(1, 4), random.Next(1, 4), random.Next(1, 4), };
}
public Form1()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
textBox1.Text = koma[0].ToString();
}}}
890デフォルトの名無しさん:2008/05/18(日) 00:55:53
まだ変なところを書き換えたままだよ。
もっかいプロジェクトを作り直してみたら?
891858:2008/05/18(日) 00:59:09
そうですか?どの変が変なのでしょうか?
892デフォルトの名無しさん:2008/05/18(日) 01:04:35
>>891
public void Form1_Load(object sender, EventArgs e)

this.Load += new System.EventHandler(this.mainForm_Load);
893858:2008/05/18(日) 01:08:40
>>892
それは書き換えって言うより追加ですよね?
894デフォルトの名無しさん:2008/05/18(日) 01:10:24
>>892
間違えて送信してしまった。
public void Form1_Load(object sender, EventArgs e)
の部分をそのままコピペしても実行されないよ。

とりあえずForm1_Loadを削除して、デザイナのイベントからLoadの所をダブルクリックする。
そうするとForm1_Loadがコードに追加されるからそこに↓を記述する。
koma = new int[] { random.Next(1, 4), random.Next(1, 4), random.Next(1, 4), };
895デフォルトの名無しさん:2008/05/18(日) 01:14:27
Loadは出来ているようだから、
button2_Click の方だな。
896858:2008/05/18(日) 01:16:47
>>894
できました、見たところ記述する場所(?)がわるかったみたいですね。
ありがとうございました。まだまだプログラムはネットの入門サイトみて
やってるばかりなので一回入門書買って真剣に勉強したいとおもいます。
というわけでvisualC#の入門書で一番やさしいのはなんですか?
897884:2008/05/18(日) 01:42:53
>>886
回数指定クラスについてよくわからないのでググってみます。

>>887
RichTextBox以外の選択肢だとユーザー作成のコンポーネントということでしょうか?
今までに利用したことがないので調べてみたいと思います。

またEM_SETWORDBREAKPROCEXについて軽くググってみましたが
ちょっとややこしいみたいですね…。
こちらも後ほど詳しく調べてみたいと思います。


みなさまありがとうございました。
898デフォルトの名無しさん:2008/05/18(日) 02:28:30
>>880
RoutedCommand及びInputGestureCollectionのメンバ見れば分かるけど、ジェスチャの変更を通知する機構は存在していない。
MenuItem.Commandプロパティ自体を変更すればMenuItem.InputGestureTextも当然変わるのでこれをどうにかする。
例えばmyCmdって名前のリソースを考えて、
XAMLで
・MenuItem.CommandはmyCmdをDynamicResourceとして参照する
コードで
・Window.InitializeComponent直後にResources.Add("myCmd", MyCmd)する
・ジェスチャ更新時にはResources["myCmd"]に一旦nullを入れた後MyCmdを入れなおす
899デフォルトの名無しさん:2008/05/18(日) 03:12:26
>>896
入門書を買うのもいいけどもう少し入門サイトで
勉強してみるのもいいんじゃないかと思った。
最初の内は意味がわからないプログラムを右から左に
書き写していくうちにみえてくるものがあると思う。
もちろん手元に本をおいて勉強する方法も全然問題ないけど。
900デフォルトの名無しさん:2008/05/18(日) 06:48:17
>>896
猫でもわかるシリーズで一緒にやろうぜ
オモローそうだし
ググってみ?HPで遊んだあと、気に入ったら本書自腹で買う予感
901デフォルトの名無しさん:2008/05/18(日) 06:51:33
ちなみにC#はVBと違い大文字小文字判断するんだが・・・
902デフォルトの名無しさん:2008/05/18(日) 08:54:47
CのstaticってC#ではどんなキーワードになってるんでしょうか。

何も考えずに
static int a;
のように打ったら怒られました、、、
903デフォルトの名無しさん:2008/05/18(日) 09:01:04
>>902
メンバ関数内でstaticは使えない。メンバー変数として使用すること。
VBだと関数内で使えるのだが、メンバー変数で使うのと意味が違うので要注意。
904デフォルトの名無しさん:2008/05/18(日) 09:04:19
補足。
ファイルスコープの static は static private なメンバー変数に。
905デフォルトの名無しさん:2008/05/18(日) 09:09:23
>>903-904 さん
ありがとうございました。分かりました。
906858:2008/05/18(日) 13:39:15
>>899
ありがとうございます、一応今のところ入門サイトを見て勉強していますが、
多少わかりにくい部分があるので本を買おうかとおもっています。
>>900
猫でも分かるシリーズみつけました、ここでも勉強してみようとおもいます。
皆様ありがとうございました。
907デフォルトの名無しさん:2008/05/18(日) 15:13:11
>>898
それでできました。ありがとう。
908デフォルトの名無しさん:2008/05/18(日) 16:31:56
USBメモリが挿されたことを検知するためにはどうしたらいいですか?
909デフォルトの名無しさん:2008/05/18(日) 16:35:06
太閤検知
910デフォルトの名無しさん:2008/05/18(日) 16:53:03
WM_DEVICECHANGEでも使えばいいんじゃね
911デフォルトの名無しさん:2008/05/18(日) 23:13:49
stringを関数に渡して、そこで加工をして、呼び出し元に返すにはどうすれば良いですか?
以下のようにやったけどstring xはコピーであり、testFuncが終わるとなくなってしまいます。

private bool testFunc(string x)
{
 x = x + "aaa";
 return true;
}

private void button1_Click(object sender, System.EventArgs e)
{
 string sss = "test";
 testFunc(sss);
 MessageBox.Show(sss, "testaaaになった");
}

912デフォルトの名無しさん:2008/05/18(日) 23:20:07
>>911
private bool testFunc(ref string x) で。
913デフォルトの名無しさん:2008/05/18(日) 23:20:13
>>911
今のままじゃstringはメソッドの中でしか使えないので
メソッドの外で宣言してグローバル変数にしないと
914デフォルトの名無しさん:2008/05/18(日) 23:20:54
基本的に文字列は不変(変更できない)
変更する文字列にはStringBuilderをつかう
915デフォルトの名無しさん:2008/05/18(日) 23:21:33
>>912 の補足。
呼び出し側もrefが必要か。
testFunc(ref sss); 
916デフォルトの名無しさん:2008/05/18(日) 23:24:35
こんばんわ〜。レスありがとうございます。m(_ _)m

>>912
早速ためさせていただきました。でも
C:\Documents and Settings\xxxxx\My Documents\Visual Studio Projects\Test\Form1.cs(124): 'Test.Form1.testFunc(ref string)'
に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。

ってなってしまいまする。


917デフォルトの名無しさん:2008/05/18(日) 23:28:20
みなさま、ありがとうございます。

>>915さんのご指摘のとおりにやったら出来ました。

そのほかの方々からのご意見も非常に気になるところですが。
(グローバル変数じゃなければいけない、StringBuilderを使う、などなど)

CやC++のポインタみたいなものがあればよいのですが。。

皆さんありがとうございました。
918デフォルトの名無しさん:2008/05/18(日) 23:34:12
private string testFunc(string x)
{
 return x + "aaa";
}
private void button1_Click(object sender, System.EventArgs e)
{
 string sss = "test";
 sss = testFunc(sss);
 MessageBox.Show(sss, "testaaaになった");
}

これじゃ駄目か?
919デフォルトの名無しさん:2008/05/18(日) 23:34:34
クラスの参照は全部ポインタみたいなもんでしょ
ポインタ演算はできないけども
920デフォルトの名無しさん:2008/05/18(日) 23:36:20
>>917
>CやC++のポインタみたいなものがあればよいのですが。。
ref がまさにそれ。
921デフォルトの名無しさん:2008/05/18(日) 23:38:42
>>918
それでもいいかもしれんけど、TryParseみたいに、成功かどうかをリターン値で返して、
引数で結果を返すとかやりたいってこともあるしな。
922デフォルトの名無しさん:2008/05/19(月) 00:10:48
ref で渡さなくてもクラス内のプロパティとか変更できる挙動にも少し混乱した、おれ。
refって参照渡しではなくて、参照が変更可能な意味なんだよな。
923デフォルトの名無しさん:2008/05/19(月) 00:15:36
値型をrefで渡すと参照になって
参照をrefで渡すと参照の参照になるんだろ
924デフォルトの名無しさん:2008/05/19(月) 00:15:48
>>922
まあ、そう。
参照型をrefすると2重ポインタ状態になる。

SomeType** p に対して p = new SomeType(); するような感覚。

値型に対するrefの場合普通にポインタと同じ感覚になる。
925デフォルトの名無しさん:2008/05/19(月) 00:17:45
なるほど、勉強になる。
926デフォルトの名無しさん:2008/05/19(月) 01:56:54
最初から素直にポインタ用意してくれりゃいいものを。。
927デフォルトの名無しさん:2008/05/19(月) 02:02:45
アドレス演算目的と参照目的は分けたほうがいいと思います、先生。
928デフォルトの名無しさん:2008/05/19(月) 02:19:31
いちいち*とか&とか付けなきゃいけない世界に戻るならJavaにいくわ
929デフォルトの名無しさん:2008/05/19(月) 03:36:35
C#からストアドプロシージャを実行する方法を教えてください。
DBはSQL Server 2005、ストアド自体はTransact-SQLで作成してます。

自分なりにググって見たんですが、ストアドプロシージャの作成方法ばかりで
C#からの呼び出しコード例が見当たりません。
930デフォルトの名無しさん:2008/05/19(月) 05:07:39
931デフォルトの名無しさん:2008/05/19(月) 08:46:36
>>926
ポインタは、間違った操作も平気でできるのと、
用途がいっぱいあってどの用途で使ってるのかわからないのが問題。

C# でポインタがないのは誤操作をなくすとともに、
プログラマの意図がソースに残るように用途ごとの構文作った。
C# で ref と out が分かれてるのも、用途が分かるように。
932デフォルトの名無しさん:2008/05/19(月) 09:47:10
コレクションでも配列でもいいのですが、たとえば元のデータが

いちご
にんじん
さんしょ

と有ったとして、プログラムの起動時に読み込みます。
そのデータをフォーム上でいじって

いちご
にんじん(削除)
さんしょう(更新)
しいたけ(追加)

という編集をしたあと、元のデータをもう一度読み込みマージしたいのですが、
データベースを使わないでやるなら、どういう流れで処理するのがよいのでしょうか?

上には更新も書きましたが、基本的には削除と追加だけでやろうと思います。
933デフォルトの名無しさん:2008/05/19(月) 09:50:02
マージって具体的に何をするのよ
934932:2008/05/19(月) 10:57:48
>>933
言葉が足りませんでした。

いちご, にんじん, さんしょ

と書いてあるテキストファイルを上の処理をすることで

いちご, さんしょう, しいたけ

に書き換えたいわけです。
普通に開いて全部書き込んでしまえばいいわけですが、
もし他の人も読み込んでいたら、他の人が編集する際に古いデータが上書きされてしまいます。

データベースを使うほどの内容でもないので、できればテキストファイルでやりたいなと思いました。
935デフォルトの名無しさん:2008/05/19(月) 11:24:00
テキストファイルは上書きされるのは避けられないさ
普通に開いて全部書き込めばいいと思うよ
936デフォルトの名無しさん:2008/05/19(月) 11:24:24
他の人が排他制御してない限りこちらのアプリ側でどうがんばっても上書きしちゃうんじゃないの?
ファイル名別にして保存するのが一番楽だと思うけど。
937デフォルトの名無しさん:2008/05/19(月) 11:34:57
何か知らんがDB使ったほうがいいような。SQLiteいいぞ
938932:2008/05/19(月) 11:35:12
>>935 >>936
まあ、冷静に考えてみればそれほど神経を使うくらいならデータベースを使う(mdbなんかも含めて)
方が早いかも知れませんね。
テキストファイルを開いて全部書き込むことにして、問題があったらDBを使う方向で考えることにします。

ありがとうございました。
939デフォルトの名無しさん:2008/05/19(月) 11:37:25
>>937
SQLiteってmdbよりもいいのかな?
C#から使うファイルベースのDBだったらmdbの方が手っ取り早そうだけど、
なんかmdbと比べて利点とかあるのかな?
940デフォルトの名無しさん:2008/05/19(月) 11:41:25
DB使ったって他の人が編集してるなら上書きされるのは避けられないだろ
自分が更新したら編集はやめさせるのか?
941932:2008/05/19(月) 13:07:34
>>940
Aがテキストファイルを開いてプログラムに読み込む。
Bがテキストファイルを開いてプログラムに読み込む。
Aがプログラム上で編集して書き込む。
Bがプログラム上で編集して書き込む。

Bが書き込む時に、Aが編集した内容を反映しつつ追加と削除を行いたい。
ということを考えてました。

でも、ここで書き込んでいるうちに、テキストファイルを編集するときに読み書きすれば
いいのかなと思ったり、mdbなりSQLiteなりを使ってもいいかなと考え直しました。
942デフォルトの名無しさん:2008/05/19(月) 13:25:37
むしろsdfで
943デフォルトの名無しさん:2008/05/19(月) 13:27:03
マージのやり方は何通りもあって、最後は判断をユーザーに任せるしかない。
この辺のアルゴリズムはDBを使っても一緒。
自身が読み込んだときのデータを編集後も記憶しておく。
書き出す直前にもう一度読み出しを行い、自身と読み込んだときのデータと同じ状態であるか確認。
同じなら変更を書き出し。
違うなら書き出しを取りやめるか何らかのマージ操作を行う。
良くあるのは他から変更されたデータと自身が書き出そうとするデータを両方表示して、
どちらを優先させるか選ばせるか、さらに編集を加えるかの判断をUIでオペレータに任せる。
944デフォルトの名無しさん:2008/05/19(月) 13:45:21
反映しつつ追加と削除したいという意味が分からない
Aが書き込んだときBはどうするの? Bにはどんな情報がいくの?
一番簡単な方法はAがファイルを開いてる時はBが開けないようにすることで
複数人で編集したいならAが編集を書き出したらBが即時に通知を受けて
Aの変更内容をBにつたえる
このときアプリはBの追加、削除した項目を全部覚えておいて
Aの編集した内容に対してその追加、削除を適用するか、
Bの編集した内容を破棄してAの書き出した内容に置き換えるか
といった選択肢があると思うけどどっちにしろ分かりにくい

とりあえずDBを使えばどうにかなるというような問題には見えない
945デフォルトの名無しさん:2008/05/19(月) 15:21:58
匿名型を型宣言したい、うぅぅ
なんでもありません(T_T)
肝心なところでつかえねー
946デフォルトの名無しさん:2008/05/19(月) 15:25:44
関係ないけど
いちぢく、にんじん、さんしょう、しいたけ
じゃなかったっけ?

いちぢく、にんじん、さんしょう、しいたけ、ごぼう…
次なんだっけ・・・・?ろ、ろ、ろ、ろっぽんぞー????
947デフォルトの名無しさん:2008/05/19(月) 19:36:19
匿名型ってActivatorでインスタンス化出来ないのか?
948デフォルトの名無しさん:2008/05/19(月) 19:45:33
できるよ
949デフォルトの名無しさん:2008/05/19(月) 21:43:50
<MenuItem Command="ApplicationCommands.Open" />

とすると項目名が自動的に"開く"になりますが、この名前はどこから取ってきてるのでしょうか?
Nameプロパティとも違うようですし…
自分で作ったRoutedCommandでも同じことができるのでしょうか?
950929:2008/05/19(月) 21:47:18
>>930

ストアドプロシージャについて質問したものです。

リンク先の内容で理解できました。
良いサンプルを紹介してくださってありがとうございます。
951デフォルトの名無しさん:2008/05/19(月) 23:55:42
>>939

mdbはスレッドセーフじゃ無かったと思うぞ。
複数アクセスのあり得るケースで使うとひどい目に遭う。
952デフォルトの名無しさん:2008/05/20(火) 00:05:53
>>949
ブレイクポイント設定して中身見てみた感じ、
RoutedUICommand の Text プロパティではないかと。

VS 2008 SP1 β 入れると "Open" になっとる・・・
これのロケール設定ってどうなってるんだろう。
953949:2008/05/20(火) 00:24:30
>>952
あ、良く見たらRoutedUICommandなんですね。
素でRoutedCommandだと思ってた…
RoutedUICommandで調べれば一目瞭然でしたね。
お騒がせしました。
954デフォルトの名無しさん:2008/05/20(火) 15:56:39
VC#2008 WPFアプリケーション

アプリケーションの設定(Properties.Settings.Defaultのやつ)の保存場所を
任意の場所(exeのフォルダ等)に変更することはできるのでしょうか?
955デフォルトの名無しさん:2008/05/20(火) 17:49:31
>>954
その質問するとマイドキュメント論争に発展するお^^
956デフォルトの名無しさん:2008/05/20(火) 21:18:21
BandObjectでIEツールバーを作っています
ツールバーの見た目を、Yahoo!ツールバーやGoogleツールバーのように
FlatなボタンでXPスタイル?のような感じにしたいのですが、うまく
いきません。どのようにすればいいでしょうか?教えてください。
957デフォルトの名無しさん:2008/05/21(水) 00:41:05
xmlns:sys="clr-namespace:System;assembly=mscorlib"

<MenuItem Header="ほげほげ" Command="〜">
 <MenuItem.CommandParameter>
  <sys:UInt32>777</sys:UInt32>
 </MenuItem.CommandParameter>
</MenuItem>

現状これでCommandParameterにuintの値を設定できてるのですが
CommandParameter="〜"という風に、よりシンプルに書くことはできませんか?
958956:2008/05/21(水) 02:51:12
補足です。

今はbandobjectの上にtoolBarをおいているのですが、
toolBarがはみだしてしまうので
bandobjectの上に直接?ボタンを並べたいのです。

toolBarのボタンはフラットにすることができましたが、
多分toolBarを置くのは間違っていると思いますので・・・

ご教授お願い致します。
959デフォルトの名無しさん:2008/05/21(水) 09:43:52
>>957
MarkupExtension書く?
960デフォルトの名無しさん:2008/05/21(水) 17:28:45
1[tab]20.0 5.0 6.2
2[tab]10.0 15.0 9.5
3[tab]8.7 6.5 9.8

[tab]はtabを押して作った空白です

上のようにかかれたtxtをよみこんで
float[,]などに格納するにはどのようなプログラムを打ち込めばよろしいのでしょうか?
961デフォルトの名無しさん:2008/05/21(水) 17:44:18
そういう風に書く

もうちょっと分からんところを絞り込め
とりあえず必要と思われる手順を並べてそれぞれ調べてみろ
962デフォルトの名無しさん:2008/05/21(水) 21:31:07
絞り込め
調べてみろ

お前は北方謙三かw
963デフォルトの名無しさん:2008/05/21(水) 21:47:53
ソープへ行け
964デフォルトの名無しさん:2008/05/21(水) 21:57:41
行ってきた
次はどうすればいい?
965デフォルトの名無しさん:2008/05/21(水) 21:58:10
行って来たならそんな質問出ない筈だ
966デフォルトの名無しさん:2008/05/21(水) 21:59:33
>>960
1. ファイルから一行、文字列を読み込む ( StreamReader.ReadLine )
2. 文字列をタブ文字で分割する ( String.Split )
3. 分割した文字列配列を目的の変数に格納
4. 手順 1 〜 3 を、行が尽きるまで繰り返す
967デフォルトの名無しさん:2008/05/21(水) 23:39:42
>>966
tabや空白の分割はどうするのでしょうか?
うまくできません><
968デフォルトの名無しさん:2008/05/21(水) 23:48:42
string newstr = str.TrimStart("\t".ToCharArray());
or
string[] strs = str.split("\t ".ToCharArray());
969956:2008/05/22(木) 00:10:34
自己解決しました。
コントロールはtoolbarでよかったかも

AutoSizeとDividerをFalse、LockedをTrueにしたらそれなになりました。
ありがとうございました。
970デフォルトの名無しさん:2008/05/22(木) 02:11:12
VC#2005なんですが、画面に表示しているウィンドウをAlt+Tabで表示させないようにする事は出来ますか?
ウィンドウはC#で作成したもので、タスクバーには表示させていません。

ウィンドウを表示していない時(NotifyIcon時)はCreateParamsをオーバーライドしたり
フォームプロパティを設定して消す事は出来ています。
971デフォルトの名無しさん:2008/05/22(木) 21:36:28
Hideしたら出なかったなじゃなかったっけ
972デフォルトの名無しさん:2008/05/23(金) 22:00:40
ハゲ
973デフォルトの名無しさん:2008/05/24(土) 03:41:16
>>3
はじめてのC#
ではなくて
C#ではじめてのプログラミング
ってサイトありませんか?
974デフォルトの名無しさん:2008/05/24(土) 08:03:47
ググレカス
975デフォルトの名無しさん:2008/05/24(土) 09:26:04
>>973
まんま、タイトルが C# によるプログラミング入門 なサイトあるぞ。
976お尋ね:2008/05/24(土) 17:39:59
画面周りはC#もしくVBのWindowsアプリケーションで作って、
データ送信部分だけをwebで作りたい
つまりリッチクライアントを趣味で作りたいのだけど、
いいサイトとか知ってたら、教えて下さい。
977デフォルトの名無しさん:2008/05/24(土) 17:59:55
MSDN
978デフォルトの名無しさん:2008/05/24(土) 18:05:28
>>977
鬼教官ですね。泣...
979デフォルトの名無しさん:2008/05/24(土) 18:12:22
いやいや、最も確かで豊富な情報がそこにあるのだ。
980デフォルトの名無しさん:2008/05/24(土) 18:22:40
>>979
いや、あなた様は、完全に、Sだと思われます。
ただ、私はMなので、ちょうど良い関係性です。
981デフォルトの名無しさん:2008/05/24(土) 19:46:42
MとMも結構いいぞ。
たまにどっちかが不器用にSになるところがいい。
SとSは最悪。
982デフォルトの名無しさん:2008/05/24(土) 20:04:52
べジータとピッコロってことか
983デフォルトの名無しさん:2008/05/24(土) 20:19:50
>>976
xmlwebサービスでぐぐりんさい
984デフォルトの名無しさん:2008/05/25(日) 00:59:10

yyy.xxx.Zenkaku(System.Windows.Forms.TextBox)

こんなクラスがあるんだけど、どう書けば使えるのでしょう
・・・こんな質問だけにエスパー求む
985デフォルトの名無しさん:2008/05/25(日) 01:03:29
テキストボックスを引数に渡せば内容を全角に直してくれるんじゃね?分からんけど
986デフォルトの名無しさん:2008/05/25(日) 01:10:48
どう書けばってTextBox渡すしかないだろう
どんな結果になるのかは知らんが
987デフォルトの名無しさん:2008/05/25(日) 01:12:53
そう思って試行錯誤
「〜指定されたコンテキストが有効ではありません」と帰ってくる
ギブ寸前
988デフォルトの名無しさん:2008/05/25(日) 01:17:44
textbox1,text = yyy.xxx.Zenkaku("ウム");

「〜指定されたコンテキストが有効ではありません」
だめだすた
989デフォルトの名無しさん:2008/05/25(日) 01:20:00
例えば
TextBox tb = new TextBox();
yyy.xxx.Zenkaku a = new yyy.xxx.Zenkaku(tb);
とか
990デフォルトの名無しさん:2008/05/25(日) 01:20:03
ありがとうございました
月曜 先輩に聞いてみますZzz
991デフォルトの名無しさん:2008/05/25(日) 01:22:04
テキストへ直接代入じゃなくて、追加用のメソッドがあるんじゃね
とC#もってない奴がいってみる
992デフォルトの名無しさん:2008/05/25(日) 01:26:56
>>987
textboxをpublicにする とエスパーしてみる。
正解ならんなアホなもん使うなw
993デフォルトの名無しさん:2008/05/25(日) 01:32:21
>>992
あからさまにstring渡してるじゃん。
つかtextbox渡す意味が一体どこにあるのやら。
994デフォルトの名無しさん:2008/05/25(日) 01:39:25
え?
995デフォルトの名無しさん:2008/05/25(日) 01:42:03
先輩に退職届の書き方教えてやれ。
転職サイトチョイスしてやってもいいと思うぞ。
996デフォルトの名無しさん:2008/05/25(日) 02:34:03
>>989 No1エスパー

コンパイル通ったがボタン押すと
今度はアプリケーションランでひっ掛かりやがる
「ファイルまたはアセンブリ xxxx または依存関係の1つが読み込めません」

ここは自力でいきま
みんなありがとう
997デフォルトの名無しさん:2008/05/25(日) 02:39:55
このレベルが職業マやってるのか・・・俺は運がいいなぁ
998デフォルトの名無しさん:2008/05/25(日) 02:43:14
結局文法というか基本がわかってないだけかよ
999デフォルトの名無しさん:2008/05/25(日) 02:50:01
元のクラス自体も、名前とコンストラクタ引数見ただけで(ry
1000デフォルトの名無しさん:2008/05/25(日) 02:52:54
1000げっと
いやっほい
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。