ふらっとC#,C♯,C#(初心者用) Part27at TECH
ふらっとC#,C♯,C#(初心者用) Part27 - 暇つぶし2ch1:デフォルトの名無しさん
08/04/15 17:41:19
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

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

前スレ

ふらっとC#,C♯,C#(初心者用) Part26
スレリンク(tech板)

2:デフォルトの名無しさん
08/04/15 17:41:44
C#, C♯, C#相談室 Part45
スレリンク(tech板)

C♯, C#相談室 Part34
スレリンク(tech板)

【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】
スレリンク(tech板)

Windows Live プログラミング
スレリンク(tech板)

初心者のためのプログラミング言語ガイド Part8
スレリンク(tech板)

3:デフォルトの名無しさん
08/04/15 17:42:05
参考サイト。まずはここで検索してから。
URLリンク(google.com)
URLリンク(homepage3.nifty.com)
URLリンク(www.atmarkit.co.jp)
URLリンク(dobon.net)
URLリンク(jeanne.wankuma.com)
URLリンク(www.labasp.net)

4:デフォルトの名無しさん
08/04/15 17:44:23
>>1

次スレは>>950

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

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

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

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

糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。

6:デフォルトの名無しさん
08/04/15 23:28:11
コピペ君って馬鹿だな、まで読んだ。

7:デフォルトの名無しさん
08/04/18 14:15:47
>>前スレ994
Microsoft Math Add-inってどこにあるん?

8:デフォルトの名無しさん
08/04/18 14:19:27
>>7
URLリンク(www.microsoft.com)

日本語はなかったりする。
英語でぐぐったらすぐ出てくる。

9:デフォルトの名無しさん
08/04/18 17:32:06
>>8
Word 2007 Add-in: Microsoft Mathって書いてあるけど
Excelはないの?

10:デフォルトの名無しさん
08/04/18 23:41:58
>>9
あー、Word 限定なんだなぁ・・・
なんと中途半端な。
Word で書いた数式、クリップボード経由でエクセルに張り付けると、
単なるビットマップになる・・・

11:デフォルトの名無しさん
08/04/19 03:05:44
なぜかInvailid Product keyってなって落とせん・・・
だれかうpしてクレー

12:デフォルトの名無しさん
08/04/19 04:17:39
割れ厨氏ね

13:デフォルトの名無しさん
08/04/19 20:33:24
割れじゃないのにDLできん

14:デフォルトの名無しさん
08/04/19 22:33:33
週明けにでもMSに電話しろよ

15:デフォルトの名無しさん
08/04/19 23:17:06
コントロールにTagプロパティってあるじゃん。
デザイナ上で 3.14 とか書いてもstring型になっちゃうんだが
double型を設定したい場合はプログラム上で書くしかないん?
VC#2008 Express

16:デフォルトの名無しさん
08/04/19 23:45:26
>>15
Designer.csを開いてダブルクォーテーション消せばいいんでないの?
プロパティウインドウから触ったらstringに戻るから、
他の人もさわるならやめたほうがいいと思うけど。

17:15
08/04/20 00:03:54
デザイナ上で全ての設定済ましたかったけど、できないんならしょうがないか。
thx

18:デフォルトの名無しさん
08/04/20 14:09:57
質問ですが C#でランダムな数字を作るにはどうすればよいですか?
教えてください

19:デフォルトの名無しさん
08/04/20 14:14:00
そのまんまRandomクラス

20:デフォルトの名無しさん
08/04/20 14:23:18
ありです。 C# randomでぐぐったら例文のってました。

21:デフォルトの名無しさん
08/04/20 15:26:04
過去ログがもう流れてるし・・・
無駄なスレ多すぎなのか開発環境がそんだけ多いのか・・・


22:デフォルトの名無しさん
08/04/20 17:35:31
●買えよ

23:デフォルトの名無しさん
08/04/20 17:41:39
>>21
URLリンク(sund1.sakura.ne.jp)
URLリンク(sund1.sakura.ne.jp)

24:デフォルトの名無しさん
08/04/20 19:32:09
>>23
ari

25:デフォルトの名無しさん
08/04/21 04:56:26
Randomの精度ってどうなの?
MTとかなの?
CのRandは使い物にならなかったけど。

あと高精度のタイマーって何?
マルチメディアやゲームにも使えるタイマーありますか?

26:デフォルトの名無しさん
08/04/21 05:04:09
こういうのが作られてるから MT じゃないんだろう。多分。
URLリンク(takel.jp)

27:デフォルトの名無しさん
08/04/21 09:14:55
グラフィックスを描画するとき、半透明とかグラデーションとかいろいろ機能がありますが、
ピクセル毎に描画する色を最終決定しているのはどこなのでしょうか?
CPUがいちいち計算して出しているのか、それともGPUに任せているのか
どちらなのでしょうか?

28:デフォルトの名無しさん
08/04/21 10:55:23
【レビュー】GeForce FX 5950 Ultra/5700 Ultraを速攻レビュー (5) ベンチマーク -1- | パソコン | マイコミジャーナル
URLリンク(journal.mycom.co.jp)

ここの文章でグラボでGDI+の描画性能が決まることがはっきりわかりました。
GPUに任せているということですね。

29:デフォルトの名無しさん
08/04/21 11:18:13
そうなんか!

30:デフォルトの名無しさん
08/04/21 11:31:10
>>28
グラボ(笑)

31:デフォルトの名無しさん
08/04/21 11:35:13
というか両方使われるのでもっと詳しく聞いてくれんと微妙にしか
答えられんがアルファはGDIとGDI+ならCPUが頑張ってることが多い。

32:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/21 12:49:29
何が問題かと問われても、何も問題ない(そういうもの)としか答えようがない
強いて挙げるなら、>>32のHTMLに対する理解が不足してることくらい

フレームの中に表示されているhtmlも保存されるようにしたい、ということなら
自分で保存する処理を書けばいい

34:デフォルトの名無しさん
08/04/21 14:13:41
レイヤ付きペイントツールを作ろうと思ってます
とりあえずはペイントの部分の、ユーザが自由にラインを引ける部分あたりを作りたいのですが、何からはじめていいのやら

参考になるモノ、サイトなどありませんか?

35:デフォルトの名無しさん
08/04/21 14:17:29
Paint.NETのソース

36:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/21 19:31:47
>>34

そんなことココで聞いている時点で止めといた方が良いと思うが、あえて
やるなら35の言うとおり、Paint.Netのソースを追ってみるのがいいんじゃないか?
ラインだけ引けたってレイヤ付きペイントツールの道はまだまだだからな。

38:デフォルトの名無しさん
08/04/21 21:11:51
>>25
時間測るだけならStopwatch

39:デフォルトの名無しさん
08/04/21 23:58:44
TubeCastっていうSourceforgeにあるソフトのことで相談です。
これYoutubeに複数のファイルをバッチアップロードするソフトなんだけど
アップロード後のpublic/pravate(公開/非公開)が設定できないのです(設定項目が無い)。

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

誰か直してくれませんか? ソース見たけどC#全然分からないッス。
URLリンク(sourceforge.net)


40:デフォルトの名無しさん
08/04/22 00:24:20
C#, C♯, C#相談室 Part45が、そろそろ限界なんだが規制で新スレが立てられない。
誰かお願いします

41:デフォルトの名無しさん
08/04/22 00:31:16
スレチガイです

42:デフォルトの名無しさん
08/04/22 00:32:20
>>40
C#, C♯, C#相談室 Part46
スレリンク(tech板)

43:デフォルトの名無しさん
08/04/22 00:38:25
>>42
乙です、ところでテンプレは?
一緒になって書いてぐちゃぐちゃになったら困るので、もし書かないなら返答お願いします。


44:デフォルトの名無しさん
08/04/22 00:44:01
いなくなった?
無責任だな、とりあえずテンプレ自分書きます、他の人書かないでください。

45:デフォルトの名無しさん
08/04/22 00:46:55
スレ立ててもらったんだから、
テンプレぐらい自分ではれよw

46:デフォルトの名無しさん
08/04/22 00:47:34
>>39
youtubeにファイルをアップする際のバッファのどの部分にどのように記述すれば
public/privateの設定ができるのかを教えてくれたら考えてもいい。

47:デフォルトの名無しさん
08/04/22 00:49:04
>>45
立てて放置はねぇーだろ

48:デフォルトの名無しさん
08/04/22 00:52:38
あるよ

49:デフォルトの名無しさん
08/04/22 00:57:00
全然あるな

50:デフォルトの名無しさん
08/04/22 01:05:31
>>46
お世話になります
これから調べてくるッス
日付が変わるまでにはなんとか


51:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/22 06:33:59
>>51
StringがChar[]に変換されるのではなく、StringもChar[]もchar*に変換されてDLLに渡される。
.NETの型ごとに、プラットフォーム呼び出しの時、どんな型に変換されるか決まっている。くわしくは「規定のマーシャリング」でググれ。

53:デフォルトの名無しさん
08/04/22 07:13:09
>>46
おそらくここだけだと思う。宜しくご検討お願いします。

<form method="post" enctype="multipart/form-data" action="URLリンク(lax-v133.lax.youtube.com)" 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:デフォルトの名無しさん
08/04/22 08:36:00
>>52サンクス

55:デフォルトの名無しさん
08/04/22 08:48:28
ヘジは人をラムダに導くためにイベント、匿名メソッド、ラムダと段階を踏んできたんだな

56:デフォルトの名無しさん
08/04/22 09:43:32
前スレで質問をしたのですが、回答を見る前にdat落ちしてしまいました。
どなたかdatファイルをいただけないでしょうか。

57:デフォルトの名無しさん
08/04/22 10:20:32
vs2005のtabcontrolなんですが、タブ6つを
| 5 | 6 |
| 3 | 4 |
| 1 | 2 |
って風に3段に並べたいだけなんだけど、ビルドすると勝手に
| 3 | 4 |
| 5 | 6 |
| 1 | 2 |
のように並べ変えられる。これって自分だけ?
何か対処法を知ってたら教えてください。


58:デフォルトの名無しさん
08/04/22 11:19:32
C#ではUInt型は扱えないのでしょうか?
DBにInt型で保存されてる値を取り出す時にUInt型として扱いたいのですが

59:デフォルトの名無しさん
08/04/22 11:41:39
>>58
uintやUInt32はあるけど?

60:デフォルトの名無しさん
08/04/22 13:27:34
>>56
URLリンク(www-2ch.net:8080)

pass: furatto

61:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/22 18:54:11
if文から強制的に抜けるにはgoto文以外でだったらどうすればよいですか?
breakを使うとwhile文の中のif文では、while文を抜けてしまいます。
どうすればいいかおしえてください。

63:デフォルトの名無しさん
08/04/22 18:55:03
>>60
ありがとうございます。助かりました。
回答をくださった方もありがとう。

64:デフォルトの名無しさん
08/04/22 18:55:57
>>62
強制的に抜けなくてもいいよう、もう一段ifをネストする

65:46
08/04/22 20:55:06
>>53
手が空いてるときにやるから気長に待ってておくんなさい。

66:デフォルトの名無しさん
08/04/22 21:56:50
小学生のトキ、夏休みの宿題に昆虫採取をするコトにしました。
まぁ、毎日アミ持って野山を駆け回って遊んでただけなんだけど、ある日すごいのを捕まえました。

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

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

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

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

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

  名前     大きさ     つかまえた場所
トノサマバッタ  13.5cm  浜○原子力発電所緑地公園
                  ↑
                コレが、まずかったらしい。

67:デフォルトの名無しさん
08/04/22 21:58:10
コピペ君って馬鹿だな、まで読んだ。

68:デフォルトの名無しさん
08/04/22 22:14:15
C#暦2週間ほどなのですが、ちょっと教えてください。

public class hoge{
・・・
}
と定義してあって、
hoge Vhoge = new hoge();
でインスタンスを生成し、Vhogeにはバイナリのデータが入ってるとします。
System.Io.File.WriteAllBytes を使ってバイナリを出力したいのですが、
そのような場合、第二引数としては、何を渡したらよいのでしょうか?

69:デフォルトの名無しさん
08/04/22 22:23:34
出力したいバイナリを、byteの配列で渡す

70:デフォルトの名無しさん
08/04/22 22:36:21
もっと真摯に回答しろよ。

71:デフォルトの名無しさん
08/04/22 22:38:59
分からないなら答えないでください><

72:デフォルトの名無しさん
08/04/22 22:39:48
ローカルルール
一、UCがセゾン傘下である事実を受け入れること
一、UCは流通系となった事実を受け入れること
一、クレディセゾンを誹謗中傷しないこと
一、セゾンUCを大切にすること

73:68
08/04/22 23:17:32
>>69
やっぱり、Vhogeをbyte[]に変換しないとダメですか・・・。
変換する方向で考えてみます。

74:デフォルトの名無しさん
08/04/22 23:20:14
>Vhogeにはバイナリのデータが入ってる
からbyte[]のメンバを持ってるんじゃないの?
何か別のかたちで持ってる?

75:デフォルトの名無しさん
08/04/22 23:21:23
>>68
bytes
型 : System.Byte[]

ファイルに書き込むバイト。

76:68
08/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:デフォルトの名無しさん
08/04/23 00:32:19
Marshal

78:デフォルトの名無しさん
08/04/23 06:47:30
>>76
なんでそこまできっちり定義してるのに、>>68に略したのかわからん。
68の書き方じゃ求めていた答えが返ってくるわけがない。
P/Invokeで出来るんだから、何か方法があると思うのが普通。
初めて調べたけど正解は、Marshal.StructureToPtrかな?

79:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/23 07:19:26
AllocHGlobalなんて怖いことしなくてもfixedやGCHandle.Allocで十分ですよ

81:デフォルトの名無しさん
08/04/23 08:53:15
マネージメモリに unsafe でアクセス != marshal レイアウト


82:デフォルトの名無しさん
08/04/23 09:17:47
>>81
お前は何を言っているな

83:デフォルトの名無しさん
08/04/23 09:55:01
あ一回はコピー生成してるのかごめん

84:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/23 14:04:08
二つほど記述ミスがありました、申し訳ありません。

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

ContextMenuの宣言で[ami]となっていますが[ItemMenu]の間違いです。

86:デフォルトの名無しさん
08/04/23 14:19:44
ContextMenu.MenuItems.Add()又は
MenuItem.MenuItems.Add()

87:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/23 15:15:33
サーバー側で接続待ちをしていない状態で、
クライアント側からTcpClient.Connect();で接続しようとすると
「接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。
または接続済みのホストが応答しなかったため、確立された接続は失敗しました。」
ってエラーが発生します。
エラーになるまで20秒くらいかかってしまうのですが、
もっと早く接続できないと判断することはできないのでしょうか?

89:62
08/04/23 16:22:39
ifを入れ子してやってみたのですが、できません。
どうすればいいですか?

90:デフォルトの名無しさん
08/04/23 16:25:03
コードも出さずにどうすべきか聞くとはどういう事だ?
何故それで駄目かくらい書け。

91:デフォルトの名無しさん
08/04/23 16:32:33
>>88
とりあえずMSDNみてみ

92:デフォルトの名無しさん
08/04/23 16:37:41
>>90
いや、62はコード出す・出さない以前の問題じゃね?
if 文を break で抜けれるとか思ってる時点で何かおかしい。

93:デフォルトの名無しさん
08/04/23 16:55:00
>>91
レスありがとう。
だがMSDNのどこを調べればいいのかわからない。
できたら場所を、教えてください。


94:デフォルトの名無しさん
08/04/23 16:56:16
breakは括弧閉じまでジャンプするもんだと誤解してるのかも

95:デフォルトの名無しさん
08/04/23 16:57:46
そこで括弧閉じればいいのにね

96:デフォルトの名無しさん
08/04/23 17:01:31
目的:
Control.ModifierKeysを使ってモディファイアキーを判定したい。
詰まっている箇所:
複数のモディファイアを判定する方法がわからない(Shift + Alt + Vなど)

どなたかアドバイスいただけないでしょうか

97:デフォルトの名無しさん
08/04/23 17:06:01
>>96
Keys構造体はただのビット値。

(Control.ModifierKeys & Keys.Shift) != Keys.None) & ((Control.ModifierKeys & Keys.Control) != Keys.None)
こんな感じでいけるはず

98:デフォルトの名無しさん
08/04/23 17:11:12
(Control.ModifierKeys & (Keys.Shift | Keys.Control) != 0)

99:デフォルトの名無しさん
08/04/23 17:13:16
Delphiの列挙値は比較が楽だったんだけどなあ。
なんでC#は似たような比較方式を採用しなかったんだろう

100:デフォルトの名無しさん
08/04/23 21:10:06
ヘジたん的になにか気に入らないところがあったのでは

101:デフォルトの名無しさん
08/04/23 21:10:31
TcpListener で質問なんですが
0.0.0.0 とやれば全指定なんですが

範囲指定したい場合、例えば
192.168.1.0とかやると
192.168.1.0~192.168.1.255
とかできるんでしょうか?

102:デフォルトの名無しさん
08/04/23 21:24:02
>>97
>>98
ありがとうございました。
うまく動作させることができました

103:デフォルトの名無しさん
08/04/23 21:25:10
>>101
192.168.1.0であれば192.168.1.0のみになる。
0.0.0.0は特例でそういう使い方は普通ワイルドカードを利用する。

104:デフォルトの名無しさん
08/04/23 21:51:06
>>103
ありがとうございました。

105:デフォルトの名無しさん
08/04/23 22:15:26
>>95
do { } while(false)
とか?

>>99
((enumValue & flag) == flag)
を返す演算子があってもよさそうだよな

106:68
08/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:デフォルトの名無しさん
08/04/23 22:38:29
>>105
フラグはわざと便利にしてない感じがするなあ
分からないなら使わなくていい,使うにしても控えめに,っていうような意図を感じる

108:デフォルトの名無しさん
08/04/24 00:51:00
>>107
間違いなくその通りだろうな、Win32APIのラッパーが避けられない以上、やむなく残した
としか思えないところがあるな。

109:デフォルトの名無しさん
08/04/24 00:53:43
javaからc#に転向することになって本読んでます。
パッと見javaと似てるけど、なんじゃこれは?
というのもあります。

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

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

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

どういう動作になるんでしょう?

110:デフォルトの名無しさん
08/04/24 00:55:42
なんとなく理由が分かった、ビットフィードが無くなったのもこれが理由だな
マルチスレッドだね、使用しないビットに対してもリードもライトもロックが必要になるが、どこまでロックが必要か訳わからんようになる。

111:デフォルトの名無しさん
08/04/24 00:56:14
基底クラスのコンストラクタに引数を与える構文。

112:デフォルトの名無しさん
08/04/24 01:02:39
>111
ありがとうございます。
他の本で読んだ記憶がうっすらよみがえってきました。。

113:デフォルトの名無しさん
08/04/24 01:06:04
少し不思議なことがあるのですが・・・xclass.MethodA()
って何、コンパイルできないような気がしたので、自分の知識が不足しているのか、間違っているのか気になる。

114:デフォルトの名無しさん
08/04/24 01:12:42
>>113
デリゲートが引数になっているメソッドには、そのデリゲートに合うメソッドを引数として渡せる。
実際には、デリゲートのインスタンスが生成されているんだけど。

115:デフォルトの名無しさん
08/04/24 01:18:03
MethodA の後ろの () が、タイプミス?
MethodA の正体は static 関数?
ちょっと原文みてみたいですね、'WriterLine' だしw

116:デフォルトの名無しさん
08/04/24 07:02:10
kakenai

117:デフォルトの名無しさん
08/04/24 07:05:22
C#で
URLリンク(sakuratan.ddo.jp)
上の画像のようなGUIを扱いたいのですがどうすればよいのでしょうか?

118:デフォルトの名無しさん
08/04/24 07:50:04
そのPNG画像を読み込んで貼り付ければいんじゃね?

119:デフォルトの名無しさん
08/04/24 08:22:53
>>117
ユーザコントロールを作る
OnPaintBackgroundをオーバーライドして背景を描画しないようにする
OnPaintをオーバーライドして各頂点およびエッジを描画する

その他にも細々と設定しないといけないプロパティとかあるかも。
パフォーマンス?さぁ…

120:デフォルトの名無しさん
08/04/24 09:03:00
enum.first.tostring()で"first"は得られるのですが
enumに同期させてenum.firstならば"最初"
enum.secondならば"二回目"とか任意の文字列を得るのに
スマートな実装方法を教えて下さい

121:デフォルトの名無しさん
08/04/24 09:09:42
enum使わないでstructにする

122:デフォルトの名無しさん
08/04/24 09:16:13
TypeConverter 実装するとか

123:デフォルトの名無しさん
08/04/24 09:32:34
(int)enum.first
明示的にバラバラしてるんならできないけど

124:デフォルトの名無しさん
08/04/24 10:00:02
>>120
Dictionaryじゃダメな理由を聞こうか

125:デフォルトの名無しさん
08/04/24 10:27:06
>>88だけど

どなたか知ってたらヒントください。

126:デフォルトの名無しさん
08/04/24 12:57:38
>>125
URLリンク(bbs.wankuma.com)

127:デフォルトの名無しさん
08/04/24 12:57:58
>>125
Recieveにはタイムアウト設定できたと思うが、Connectには無理だったと思う

128:デフォルトの名無しさん
08/04/24 13:46:50
>>127
はい、できません。
最近のWindowsなら、レジストリいじればシステムグローバルな
値は変更できると思うけど。
TCP周りのいろんな設定値はユーザーランドではいじれない実装の
OSがほとんどです。

129:88
08/04/24 18:30:05
>>126-128
ありがとうございます。


130:デフォルトの名無しさん
08/04/24 19:58:22
Equalsって何と発音するのでしょうか・・?

131:デフォルトの名無しさん
08/04/24 20:01:02
辞書引けよ

132:デフォルトの名無しさん
08/04/24 20:16:01
コンテキストメニューにショートカットを設定したいです。

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

Item1(&Alt + 1)
Item2(&Alt + 2)
Item3(&Alt + 3)

133:デフォルトの名無しさん
08/04/24 20:17:18
>>130
無理矢理日本語で言うなら「いーくぉーる」かな。
ちなみに日本語で言う「イコール」のことな

134:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/24 20:43:02
>>130
いーくぁるず

>>132
ちょっと↑の方のレス見ろ

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

ショートカットの設定は、ToolStripMenuItemなら
.ShortcutKeys = (Keys)(Keys.D0 + i);
でできる。

137:デフォルトの名無しさん
08/04/24 20:49:45
>>135
レスありがとうございます。

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

説明不足申し訳ありません。

138:デフォルトの名無しさん
08/04/24 20:50:39
>>134
UploadMethodが進捗を返すのなら(返すか知らんけど)BackgroundWorker内で
PeportProcessイベントを発生させればフォームに進捗を伝えられる

139:デフォルトの名無しさん
08/04/24 20:55:59
>>132
なんか発想が変な気がするよw

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

もしコンテキストメニュー「も」必要なら、ポップアップするタイミングで
メインメニューのメニューを丸ごと奪い取ればいいんだし。

140:デフォルトの名無しさん
08/04/24 21:00:15
>>137
括弧でアンダーラインが入ってるパターンのなら
ToolStripMenuItem.Text = "背景色に設定(&1)";
みたいに前に&つけるだけだよ

141:デフォルトの名無しさん
08/04/24 21:02:55
ショートカットキーのこと言ってるのかただのアクセレーターキーのこと言ってるのか
判然としないねw

いずれにせよちょっとピンボケした発想だと思う

142:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/24 21:11:09
>>142
ねえ、だからそれメインメニューじゃいかんの?
なんでそんなウィンドウズの標準のお作法から外れたことをしたがるのか理解できんよ。

144:デフォルトの名無しさん
08/04/24 21:31:03
>>138
UploadMethod内では
1.アップロードファイルの確認
2.アップロードコマンドの発行
3.アップロードコマンドの終了
と3つのプロセスに分かれているのですが、それぞれのプロセスが終了するごとに
UIに通知したいと考えています。各プロセスをさらにメソッド単位に分解し、
それぞれの完了ごとにReportProgressを呼ぶことも考えましたが、何かスマートな方法
は無いかものかと。

例えばWinForm側にリスナのようなものを追加し、それぞれのプロセスが終了するごとに
イベントを発生させ、リスナからReportProgressを呼び出す。と言ったような事は
可能なものでしょうか?

145:デフォルトの名無しさん
08/04/24 21:34:26
>>142
デザイナで実際に設定してみればわかると思うけど、ショートカットにはCtrlかAltが必ず必要だったと思う。
それにデザイナで設定できることは、実際に設定してみてDesignet.csがどう生成されたか見るのが早い。

ToolStripMenuItem.ShortcutKeys = (Keys)(Keys.Alt | (Keys.D0+i));
試してないけどみたいな感じで出来るんじゃないかな。

146:デフォルトの名無しさん
08/04/25 05:48:07
>>143
必ずそういうこと言う人がいるけど質問者の条件を変えようとするレスは書かなくていいです。

147:デフォルトの名無しさん
08/04/25 07:32:18
>>144
可能
Javaの人?

148:デフォルトの名無しさん
08/04/25 08:21:57
>>146
君のような思考を「フェティシズム」って言うんだよ

149:デフォルトの名無しさん
08/04/25 09:45:18
フェチのこと?
なんで?

150:845
08/04/25 09:46:50
変な仕様を指摘すると「お前は言われたとおりに組んでればいいんだよ!」とかいう奴はいるなぁ
たいては後で直さなきゃいけなくなるんだけど

151:デフォルトの名無しさん
08/04/25 10:18:54
お前誰だよ↑
仕様にケチつけると話題がそっちに流れるだろ。
もうちょっと考えような。

152:デフォルトの名無しさん
08/04/25 10:38:38
奇妙な仕様を指摘して何が悪いんだか。

153:デフォルトの名無しさん
08/04/25 11:00:52
ファシズムって言いたかったとエスパーw

154:デフォルトの名無しさん
08/04/25 11:17:48
むしろ悩んでる原因は変な仕様だってことが多いからな

155:デフォルトの名無しさん
08/04/25 11:20:40
別にケチつけるわけじゃなく、スタンダードな方法を提示したレスをするならいいと思うけどね

156:デフォルトの名無しさん
08/04/25 11:21:45
まあ大体の初心者は変な思いつきと思い込みで阿呆な仕様にしてるよねw

157:デフォルトの名無しさん
08/04/25 12:11:42
>>155
それならいいよね。建設的だし。
でも批判するだけなら分かってない人でも出来ちゃうから厄介。

158:デフォルトの名無しさん
08/04/25 12:20:54
>>147
JavaとC#の二束の草鞋です。
C#の場合はリスナそのものに該当する仕組みは無く、
delegateを使用してリスナ相当を実装する必要があるのかなと考えているのですが


159:デフォルトの名無しさん
08/04/25 13:10:50
フォーム操作可能にしたいマルチスレッドならdelegate()が一番簡単と思うけど

160:デフォルトの名無しさん
08/04/25 13:21:20
>>158
①FtpClassにOwnerプロパティを実装

 public Form Owner{ get; set;}

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

 ftpClass.Owner = this;

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

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


これでどうだろうか
 

161:158
08/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:デフォルトの名無しさん
08/04/25 14:37:12
>>160
C#のイベント処理に疎いので、少し教えていただきたいのですが、
この場合Ownerで示されるFormクラスのインスタンスに、UpFileCheckedイベントが通達
されるという認識でよろしいでしょうか?

その場合、Owner.Invokeでイベントを発行している形なので、FTPClassがイベントを
通達できるのはFormクラスのインスタンスに限られてしまい、FTPClassはFormクラスと
依存関係になってしまうのではと考えているのですが。

163:デフォルトの名無しさん
08/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;

みたいなことなんですが・・・

164:134
08/04/25 14:58:41
すいません今更ですが >>134
×(実際にはWinFormはSTAなのでBackgroundWorkerのメソッドを介してUI変更を行います)
○(実際にはWinFormはSTAなのでWinFormのInvokeメソッドを介してUI変更を行います)

165:デフォルトの名無しさん
08/04/25 15:12:27
>>164
FTP クラスが ProgressChanged みたいなイベント公開すればいい。
アップロード中に適当に状況が変わるなりすればイベントを起動する。
Form は その ProgressChanged イベントのイベントハンドラで Invoke して GUI に反映させる。
Owner はいらんな。SynchronzingObject ならあってもいいけど。

166:デフォルトの名無しさん
08/04/25 21:45:27
>>163
見た目を気にするなら諦めてWPFに乗り換えましょう

167:デフォルトの名無しさん
08/04/25 22:03:36
URLリンク(proxy.f3.ymdb.yahoofs.jp)
これを見た感想おしてください(しょぼすぎますがその辺はご了承ください)

168:デフォルトの名無しさん
08/04/25 22:06:55
>>158
二足のわらじって、君思いっきりJava脳じゃん?
まぁ>>161でもちらっと出てるけどeventを作ればいいよ
URLリンク(dobon.net)

169:デフォルトの名無しさん
08/04/25 22:10:55
>>167
たいへんよくできませんでした

170:167
08/04/25 22:12:08
それは自分でも自覚してる。
あとどんなものつけたら面白くなりますか?

171:デフォルトの名無しさん
08/04/25 22:28:51
はじめはこんなもんだとは思うけどとりあえずgotoは封印しましょう
同じような処理はメソッドにまとめましょう

どうでもいいけどhRandomっていう名前がキモい
参照型変数にhを付けることにしてるのか知らないけどそんなのあんまり意味無いし
付けるならslotにも付けないとおかしい

172:デフォルトの名無しさん
08/04/25 22:29:17
>>167
感想言っていいのか?本当にいいのか?

173:デフォルトの名無しさん
08/04/25 22:31:06
いいよ

174:167
08/04/25 22:36:02
この場合gotoつかわないとすれば何つかえばいいですか?

175:デフォルトの名無しさん
08/04/25 22:37:36
Hyoujiメソッドを呼び出せばいいんじゃないか?

176:デフォルトの名無しさん
08/04/25 22:40:27
>>160,165,168
教えていただいたことを参考にFTPClassにイベントを追加し
呼出元でイベントをハンドリングすることで希望通りの動作ができました。
ありがとうございました

177:デフォルトの名無しさん
08/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();
}
}
}

178:167
08/04/25 23:25:09
177さん手直しありがとうございます。
プログラム初心者なんでそんなfor文使うなんて考えてませんでした。
ありがとうございます。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch