C♯相談室 Part26

このエントリーをはてなブックマークに追加
1名無しさん♯

(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。


過去スレは>>2-5あたり。


関連リンク
http://onigiri.s3.xrea.com:8080/csharp/index.php?%5B%5B%A5%EA%A5%F3%A5%AF%5D%5D
2名無しさん♯:2005/09/19(月) 02:11:47 BE:169284858-###
3名無しさん♯:2005/09/19(月) 02:12:18 BE:88875037-###
4デフォルトの名無しさん:2005/09/19(月) 02:23:45
switch(line)
{
case 4:
break;
}
5デフォルトの名無しさん:2005/09/19(月) 03:03:40
>>2
13ってこれのことかい?
ttp://makimo.to/2ch/pc2_tech/1071/1071663456.html
6デフォルトの名無しさん:2005/09/19(月) 03:40:53
TextBoxやListViewについてですが
フォームを最小化し再度表示させると
Paintイベントが発生しないのですが
(ボタン等では発生します)

TextBoxやListViewではなぜ発生しないのでしょうか?
7デフォルトの名無しさん:2005/09/19(月) 04:53:42
昔ながらのコントロールをラップしてるだけだから。
8デフォルトの名無しさん:2005/09/19(月) 07:56:59
ResizeRedrawが設定されてるかそうでないかの差だな
9デフォルトの名無しさん:2005/09/19(月) 11:29:54
WebBrowserコントロールで質問!
コントロール上でのマウスの動きを察知する方法ありませんか?
マウスが上に来たらBringToFront()で前面に持ってきたいのです。

MouseMoveイベントがなかったのでAxWebBrowserを継承したクラスをつくり、
WndProcをオーバーライドしてWM_MOUSEMOVEを捕まえようとしたのですが…・・・。
何も表示されていない真っ白な状態ではちゃんとWM_MOUSEMOVEが飛んでくるのですが、
何かを表示(例えばGoogleのページなど)を表示させると飛んでこなくなってしまいます。
PreProcessMessageもダメなようで……。
10デフォルトの名無しさん:2005/09/19(月) 11:37:01
HTMLのbody要素に AttachEvent とか
11デフォルトの名無しさん:2005/09/19(月) 13:00:21
ref と out の違いがよくわからないのですが、何が違うんですかね?
12デフォルトの名無しさん:2005/09/19(月) 13:01:14
AttachEventってHTML内のJavaScriptに対して有効なのでは。
13デフォルトの名無しさん:2005/09/19(月) 13:05:41
>>11
受け渡し両方か、受け取るだけか。
呼出元で初期化が必要か、不要か。
14デフォルトの名無しさん:2005/09/19(月) 13:06:23
stringを返すメソッドの中で、違うメソッドを呼び出して、
そのメソッドの終了を待たずにstringを返すことは可能でしょうか・・・?
可能ならどうすればできるのでしょうか?
15デフォルトの名無しさん:2005/09/19(月) 13:12:51
HTMLElement.MouseEnter でいいと思った
169:2005/09/19(月) 13:13:00
>>10
AxWebBrowserを継承したクラスのDocumentCompleteイベントハンドラで
次のように書いたのですがイベント飛んで来ませんでした。
(DocumentCompleteイベントはちゃんと来てます)

// このイベントハンドラには飛んでくる
private void MyWebBrowser_DocumentComplete(object sender, DWebBrowserEvents2_DocumentCompleteEvent e)
{
    mshtml.IHTMLDocument2 doc = this.Document as IHTMLDocument2;
    mshtml.IHTMLElement2 body = doc.body as mshtml.IHTMLElement2;
    body.attachEvent("onmouseover", new HTMLElementEvents2_onmouseoverEventHandler(WebBrowser_OnMouseOver));
}

// マウスが動いたらこのイベントハンドラに飛んできてくることを期待してた
private void WebBrowser_OnMouseOver( mshtml.IHTMLEventObj e )
{
    // ここで目的の処理をしたい
}

やりかた違うのかな……
17デフォルトの名無しさん:2005/09/19(月) 13:13:27
スレッドを使う
18デフォルトの名無しさん:2005/09/19(月) 13:52:31
C# 1.1とC# 2.0ってあるけど、いつから2.0になったのですか?
19デフォルトの名無しさん:2005/09/19(月) 14:02:20
.NET 2.0に対応できるのがC#2.0だな。
まだ正式版は出ていない。
……C#1.1は存在しないはずだが。
20デフォルトの名無しさん:2005/09/19(月) 14:19:18
>>19
.NET Framework 1.1 に合わせて、C# もちょっとだけ変更されたはず。
Visual Studio 2003 が出たとき。
俺が覚えてるのは、 /** でドキュメンテーションコメントを書けるようになったっての。
その他はほとんど変わってなかったと思う。

ただ、C# の仕様書のページを見に行ってみたら、そこに存在するのは
1.0 の仕様書と、1.2 と書かれた仕様書だけだった。
正式には C# 1.2 なのかな。
ネット上では "C# 1.1" の方が多数ヒットするんだけど。

>>18
ちなみに、.NET 2.0, C# 2.0 は Visual Studio 2005 に合わせてな。
正式版でるのって来月くらいだっけ?
21デフォルトの名無しさん:2005/09/19(月) 14:47:28
11月じゃなかったっけ
22デフォルトの名無しさん:2005/09/19(月) 15:26:50
>>14
非同期デリゲート
23デフォルトの名無しさん:2005/09/19(月) 17:03:14
ドラッグ&ドロップを受け入れるアプリに対して操作を自動化したくて
こんなことしてみたんですが、メッセージが届いてないみたいなんです。
どこかおかしいでしょうか?

someclass{
somemethod(){

string path =@"C:\test.txt";
hWnd = 対象アプリのwindow handle;
const int WM_DROPFILES = 0x0233;

_DROPFILES DropFiles = new _DROPFILES();
DropFiles.pFiles = Marshal.SizeOf(DropFiles);
DropFiles.fNC = false;
DropFiles.fWide = true;
DropFiles.FileName = path.ToCharArray();

PostMessage( hWnd, WM_DROPFILES, ref DropFiles, 0 );
}
}

public struct _DROPFILES
{
  public int pFiles;
  public Point pt;
  public bool fNC;
  public bool fWide;
  public char[] FileName;
}
24デフォルトの名無しさん:2005/09/19(月) 17:28:15
picturebox1に書き込みを行い、それが終わった後で、
ControlPaint.DrawReversibleLineを描きたいのですが、
以下のようなコードをかきました。

Draw(); //imgに書き込みをれをpictureboxに設定。
Thread.Sleep(1000);
ControlPaint.DrawReversibleLine(pictureBox1.PointToScreen〜);

ところが実際にはDraw()の結果が反映される前に反転線が描画されてしまいます。
確実にDraw()の描画が反映されてから反転線を描くにはどうしたらいいですか?

259:2005/09/19(月) 18:29:08
あきらめ(゚∀゚)
2623:2005/09/19(月) 18:53:54
>>23
なんかあほなことしてる見たい。
質問を撤回します
27デフォルトの名無しさん:2005/09/19(月) 19:18:05
28デフォルトの名無しさん:2005/09/19(月) 19:37:49
>>24
一旦Refreshするとか
//画面に直接描画するのな、DrawReversibleLineって
29デフォルトの名無しさん:2005/09/19(月) 20:07:40
HTMLファイルを読み込んでタグの情報を簡単に取得する方法ありませんか?
XmlTextReaderでいいんでしょうか?
30デフォルトの名無しさん:2005/09/19(月) 20:17:46
XmlTextReaderだとwell-formedなXMLしか読み込めないから、ほとんどのHTMLは対象外だろう。
mshtml使ってHTMLDocumentクラスを使うのが早いかも知れない。

そうそう、WebBrowserを使わずにHTMLDocumentを使うがようやく分かった。
一旦HTMLDocumentをnewして、それをIHTMLDocument2にキャストしてからwriteしてやればOKなようだ。
HTMLDocument.writeは一体何をimplementsしてるんだろうか。
ファイルパス指定すればエンコーディングを自動解析して開いてくれるようなのは無いものかな。
31デフォルトの名無しさん:2005/09/19(月) 20:17:51
だめ
3229:2005/09/19(月) 20:24:18
ありがとうございます。助かりました。
3329:2005/09/19(月) 20:43:47
WebBrowserを使わないで読み込む方法の解説がありました。

ttp://jomora.bne.jp/wiki/pukiwiki.php?C%A1%F4%2Fmshtml
34デフォルトの名無しさん:2005/09/19(月) 20:49:05
正直、特定のタグ情報だけを抜き出すなら Regex で間に合いそうな予感
……しかしよくでてくるなコレ
35デフォルトの名無しさん:2005/09/19(月) 20:57:36
>>33
IPersistFile.Load -> スルー。Loadを実行しても永遠にreadyStateはloadingのまま。
IHTMLDocument4.createDocumentFromUrl -> 例外(AccessViolationException)発生。

さあどうしてくれようか。
36デフォルトの名無しさん:2005/09/19(月) 21:27:43
>>25
WebBrowserオブジェクトを貼り付けたフォームでキーの押している状態を表示しようとしてキーイベントを拾おうとしたことがあったんだけど、
どうやってもWndProcにメッセージが流れてこないものがあるみたいでその辺のメソッドをoverrideしても無理みたいだった。
IMessageFilterを実装したクラスを用意してメッセージフィルタをセットしておけばメッセージを受け取れたと思うよ。
379:2005/09/19(月) 22:00:40
>36
ありがとう、ちょっくら挑戦してみる
389:2005/09/19(月) 22:44:22
36氏の言うとおり、IMessageFilterを実装したクラスを用意して、
PreFilterMessageメソッド内で受け取ることができました。
どうもありがとう。
39デフォルトの名無しさん:2005/09/19(月) 23:04:20
質問があります。今、簡単なネットワークアプリケーションを製作中でして、
内容はクライアント側のTextBoxに書かれた文字データを送信し、サーバ側の
TextBoxに表示する。といったものを作っています。

お聞きしたいことは一回サーバクライアント間でコネクションを確立させた後に、
クライアント側のアプリケーションを終了させるとサーバ側がコネクションエラーをキャッチします。
すると、次にクライアントのアプリケーションを立ち上げてもコネクションを確立する事が出来なくなります。
クライアントとのコネクションが切れた時にサーバ側にどういった対処が必要なのでしょう?
解決法をご存知の方がいましたら教えてください。よろしくお願いします。
40デフォルトの名無しさん:2005/09/19(月) 23:28:01
そのソケットは閉じてあたらしくacceptする。
4124:2005/09/19(月) 23:32:45
>>28さん
Refleshでいけました。ありがとうございました。
42デフォルトの名無しさん:2005/09/20(火) 00:32:33
>>39
SocketOptionName.ReuseAddressが設定されてないと
以前に使用されたアドレスがしばらく使用できないと聞いたことがあるようなないような。

WinSockの話を読みかえることが必要になるが、ここで聞くより↓で聞いたほうがいいんじゃないか。

ネットワークプログラミング相談室 Port14
http://pc8.2ch.net/test/read.cgi/tech/1118469143/
43デフォルトの名無しさん:2005/09/20(火) 00:45:49
>>42
それはサーバー再立ち上げ時の話じゃ?
44デフォルトの名無しさん:2005/09/20(火) 00:51:30
MSNメッセンジャーでフォーカスがない状態のときメッセージを受け取ると、
タスクバーでタイトルバーが点滅して自己主張しますよね。
あれを自分のアプリで実装したいのですが、
FormかWinAPIにその機能がもともとついてたりしますか?
45デフォルトの名無しさん:2005/09/20(火) 00:57:43
1.1 の Form には無くて、2.0 の Form と WinAPI にはある。
46デフォルトの名無しさん:2005/09/20(火) 02:39:02
47デフォルトの名無しさん:2005/09/20(火) 04:59:08
>>46
Win32api呼んでるじゃないの
48デフォルトの名無しさん:2005/09/20(火) 17:02:13
デザイナで TextBox を追加すると、
自動的に Textのプロパティが TextBox1と自動的にNameの名前になりますが、
TextBoxを追加した時点で、
Textのプロパティを空の文字列にすることは可能ですか?
49デフォルトの名無しさん:2005/09/20(火) 20:34:11
>>44
Win32 API の SetForegroundWindow の挙動だね。

以下のページを見るに System.Windows.Forms.Form.Activate でいけるんじゃない?
http://www.microsoft.com/japan/msdn/net/general/win32map.asp
50デフォルトの名無しさん:2005/09/20(火) 20:34:55
プロパティを自動で追加してくれるプラグインないかな。
毎回 get set 書くの面倒なんだが。
5144:2005/09/20(火) 20:39:26
>>45 >>46 >>49
レスありがとうございました。
Win32APIのFlashWindowExをDllImportで呼んで使うことにします。
52デフォルトの名無しさん:2005/09/20(火) 22:01:45
>>50
VS 2005 にそんな機能あった気が。
53デフォルトの名無しさん:2005/09/20(火) 22:03:38
>>50
いくつも出てるよ。
漏れは自分で作った。
54デフォルトの名無しさん:2005/09/20(火) 22:04:34
Win98?から自プロセスにSetForegroundWindowするとフラッシュ動作に
切り替わるようになった。
タイプ中に突然フォーカスを奪われて、はずみでOKボタン
押しちゃった、というトラブルの防止策です。
これを一時的に無効にするAPIとか技とかは、探せば出てきます。
AllowSetForegroundWindowだったっけ?
55デフォルトの名無しさん:2005/09/20(火) 22:24:00
>>54
そんなに単純じゃないだろ。
ttp://techtips.belution.com/ja/vc/0012/
56デフォルトの名無しさん:2005/09/20(火) 22:31:59
戻り値がvoidで、パラメータを取らないメソッドだけがスレッド処理が
できるんですか?
それ以外はデリゲートの非同期メソッドを使うのでしょうか?
57デフォルトの名無しさん:2005/09/20(火) 22:36:52
前スレ900辺りでも答えたが、Threadを使うのならそれ用のクラスを用意する
58デフォルトの名無しさん:2005/09/20(火) 23:57:57
別スレッドを作って、そのスレッドをjoinしないと、そのスレッドって
途中で処理が終わりますよね?
59デフォルトの名無しさん:2005/09/21(水) 00:01:03
join は、対象のスレッドが終了するまで待機するメソッドだが
60デフォルトの名無しさん:2005/09/21(水) 00:01:24
メインスレッドが終了したら、ってこと?
thread.IsBackground = false;
61デフォルトの名無しさん:2005/09/21(水) 00:04:04
…… 58 がなにを求めていて、59 と 60 が何を考えたのか分からん
62デフォルトの名無しさん:2005/09/21(水) 00:33:10
>>52
素のVS2005にあったっけ
63デフォルトの名無しさん:2005/09/21(水) 01:07:59
>>62
リファクタ -> フィールドのカプセル化

複数のメンバをまとめて処理できないからちょっと不便だけどね。
64デフォルトの名無しさん:2005/09/21(水) 01:08:15
PropertyGridで、項目名の日本語表記はできたんだが
Enum値の日本語表記がどーしてもできん。
あとbool型のtrue/falseもはい/いいえにしたい。

TypeConverterを継承して何かやるっぽいけど、
実際どういう風に書きゃいいのか・・・ご教示きぼん
65デフォルトの名無しさん:2005/09/21(水) 01:33:09
66デフォルトの名無しさん:2005/09/21(水) 03:03:34
mshtmlでurlを指定してHTMLファイルを読み込み、解析しています。
IHTMLDocument4インターフェイスのcreateDocumentFromUrlを使っていて、
起動時に読み込んだあと元のHTMLが更新されても
新しいHTMLを読み込んでくれないのですが、キャッシュを無視するとかオプションはないのでしょうか?
COMスレが落ちてしまっているようなので、こちらで質問させていただきました。
よろしくお願いします。
67デフォルトの名無しさん:2005/09/21(水) 08:49:00
クエリ文字列を使ったらどうなるんだろ。キャッシュよけの代表的手法だけど。
6866:2005/09/21(水) 12:50:58
>>67
クエリ文字列を追加したらできました!ありがとうございます!
69デフォルトの名無しさん:2005/09/21(水) 14:41:55
C#でのメモリリークについて質問です。
C#でのリークの調査と言うのはどのように行うのでしょうか?
C++なら1回動かすとXXバイト増えてるから・・・って出来たのですが
GCが走らないとメモリ開放しないようなのでC++の時のように
判断が出来ないでいます。
70デフォルトの名無しさん:2005/09/21(水) 14:49:41
>>69
プロファイラ
71デフォルトの名無しさん:2005/09/21(水) 14:52:21
つーか、GCがあったらリークって原理的に発生しないんでは?
72デフォルトの名無しさん:2005/09/21(水) 15:02:45
>>70
プロファイラというと?
73デフォルトの名無しさん:2005/09/21(水) 15:33:49
>>71
循環参照
74デフォルトの名無しさん:2005/09/21(水) 15:34:55
>>71
・予期せぬ所で参照が残っている
・GC管理外のメモリを確保した(例・System.Runtime.InteropServices.Marshal.AllocHGLobal)
75デフォルトの名無しさん:2005/09/21(水) 18:28:45
>>73
循環参照でも解放されるよ。
76デフォルトの名無しさん:2005/09/21(水) 19:46:44
>>73
というか循環参照を解決しようとしてあんな複雑なGCになってやがるんだが。
他にも理由があるけどな
77デフォルトの名無しさん:2005/09/21(水) 20:53:06
結局>>69は何のリークを調査したいんだ?
78デフォルトの名無しさん:2005/09/21(水) 22:00:52
>>69
測定したいタイミングでGC.Collet()を2,3回呼ぶようにすればいんじゃない?
79デフォルトの名無しさん:2005/09/22(木) 01:06:24
>>69
俺も知りたい。C#のリークの調査は
Private Bytes と # Bytes in all Heaps を見て判断するって
どこかで読んだんだけど

リークしないだろうアプリを連続で動作させてると
Private Bytes と # Bytes in all Heaps が増えるんだよね
# Bytes in all Heapsはたまに減るけど何となく増えてる感じするし
わけわからん(T_T)
80デフォルトの名無しさん:2005/09/22(木) 01:16:04
DataGridでたまに×が描画されることがあるんですが
どのようなときにおきるのでしょうか?

バインディングすると起きる気もしますが
WindowsFormsです
81あめ:2005/09/22(木) 04:03:22
PCの時刻をプログラムで変える方法を知っている方、教えてください。
82デフォルトの名無しさん:2005/09/22(木) 09:00:20
83あめ :2005/09/22(木) 11:05:05
>>82ありがとうございました。
感謝します。
84デフォルトの名無しさん:2005/09/23(金) 00:08:16
二次元配列の1次元目の要素に配列を丸ごとコピーする方法はないでしょうか?

//ジャグ配列の場合
hoge[0] = array;

↑のような感じでコピーしたいのですが
85デフォルトの名無しさん:2005/09/23(金) 00:18:15
Point p1,p2
〜〜
return ( ((p1.X-p2.X)^2) + ((p1.Y-p2.Y)^2) )
ってコードでp1,p2の距離の二乗を求めているのですが、
なぜか負の値が帰ってきます… どこがおかしいのでしょうか?
86デフォルトの名無しさん:2005/09/23(金) 00:20:09
あー、なさげ。手作業でやっておくんなまし。
……ちなみに、その例だと、array[1] = 123; ってやったときに hoge[0][1] も 123 になるぜ。
87デフォルトの名無しさん:2005/09/23(金) 00:20:47
>>85
C 系の言語で 「^」 は累乗記号ではないから注意。
8885:2005/09/23(金) 00:22:58
>>87さん
初耳です。
そんなことすらしらずにC#つかってました…orz
累乗記号を探すたびに出ます。
ありがとうございました。
89デフォルトの名無しさん:2005/09/23(金) 00:24:00
>>88
Math.pow(x, y);
90デフォルトの名無しさん:2005/09/23(金) 00:39:43
多次元配列よりジャグ配列の方をお薦めしてたのをMSDNのどこかで読んだ
91デフォルトの名無しさん:2005/09/23(金) 00:48:03
>>90
お勧めというか、ジャグ配列の方が要素の参照が速いって書いてた気が。

C 言語的に書き直すと、
a[x, y] → *(a + x * WIDTH + y) → 掛け算1回+足し算2回+アドレス参照1回
a[x][y] → *(*(a + x) + y) → 足し算2回+アドレス参照2回

まあ、キャッシュの効き方次第な気もするけど。
92デフォルトの名無しさん:2005/09/23(金) 13:11:25
Strokeクラスを継承し、いくつかのプロパティを追加して使いたいと思うのですが、
'Microsoft.Ink.Stroke.Stroke()' はアクセスできない保護レベルになっています。
というエラーで継承したクラスを作成出来ません。

元来のStrokeクラスの動作に影響を与えないプロパティを追加したいだけなのですが、
なにかいい方法ないでしょうか?
93デフォルトの名無しさん:2005/09/23(金) 13:22:16
>>92
publicなコンストラクタがないって事は、自分で作ることがないオブジェクトのようだけど?
自分で作ることがないなら派生クラスを書いても使えないよ?
9492:2005/09/23(金) 13:26:10
それで困ってるんです。
追加したいプロパティはStrokeごとに持たせたほうが
全体の記述がわかりやすくなるので、追加したいのですが
やっぱりStrokeに持たせるのは無理ですかね。

メインクラスに
int[] hogeとかつくって hoge[Stroke.ID]とかでとるようにするのが
現実的ですか…
95デフォルトの名無しさん:2005/09/23(金) 14:02:01
ま、普通はHashtableで管理するかな
96デフォルトの名無しさん:2005/09/24(土) 00:33:03
ListViewでBecky!のスレッド表示みたいなのはどうすればよいのでしょうか?
  |aaa|bbb|ccc|
日 xxxx xxx xxx
   yyy yyy yyy
   yyy yyy yyy
田 xxxx xxx xxx
97デフォルトの名無しさん:2005/09/24(土) 00:43:48
無理
98デフォルトの名無しさん:2005/09/24(土) 00:47:45
>>96
TreeListViewってのを拾ってきて使いましょう。
99デフォルトの名無しさん:2005/09/24(土) 02:26:17
言語の仕様って変わっていきますよね。
それに合わせてマイクロソフト開発環境のアップデートとかは行われてきたものなのでしょうか。

100デフォルトの名無しさん:2005/09/24(土) 02:49:49
>>99
2005があるだろ。
101デフォルトの名無しさん:2005/09/24(土) 09:16:34
LINQ Preview をインスコすれば 3.0 もコンパイルできるな
102デフォルトの名無しさん:2005/09/24(土) 10:09:12
2005を買わなきゃだめか・・・って、いったん買ってもまたすぐ買う羽目になる所がc#の残念な所だ。
103デフォルトの名無しさん:2005/09/24(土) 11:07:24
>>102
すぐって。
2003から2年半くらい経ってるけど。
あと、金出すのが嫌なら Eclipse+C# plug in とか #develop とかもあるし。
104デフォルトの名無しさん:2005/09/24(土) 11:27:58
SDKならタダだぜへへへ
105デフォルトの名無しさん:2005/09/24(土) 11:48:14
>>102
MSDNに入っておけ。
106デフォルトの名無しさん:2005/09/24(土) 12:00:15
>>105
正確には、会社の上司とか、大学の管理者たぶらかして入ってもらえでは。
107デフォルトの名無しさん:2005/09/25(日) 20:14:00
イベントハンドラがよばれたら1秒間待つ (A)
その間にもう一度イベントハンドラが呼ばれなければAを実行
待っている間にイベントハンドラがよばれたら先ほどのAを破棄して今回のをAとする

ってのを実現するためにイベントハンドラが呼ばれるたびに
スレッドを作って Sleep させてるんだけどなんか効率悪そう
もっといい方法無い?
108デフォルトの名無しさん:2005/09/25(日) 20:15:21
タイマ使うとか?
109デフォルトの名無しさん:2005/09/25(日) 20:52:42
普通にタイマ
110デフォルトの名無しさん:2005/09/26(月) 11:24:10
例外が発生してcatchした際に
MessageとStackTraceでメソット名までは分かるのですが
例外の発生した行番号まで分かる方法はないのですか?

try
{
   何か処理1
   何か処理2←ここで例外が発生!
   何か処理3
   何か処理4

}catch(Exception ex)
{
   ここで例外の起きた行番号が知りたい
}
111デフォルトの名無しさん:2005/09/26(月) 11:57:03
StackTraceに出てるだろ? 勿論Debugでないと出ないけど。
行番号で処理を分けようとか考えてないだろうな?
112デフォルトの名無しさん:2005/09/26(月) 12:07:41
>>111
Debugでもメソット名までしか出てないんだけど・・・
なんかビルドの時にパラメータとかあるのでしょうか?

※行番号で処理を分けたりはしません
113デフォルトの名無しさん:2005/09/26(月) 12:39:48
\bin\debugに.pdbファイルはある?
114デフォルトの名無しさん:2005/09/26(月) 12:45:02
すいません質問させて下さい。
超が付く素人なんですが、会社でプログラマーの卵としてC#を学んでいます。
1ヶ月も過ぎた所なんですが、人の書いたソースは少し読める程度には
なって来ましたが、いざ自分で作ろうとすると全く書けません。
例えば、コンソール画面にカレンダーを表示するだけのプログラムも何のメソッドを
使って良いのか分からずにそこで何も出来ずに止まってしまいます。
皆さんは覚え始めの時はそのような場合、どのように対処されていたのでしょうか?
技術的な話でなく申し訳ありません。
上司と馬が合わず、聞いても見当違いの答えばかりなので質問させていただきました。
私は、C#が初のプログラムを覚える言語でこれまでに全くプログラムに携わった
ことはないです。
115デフォルトの名無しさん:2005/09/26(月) 12:47:33
>>114
リファレンスマニュアル全部よめ
116デフォルトの名無しさん:2005/09/26(月) 12:49:31
> 人の書いたソースは少し読める程度になって来ましたが、

> 例えば、コンソール画面にカレンダーを表示するだけのプログラムも何のメソッドを
> 使って良いのか分からずにそこで何も出来ずに止まってしまいます。

なんか凄く矛盾してね?
まともにライブラリも知らずにソース読めるか?
117デフォルトの名無しさん:2005/09/26(月) 12:51:09
>>114
リファレンスを読んで 「これを使うとあれが作れるのでは」 を考えるよう訓練するのも良いかも
それやってくうちに、探したい機能からリファレンスを逆引きできるようになる
118デフォルトの名無しさん:2005/09/26(月) 12:53:25
>>113
実行環境に.pdbファイルおいたら出た
ありがとう!!
119114:2005/09/26(月) 13:21:21
>>115
読んでいるんですが自分の中でこれを使ったら何が出来るんだ?って所で思考が
止まってしまってます。
>>116
すいません、舌足らずでした。
「リファレンスを読みながらだと人の書いたソースを読むことが出来るようになった」
です。
>>117
そういう風にリファレンスを見たことが無かったので今日はそれをして
みたいと思います。
通常、1ヶ月あればどの程度の事が出来るようになってるものなんでしょうか?
人と比べても意味の無い事だと言うのは分かるんですが他に
新入社員もおらず、早く戦力に…と言う視線に耐えながら勉強している為、
平均的な上達具合と言うのも気にしてしまいます。
120デフォルトの名無しさん:2005/09/26(月) 15:47:06
euc-jpをunicodeに変換するプログラムをおしえてくだされ
121デフォルトの名無しさん:2005/09/26(月) 15:51:53
Encodingクラス
122デフォルトの名無しさん:2005/09/26(月) 15:52:48
誰か相談聞いてくれますか?
123デフォルトの名無しさん:2005/09/26(月) 16:28:11
聞くけど答えないよ
124デフォルトの名無しさん:2005/09/26(月) 16:45:07
スレ違いの相談はお断り。
125デフォルトの名無しさん:2005/09/26(月) 19:00:42
まず、コンソールでテキストファイルを書き出す。読み込む。
バイナリファイルを書き出す。読み込む。
・・・データのやり取りを覚えるだ。

次に、パソコンをぶっ壊すだ。
126デフォルトの名無しさん:2005/09/26(月) 19:02:45
ビックエンディアンとリトルエンディアン
127デフォルトの名無しさん:2005/09/26(月) 20:20:22
>>114
そりゃープログラム以前に情報の収集方法がわかってないんだろ。
つ[google]
128デフォルトの名無しさん:2005/09/26(月) 23:45:28
DataTableに対して、グループ化はできないんですか?
ある列で重複データを省くような処理をしたいのですが、
どうすればいいのかわかりません・・・。
129デフォルトの名無しさん:2005/09/27(火) 01:11:56
MS$Office系のアドイン作りたいのですが、
面倒なことにOffice2000 2002 2003とサポートしないといけないのですが
2000をサポートするとなるとC#はムリと考えてもよろしいのでしょうか?
IDTExensibility2があれば2002と2003では普通に呼び出し等をできるのは
解りましたが2000はムリなのでしょうか?
130デフォルトの名無しさん:2005/09/27(火) 04:23:55
おまえらひでーな。せめて誘導くらいしてやれよ。

>>1ヶ月も過ぎた所なんですが、人の書いたソースは少し読める程度には
>>なって来ましたが、いざ自分で作ろうとすると全く書けません。
当然。漫画読めてもネーム切れないのと一緒。
インプットとアウトプットは脳内の使う場所が違うから一からやらないと無理。

推測だが、>>114さんに足りない知識は
1.包括的なコンピューターの仕組み
2.C#の言語仕様
3..NETライブラリの知識

1については業務に直接役に立たないものの参考書の理解を助ける効果がある。
時間があるときにこういう本を読んでおくといい。
ttp://www.amazon.co.jp/exec/obidos/ASIN/4822281655/

2は基本。わからなくても通して読んでおくといい。
俺が持ってるのはこの本。本屋で自分に合った本を探すといい。
ttp://www.amazon.co.jp/exec/obidos/ASIN/4798101117(←これはちょっと古いので注意)

3は2をある程度理解してから。
MSDNを読めばいいが、読みにくいわかりにくいならリファレンスマニュアルを買ってくるといい。

131デフォルトの名無しさん:2005/09/27(火) 04:25:11
勉強の方法についてだが、まず2をやること。
最初から読んでいって理解したと思ったら、参考書を見ないでプログラムを書く。
例えばfor文の使い方を読んだら、実際に書いてみる。
わからなくなったら初心者スレで聞く。
これを参考書の最後までやったらC#はだいたい書けるようになる。
あとはMSDNを流し読みして面白そうなクラスを見つけてそれを使うコードを書いてみる。
この仕事を続けるならMSDNとはずっとつきあうことになるからな。
今のうちに使い方を覚えておくといい。
オブジェクト指向は別に本買って勉強しないとたぶん無理。余裕あるとき並行して勉強すれ。

1ヶ月の上達具合は人それぞれ。いい師匠がいれば当然速いけど、
いなくて独学なら大して上達しない。
上の勉強法を受験勉強並みにみっちりやれば覚えは早いと思うけどな。
がんばれ。

↓ここがちょっと初心者向け
以降はここで聞いてみれ。
http://pc8.2ch.net/test/read.cgi/tech/1122001458/
132デフォルトの名無しさん:2005/09/27(火) 08:28:42
C#においてListViewに表示されている項目を選択し、その値を取得したいと思っています。

以下のコードで選択項目の取得は出来たのですが
listView1.SelectedItems[0].Text

1度項目を選択した後に他の項目を選択すると

エラー
System.ArgumentOutOfRangeException' のハンドルされていない例外が system.windows.forms.dll で発生しました。
追加情報 : 指定された引数は、有効な値の範囲内にありません。
と表示されます。

どうしたらこのエラーを回避出来るでしょうか?
MSDNやネットでの検索をしたのですが解決法が見つかりません。
分かる方いましたら是非教えていただけないでしょうか。お願いします
133デフォルトの名無しさん:2005/09/27(火) 08:56:21
SelectedIndexChangedイベントで

if (listView1.SelectedItems.Count <= 0) return;
item = listView1.SelectedItems[0].Text;
134デフォルトの名無しさん:2005/09/27(火) 08:56:59
ェスパーキボンヌ
135デフォルトの名無しさん:2005/09/27(火) 09:19:14
>>133
出来ました。ありがとうございます。
神杉wwwwwwwwwwwwwwwwwww
136114:2005/09/27(火) 09:26:17
>>127
それもあると思います。
必死でググっても見当違いな事も多々…
これは経験がモノを言うんでしょうねorz

>>130
ご丁寧にありがとうございます。
仰る通り、根本的な所から知識を確実な物にしていく事が一番の近道ですね。
提示してくれた本を読んでそこから自分に合った物を探します。
>>131
>>130を書いてくれた方ですよね?
勉強法までありがとうございます。
この1ヶ月で上司にいびられ続け精神的にも参ってきて仕事に向いていないと
思い辞めそうになってましたが、まだ頑張ってみます!
レスを下さった皆さま、本当にありがとうございます。
これ以上はスレ違いになるのでカキコは自粛いたします。
紹介して頂いたスレの方に移り頑張ってみます。
最後にこんな反吐が出そうな初心者にお付き合い頂き本当にありがとうございました。
137デフォルトの名無しさん:2005/09/27(火) 09:59:08
>>136
あんまり無理すんなよ。一度壊されると回復に年単位でかかるからな。
経済的に余裕あるなら転職も視野に入れておいた方がいいかも。
138デフォルトの名無しさん:2005/09/27(火) 15:55:43
質問です

ListViewで
マウスポインタのある部分の
SubItemsのテキストを取得したいのですが
どんなコーディングになるのでしょうか??



追加

http://dobon.net/vb/dotnet/control/lvitemtooltip.html

ここを見て、 改造してるんですが
うまくいきません。
139デフォルトの名無しさん:2005/09/27(火) 16:03:36
>>138
1.Cursorクラスからマウスの位置を取得。
2.ListViewのクライアント座標に変換。
3.ListView.GetItemAt()でマウスの下にあるListViewItem(行)を取得
4.ColumnHeader.WidthでListViewSubItemの長さを取得していってマウスの座標の位置と比較して列を取得
5.完成
140デフォルトの名無しさん:2005/09/27(火) 16:09:23
>>139
ColumnHeader.Widthだとサブアイテム間のスペースが考慮されないからちょっとずれるぜ
SendMessageでLVM_GETSUBITEMRECTの方が確実ではある
141138:2005/09/27(火) 16:11:07
>>139
回答ありがとうございます。

その方法では作成しました
ただ、ビューをスクロールされた場合
うまく取れなくなってしまいます。。(;;
142138:2005/09/27(火) 16:16:52
>>140
レスありがとうございます。

WinAPI使っちゃうと
いろいろまずいんですよ。
すいません。
143デフォルトの名無しさん:2005/09/27(火) 16:32:03
派生クラス作って自身のWndProc呼び出すだけでも良いよ?
//この場合直接DllImportするのとSecurityPermission的にはどうなんだろう……?
144138:2005/09/27(火) 17:01:54
>>143
その DllImport がまずいんです。
決まりですんで(^^;
145デフォルトの名無しさん:2005/09/27(火) 17:05:56
だから自分のWndProc呼べば良いんだって。DllImportする必要はない。
146デフォルトの名無しさん:2005/09/27(火) 17:06:42
あ、この場合自分のってのはForm派生クラスじゃなくてListView派生クラスな。
147138:2005/09/27(火) 18:55:06
>>145  >>146
勘違いしてました。
ありがとうございます。

作成しました。
後は、ビューをスクロールしたときに
ズレをどうにかするだけです。

ビューが何ドットスクロールしてるかが
わかればいいんですが、、、。

誰かご存知ですか??
148デフォルトの名無しさん:2005/09/27(火) 19:45:40
いやGetItemAtにせよLVM_GETSUBITEMRECTにせよ見えてる部分で判断するからスクロールは関係ないんだが。
149デフォルトの名無しさん:2005/09/27(火) 22:20:30 ID:0
DataSetとかDataTableってよく使うんですか?
150デフォルトの名無しさん:2005/09/27(火) 22:25:33 ID:0
それを聞いてどうするんだ?
151デフォルトの名無しさん:2005/09/27(火) 22:57:04
任意のeventのシグニチャを取得するためにはどのようにすればよいのでしょうか?

たとえば、EventHandlerのクラスから 関数のタイプがvoid(object,EventArgs)であると
プログラム中から知りたいのですがやり方がよくわかりません。
EventInfoを見てもそれらしいものはないので詰まっています。
Type type = typeof(EventHandler);からvoid(object,EventArgs)などの情報は取れるものなのでしょうか?
152デフォルトの名無しさん:2005/09/27(火) 23:04:27
EventInfo eventInfo = typeof(Control).GetEvent("Click");
Type delegateType = eventInfo.EventHandlerType;
MethodInfo method = delegateType.GetMethod("Invoke");
Console.WriteLine(method.ReturnType);
以下略
153デフォルトの名無しさん:2005/09/27(火) 23:06:32
event っていうか、Delegate クラスには MethodInfo Method というプロパティがあるな。
で、MethodInfo の ReturnType プロパティとか見ればいいのでは。
154デフォルトの名無しさん:2005/09/27(火) 23:06:39
テストツールでイベントが発生したときにConsoleに書き出して、挙動を調べたい。
というのが目的です。
UnknownClass cls = new UnknownClass();
Type type = cls.GetType();
foreach(EventInfo ei in type.GetEvents()){
ei.AddEventHandler(cls, /**/);
//ここでコンソールにコールバックのParameterと戻り値を書くようなDelegateを登録したい。
}
って、説明を書こうとしたら、レスが・・ ありがとうございました。
155デフォルトの名無しさん:2005/09/28(水) 00:42:48
Webサイトにアクセスする関数を探しています
WebClientを使ってアクセスすることはできたものの,
指定のバイト数のみ読み取るような方法はないのでしょうか?

Cでは以下の関数が使えますが,,,
BOOL InternetReadFile(
HINTERNET hFile,
LPVOID   lpBuffer,
DWORD   dwNumberOfBytesToRead,
LPDWORD lpdwNumberOfBytesRead
);
156デフォルトの名無しさん:2005/09/28(水) 00:46:50
HttpWebRequest を使ってHTTPヘッダでサイズ指定するとか
157デフォルトの名無しさん:2005/09/28(水) 00:52:20
たんにHttpWebRequest/HttpWebResponseでResponseStreamから指定バイト読み込んでるだけじゃね?
158デフォルトの名無しさん:2005/09/28(水) 00:55:36
>>155
WebClientクラスってStreamで読み取ることできないっけ?
駄目ならHttpWebRequest/HttpWebResponseで。

Stream取得できれば指定バイト数で読むことなんて簡単だよ
159デフォルトの名無しさん:2005/09/28(水) 00:58:20
>>156,157,158
Streamを使ってみます!!
今まではDownloadDataで全てデータを取得していました,,,
ありがとうございます
160デフォルトの名無しさん:2005/09/28(水) 00:59:46
全データをダウンロードせずに一部分だけ読みたいの?
161デフォルトの名無しさん:2005/09/28(水) 01:02:24
いま確認してみたらWebClientでもOpenReadがあるな
普段HttpWebRequestしかつかわんからまるで覚えてないんだよな
162デフォルトの名無しさん:2005/09/28(水) 01:17:36
Web全てダウンロードすると重いので,始めの半分程度だけ欲しいのです
例えば,ブログをたくさん読むとき,実際に目を通すのは最近1,2日分です

ちなみにサイズ指定できました!!
これで読み込み時間が1/10程度になりそうです
//URL設定
string url = "http://www.yahoo.co.jp/";

//取得
WebClient myWebClient = new WebClient();
byte[] myDataBuffer = new byte[1024];
Streamstr = myWebClient.OpenRead(url);
str.Read(myDataBuffer,0,1023);

//表示
string download = Encoding.Default.GetString(myDataBuffer);
Console.WriteLine(download);

ただ文字化けします,,,
もし理由が分かれば教えていただけないでしょうか?
Encodingは一通り試してみました
163デフォルトの名無しさん:2005/09/28(水) 01:19:53
>>162
Encoding.Default を Encoding.GetEncoding("Shift_JIS") とかにしてみ
164デフォルトの名無しさん:2005/09/28(水) 01:21:21
YahooならEUC-JPに決まってるだろ?
165デフォルトの名無しさん:2005/09/28(水) 01:21:58
おれ Yahoo なんて峰絵師
166デフォルトの名無しさん:2005/09/28(水) 01:25:47
シフトJIS、EUC-JP、ISO-2022-JPと試してみたところ
Encoding.GetEncoding("EUC-JP")
でできました!
ありがとうございます<m(__)m>

一通りマニュアルは読んだのですが,このメソッドは試していませんでした
というか,意味が分かりませんでした!
167デフォルトの名無しさん:2005/09/28(水) 02:04:12
System.NetとSystem.IOを使い出すともれなくEncodingのお世話にもなるな。
168デフォルトの名無しさん:2005/09/28(水) 09:58:26
メインフォーム以外のクラスから
メインフォームのメソッドを使う方法を教えてください

引数で延々とメインフォームのインスタンスを
引き渡すのは違うような気がします

独学なので、くだらない事で引っかかってますね。。。
よろしくお願いします
169デフォルトの名無しさん:2005/09/28(水) 10:05:30
なんでそんなにメインフォームのメソッドを外部から使うんだ?
170デフォルトの名無しさん:2005/09/28(水) 10:23:20
>>169
メインウィンドウの表示状態を変えたいのです

listView1.Visible = false

みたいなことをやりたいだけですけど
なにか考え方間違ってますか?
171デフォルトの名無しさん:2005/09/28(水) 10:24:15
糞設計のにおいがする
172デフォルトの名無しさん:2005/09/28(水) 10:46:10
>>171
そりゃできる人からみたら
糞かもしれないけど

それなら、どうすればいいか
って事を少しでも述べてくれないと
何もできないです
173デフォルトの名無しさん:2005/09/28(水) 10:54:29
>>172
Form1 の管轄外にある Form2 の中にある listView1 が、Form2 の許可なしに Form1 から自由にアクセスできるとはどういうことか。
普通なら Form2.ListViewVisible プロパティとかを作って、それ越しに設定する
174デフォルトの名無しさん:2005/09/28(水) 11:47:04
>>172
どういう構成になってるかも分からないのだからどうすればいいかも述べられない
だから171も"臭い"と表現したんだろう
まあ、イベントでやってみるとか
175デフォルトの名無しさん:2005/09/28(水) 12:26:45
質問です。C言語のように、メソッドに定数として、配列を
渡すにはどうすればいいのでしょうか?
176デフォルトの名無しさん:2005/09/28(水) 12:36:23
無理
……定数として配列ってのも微妙な表現だな
177デフォルトの名無しさん:2005/09/28(水) 12:45:04
>>173
うーん・・・・(カンガエチュウ カンガエチュウ)
こういう操作の時プロパティを使うんですね

Form1 に相当する部分(フォームではないけれど)が複数あるんですが
Form2 に蹴りを入れるには、Form2 のインスタンスを
引数で渡していくということでしょうか?

>>174
言い過ぎました、すんません
どこまで情報出せばいいのかわかんなかったもので

欲しかったのは「プロパティ」や「イベント」などの
キーになりそうな単語、という感じですわ

ありがとうです
178デフォルトの名無しさん:2005/09/28(水) 14:51:15
>>177
他のクラスのメソッドを、他のクラスのインスタンスを渡さずに使うとしたら、
あとはそのクラスのメソッドのデリゲートを渡すとか。
あんまり意味はないが。

あと他の方法はどんな設計になってるかに依ってできるかどうか。
179デフォルトの名無しさん:2005/09/28(水) 22:41:07
>>178
うーん、いまいちピンとこないなぁ

フォームを保持するクラスを
Singleton使って作るというはありですかね
禁じ手でなければ、そうしてしまおうかと考え中
180デフォルトの名無しさん:2005/09/28(水) 22:46:38
>>179
それやるならApplicationContextの派生クラスのMainFormプロパティを使ったらいいんじゃね。
181デフォルトの名無しさん:2005/09/28(水) 22:50:01
一番ピンと来ないのはおまいの設計だ と思う
182デフォルトの名無しさん:2005/09/28(水) 23:32:06
いままでExcelのデータをcsv形式にしてVC#で扱ってきましたが
そろそろレベルアップ(笑)して直接Excelを扱いたいと考えております。

ところが検索しても「Excelの起動方法」などしか発見できておりません。
初心者にもわかりやすいサイトってないですかね?

とりあえずしたいことは「セルの値の参照」と「セルに入力」ぐらいです。
183デフォルトの名無しさん:2005/09/29(木) 00:07:16
184デフォルトの名無しさん:2005/09/29(木) 01:13:33
WebMatrixでC#を使っています
constの扱いについて教えてください

これはコンパイルできます↓
void My2chMsg(string msg)
 Console.WriteLine(msg);
}

これは"CS1031: 型が必要です"とのエラーがでます
void My2chMsg(const string msg)
 Console.WriteLine(msg);
}

どういう意味なのでしょうか?
普通は後者の方がいいプログラムだと思います
185デフォルトの名無しさん:2005/09/29(木) 01:14:44
>>184
ずばり C#にそんな文法は存在しません
186デフォルトの名無しさん:2005/09/29(木) 01:19:48
WebServiceを使ったプログラムで起動を早くするにはどのようにすればよいのでしょうか?
WebServiceの起動にかなりの時間をとられるのですが
187デフォルトの名無しさん:2005/09/29(木) 01:27:33
>>184
C#では引数のconst指定ができないということですか
ありがとうございます!

しかしconst指定は大切だと思いますが,,,
188182:2005/09/29(木) 01:31:57
183さん、レスどうも。

そのサイトも参考にしたのですが、
どうもMSのサイトだと威厳的(苦笑)というか一行ごとの命令文とかがよく理解出来ないんですよね。

しかもセルの入力方法とかは載っていないような(見落としかな?)

C#って比較的新しい言語なだけに解説ページも結構少ないんですよね〜。
ExcelVBAは多少習ったので簡単にセル参照出来る解説サイトとかないですかね?
189デフォルトの名無しさん:2005/09/29(木) 01:52:19
worksheetがWorksheetのインスタンスとして、A1セルにhoge入れるのはこうやるだけ。
worksheet.get_Range("A1", Type.Missing).Value2 = "hoge";
190デフォルトの名無しさん:2005/09/29(木) 04:37:47
>>187
>しかしconst指定は大切だと思いますが,,,
stringは変更不可なオブジェクトだからこれでいいのだ。
unsafeで配列を使うときはどうするんじゃという話ならc/c++を引き続き使うことを薦める。
191デフォルトの名無しさん:2005/09/29(木) 08:18:39
>>187
C#にはconst関数もconst変数もthrowsもないのであきらめなさい。そういうものなのです。
192デフォルトの名無しさん:2005/09/29(木) 08:19:43
>>177
> 欲しかったのは「プロパティ」や「イベント」などの
> キーになりそうな単語、という感じですわ
そんな瑣末なことはどうでもいい。
「合理的な設計」「オブジェクト指向」というのがキーワードだ。
193デフォルトの名無しさん:2005/09/29(木) 10:22:11
>>192
っ[チラシの裏]
194デフォルトの名無しさん:2005/09/29(木) 13:29:30
Class Aがあり、そのインスタンスa1があるとき。

A a2 = a1;

としても実体は増えないですよね?
A a2 = a1.Clone();
のようなことをしたいのですが、Clone()に相当するメソッドがない場合どうすればいいのでしょうか?
195デフォルトの名無しさん:2005/09/29(木) 13:30:39
手で各プロパティをコピーだな
196194:2005/09/29(木) 13:36:29
うはっまじっすか…
ちょいとインスタンスまるごと保存しなくてすむような方法考えます…
レスありがとうございました。
197デフォルトの名無しさん:2005/09/29(木) 14:36:21
>>194
つ [IClonable]
198デフォルトの名無しさん:2005/09/29(木) 14:44:26
>>197
だからそれを実装してないクラスの場合どうするかだろ?w
可能ならBinaryFormatterでシリアライズ&デシリアライズとか、
リフレクションでMemberwiseCloneを呼ぶとか言う手もあるが……。
199デフォルトの名無しさん:2005/09/29(木) 16:21:20
ああ、すでに存在するクラスなのか。失礼。
200デフォルトの名無しさん:2005/09/29(木) 18:11:32
201デフォルトの名無しさん:2005/09/29(木) 18:13:29
>>200
何で今更こんな記事が……?
発売直前って訳でもないのに。
202デフォルトの名無しさん:2005/09/29(木) 19:30:17
今更「見えてきた」とか言われてもな。
203デフォルトの名無しさん:2005/09/29(木) 21:36:21
戻り値がint型のメソッドから、あるメソッド(バッチ処理)を呼ぶとします。
そのバッチ処理は、最低でも20分はかかります。
そのバッチを動かしながら、リターンでintを返すことは可能ですか?
204デフォルトの名無しさん:2005/09/29(木) 21:38:16
Thread を作るとか BeginInvoke とかいくらでも方法は
205デフォルトの名無しさん:2005/09/29(木) 21:39:06
このスレの頭の方にほぼ同じ質問があったな
206デフォルトの名無しさん:2005/09/29(木) 21:42:42
>>203
つスレッド
207デフォルトの名無しさん:2005/09/30(金) 11:12:46
.NetFramework1.1で
スレッドIDを取得する方法はありますか?
208デフォルトの名無しさん:2005/09/30(金) 11:24:41
単なる識別子じゃなくてWin32APIで使うID? ならWin32APIじゃないとまともに取得できないはず。
209デフォルトの名無しさん:2005/09/30(金) 11:40:59
>>207
Win32べったりの機能はSystem.Diagnosticsにまとめられている。
System.Diagnostics.ProcessThread#Id が Win32のスレッドIDそのままのはず。
210デフォルトの名無しさん:2005/09/30(金) 11:43:03
>単なる識別子じゃなくてWin32APIで使うID?
Win32APIで使うIDではないので
(デバッグ時に出力したい)
そういう意味では単なる識別子です。
211デフォルトの名無しさん:2005/09/30(金) 11:43:44
ありゃ、答えが。
209さんありがとう。
212デフォルトの名無しさん:2005/09/30(金) 11:44:38
あ、それならThread.GetHashCodeで一意に識別子を取得できるよ。
213デフォルトの名無しさん:2005/09/30(金) 12:01:21
すんません
System.Diagnostics.ProcessThreadの使い方が
さっぱりわからんです。。。
自分でインスタンスを作らなきゃいけないんですか?
214デフォルトの名無しさん:2005/09/30(金) 13:23:24
>>213
ごめん、System.Diagnostics.ProcessThread は使えないね。
System.Diagnostics.Process#Threads から持ってくるのだがカレントスレッドを得る方法が無い。
System.Threading.Thread をスレッドプールで動かすと、同じWin32スレッドが再利用されたり、
いったん実行を休止させると別のスレッドが振られたりするんで、無いのかもしれない。
System.Threading.Thread#Name になにか識別子をセットしておくのが一番無難かもね。
215213:2005/09/30(金) 13:27:38
>>214
ガビーソ ありがとうございました・・・
Thread.CurrentThread.GetHashCode()でも
それなりの効果はありですよね・・・?
216デフォルトの名無しさん:2005/09/30(金) 18:38:49
GetHashCode だと一意の値を取得できない気がする
217デフォルトの名無しさん:2005/09/30(金) 18:52:16
ThreadPoolではマネージスレッドは再利用されるからGetHashCodeは別のWaitCallbackでも同じ値を指しうるね。
Threadでは一意。
まあ一意と言っても結局ユーザの目にはどれがそのスレッドなのか認識できないから微妙だけど……。
218デフォルトの名無しさん:2005/09/30(金) 19:06:10
アプリケーションの起動の仕方を設定することはできませんか?
具体的にはフォームを非アクティブのまま起動したいんですが
219デフォルトの名無しさん:2005/09/30(金) 19:08:03
Application.Run()またはApplication.Run(applicationContext)
220218:2005/09/30(金) 19:31:51
>>219
Applicationクラスを覗いてたらIdleイベントがあったんで、
イベントハンドラで非アクティブ化処理→Idleイベント削除
なんてやってみて上手くいったんですが
こんなやりかたでいいんでしょうか?

フォーム起動直後の処理の常套手段というのはあるんでしょうか……
221デフォルトの名無しさん:2005/09/30(金) 19:35:07
いや、なんで219で提示したのをスルーする?
222218:2005/09/30(金) 19:46:53
すみません具体的にはどうしたらいいんでしょう。
223デフォルトの名無しさん:2005/09/30(金) 20:10:25
あいやまて、219は勘違いしてた気がする。
非表示じゃなくて非アクティブか。
224デフォルトの名無しさん:2005/10/01(土) 00:51:49
>>207
AppDomain.GetCurrentThreadId()
なんで、ProcessクラスとかProcessThreadクラスとかからは取れないんだろうね。
225デフォルトの名無しさん:2005/10/01(土) 10:16:56
C#で彼女を作りたいんですけど、可能ですか?
できれば3次元の。
226デフォルトの名無しさん:2005/10/01(土) 10:26:34
Managed DirectX を使ってください
227デフォルトの名無しさん:2005/10/01(土) 10:37:10
228デフォルトの名無しさん:2005/10/01(土) 14:25:19
Genericについてですが

MakeGenericType を使用して実行時にタイプパラメータを
設定できることはわかったのですが

返り値がGenericな場合どううければいいのかわかりません。

たとえば

private List<T> GetList<T>(Control c)
があったとしてTをバインドして作成できても
返り値の型の指定をどうすればいいのか

Type test = typeof(GetList<>);
バインドの記述
??? ret = バインド後のメソッド実行

???の部分ってどうすればいいのでしょうか
229デフォルトの名無しさん:2005/10/01(土) 14:54:17
GetList<T>はメソッドなのに何故typeof(GetList<>)なんだ?

まあobjectで取得すればいいんじゃね
何をしたいのか読みとれないけど
230228:2005/10/01(土) 15:20:34
GetList<T>はMethodBaseのTypeより設定しています

わかりづらいですね

したいことは返ってきたObjectを適切な型にキャストしたいってとこですかね
231デフォルトの名無しさん:2005/10/01(土) 15:29:31
静的に型が分かるならそれにキャストすればいいし
静的に型が分からないならキャストしようもないし
MethodBaseのTypeより設定って意味わからんし……MekeGenericMethod?
232デフォルトの名無しさん:2005/10/01(土) 15:40:30
C# 4.0 の新機能らしいよ
233デフォルトの名無しさん:2005/10/01(土) 15:41:37
まだ 3.0 考えてる段階じゃなかったっけ……?
234228:2005/10/01(土) 15:46:04
ランタイム実行時に型が決定されるので
静的にはわかりませんがランタイム自身はわかっているはずです。

たとえば

public class testList<T>
というクラスがあった場合

obejct aaa = 適当なインスタンス;

Type runtimeType = aaa .GetType();

Type runtimebind = typeof(testList<>);
runtimebind.MakeGenericType(new Type[] { runtimeType});

??? = Activator.CreateInstance(runtimebind,aaa);

でtestList<適当なインスタンスの型>が返ってきます。

そのときの???の型はtestList<適当なインスタンスの型>のわけですが

ここをどう記述すればいいのわからないのです。

帰ってきたtestList<適当なインスタンスの型>の適当なメソッドを
実行するにはtestList<適当なインスタンスの型>の型が必要になるので
(Reflectionを使ってしまえばできますが・・・)
235228:2005/10/01(土) 15:51:04
間違えました

obejct aaa = 適当なインスタンス;

Type runtimeType = aaa .GetType();

Type runtimebind = typeof(testList<>);
Type binded = runtimebind.MakeGenericType(new Type[] { runtimeType});

??? = Activator.CreateInstance(binded ,aaa);

です
236デフォルトの名無しさん:2005/10/01(土) 15:57:47
>>234
静的に決定できないのなら静的に書きようもない。
そして静的に決定できないところに使うのがリフレクションだろ。

> (Reflectionを使ってしまえばできますが・・・)
すでにこの時点でリフレクションに浸かりまくってるじゃないか。
237デフォルトの名無しさん:2005/10/01(土) 16:03:21
よくわからんのだけど静的にわかんないんだったらソースにも記述できないんじゃないの?
記述できるのなら、それ相応の書式があるかと。


obejct aaa = 適当なインスタンス; 
object bbb = 適当なインスタンスその2;

Type runtimebind = typeof(testList<>); 
Type binded;

if (適当な条件式)
    binded = runtimebind.MakeGenericType(new Type[] { aaa.GetType() });
else
    binded = runtimebind.MakeGenericType(new Type[] { bbb.GetType() });

??? = Activator.CreateInstance(binded ,aaa); 

これは確実に書けない筈。書けるとしたら testList 型。
どうでも良いけど Generic で限定しなくても、testList のメソッドは実行できるような気がする。
238228:2005/10/01(土) 16:03:26
??? = Activator.CreateInstance(binded ,aaa);
まではリフレクションを使わないと無理ですが

これ以降testList<T>のメソッド実行等では
(実行するメソッドがGenericでない場合)
型が決定されているので
リフレクションが必要でないと考えているんですが
239デフォルトの名無しさん:2005/10/01(土) 16:04:05
うお。236 と微妙に内容かぶった。スマソ
240デフォルトの名無しさん:2005/10/01(土) 16:08:05
例えばList<string>とList<int>は別の型だぞ?
当然List<string>.RemoveAtとList<int>.RemoveAtも別のメソッドだ。たまたま名前が同じだけの。

Genericパラメータが分からないのならそれは型が(静的には)分かっていないと言うことだ。
241228:2005/10/01(土) 16:09:43
作られるのはtestList<なにかしらのType>

であってtestList<>とかにキャストできるかと思ったら
コンパイルエラーになるので
何かしらの書き方があるのかと思って質問しました

適当なInterface(Genericなしの)を作成して
そいつにキャストするしかないんですかね?
242228:2005/10/01(土) 16:14:05
>>240

てことは
List<T>とList<int>
List<T>とList<string>にはまったく関連がないってことですかね

FindLastIndex(Predicate<T>)
とかはさすがに無理だと思うけど
Clearとかは同じなのかと思ってました。

イメージとしてはList<T>を継承したList<int>が
あるのかと思っていたorz
243デフォルトの名無しさん:2005/10/01(土) 16:14:16
あれ? C# の generic 扱ったこと無いんだけど

    List list = new List<int>;

ってエラーになるの?
244デフォルトの名無しさん:2005/10/01(土) 16:16:33
>>243
List<int> list = new List<int>();
じゃなきゃエラー
245デフォルトの名無しさん:2005/10/01(土) 16:19:53
あ、ごめん。最後の () が入ってなかったのは俺のミス。
java で確かめてみたんだけど

    ArrayList list = new ArrayList<String>();

は通った。ここ、C# と Java の相違点?
246デフォルトの名無しさん:2005/10/01(土) 16:25:37
単に書き方の違いのような気もするが……。

ArrayList list = new ArrayList<String>();
list = new ArrayList<Integer>();  //Integerでよかったっけ?

は通るの? 通るのなら相違点だけど。
247デフォルトの名無しさん:2005/10/01(土) 16:30:34
通ったどころか

    ArrayList list = new ArrayList<Integer>();
    list.add("sample");
    list.add(123);
    System.out.println(list.get(0));
    System.out.println(list.get(123));

これすら許容。しかも出力されるのは 「sample」 「123」。自分でもびっくり。
248デフォルトの名無しさん:2005/10/01(土) 16:32:03
っていうか、多分 java1.5 の generic は実行時の型チェックを一切やってない。
249デフォルトの名無しさん:2005/10/01(土) 16:35:00
ArrayListとArrayList<>はちがうやろ
250デフォルトの名無しさん:2005/10/01(土) 16:36:55
JavaのGenericsはコンパイル時にキャストするためのコードが
自動的に付加されるだけじゃなかったっけ
251デフォルトの名無しさん:2005/10/01(土) 16:59:21
実行時の型チェックしないなら
object受け入れのいままでのコレクションでいいじゃん

252デフォルトの名無しさん:2005/10/01(土) 17:31:31
>>251
そりゃVMいじってないもの。
253デフォルトの名無しさん:2005/10/01(土) 17:49:53
>>247
ふざけるな(笑)
254デフォルトの名無しさん:2005/10/01(土) 17:58:22
Javaぽかーんだな
255デフォルトの名無しさん:2005/10/01(土) 18:01:33
ArrayList<Integer> list = new ArrayList<Integer>();
と宣言しても
list.add("sample");
が通るだなんてことはないよね
256デフォルトの名無しさん:2005/10/01(土) 18:02:25
>>255
さすがにそれが通ったらGenericsの意味がないわけで
257デフォルトの名無しさん:2005/10/01(土) 18:22:03
>>255
ArrayList<Integer> list = new ArrayList<Integer>();
((ArrayList)list).add("sample");

なら通る。

ちなみに java の保身のために言っておくけど、ちゃんと警告は出てるからな。
『注: Test.java の操作は、未チェックまたは安全ではありません。』 って。
258247:2005/10/01(土) 18:23:36
それから1つごめん。

>>247
>System.out.println(list.get(123));

の 123 は 1 の間違い。
259デフォルトの名無しさん:2005/10/01(土) 18:41:49
javaの話はすれ違い
260デフォルトの名無しさん:2005/10/01(土) 18:51:01
他の言語と比較することでC#の長短が見えてくるのはいいことだと思うが
261デフォルトの名無しさん:2005/10/01(土) 18:56:00
本題から逸れ過ぎだがな。
262デフォルトの名無しさん:2005/10/01(土) 19:42:08
一つ質問してもいいですか?
デリゲートって何のためにあるの?
263デフォルトの名無しさん:2005/10/01(土) 19:48:11
(処理を)委譲するためだな
264デフォルトの名無しさん:2005/10/01(土) 19:51:46
イベントリスナモデルにしなかったことによる利点と欠点はどんなものがあるかに
265デフォルトの名無しさん:2005/10/01(土) 19:52:11
取りあえずこの辺から
ttp://www.google.com/search?num=50&hl=ja&lr=lang_ja&oe=utf8&q=%E3%83%87%E3%83%AA%E3%82%B2%E3%83%BC%E3%83%88
一から説明しようとすると微妙にやっかいだよね
266デフォルトの名無しさん:2005/10/01(土) 19:56:42
単なる関数ポインタでよかったのに
267デフォルトの名無しさん:2005/10/01(土) 20:00:03
>>263
そのままですやん
使う機会ってあるのかな・・・

>>265
見てキマッシュ
268デフォルトの名無しさん:2005/10/01(土) 20:13:13
関数ポインタじゃクラスメソッドつかえねぇじゃん

+GCでアドレス変わったらどうすんだよ
269デフォルトの名無しさん:2005/10/01(土) 20:15:44
>>267
どうせイベントで意識せずに使ってるから。
270デフォルトの名無しさん:2005/10/02(日) 01:18:46
VC#2005 betaで、デザイナにグリッドを表示するのってどうやるの?
271デフォルトの名無しさん:2005/10/02(日) 01:22:57
オプションで設定できたはず
272デフォルトの名無しさん:2005/10/02(日) 01:37:48
デリゲートの話題が出たから聞きたいんだけどユーザーイベントを作るとき引数どうしてる?

MSDNによれば引数をとらないときは(object sender, EventArgs args)で
引数をとるときはEventArgsを継承するのが望ましいらしいけどさ、
たかがイベントの引数のために新しいクラスを作ると無駄に時間ばっかりかかるんだよね。
しかも○○EventArgsになるからIDEでソートされるととっちらかって探しにくいしさ。

公式でよくつかう型のEventArgsくらい用意してくれればいいのにな。
ArrayListEventArgsとか。

しょうがないからEventArgs無視して
delegate EHArrayList(object sender, ArrayList al) ←EHはEventHandlerの略
とか自分で用意して使ってる。
他にこういう風にしてる人いる?
273デフォルトの名無しさん:2005/10/02(日) 01:48:17
よく使うものだったら普通にクラスライブラリに用意されてないか?
そもそもそんなことやってたら無駄にクラス増えるだろ。
274デフォルトの名無しさん:2005/10/02(日) 01:50:27
いやArrayListを引数に取るEventArgsなんて作ったことないし。

普通にEventArgsの派生クラス書いてるなぁ。
ちょっとしたテストで使う分にはvoid delegate Ev(object obj);とかやるけど。
そんな私は律儀にOnHogehogeも作るしComponents.Eventsも使う人。
275デフォルトの名無しさん:2005/10/02(日) 02:01:09
ArrayList を引数にとる EventHandler は作ったことがある
第1引数が object sender ではなく、変更された ArrayList を渡すようになってる奴だけど
276デフォルトの名無しさん:2005/10/02(日) 02:05:22
delegateぐらいそのつど書けよ
277デフォルトの名無しさん:2005/10/02(日) 02:09:43
むしろ俺が悩むのはdelegateの名前。
278デフォルトの名無しさん:2005/10/02(日) 02:13:37
>>277
それは↓ここに行けば?
クラス名・変数名に迷ったら書き込むスレ。Part5
http://pc8.2ch.net/test/read.cgi/tech/1109330204/
279デフォルトの名無しさん:2005/10/02(日) 02:29:09
>>278
そのスレは知ってる。ちなみに命名規則の話はスレ違いになる。

そうではなくControl.Invokeとかでひとつのdelegateを使いまわしたりする上に、
特有の引数をとったりするので毎度、名前には頭を悩ませる、という話。
たまにイベントの名前とかぶったりもするし。
280デフォルトの名無しさん:2005/10/02(日) 06:30:56
>>279 そういうとき↓こういう接頭辞良くない? EHとEAでソートされるから探しやすいし。
EventHandlerとか打ってると指痛くなってくるよ。
delegate void EHevent_name(object sender, EAargs_name);
event EHevent_name event_name;
281デフォルトの名無しさん:2005/10/02(日) 09:50:22
1週間でC#の神様になれる本ってありますか?
282デフォルトの名無しさん:2005/10/02(日) 10:07:24
MSDNを全部印刷しろ
283デフォルトの名無しさん:2005/10/02(日) 11:12:34
.NETでSOAPを使う時って、サーバのURLとメソッド名、戻り値が
わかればいいのですか?
プロキシとかいるんですか?
284デフォルトの名無しさん:2005/10/02(日) 11:34:45
ソリューションイクスプローラで add web reference ってのが一番楽でしょ
285デフォルトの名無しさん:2005/10/02(日) 11:45:30
VS.NETを使わないでやりたいんです。
難しいですかね?
286デフォルトの名無しさん:2005/10/02(日) 12:20:33
wsdl.exe に WSDL を渡せばプロクシクラスを作ってくれるよ
287デフォルトの名無しさん:2005/10/02(日) 19:16:28
プロキシクラスを作らなければ無理なんですかね?
アドレスとメソッドだけでは不可能ですか?
WSDLが提供されないんで・・・。
288デフォルトの名無しさん:2005/10/02(日) 20:28:35
サーバ側の仕様が変化しないのならば
適当なWSDLを食わしてプロクシクラスを作らせてから
それを真似して作ればいいんじゃね
289デフォルトの名無しさん:2005/10/02(日) 22:48:01
System.Windows.Formsって
monoでは使えないの?
java.awtみたいなLinuxでもWindowsでも同じってわけにはいかないのかな?
MicrosoftはLinux用のSDKなんて絶対つくらないのかね。
290デフォルトの名無しさん:2005/10/02(日) 22:50:59
作らないだろうなー
291デフォルトの名無しさん:2005/10/02(日) 22:55:18
そもそもLinuxでSystem.Windows.Forms使おうという人がどれくらいいるかってーと……。
ASP.NETが動けばいいじゃん? みたいな。
292デフォルトの名無しさん:2005/10/02(日) 23:25:37
ドットネットが出た最初の頃はクロスプラットフォームをうたっていたような・・・
293デフォルトの名無しさん:2005/10/02(日) 23:30:59
うたうのは自由だろ
294デフォルトの名無しさん:2005/10/02(日) 23:34:25
CLIに準拠してりゃクロスプラットフォーム
295デフォルトの名無しさん:2005/10/03(月) 00:32:26
Panel (AutoScroll = true)に対してSizeが大きすぎるものをいれることは
無理なのでしょうか?
中のコンポーネントのサイズを大きくしても、いつの間にか高さがshort.MaxValueくらいになってるのですが・・
296デフォルトの名無しさん:2005/10/03(月) 18:58:58
>>280
いまだに接頭詞使うアフォがいるんですね。
氏ね。
297デフォルトの名無しさん:2005/10/03(月) 20:49:49
C# で Yahoo オークションの情報をとってくるプログラムを
作ろうとしています。Yahoo 側で Web Service があればそれを
利用したかったのですがどうもないみたいなので、自分で取得するしか
ないかと考えています。

で、HTTP で通信して HTML を取得し、それをパースすればいいと
思っているのですが、ユーザーID、パスワードを用いて
Yahoo オークションにログインしないといけないのですが、
こういった事を実装するには Yahoo 側のログインでどのように Form が
POST されているかを調べ、それと同じ事をこつこつコードで
実装していくしか方法はないでしょうか?

何かアドバイスがあればお願いします。
298デフォルトの名無しさん:2005/10/03(月) 21:03:37
>>297
地道に通信内容を真似るかIEを外から操作するか
299デフォルトの名無しさん:2005/10/03(月) 21:23:41
C#+DirectXでこんな感じのゲームは作れますか?
http://download.bbgames.jp/4gamer/movie/up0192.zip
300デフォルトの名無しさん:2005/10/03(月) 21:42:50
普通に作れるでしょ
まあお前には無理だろうけどさ
301デフォルトの名無しさん:2005/10/04(火) 16:53:26
ヒント:C#は遅い
302デフォルトの名無しさん:2005/10/04(火) 17:02:25
ヒント:最近のPCは十分にオーバースペック
303デフォルトの名無しさん:2005/10/04(火) 17:30:36
グラフィックの表示が実行時間のボトルネックになるんだから
それ以外のところが多少遅くても全然問題にならんわな
304カラス  731:2005/10/04(火) 17:31:50
どうしょう?
305デフォルトの名無しさん:2005/10/04(火) 17:37:22
銀賞
306デフォルトの名無しさん:2005/10/04(火) 20:25:48
C#って遅いの?
なんか起動は遅いけど、動きだしたら速いイメージがある
307デフォルトの名無しさん:2005/10/04(火) 21:16:39
動きだしても速くはないよ
308デフォルトの名無しさん:2005/10/04(火) 21:39:05
C#は遅いだけで使い物にならないクソ言語w
普及率もJavaに完全に負けてるしwww
309デフォルトの名無しさん:2005/10/04(火) 21:57:33
速くないのはプログラマがヘボいから
310デフォルトの名無しさん:2005/10/04(火) 22:02:04
MSSQLServerからデータを取得して、DataGridに表示しようとしています。
DataAdapterのデータのプレビューを見ると正しくデータが表示されています。

ところが、fillでデータを取得して画面表示すると
必ず最初の1件に2件目のデータが表示され、データが重複します。
たとえば、元のテーブルに1,2,3,4・・10と入っていると
2,2,3,4・・10と取得してしまいます。
SelectCommandを書き換えて降順で取得すると、
9,9,8,7,6・・1と取得してしまいます。

この場合、どのあたりに問題があるのでしょうか。
私の技術や頭に問題以外で考えられるのはどのあたりでしょうか。
311デフォルトの名無しさん:2005/10/04(火) 22:05:05
遅いと言われるのは、初回起動の遅さとWinForm(GDI+)の遅さ。
それでもJavaよりは遥かにましだが、早くVistaの時代にいってほしいものですな。
312デフォルトの名無しさん:2005/10/04(火) 22:46:47
Windows Formsのプログラマほどのへたれはそういない。

そういやWindows Forms2.0のソースコードを公開するって言う話はどうなったの?
313デフォルトの名無しさん:2005/10/04(火) 22:55:18
Reflector .NET で充分だよ
314デフォルトの名無しさん:2005/10/04(火) 22:57:22
C# で書かれビルドされたdllをVC++のコードから呼んで使いたいのですが
どうすれば良いでしょうか?
315デフォルトの名無しさん:2005/10/04(火) 22:59:14
Managed C++でないのなら、DLLをCOMに公開する。
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconExposingNETFrameworkComponentsToCOM.asp
C++側は普通にCOMオブジェクトとして扱う。
316デフォルトの名無しさん:2005/10/04(火) 23:48:41
cgiってc++で作られたりもするみたいですけど、
c#でcgiを作るってできるんでしょうか?
317デフォルトの名無しさん:2005/10/04(火) 23:50:27
>>316
できるできる。環境変数と標準入出力を扱えるなら何でもいい。
318デフォルトの名無しさん:2005/10/04(火) 23:50:45
作れないことはないが非効率。
素直にASP.NETで運用するのが吉。
319デフォルトの名無しさん:2005/10/04(火) 23:57:53
cgiを作る技術ってのはやはり
基本的な通信の知識を勉強しなければならないのでしょうか?
320デフォルトの名無しさん:2005/10/05(水) 00:00:01
通信うんぬんより、標準入出力の概念を勉強したほうが。
標準入出力が分かればコンソールアプリを作るとの大差ない。
321デフォルトの名無しさん:2005/10/05(水) 00:20:09
ありがとうございます。
322デフォルトの名無しさん:2005/10/05(水) 01:14:35
エクセル伯父さんに
COMアドインを追加してみたいのです。C#です
でもどうしたらいいのかわりません。たじけてくだあいあい
あとエクセル伯父さんは2000から対応できる?
323デフォルトの名無しさん:2005/10/05(水) 01:27:07
脳に障害があるようですね
324デフォルトの名無しさん:2005/10/05(水) 08:06:22
ボタンを押したらファイルのプロパティを表示出来るようにするにはどうすればいいですか?
325デフォルトの名無しさん:2005/10/05(水) 08:35:12
326デフォルトの名無しさん:2005/10/05(水) 21:27:39
ふらっとのほうにも書いたんだけど・・・
こっちで誰か知ってる人がいたら情報ください

VisualStudioの問題なのかもしれませんが・・・
Windowsアプリケーションを作成して、一個ボタンを置いただけのフォームを作成したあと
コンパイルしようとしたところ
リソースを準備しています...
C:ソースファイルの場所\プロジェクト名.resx: リソース ファイルへの書き込み中にエラーが発生しました。 指定されたパスが見つかりません。
といったエラーが出てコンパイルすることができません

今まで普通につかえてたのですが、急にこのエラーが出るようになりました・・・

フォームのデザイナを表示した際に作られるresxファイルを削除するとコンパイルできるのですが
またデザイナを開くとresxが生成されて、コンパイル時にエラーになるんですよね
今のところコンパイルのたびにresxファイル削除してなんとか回避してる状況です。。
誰か情報持っていたらください
327デフォルトの名無しさん:2005/10/05(水) 21:50:51
328325:2005/10/05(水) 22:06:10
>>327
使ってる環境はベータじゃないんですが・・・
関係あるのかな、とりあえず明日試してみます
329デフォルトの名無しさん:2005/10/05(水) 22:12:42
>>328
関係ないと思われ
330デフォルトの名無しさん:2005/10/05(水) 22:14:40
文字コード(Unicode)の0x0000ってどんな文字ですか?
C#言語でこれを調べる方法はありますか?
331デフォルトの名無しさん:2005/10/05(水) 22:15:00
新しいプロジェクトで軒並みそうなるなら、VSの再インストールが手っ取り早そうだな
332デフォルトの名無しさん:2005/10/05(水) 22:16:30
どんな文字かというとNULL文字だが、
これを調べる手段ってなんだ? どうなったら調べたことになるんだ?
ユニコードコンソーシアムのサイトでも見に行けば?
333325:2005/10/05(水) 22:20:09
>>331
とりあえず今はコーディング→resxファイル削除→コンパイル
で動いてるので、キリのいいところでVS再インストールしてみます

なんか微妙に条件があるっぽくて
Windowsアプリプロジェクトを作った後
自動で作られているForm1を消して、新しいフォームを作るとそうなるみたいです
名前変更は試しませんでした
334デフォルトの名無しさん:2005/10/05(水) 22:20:31
>>332
なるほどNULL文字ですか。
ありがとうございます。
335デフォルトの名無しさん:2005/10/06(木) 15:23:26
DataGridのdatasourceに型付データセットを格納して表示項目とかデザイナで設定したあと
//datagrid1にはデザイナでdataset1.table1をデータソースとして指定
dataset1 = GetNewDataSet1Data();←だけでは画面の表示は何も変わらず
dagagrid1.DataSource = dataset1.table1;←だと画面の表示設定が全部初期化される

データセットの中身を最新にしても表示の設定とかはそのままにしてたいんだけどどうやればいいのかな
336デフォルトの名無しさん:2005/10/06(木) 15:24:04
CPUなんかにバグなんてないだろ
プログラムが仕込まれてるわけでもあるまいし
337デフォルトの名無しさん:2005/10/06(木) 17:03:18
System.String.Format("{0:HH時mm分s秒}", DateTime.Now);
で結果が「09時01分11秒」になるところを
「 9時 1分11秒」としたいのですが、どうしたらできるのでしょうか?
0でなくスペースで
338デフォルトの名無しさん:2005/10/06(木) 18:54:38
デザインモード時と実行時を判定したいんですが

System.Windows.Forms.Controlを継承したクラスの
OnCreateControlのオーバーライド内で判定

If( this.DesignMode ){
//何か
}

DesignModeがどんな状態でもtrueになりません。
339338:2005/10/06(木) 19:10:38
OnPaint内だとTrue。

UserControl継承でOnLoad内でもFalse。

実行時の最初だけ走らせたい処理は
どこに書けばいいんでしょうか。
340デフォルトの名無しさん:2005/10/06(木) 21:01:51
>>337
書式指定文字列だけじゃ不可能だから、頑張ってString.PadLeftをつかうなりして自前で実装だ。
341デフォルトの名無しさん:2005/10/06(木) 22:52:26
>>339
DesignModeプロパティは処理のタイミングによって判定に使えない場面が多くて微妙。
LicenseManager.UsageModeがLicenseUsageMode.Designtimeかどうかでチェックする方法もあるけど、それもうまくいかない場所がある感じ。
とりあえず両方チェックしてそれでも無理ならあきらめ。
342デフォルトの名無しさん:2005/10/06(木) 23:01:52
つVisualStudio2005
343デフォルトの名無しさん:2005/10/06(木) 23:32:08
引数でよくあるsenderって何ですか?
344デフォルトの名無しさん:2005/10/06(木) 23:38:22
イベントの送信者
345デフォルトの名無しさん:2005/10/06(木) 23:49:12
Formのメニューバーの色をかえるにはどうすればいいんでしょうか?
346デフォルトの名無しさん:2005/10/07(金) 00:04:24
MenuItemをオーナードロー
347デフォルトの名無しさん:2005/10/07(金) 00:59:31
MSIL ってサブルーチン実効命令無いんだね〜。初めて知った。
348338:2005/10/07(金) 07:30:30
>>341
ありがとうございます。
こんな情報もありました↓
ttp://homepage1.nifty.com/rucio/main/dotnet/Samples/Sample073DesignMode.htm
349デフォルトの名無しさん:2005/10/07(金) 10:06:05
>>343
複数のコントロールのイベントに同じ関数を割り当てたときに
イベントの発生元をつきとめるに使う。

>>336
そういえばむかーしバグ騒ぎってあったなあ・・・
350デフォルトの名無しさん:2005/10/07(金) 10:20:13
>>340
自前実装ですか...
ありがとうございます。
やってみます。
351デフォルトの名無しさん:2005/10/07(金) 10:27:19
>>336
・実際あった
・仕込まれている
352デフォルトの名無しさん:2005/10/07(金) 11:06:39
コピペにマジレス乙
353デフォルトの名無しさん:2005/10/07(金) 15:19:56
エロ画像を隠蔽保管する方法について2つの案で悩んでおります。

1.対衝撃&暗号化機能付きHDを用いる案
容量:40〜80GB
暗号化:AES(256ビット) 商用品なので信頼性は高い
費用:おおよそ1〜2万円

2.自作ソフトで暗号化してMOに保管
容量:640MB
暗号化:AES(256ビット) 自作なので信頼性は微妙 更に暗号化鍵の内容も微妙(パスワードコードをそのまま使用)
費用:おおよそ2千円

どっちが良いですかね?
354デフォルトの名無しさん:2005/10/07(金) 15:35:18
C#では明示にDeleteしなくてもガベージコレクションで破棄してくれると聞きましたが
マルチスレッドを使用しているオブジェクトはスレッドが実行中でも破棄されるのでしょうか?
そのときはスレッドも終了してくれるのでしょうか?
355デフォルトの名無しさん:2005/10/07(金) 15:58:34
>>354
意味がわからん。
ルート参照からたどれなくなったオブジェクトがGC発動時に
開放されるだけでマルチスレッドがどうとか関係ないだろ
356デフォルトの名無しさん:2005/10/07(金) 16:02:52
>>355
そうなんですか・・・
スレッドが実行中なのにオブジェクトを開放されたりすると
メモリリークが発生する気がしたので

有難うございました
357デフォルトの名無しさん:2005/10/07(金) 16:47:06
マネージオブジェクトとアンマネージオブジェクトの違いについて教えてください
358デフォルトの名無しさん:2005/10/07(金) 17:39:15
マネージされているかされてないかの違いです
359デフォルトの名無しさん:2005/10/07(金) 17:42:20
>>356
もっと意味がわからん。
360デフォルトの名無しさん:2005/10/07(金) 17:45:56
>>359
うっさい禿
361デフォルトの名無しさん:2005/10/07(金) 18:02:26
>>354

>C#では明示にDeleteしなくてもガベージコレクションで破棄してくれると聞きましたが
明示的に Delete したほうが安全。ガベージコレクションは何時動くか分からない。

>マルチスレッドを使用しているオブジェクトはスレッドが実行中でも破棄されるのでしょうか?
そのオブジェクトが到達不可能、つまり2度と使えないと判断されたら破棄される対象になる。
ただしアンマネージオブジェクトと弱参照オブジェクトを除く。

>そのときはスレッドも終了してくれるのでしょうか?
スレッドは特に関係ない。
362デフォルトの名無しさん:2005/10/07(金) 18:08:57
明示的にDeleteってなにー?
363デフォルトの名無しさん:2005/10/07(金) 18:10:32
Dispose のことじゃね
364デフォルトの名無しさん:2005/10/07(金) 18:20:25
Disposeとdelete全然関係ないじゃん。
365361:2005/10/07(金) 18:29:18
ごめん普通に釣られた。ゆるしておくれ。
366デフォルトの名無しさん:2005/10/07(金) 20:17:00
>>361
知らない言葉だらけですが
レス有り難うございました
367デフォルトの名無しさん:2005/10/07(金) 22:12:24
Formのタイトルバーの色をかえるにはどうすればいいんでしょうか?
368デフォルトの名無しさん:2005/10/07(金) 22:21:11
デスクトップ上で右クリック⇒プロパティ⇒デザイン
369デフォルトの名無しさん:2005/10/07(金) 22:32:23
XPだと3種類しか選べないよ
370デフォルトの名無しさん:2005/10/07(金) 23:34:29
デザインの詳細なかったっけ?
371デフォルトの名無しさん:2005/10/07(金) 23:39:27
Lunaが有効だとタイトルバーの色変わらんね
372デフォルトの名無しさん:2005/10/08(土) 05:16:59
C#とVC#の違いってなに?
373デフォルトの名無しさん:2005/10/08(土) 06:08:24
C#は言語
VC#は開発環境
374デフォルトの名無しさん:2005/10/08(土) 21:57:08
1111158062

みたいな時刻形式を〜2005/10/08(土) 06:08:24〜のようにわかりやすい形式にもどすには
どのクラスを使えばいいんでしょうか?
375デフォルトの名無しさん:2005/10/08(土) 22:16:00
>>374
まず、その時刻形式はなにかという話だが。

DateTimeのTicksから得た値ならならそのままDateTimeコンストラクタに渡せばよろしい。
Cのtime関数のような値なら基準になった日付にその数字を加えてずらす必要がある。
376デフォルトの名無しさん:2005/10/09(日) 00:26:05
ScrollableControl内のコントロールを固定することはどのようにすればできますか?
377デフォルトの名無しさん:2005/10/09(日) 00:35:22
固定?
スクロールしても同じ位置に表示させたいってことか?
378デフォルトの名無しさん:2005/10/09(日) 11:48:20
そうです。
中身のControlのMoveイベントでLocationを固定しようとしても、スクロールバーの矢印を押すと微妙に動いてしまったり
できればMoveさせたくないので、Moveイベントでやるのには抵抗があり、質問した次第です。
379デフォルトの名無しさん:2005/10/09(日) 12:44:22
>>378
ちょっと邪道だが、そのコントロールを子にするんじゃなくて、兄弟にして
ZOrderを前にする。

例えばスクロールさせたくないやつがTextBoxだとすると

ScrollableControl ── TextBox

こうじゃなくて

Panel ┬─ ScrollableControl
..   .└─ TextBox

こうする(親のPanelは当然ながら適当に)。
380379:2005/10/09(日) 12:45:18
うわsage忘れた。スマソ
381デフォルトの名無しさん:2005/10/09(日) 14:24:04
クラス内で、特定のメンバを別の特定のメンバにのみ
アクセスを許可することって可能?
属性を使うんだろうか。
382デフォルトの名無しさん:2005/10/09(日) 14:29:39
internalで代用はきくかもしれないが、
C++のfriendに全く相当する機能はない。

インターフェイスやデリゲートの利用を考えたほうがいい。
383デフォルトの名無しさん:2005/10/09(日) 14:42:08
属性を使うとなると動的、つまり実行時にしかチェックできないな。
384381:2005/10/09(日) 15:17:50
friendキーワードってクラス間のアクセス許可だったよね。
自クラス内部での操作時に値チェックし忘れるのを防ぎたいんだ。
385デフォルトの名無しさん:2005/10/09(日) 15:23:59
private なプロパティでも作れよ
386デフォルトの名無しさん:2005/10/09(日) 15:34:46
「クラス内」と「クラス間」を読み違えてた。

呼び出されるメソッドでStackTraceでもチェックすればいいんじゃね。
387381:2005/10/09(日) 19:31:22
いろいろ回答ありがとう。
プロパティを用意してもうっかりフィールドにアクセスしてしまう、
というケースに対応したかった。
そういう事態ぐらいは注意して防ぐべきなのか。
388デフォルトの名無しさん:2005/10/09(日) 20:50:01
システムで設定されているメニューのフォントは
SystemInformation.MenuFontで取得できるようですが
その他のフォント、例えばアイコンテキストのフォントとかは
取得できないんでしょうか?
389デフォルトの名無しさん:2005/10/09(日) 21:06:48
ないっぽいね。
Win32APIのSystemParametersInfo関数かな。
390デフォルトの名無しさん:2005/10/09(日) 21:10:40
>>389
ごっつぁんです
391デフォルトの名無しさん:2005/10/10(月) 14:00:13
>>387
そのフィールドの名前を「ce2ac2932221c6c6de2ca8fa68909462」の様なくぁwせdrftgyふじこ
392デフォルトの名無しさん:2005/10/10(月) 15:20:15
>>391
それも考えた。
サフィックスで「〜_ThisFieldShouldBeAccessedByProperty」とつけるとか。
393デフォルトの名無しさん:2005/10/10(月) 18:03:40
TextBoxだとフォーカスを失ってもSelectedTextプロパティはそのままなのに、
どうしてComboBoxはフォーカスを失うと
SelectedTextがクリアされてしまう糞仕様なんですか?

具体的にはButtonで選択中のテキストを操作したいんですが……
394デフォルトの名無しさん:2005/10/10(月) 18:18:04
>>393
Textプロパティで取得できるからじゃね?
395394:2005/10/10(月) 18:23:34
ああ、TextBoxのSelectedTextと同じ動作を期待してる、ってことか。
396デフォルトの名無しさん:2005/10/10(月) 23:01:30
System.Diagnostics.Debug.WriteLine

ってどういうものですか?
397デフォルトの名無しさん:2005/10/10(月) 23:22:51
>>396
デバッガ上で動かしてみろ。
398デフォルトの名無しさん:2005/10/11(火) 01:16:00
>>396
N88のLINEと互換性があるよ
399デフォルトの名無しさん:2005/10/11(火) 03:12:26
C#で非クライアント領域ありのコントロールってどうつくるん?

あと無効リージョンってWin32API使わんと取れない?
400デフォルトの名無しさん:2005/10/11(火) 17:16:17
画面の高速描画を行いたいのですが、いい方法を探しています。
今はダブルバッファーを使って、無効矩形のみ描画・転送を行っています。
このほかに高速化のテクなどないでしょうか?
401デフォルトの名無しさん:2005/10/11(火) 18:22:16
DirectX
402デフォルトの名無しさん:2005/10/12(水) 00:06:43
>>400
C++で書き直す。
403デフォルトの名無しさん:2005/10/12(水) 00:11:15
>>402
画面描画回りはC++かどうかっつうよりも、GDIつかうかGDI+使うかの違いでないの?
それとも、C++でGDI+、C#でGDI、C++でGDI、C#でGDI+で結構違うの?
404デフォルトの名無しさん:2005/10/12(水) 00:12:10
.NETからGDIってどうやっていじるの?
405デフォルトの名無しさん:2005/10/12(水) 00:22:01
API直呼び
406デフォルトの名無しさん:2005/10/12(水) 00:58:28
めんどそう
407デフォルトの名無しさん:2005/10/12(水) 14:30:51
DataSetにレコードを追加する場合
追加したレコードの順番どおりに格納されるのでしょうか?
それとも順番は保障されていないのでしょうか?
408デフォルトの名無しさん:2005/10/12(水) 14:33:14
保証されないことを前提にすべきだな
409デフォルトの名無しさん:2005/10/12(水) 15:28:27
>>408
有難うございます
やっぱりそうですか・・・


ところで,列の順番は保障されていないのでしょうか?
410デフォルトの名無しさん:2005/10/12(水) 15:40:51
そっちは保証される
列の順序は大事だからな
411デフォルトの名無しさん:2005/10/12(水) 15:45:09
>>410
なるほど,とても参考になりました
ありがとうございます
412デフォルトの名無しさん:2005/10/12(水) 19:55:53
C#で嫁を作ろうと考えています。
どうすればいいでしょうか?
できれば、アヤヤかほちゃ希望です。
413デフォルトの名無しさん:2005/10/12(水) 20:21:43
>>412
System.Korea名前空間かSytem.China名前空間で
Prostitute.Pay( currency Yen );
して下さい。
414デフォルトの名無しさん:2005/10/12(水) 23:31:29
This module raised FabyouException.
So please restart your system.
415デフォルトの名無しさん:2005/10/12(水) 23:36:32
>>414
Please enter any F5 key
416デフォルトの名無しさん:2005/10/13(木) 08:46:50
ListViewのDetail表示で
カラム幅変更を捕まえたいと思った

http://msdn2.microsoft.com/en-us/library/ffh8ss7h(en-US,VS.80).aspx
勘弁してよマッタクモウ

何か逃げ道はないかな〜
417デフォルトの名無しさん:2005/10/13(木) 08:56:21
どこに不満があるの?
418デフォルトの名無しさん:2005/10/13(木) 09:15:06
>>416
フィードバックセンターに文句言いまくれ
419デフォルトの名無しさん:2005/10/13(木) 09:19:21
2.0にならないと使えないから文句言ってるの?
420デフォルトの名無しさん:2005/10/13(木) 13:29:32
stringに 0101010・・・ってかんじで72ビットの文字が入っていて
これに、+100とかしたいので
いっかいintの10進数にでもなおしたいんだけど、オーバーフローしちゃう。

こういう場合どうやって計算すればいい?
421デフォルトの名無しさん:2005/10/13(木) 15:10:48
>>420
72ビットを精度落とさずに計算したかったら多倍長計算しないと駄目。
↓多倍長整数に関して。
http://www.gdncom.jp/student/bbs/ShowPost.aspx?PostID=1968
422デフォルトの名無しさん:2005/10/13(木) 16:51:55
72bit整数ならdecimalで足りるよ。
Convert.ToDecimal/ToStringが使えないからちょいと変換は面倒だけど。
423デフォルトの名無しさん:2005/10/13(木) 22:17:47
ソリューションに何個かプロジェクトを含めるとして、
プロジェクトをまたいでページ遷移できないのですか?
424デフォルトの名無しさん:2005/10/13(木) 22:18:46
WebかWinFormかどっちだよ。
425デフォルトの名無しさん:2005/10/13(木) 22:25:17
すみません、Webです。
426デフォルトの名無しさん:2005/10/13(木) 22:47:08
427デフォルトの名無しさん:2005/10/14(金) 00:32:43
質問です。
作成中のプログラムのデバッグを開始すると、
出力の「デバッグ」、「〜.exe : 〜が読み込まれました。」と出力されるところに、
gcd-wg96とかfih--lq3とかyhavtihgといった全く覚えのない
毎回違うランダムな名称の参照が読み込まれたと出力されるのですが
これはどういうことでしょうか?
428デフォルトの名無しさん:2005/10/14(金) 01:31:22
IDEでメソッドやプロパティの名前を"Add"の3文字にすると、
そのメンバのコード上にカーソルがあるとき
キーレスポンスが悪くなるのはなぜだろう。
"add" "ADD" "Add_"なら大丈夫なんだが。
429デフォルトの名無しさん:2005/10/14(金) 07:25:06
インテリセンスのせい
430デフォルトの名無しさん:2005/10/14(金) 09:05:08
そうなのか。
なんでAddなんだろうなあ。MSDNを引いても釈然としない。
431デフォルトの名無しさん:2005/10/14(金) 09:28:52
単純にAdd〜という関数がそのほかの関数に比べて圧倒的に多いから
432デフォルトの名無しさん:2005/10/14(金) 12:21:38
なるほど。そういうことなのね。
Addメソッドはコーディング時だけ名前を変えるしかないか。
ありがとう。
433デフォルトの名無しさん:2005/10/14(金) 13:39:33
って、そんな作業に支障をきたすほど遅くなるのか?
434デフォルトの名無しさん:2005/10/14(金) 17:09:15
ListBoxコントロールで外見せされてないFocucedIndexの値(フォーカスの当たってるitemのインデックス)
をとる方法って何かありますか?
435デフォルトの名無しさん:2005/10/14(金) 18:52:29
>>433
ひどくはないが動作が緩慢になってイヤ。
タスクマネージャでも他のメソッドの倍以上のCPU使用率になる。
単にPCのスペック不足かもしれない。(1.2GHz + 512MB)
436デフォルトの名無しさん:2005/10/14(金) 19:09:05
>>434
SendMessageでLB_GETCARETINDEXを送信。
437デフォルトの名無しさん:2005/10/14(金) 19:54:36
>>434
「外見せされてないFocucedIndexの値」ってなに?
int i = listBox1.SelectedIndex;
みたいな簡単な事じゃないのかな・・・
438デフォルトの名無しさん:2005/10/14(金) 20:18:33
>>436
サンクス。ちょっと調べてみます。

>>437
ListBoxがprivateで持ってるプロパティって言えばいいですかね。
たとえば項目で1個目,3個目,5個目ってクリックして選択してったときに最後5個目に
フォーカスがあたると思いますが、その5(インデックスは4)ってのをとりたいんです。
SelectedIndexだと一番若いインデックス(この場合0)しか取れないので。

で、ウォッチで見るとFocucedIndexって項目にその値が入ってるんです。
439437:2005/10/14(金) 20:31:32
>>438
だったら>>437でいいと思うけど・・・
複数選択したときだったら
int count = listBox1.SelectedItems.Count;
int i = listBox1.SelectedIndices[count - 1];
440デフォルトの名無しさん:2005/10/14(金) 20:33:38
>>439
ちっちっち、2番を選んでCtrl押しながら5番を選んでついでに3番も選んだときにどうなる?
441デフォルトの名無しさん:2005/10/14(金) 20:36:41
>>436
いけました。ありがとうございました。

>>439
ちょっと言葉が足りなくて申し訳ありませんが、
フォーカスがある行が選択されてるとはかぎらないんですよね。
442437:2005/10/14(金) 20:44:53
すいません、理解できました
ゴミカキコでしたね・・・レスするんじゃなかった・・・
443デフォルトの名無しさん:2005/10/14(金) 20:58:07
>>442
( ◔_ゝ◔)気にするな。おれはいつもゴミカキコだ。
444デフォルトの名無しさん:2005/10/14(金) 21:52:25
ああ;あああぁああ^−よっぱらっててコードかけねーー!!!q
445デフォルトの名無しさん:2005/10/14(金) 22:47:09
いま、DoubleBuffer(独自で背後にBMPつくりそこから転送)使っているんですが、1280*1024ぐらいの大きさで24FPSで描画を行うとAthlon64 3.2G相当でもCPUが100%近く行ってしまいます。
CPUを食いすぎているように思うんですが、これが普通なのでしょうか?
これより早い描画を求めるならばDirectX使う必要があるんでしょうか?
446デフォルトの名無しさん:2005/10/14(金) 22:51:14
>>445
そりゃGDIやGDI+よりはDirectXのほうがいいに決まってる。
447デフォルトの名無しさん:2005/10/14(金) 22:53:54
720Mbps……メモリ帯域が足りなくなるレベルだな
448デフォルトの名無しさん:2005/10/14(金) 23:31:27
>>446
即レス感謝です。
DirectXは詳しく知らないんですが、やりようによってはビジネスアプリっぽい画面でも使えるんですか?
たとえばVisioみたいなもののメイン画面を描画の高速化を狙ってDirectXつかって書くというのも可能なんでしょうか?
449デフォルトの名無しさん:2005/10/14(金) 23:47:22
>>448
ビジネスアプリでそこまで高速に画面全体のリフレッシュが要求される状況になるのか?
無駄な画面全体の描画をしているんでない?
450445:2005/10/15(土) 00:13:24
>>449
ちょっとビジネスアプリとも違うんですが・・・
リアルタイムデータをいろいろなビューで高速表示する必要があるものを作ってます。
ほかにもCPUパワーを食うので減らせるところは減らそうと考えてます。
451デフォルトの名無しさん:2005/10/15(土) 00:17:29
マシン2台用意して繋げば良いと思うよ。
452デフォルトの名無しさん:2005/10/15(土) 01:14:45
ASP.NETを始めたばかりの者(C,C++の古いプログラマでつ)ですが、

ユーザがWebページ(aspx)でボタンを押すと、デスクトップキャプチャ画面をサーバに自動的に
アップロードするといった処理を実現したいのですが、そもそもそのようなことはASP.NETで
可能なのでしょうか。
もし可能ならばポインタだけでも結構ですので教えていただけるとありがたいです。



453デフォルトの名無しさん:2005/10/15(土) 01:47:33
>>452
キン○マウイルス?そんなのできたら個人情報だだもれだ。
454デフォルトの名無しさん:2005/10/15(土) 01:53:03
>>453
そんなことどうでもいいんだよ。
ポインタだけ教えてやれよ
455デフォルトの名無しさん:2005/10/15(土) 02:13:14
ポインタって言われてもねえ
456デフォルトの名無しさん:2005/10/15(土) 02:17:23
>>452
ASP.NETでもそれ以外でも(穴付く以外に)不可能。
クライアントのプログラムとして許可されないと。
457452:2005/10/15(土) 05:37:24
>>456
そうですか、、、そうですよね。
クライアントのプログラムを起動するようなサンプルってどこかにありますでしょうか。

社内用のツールとしてデータベースに接続する簡単なWebインターフェイスをASP.NETで書いたんですが(バグトラッカーみたいなもの)、
一緒に画像も貼り付けられたら便利だと思ったもので。そんなわけでウィルスを作りたいわけではありませんです。>>453
458デフォルトの名無しさん:2005/10/15(土) 08:35:11
リッチクライアントにしちゃえよ
ページ遷移とか考えなくていいから楽チンだぜ
459452:2005/10/15(土) 08:58:05
>>458
データベースに情報をサブミットするタイミングで画像もアップロードしたいので、流れとしては
(1) ユーザが画面をキャプチャするボタンを押す。
(2) クライアントプログラムが起動して画面をキャプチャし、決まったテンポラリフォルダに画像ファイルを保存。
(3) ユーザがサブミットボタンを押したタイミングでテンポラリフォルダにある画像ファイルをアップロードする。
てな感じで考えています。(2)のためにクライアントプログラムを起動したいのですが、どうすればよいでしょうか。
460デフォルトの名無しさん:2005/10/15(土) 09:06:25
ASP.NETで親フレームの中に子フレームが2つ入っている画面を
作っています。1つの子フレームをポストバックすると、2つの子フレームを
画面遷移させたいのです。
どうすればいいでしょうか?
461デフォルトの名無しさん:2005/10/15(土) 09:41:52
WindowsFormでコントロール(TextBoxなど)の画面上の絶対位置を取得したいのですが
どなたか教えてください。
462デフォルトの名無しさん:2005/10/15(土) 09:51:15
>>461
PointToScreen
463デフォルトの名無しさん:2005/10/15(土) 12:11:00
>>459
あのな、とりあえずWebだけだとどういじくってもミリ。あればセキュリティホール
クライアントアプリが起動できたとしてそれがCドライブフォーマットするとかだったらどうするのよ。
基本的にローカルには触れないと思え

だからそれを使うマシンで設定する必要がある
ブラウザで簡単に実現するんならActiveX使ったりとか
個人的にはその作業全部一つのクライアントアプリにしてしまって配置は適当に考える
ドメイン使うでも何でも
464デフォルトの名無しさん:2005/10/15(土) 14:36:31
C#を始めようと思い、いまマイクロソフトvisualC#.netスタンダード(バージョン2002)というのをインストールしています。

が、最初に↓のようなことを聞かれます。
「インストールするコンピュータをwebプロジェクトのホストにするかどうか」(winコンポーネントのアップデートをするかどうか)

「webプロジェクトのホスト」というのがよく分からず、これをどう答えていいのか分かりません。

「ホストにする」にした方がいいのでしょうか?
465デフォルトの名無しさん:2005/10/15(土) 14:54:02
asp.net 開発する気ある? なければ無視してかまわない筈。
466464:2005/10/15(土) 14:57:47
>>465
早速レスありがとうございます。

・・・で、追加で申し訳ないのですが、asp.net とはなんでしょうか?
ぐぐってみても、よく分からないページが一件表示されるだけで、わかりませんでした(T T)

作りたいのは、シューティングゲームと、簡易タイマー(キッチンタイマーみたいなの)です。
467デフォルトの名無しさん:2005/10/15(土) 14:58:22
ならいらない
468デフォルトの名無しさん:2005/10/15(土) 15:06:46
>>467
ありとん!!
469デフォルトの名無しさん:2005/10/15(土) 15:32:16
C#でほちゃかゆかりんを作成したいと考えています。
できれば、作成したものと結婚を夢見ています。
どうすれば作れますか?
470デフォルトの名無しさん:2005/10/15(土) 15:52:39
Your search - ほちゃかゆかりん - did not match any documents.

Suggestions:
- Make sure all words are spelled correctly.
- Try different keywords.
- Try more general keywords.
471デフォルトの名無しさん:2005/10/15(土) 18:01:06
C#からzlib使いたいんだけど、何か楽な方法ないですか?
または、実際に使っててソースが公開されてるソフトとかあれば教えてください。

472デフォルトの名無しさん:2005/10/15(土) 18:02:36
SharpZLib
473デフォルトの名無しさん:2005/10/15(土) 18:08:19
>>472
確かそれってライセンスがGPLなんじゃないの?
474デフォルトの名無しさん:2005/10/15(土) 18:09:23
GPL だけど、例外事項が記載されてたはずだから問題ない。
っていうか SharpZipLib だな。
475デフォルトの名無しさん:2005/10/15(土) 18:21:12
>>472-474
ありがとうございます。
今は、何故かUnzip32.dllを使ってたのでこれですっきりC#で書けそうです。

#まだ、どんなことができるのか手探り状態なのですごく助かりました。
476デフォルトの名無しさん:2005/10/15(土) 19:12:32
C#には標準的なRSS APIって何かないの?
477デフォルトの名無しさん:2005/10/15(土) 19:22:28
C#は言語なのでAPIなんてものはない。
.NETには、少なくとも.NET Frameworkのクラスライブラリには存在しないな。
何をもって標準的というのかは知らないが、Googleにでも聞いてみたらどうだ。
478デフォルトの名無しさん:2005/10/15(土) 19:41:51
セマンティックウェブ関連のライブラリは完全にJavaに負けるな
479デフォルトの名無しさん:2005/10/15(土) 19:43:44
まあそりゃ年季が違うからな
480デフォルトの名無しさん:2005/10/15(土) 21:20:16
どのライブラリも負けてるような
481デフォルトの名無しさん:2005/10/15(土) 21:23:48
482デフォルトの名無しさん:2005/10/15(土) 21:30:27
日本はRSSは1.0と2.0が同じぐらい使われてて不便だよな。
483デフォルトの名無しさん:2005/10/15(土) 21:34:56
Javaって標準ライブラリでRSSサポートされてんの?

それより次期RSSサポートがCOMなのが最悪。
484デフォルトの名無しさん:2005/10/15(土) 22:52:19
今、入門書を読みながら一から勉強しているのですが、いきなりつまづきました。

label4.Text=myage.text;

というのを実行すると、

C:\Documents and Settings\ptch\My Documents\Visual Studio Projects\intro\Form1.cs(137): 'System.Windows.Forms.Control.text' はアクセスできない保護レベルになっています。

とエラーが出ます。

何が駄目なのかさっぱり分かりません(´・ω・`)
どうしたらいいのでしょうか?
485デフォルトの名無しさん:2005/10/15(土) 22:54:04
大文字と小文字は区別される、というところから始めるのか
VisualStudio使ってないの?
486デフォルトの名無しさん:2005/10/15(土) 22:56:58
ってパスが露骨にVSを主張してるなw
インテリセンスがでるだろ? myageの後のピリオド打ったときに
487484:2005/10/15(土) 23:05:06
レスありがとうございます。
でも、うああ、えと、どういうことでしょう。

visual stadioというのはわかりませんが、486さんのいうように多分そうだと思います。

インテリセンスとは?
ピリオド打った後に確かになんかリストみたいなのが自動で表示されました。
そこからどうしたらよかったのでしょうか?
488デフォルトの名無しさん:2005/10/15(土) 23:05:59

大文字なんですか!

やってみます!
489デフォルトの名無しさん:2005/10/15(土) 23:07:18
成功しました・・・・こんなんで俺って・・・・・先が思いやられる・・・・_| ̄|○


とりあえず、ありでした・・・・
490デフォルトの名無しさん:2005/10/15(土) 23:10:49
>>487
なんか妙なことを言ってる気がする。
491デフォルトの名無しさん:2005/10/16(日) 00:28:32
自分が何を使っているのか把握していないという不思議
492デフォルトの名無しさん:2005/10/16(日) 00:32:43
ま、最初はたいていそんなもんだ。
493デフォルトの名無しさん:2005/10/16(日) 00:44:18
昔を思い出すな
494デフォルトの名無しさん:2005/10/16(日) 01:44:41
/// <summary> ***** </summary>

のsummaryってどういう使い方をするんですか?

495デフォルトの名無しさん:2005/10/16(日) 01:52:12
***** がサマリーであることをマークアップする
496デフォルトの名無しさん:2005/10/16(日) 06:58:47
>>450
ttp://lamoo.s53.xrea.com/develop/gdiplus/gdiplus_blt.html
GDI+が遅いから激しい描画は無理。
DirectXはMDXの配布に難がある。
497デフォルトの名無しさん:2005/10/16(日) 18:07:50
フォームの何もないところをクリックしたときに
numericUpDownからフォーカスを外したいんですが
やり方が見つかりません。誰か教えてください。
498デフォルトの名無しさん:2005/10/16(日) 19:28:00
HtmlControlとWebControlって何が違うのですか?
499デフォルトの名無しさん:2005/10/16(日) 19:31:10
.NET2.0の話なんですが

htmlDocument = webbrowser.Document.OpenNew(true);みたいにして
HtmlDocumentを取得して、htmlDocument.write(html);のようにhtmlを投げてブラウザに表示させたいんですけど
何故かブラウザの末尾にundefinedと出てしまいます。

投げてるhtmlは2chのdatを適当に整形した奴なんですけど(正式なhtmlじゃなくて、2chブラウザから右栗>ソースを表示みたいなもの)やっぱりそれが原因ですかね?
500デフォルトの名無しさん:2005/10/16(日) 19:38:21
まずそのHTMLに問題はないのか?
501デフォルトの名無しさん:2005/10/16(日) 19:41:16
俺もちょうどWebBrowser Controlいじってるところだよ。
とりあえずHTMLは表示できてるよ。
502デフォルトの名無しさん:2005/10/16(日) 19:48:08
>>497
formをクリック→何かにfocus()
503デフォルトの名無しさん:2005/10/16(日) 20:03:04
>>502
ありがとうございます。おかげさまで出来たんですが、縦長のフォームなので
新しくフォーカスを置いたところにスクロールしてしまいます。
何にfocus()すれば適切なのでしょうか。。
504デフォルトの名無しさん:2005/10/16(日) 20:09:09
いったいどんなフォーム作ってんだ
505デフォルトの名無しさん:2005/10/16(日) 21:34:32
undefinedは解決しました…

λ,,,なんかnull投げてた…
ちょっといじってたらformが真っ白…同期勉強してきます
506デフォルトの名無しさん:2005/10/16(日) 22:30:36
TimeSpan t = DateTime.Now;

ってやると、

Form1.cs(102): 型 'System.DateTime' を型 'System.TimeSpan' に暗黙的に変換できません。

とエラーがでます。
本の通りにやってるんですが、なぜでしょう。
今度はちゃんと大文字小文字を区別して書いてるのに(´・ω・`)
507デフォルトの名無しさん:2005/10/16(日) 22:33:10
どの本を使ってるんだ?
現在時刻を TimeSpan にすること自体が謎だし
508デフォルトの名無しさん:2005/10/16(日) 22:34:35
DateTime.NowはDateTime型だ、TimeSpan型の変数には入れられない。
本の通り?本当に本にそんなこと書いてあるの?
なんていう本の何ページですか?

もし本に、そう書いてあったら、その本は最悪だ。
仮に上級者向けなら、その程度のミスはすぐ解決できる人しか読まないはずだからいいんだが、
初心者向けの本だったら?C#、あるいはプログラミングが嫌いになっちゃう人を作る書籍ということになる。
509デフォルトの名無しさん:2005/10/16(日) 22:34:36
>>507
そうですか。。。
すいません、もう一度見てみます(´・ω・`)
510デフォルトの名無しさん:2005/10/16(日) 22:35:11
>>508
ごめん、こっちがミスってると思う。

もっかい読んでみます。
511デフォルトの名無しさん:2005/10/17(月) 11:44:01
AssemblyVersion について教えてください。

AssemblyVersion で指定するバージョン番号は、
アセンブリに厳密名を付けない場合、どのような番号になっても
何も影響はありませんか?例えば、

Menu.exe が subA.dll, subB.dll を参照している場合、
subA.dll をリビルドしてバージョン番号があがっても、
Menu.exe はリビルドする事なく、subA.dll を上書きコピーすれば
動作すると思いますが、AssemblyVersionは何の為に使用するの
でしょうか?

逆に、ここで Menu.exe がビルドされた時の subA.dll のバージョン番号
と完全一致させたい場合は、厳密名が必須になる、という事に
なりますか?

よろしくお願いします。
512デフォルトの名無しさん:2005/10/17(月) 11:59:24
A.EXEとB.EXEで同じC.DLLを参照するとき
サイド倍サイドでAフォルダとBフォルダにC.DLLをそれぞれ置くとして
これでバージョン違いが複数存在できますが、それぞれのソースは
どうやって管理すればいいんでしょう?
C.csproj以下もEXEごとに複数存在させるんでしょうか。
VBとActiveX DLLのときは、A.vbpとB.vbpから同じC.vbpを参照
してたんですが。。
513デフォルトの名無しさん:2005/10/17(月) 15:41:51
下記の XML から Title を取得したいのですが、

xmlDoc.SelectSingleNode("/ItemLookupResponse/Items/Item/Title").InnerText

では取得できませんでした。

SelectSingleNode で階層構造を辿っていくだけだと思っているのですが
何かお気付きの点がありましたら教えてください。

<?xml version="1.0" encoding="UTF-8" ?>
- <ItemLookupResponse xmlns="http://webservices...">
- <Items>
- <Item>
<ASIN>12345678</ASIN>
<DetailPageURL>http://www.....</DetailPageURL>
- <ItemAttributes>
<Author>2ch</Author>
<Author>2ch</Author>
<Creator Role="著">2ch</Creator>
<ProductGroup>Book</ProductGroup>
<Title>2ch</Title>
</ItemAttributes>
</Item>
</Items>
</ItemLookupResponse>
514デフォルトの名無しさん:2005/10/17(月) 16:35:52
>>513
名前空間指定したら?
515デフォルトの名無しさん:2005/10/17(月) 18:31:01
>>513
パスにItemAttributesが抜けとる
516513:2005/10/17(月) 19:20:59
>>514 名前空間とは?
>>515 うわ、コピーミスしました。
実際には、
xmlDoc.SelectSingleNode("/ItemLookupResponse/Items/Item/ItemAttributes/Title").InnerText
としているのですが、取れませんでした。
(Null がかえってくる)



517デフォルトの名無しさん:2005/10/17(月) 19:41:43
>>516
XMLの基本的なこと調べた?
ItemLookupResponse以下の名前空間は「http://webservices...
とかだよね(xmlns=XML Namespace)。省略されているから分からんけど

SelectSingleNodeに名前空間を指定するオーバーロードがあるでしょ
518デフォルトの名無しさん:2005/10/17(月) 19:56:08
>>512
それはもうバージョン違いじゃなくてforkってんじゃないか?
マイナーバージョン以上が異なるのなら別プロジェクトにした方が良いだろうね。

>>511
取りあえず参考
ttp://www.atmarkit.co.jp/fdotnet/technology/idnfw11_index/index.html
519デフォルトの名無しさん:2005/10/17(月) 22:06:24
>>513
とりあえずxmlDoc.ChildNodes[1].ChildNodes[0].ChildNodes[0].ChildNodes[2].ChildNodes[4].InnerTextでw
520デフォルトの名無しさん:2005/10/17(月) 22:11:01
HttpContext.Current.SessionとPage.Sessionはどう違うのでしょうか?
521デフォルトの名無しさん:2005/10/17(月) 22:58:24
私は実業高校に通う3年です。
課題研究の授業で、一人でC言語の勉強をしなくてはならないのですが、
入門者向けのC言語の本を買いたいのですが、みなさんのお勧めの本とかあったら教えてください。
お願いします。
 C言語は、プログラミングの授業でポインタのあたりまでやっている段階です。
522デフォルトの名無しさん:2005/10/17(月) 23:03:33
とりあえずスレタイを100回読み返してね
523デフォルトの名無しさん:2005/10/17(月) 23:03:46
君の自己紹介なぞ誰も聞いていないが、取りあえずここはC#のスレであってC言語のスレじゃない。
524デフォルトの名無しさん:2005/10/17(月) 23:04:13
C#は、アンマネージC++で作ったスタティックライブラリ(.lib)とリンクできますか?
できるとしたら、どうすればよいでしょうか?
525デフォルトの名無しさん:2005/10/17(月) 23:05:55
できない
526デフォルトの名無しさん:2005/10/17(月) 23:06:45
>>525
やはりそうですか。ありがとうございます。
527デフォルトの名無しさん:2005/10/17(月) 23:46:40
521 です
 すみませんでしたm(_ _)m
528デフォルトの名無しさん:2005/10/18(火) 11:57:22
ASP.NETで質問です。
asp:TextBoxのタグでWidth属性を変えても実行結果に変化がないのですがどうしてでしょうか。
またC#のコード内のLoad_Page()でWidth属性に値を代入してもだめです。
どなたか原因がお分かりになりますでしょうか。
529デフォルトの名無しさん:2005/10/18(火) 12:01:24
Lockedプロパティ
530528:2005/10/18(火) 13:25:27
>>529
TextBoxにはLockedというプロパティはないように見受けられますがいかがでしょうか。

その後調べてみたところ、問題が起きていたのはFirefoxだったのですが、
インターネットエクスプローラーではサイズの変更がきちんと反映されて表示されるようです。
531デフォルトの名無しさん:2005/10/18(火) 15:30:35
ASP.NET & C#の質問です。
DataGridでテーブルを表示させていますが、各行を選択した時にハイライトする方法はあるのでしょうか。
532デフォルトの名無しさん:2005/10/18(火) 15:46:24
C#で2次元配列を使うときに
例えば
int[,] test = new int[2,3];
としてコレの1行目を一次元配列を処理する
関数に渡すときにはどうすればよいのでしょうか?

Cなら
void hoge(int a[])
{
}
とういう関数には
hoge(test[0]);
としますがC#ではどうなるのでしょうか?
533デフォルトの名無しさん:2005/10/18(火) 15:52:45
int[,] じゃなくて int[][] でも使えばいいじゃん
534デフォルトの名無しさん:2005/10/18(火) 15:54:06
つ,使えるんですか
有難うございます
535デフォルトの名無しさん:2005/10/18(火) 20:01:56
インターフェースベースでのプログラミングについて質問させてくだ
さい。
 今までC++をメインに使っていたのですが、その際に多重継承を多用
していました。
 たとえばあるクラスはSerializableでありCommandHandlerでありView
であるというような際に多重継承を使って実装しています。これらのク
ラスは機能がまったく異なり、それらの機能を使いたいクラスが必要な
ものを継承するようにしていました。
 もちろん機能を使うだけであれば以上などで実装するのですが、フレー
ムワークのようなコードを多く書いているため内部で多態として動作す
るように継承を用いています。
ここでC#でも同じようなコードを書こうとしていたのですが、実装継承
ができないためコード記述が面倒になっています。
インターフェースを記述してそれを継承するものがみな機能の実装クラ
スを呼び出すコードを書かなければいけません。
 皆さんはどのようにコードを書かれているのでしょうか?参考にさせ
てもらえれば幸いです。
536デフォルトの名無しさん:2005/10/18(火) 20:15:46
包含させて委譲すればいいじゃん。
537デフォルトの名無しさん:2005/10/18(火) 21:54:20
ASP.NET(C#)で、セッションに値を格納しているのに、
ページによってはとれないページがあります。
セッションIDはとれるのですが、セッションの中身(countが0)が空になるんです。
セッションをオフにはしてません。
どういった原因が考えられますか?
538535:2005/10/18(火) 22:04:23
>536
それは機能を使いたいだけの場合ですよね?isAにしたいときはどうするんですか?
539デフォルトの名無しさん:2005/10/19(水) 00:35:32
>>538
それは本当にis-aなのか?よく考えてみろ。
540535:2005/10/19(水) 01:09:56
十分IsAです。
541デフォルトの名無しさん:2005/10/19(水) 01:17:52
C++ では is-a が適切だったとしても、C# で適切かどうかは分からない。
とりあえず "あるクラス" の宣言を C++ ので良いから言ってくれ。名前とか継承してるクラスとか知りたい。
542535:2005/10/19(水) 02:46:10
>>541こんな感じです。
class RealTimeDataView:class View,class DataHandler,class Serializable
{
}
こんな感じです。
Viewクラスは描画やマウスイベントの受け取りなどいわゆるビュー機能を実装しています。
DataHandlerはリアルタイムデータを受け取り処理するクラスです。データをどう処理するかにおいてこのクラスを継承して特殊クラスを作っています。
Serializableはオブジェクトをシリアライズするための基本クラスです。これを継承したクラスがシリアライズ可能となります。
543デフォルトの名無しさん:2005/10/19(水) 06:03:56
>>542
ATLがそんなつくりですね。多重継承を前提にした設計なので、それをサポートしない言語では
包含して委譲するしかないと思います。
544デフォルトの名無しさん:2005/10/19(水) 08:48:25
SerializableとDataHandlerは機能的にみてインターフェイスで実装すべきものって印象だな
545535:2005/10/19(水) 10:56:54
レス感謝です。
>>543
包含して以上の場合だと他のクラスとの関連はどうなるんでしょうか?
これらのクラスが動くには外部にあるマネージャークラスなどとの強調動作が必須になっています。
ViewクラスはWindow関係のフレームワークの中で動いてますし、DataHandlerもリアルタイムデータを処理する仕組みの中での一ハンドラーを実装するクラスの基本クラスでありManagerにとってはほかのクラスとの違いはありません。
Serializableも同様です。いずれも外部にとっては”Is-A"で処理しているものです。
外部から操作するにはデリゲートをハンドラとして登録して動かすことなども考えましたがいまいちスマートでありません。
>>544
どの変からそのように感じられたのでしょうか?
いまいちインターフェースの感覚つかんでないので、というよりインターフェースの存在意義がわからないので・・・
じぶんにとってインターフェースはダイヤモンド継承を避けたいために導入された稚拙な設計ミスのように思えています。
ダイヤモンド継承を禁止されたクラスの多重継が可能あればすべて事足りると思ってるのですが何かおかしいでしょうか?
546デフォルトの名無しさん:2005/10/19(水) 11:04:11
ダイヤモンド継承って言うのね
勉強になりますた

ところでなぜ多重継承が忌み嫌われる理由って分かります?
547デフォルトの名無しさん:2005/10/19(水) 12:08:19
> じぶんにとってインターフェースはダイヤモンド継承を避けたいために導入された稚拙な設計ミスのように思えています。

とりあえずOOPについて勉強されてはどうですか?
548デフォルトの名無しさん:2005/10/19(水) 12:23:07
>>545
逆、インターフェースで十分なのに、インターフェース使うべき所を多重継承使って解決してたのの方が稚拙。

>>546
まあ、ダイアモンド継承がその際たるものだけど、
それがなくても多重継承は実装が面倒だし、コードの実行効率も落ちる。
549デフォルトの名無しさん:2005/10/19(水) 12:29:39
C++ではis-Aとhas-Aが選べないという事に気が付いていないのでは?
550デフォルトの名無しさん:2005/10/19(水) 12:38:49
>>535 はきっとC++をこよなく愛してやまない人なんですよ。そんな人がC#やJavaを使うのは間違いなわけで
そんな人にC++/CLIをすすめようかと思ったら、ref class で宣言すると多重継承はできなくなるようです。

とまあ多重継承は長所短所あって、C++は多重継承をできることを選んで、JavaやC#などは選ばなかった
言語の設計思想の違い、それだけのことですな。
551デフォルトの名無しさん:2005/10/19(水) 13:10:43
>>546
ダイヤモンド継承のからみのメソッドシグネチャのあいまいさだと思っていましたが、ほかにもあるんでしょうか?
552535:2005/10/19(水) 13:17:45
>>547
何が問題なんでしょう?
>>548
インターフェースだとプロトコルと実装が分離できるけれど、逆に分離しなければいけないところが使うときにめんどくさいのですが。
それの解消法何か言い方法内科と探してる最中です。
>>549
詳しく
>>550
おっしゃるとおりです。C++つかいですた。
その言語設計思想の違いの上でどうコーディングしたらいいか質問してるんですが。

553デフォルトの名無しさん:2005/10/19(水) 13:23:46
>>551
例えば、
class A { int a; };
class B { int b; };
class C : A, B { int c };
とした場合、
C c;
A* a = &c; // これは a に c のアドレスを渡すだけだけど、
B* b = &c; // これは b に c のアドレス + int の幅になる

とかが嫌。
554デフォルトの名無しさん:2005/10/19(水) 15:05:46
皆さん多重のループを一気に抜けるときにはどのような方法を使ってますか?
私はフラグで各ループをbreakしてるんですが何か言い方法ってありますでしょうか?
555デフォルトの名無しさん:2005/10/19(水) 15:08:24
>>552
>その言語設計思想の違いの上でどうコーディングしたらいいか質問してるんですが

そういう意味だったら、これが言語の違いと認識して、C++ の考えを持ち込むのは諦めてほしい。
残念だけど。

>>554
goto
556デフォルトの名無しさん:2005/10/19(水) 15:09:48
>>554
goto
557535:2005/10/19(水) 15:25:39
>>555
こういうばあいC#ではどのように実装するんでしょう?
558デフォルトの名無しさん:2005/10/19(水) 15:35:32
>>557
ん〜。だから諦めて >>536 なんだよなぁ。

あるいは、多重継承の親となるクラスを改変できるのなら、実装と定義を分けるのも手かも。
定義を interface A, interface B、実装を A や B を継承した class CA, class CB に分割しておいて、
多重継承は A と B を継承したクラスから、包含した CA, CB に委譲。
559535:2005/10/19(水) 15:46:30
>>558
包含と委譲の場合はたくらすとの強調動作(Managerクラスなどとのやり取り)はどうされてるんですか?

実装と定義のぶんりになるんですかね。やはり。コード核のがめんどくさい&バグ生みそうなんですが・・・
560デフォルトの名無しさん:2005/10/19(水) 15:51:07
Managerクラスって何よ
561535:2005/10/19(水) 15:54:18
>>560
失礼しました。マネージャー的な役割するクラスなどのことです。
562デフォルトの名無しさん:2005/10/19(水) 15:58:16
それは〜。Manager と本体を分離するべきかどうかを先ず考えないと。
563デフォルトの名無しさん:2005/10/19(水) 16:08:38
ん? マネージャ的なクラスで継承が必要な場面って、親と子を同じように扱いたい場合だけだよな?
子だけを扱うようにマネージャクラスを改造すれば良いんじゃないのか?
564535:2005/10/19(水) 16:17:36
>>562
分離するべきものだったとした場合はどうなるんでしょう?
>>563
親と子をはなにをさすんでしょう?マネージャー的なクラスがコントロールする対象となるクラスのことでしょうか?
自分はそれをインターフェースなどを定義して複数クラスで継承するなどしてIsAとしてあつかいたいんですが。
個だけを扱うとはどのような意味でしょう?
565デフォルトの名無しさん:2005/10/19(水) 16:24:00
>>564
>マネージャー的なクラスがコントロールする対象となるクラスのことでしょうか?
はい。

>インターフェースなどを定義して複数クラスで継承するなどしてIsA
すれば良いじゃん。できる筈。
566デフォルトの名無しさん:2005/10/19(水) 16:26:09
っていうか、逆に考えると分かりやすいかも。
class A を扱う class AManager を作るんじゃなくて、class ManagerA と、それによって扱われる interface IManaged を作るの。
567デフォルトの名無しさん:2005/10/19(水) 16:28:00
>>565
>ここでC#でも同じようなコードを書こうとしていたのですが、実装継承
>ができないためコード記述が面倒になっています。
>インターフェースを記述してそれを継承するものがみな機能の実装クラ
>スを呼び出すコードを書かなければいけません。
>皆さんはどのようにコードを書かれているのでしょうか?参考にさせ
>てもらえれば幸いです。
最初の質問なんですが・・・
568デフォルトの名無しさん:2005/10/19(水) 16:30:40
>>567
>538 :535 :2005/10/18(火) 22:04:23
>>536
>それは機能を使いたいだけの場合ですよね?isAにしたいときはどうするんですか?

is-a にしたいんだよね? 俺継承以外で is-a にする方法を、C++ でも C# でも知らない。
C++ だと小細工すれば出来るかもしれないけど。
569デフォルトの名無しさん:2005/10/19(水) 16:55:10
んじゃちょっと話を戻してみる。


>>545
>というよりインターフェースの存在意義がわからないので・・・

C# では “これが一番重要” って決めた継承を一本だけ残して、後は interface, attribute などの準継承でまかなう。
それによって実質的なコード量が増えたとしても気にしない。

public void Foo() { 委譲先オブジェクト.Foo(); }

みたいなメソッドが山ほどあっても。
570デフォルトの名無しさん:2005/10/19(水) 17:14:41
それはない。
そもそも設計がおかしい。
571569:2005/10/19(水) 17:20:21
いや、うん。確かに山ほどあったら考え直すべきだろうけどな。
でも数個程度なら (俺は) こうする。
572デフォルトの名無しさん:2005/10/19(水) 18:32:01
>>559
>コード核のがめんどくさい&バグ生みそうなんですが・・・
駄々をこねてるとしか思えないな。ここを拒否したら話が進まんだろう。

>>542 をもとにC#風に書くとこんな感じか?
class DataHandler : IDataHandler
class Serializable : ISerializable
class RealTimeDataView : View, IDataHandler, ISerializable
DataHandlerとSerializable を包含
Managerクラスというのも具体的に例を挙げてくれたらもう少し答えようもあるかもしれない。
573デフォルトの名無しさん:2005/10/19(水) 18:59:17
つうか、そんなにC++が良いならC++使えよ
どうしてもC#で書かなきゃいけないならC#の流儀に従え
574デフォルトの名無しさん:2005/10/19(水) 19:05:45
>>572
C# 風に書くと、
class RealTimeDataView : View, ISerializable
{

}
575デフォルトの名無しさん:2005/10/19(水) 19:06:15
ただ、C# をやってると、C のマクロが非常に恋しくなるときがある。
576デフォルトの名無しさん:2005/10/19(水) 19:06:52
変なタイミングで送信しちまった・・・

class RealTimeDataView : View, ISerializable
{
  IDataHandler DataHandler{ get{ ... } };
}
577デフォルトの名無しさん:2005/10/19(水) 19:07:23
>>574
[Serializable]
class RealTimeDataView: View {} // では不味いのか?
578デフォルトの名無しさん:2005/10/19(水) 19:58:31
ここまで読み飛ばした
579デフォルトの名無しさん:2005/10/19(水) 19:59:48
>>572
同じコードをあちこちにこぴぺしなければいけないのは美しくないし十分バグの元だと思うが?
>>573
おまいもC#の流儀教えてくれって言ってるんだから素直に教えてやれや。あ、知らんのか?すまんそ。
580デフォルトの名無しさん:2005/10/19(水) 20:08:05
>>579
>同じコードをあちこちにこぴぺしなければいけないのは
どこから出てきた話だ?
581デフォルトの名無しさん:2005/10/19(水) 20:42:13
>>579
>同じコードをあちこちにこぴぺしなければいけないのは美しくないし十分バグの元だと思うが?

コレがこいつの能力をよく現しているようだ
582579:2005/10/19(水) 21:23:16
委譲先オブジェクト呼ぶコード派生クラスすべてに書かなきゃならんだろが。
損ぐらい気づけちんかす。
583デフォルトの名無しさん:2005/10/19(水) 21:30:03
自己紹介乙
584デフォルトの名無しさん:2005/10/19(水) 21:32:01
>>582
多言語の話で悪いんだが、java.util.Vector と java.util.Stack の継承関係は最悪だと思ってる。
差分プログラミングを否定するわけじゃないんだが、時と場合によると思うよ。
585デフォルトの名無しさん:2005/10/19(水) 22:24:30
小粒なクラスをたくさん並べて協調的に動かすと言う発想ができんのかおまえらには
586デフォルトの名無しさん:2005/10/19(水) 22:25:24
はっきり言ってC++erはC#やらないでほしい。
うざいだけ。
587デフォルトの名無しさん:2005/10/19(水) 22:30:27
煽るだけでまともな説明のひとつすらできないやからがいる擦れはここですか?
588デフォルトの名無しさん:2005/10/19(水) 22:32:13
なんだと
589デフォルトの名無しさん:2005/10/19(水) 22:33:54
説明しているのに全く聞き入れない馬鹿がいるスレですよ
590デフォルトの名無しさん:2005/10/19(水) 23:25:25
質問の意味把握せず見当違いのこといって説明ってプゲラッチョ
591デフォルトの名無しさん:2005/10/20(木) 01:39:34
まるで子供の口喧嘩
592デフォルトの名無しさん:2005/10/20(木) 07:21:03
相変わらずここレベル低いな
593デフォルトの名無しさん:2005/10/20(木) 07:32:54
玄人は@ITやGDNJにでも行ってろプゲラッチョ
594デフォルトの名無しさん:2005/10/20(木) 10:11:45
おまいら宗教論はいいからおいらを助けれ。

ASP.NETで、DataGridの各行にボタンを配置することはできますが、これを画像ボタンにすることは可能ですか。
普通のボタンかリンクボタンしか選択できないのでしょうか?
595デフォルトの名無しさん:2005/10/20(木) 12:04:58
>>594
テンプレート列を使えばできる。
596デフォルトの名無しさん:2005/10/20(木) 13:42:49
>>582
それは非常に美しいじゃないか
実体が委譲先にあるというのが一目で判る
597デフォルトの名無しさん:2005/10/20(木) 13:58:15
>>596
派生クラスが20個あったら20個に同じように委譲コードを書かないといかんのでしょ?
うんこ。
598デフォルトの名無しさん:2005/10/20(木) 14:01:05
599デフォルトの名無しさん:2005/10/20(木) 14:56:17
>>597
画面制御のパターンを20も作るのか?そっちのがウンコ

画面は業務ごとにパターン化してその幾つかの中から選んだベースの画面を継承して業務画面を作るんじゃないのか?
画面ごとに操作方法の違うアプリってなんかUIが糞なんじゃね?
600デフォルトの名無しさん:2005/10/20(木) 19:28:24
ケンカしながら>>594にちゃんと回答しているおまいらが好き
601デフォルトの名無しさん:2005/10/20(木) 20:02:10
System.Web.UI.WebControls.DataGridにBoundColumnを追加するときに
DataSourceであるDataSetの子テーブルのフィールドを割り当てたいんですが
BoundColumnのDataFieldはどう指定すればいいのでしょうか?
602デフォルトの名無しさん:2005/10/20(木) 22:14:39
>>599
あほか。何で画面制御の話に限定してんだよ。
ここで話してるのは派生オブジェクト一般のことですが?
なんで少数のでしか派生させないことを前提にしてるんですか?人の話もきいてないし。
お舞システム向いてないよ。
603デフォルトの名無しさん:2005/10/20(木) 22:15:20
オッサン必死だな
604デフォルトの名無しさん:2005/10/20(木) 22:30:24
605デフォルトの名無しさん:2005/10/20(木) 22:31:37
こういう化石頭の奴はさっさと土木工事に回せよな
606デフォルトの名無しさん:2005/10/20(木) 22:38:39
なんだか難しい話してるなあ。
多重継承の代わりにどんなテクニック使ってるんですか?って質問にしか見えないアホな俺がいる
607デフォルトの名無しさん:2005/10/20(木) 22:42:20
そもそもあおり口調でC#を馬鹿にした>>535が悪い
608デフォルトの名無しさん:2005/10/20(木) 22:46:12
ただ他の言語を使いたくないってごねてるだけにしか見えん
609デフォルトの名無しさん:2005/10/20(木) 23:08:27
VS.NETでEclipseみたいにリファクタリングってできるのですか?
610デフォルトの名無しさん:2005/10/20(木) 23:12:18
2005の新機能にリファクタリングがある
611デフォルトの名無しさん:2005/10/20(木) 23:58:19
そもそも委譲する話してるのに派生とか言ってるのがおかしい。
612デフォルトの名無しさん:2005/10/21(金) 02:33:08
委譲と派生の使い分けがわからんぽ
613デフォルトの名無しさん:2005/10/21(金) 02:39:32
>>611
別に委譲前提じゃないでしょ。まぁ委譲よく使ってるが。
614デフォルトの名無しさん:2005/10/21(金) 09:14:46
20個の派生クラスの同じような委譲コード書くなら普通スーパークラスに書くもんじゃないの?
615デフォルトの名無しさん:2005/10/21(金) 11:02:45
だからそうできるクラスがC#だと一個に限定されるからどうしよって話だろ。
616デフォルトの名無しさん:2005/10/21(金) 11:17:14
あっそ。
617デフォルトの名無しさん:2005/10/21(金) 11:36:00
>>615
ごめん、俺馬鹿だわ、言ってる意味全然わかんない。

>>614で言いたかったのは、
例えば、>>535の例だとViewを継承したクラスに(ViewAとする)にSerializable(ISerializable)と
CommandHandler(ICommandHandler)を委譲を使って実装してViewAから20個のクラスを継承すればいいじゃない?
ってことだったんだけど、変かな?
618デフォルトの名無しさん:2005/10/21(金) 11:42:26
>>617
C#やJavaは普通そうするものだと思うが
619デフォルトの名無しさん:2005/10/21(金) 11:56:20
>>618
ですよね。だとすると>>535は何が不満なのか、と>>615の言ってることがよくわからんのです。
620デフォルトの名無しさん:2005/10/21(金) 15:33:51
ある文字列(A)を基にして意味不明な文字列(B)を作成するにはどうしたら良いですか?
たとえば、「今日は2chに2時間滞在した。」という15文字の文章を基にして、
15文字または30文字の無意味な半角英字(大小)数字記号を生成するにはどうすれば良いですか?
621デフォルトの名無しさん:2005/10/21(金) 15:35:25
少し修正

ある文字列(A)を基にして意味不明な文字列(B)を作成するにはどうしたら良いですか?
たとえば、「今日は2chに2時間滞在した。」という15文字の文章(A)を基にして、
15文字または30文字の無意味な半角英字(大小)数字記号(B)を生成するにはどうすれば良いですか?
Bをパスワードとして利用したいので。
622デフォルトの名無しさん:2005/10/21(金) 15:39:36
MD5
623デフォルトの名無しさん:2005/10/21(金) 17:22:58
>>619
>>535の言いたいことはViewだけが特別なクラスでなくSerializableやCommandHandlerも同等のクラスとして扱いたいということだと思われ。
SerializableやCommandHandlerも>>614でいうような委譲コードを書くべき派生クラスが20個もあるかもしれない。
その際になんでViewだけ特別にクラスとして、SerializableやCommandHandlerは制限のあるインターフェースにしなきゃいけないのか。
んでC#ではそうするしかないなら、なんかいいコードの書き方教えれお舞ら。ということでは?
624デフォルトの名無しさん:2005/10/21(金) 17:25:37
void getHoge( HogeHANDLE hDev, WORD *pHogeID )
なんてAPIをC#から叩きたい時ってどうしたらいいですか?
HANDLE IntPtr
WORD ushortってのはわかったのですがポインタの扱いがわかりません。
625デフォルトの名無しさん:2005/10/21(金) 17:35:41
IntPtrまたはref short
//unsignedは大抵無視する私。
626デフォルトの名無しさん:2005/10/21(金) 17:41:39
>>623
プログラム的な概念が表に出すぎてモデル化が甘いんじゃないの?
Viewでもあり、Serializableでもあり、CommandHandlerであるそれは何なの
この場合(画面とかそういうのだと思うが)CommandViewFrame(名前は適当)とか言う継承元を作れば良い話
Serializableだけで実体化することって現実的に考えるとおかしいよね?
それって何かシリアライズしたい何かがあるからシリアライズの機能をつけるんだよね
あと、CommandHandlerって機能だけを実体化するのもおかしいよね?
627デフォルトの名無しさん:2005/10/21(金) 17:58:10
ウィンドウにフォーカスが無い状態でKeyDownを検知するにはどうしたらいいでしょうか?
628デフォルトの名無しさん:2005/10/21(金) 18:00:32
つまり他のアプリケーションがアクティブな時ってこと?
ならグローバルフックするとかDirectInputつかうとか

単純にフォームでキー入力を処理したいってんならKeyPreview
629デフォルトの名無しさん:2005/10/21(金) 18:07:27
>>628
その通りです、説明不足で申し訳ありません。
KeyPreviewを使ってなんとかしようとしていたのですができず困っていました。

上2つを試してみます。
630619:2005/10/21(金) 18:48:28
>>623
なるほど、よくわからないけどわかった。さんくす。

>>626
> プログラム的な概念が表に出すぎてモデル化が甘いんじゃないの?
たぶんそんなところだと俺も思う。
631デフォルトの名無しさん:2005/10/21(金) 19:06:21
Form上に大量のLinklabelを並べて、Formの幅に合わせて自動的に改行されるようにしたいのですが、
Formのリサイズ時に各Linklabelを位置を先頭から再計算して再描画したら動作がとても遅くて困ってます。

リサイズ時にスムーズに大量のLinklabelを表示するにはどうしたらいいですか?
632デフォルトの名無しさん:2005/10/21(金) 19:07:37
SuspendLayout?
633デフォルトの名無しさん:2005/10/21(金) 19:33:36
ツリビューにおいて、その子ノードにフォーカスを当てるにはどうしたらよいでしょうか?

this.treeView1.Focus();
で、一番親にフォーカスが当るのですが、その子供たちにフォーカスを当てる事が出来ません。
もしよろしければ教えていただけないでしょうか。

634デフォルトの名無しさん:2005/10/21(金) 19:35:29
SelectedNode
635デフォルトの名無しさん:2005/10/21(金) 19:45:45
>>632

SuspendLayoutを使ってみたけど遅いまま
SuspendLayoutの使い方間違ってるのかな?

private void Form1_Resize(object sender, System.EventArgs e)
{

panel1.SuspendLayout();
for(int i = 0 ; i < panel1.Controls.Count;i++)
{
if(re_left > panel1の横幅)
{
re_left = 10;
re_top += panel1.Controls[i].Height;
}
panel1.Controls[i].Top = re_top; //縦座標
panel1.Controls[i].Left = re_left; //横座標
re_left += panel1.Controls[i].Width; //次のラベルの横座標
}
panel1.ResumeLayout();
}
636デフォルトの名無しさん:2005/10/21(金) 21:09:26
IndentedTextWriterがSystem.CodeDom.Compiler名前空間にあるのが納得いきません。

> 複数のインデント レベルを使用して書式指定されたテキストは、生成されたコードで使用すると便利です。
> そのため、このクラスは CodeDOM コード ジェネレータの実装で使用されます。

そんな下らん理由で変な名前空間に入れるなヴォケ
637デフォルトの名無しさん:2005/10/21(金) 21:20:06
CodeDOM が最適じゃねえの?
IO におけってのか
638デフォルトの名無しさん:2005/10/21(金) 21:29:52
そこでSystem.Text.CodeDomですよ。
Regexに並ぶVIP待遇。
639デフォルトの名無しさん:2005/10/21(金) 21:40:04
Collectionsにならって、System.IO.Specializedあたりにすりゃいいのに。
640デフォルトの名無しさん:2005/10/21(金) 21:43:39
Collections.Specialized (゚听)イラネ
汎用性がなさすぎる
641デフォルトの名無しさん:2005/10/21(金) 21:46:31
三段目まで名前空間が下るクラスはたいていはそんなもんだろ。
642デフォルトの名無しさん:2005/10/21(金) 21:52:54
5段目にある BinaryFormatter はよく使うお
643デフォルトの名無しさん:2005/10/21(金) 22:10:50
すいません質問です。

Console.Write((char)0xFF); を実行すると、私の環境では 'y' (0x79) が出力されます。
調べたところ、char へキャストした直後には、値は 0xFF でしたので、
Write が発音記号付きの 'y' (0xFF) を表示しようとして代替文字の 0x79 を出力したのではないか、と私は推測しました。

そこで2つほど質問なのですが、
 1: この推測は正しいのかどうか。
 2: 回避する方法として、Encoding.Ascii.GetChars(new byte[] { 0xFF }) を Write するならば 0xFF が出力できるが、
   一文字だけを出力するのには大げさすぎるので、もっと簡単な実現方法は無いかどうか。
をよろしくお願いいたします。
644643:2005/10/21(金) 22:20:49
あ〜だめだ。GetChars で出力されるのは 0xFF じゃなくて '?' (0x3F) だ。
……どうにかして、0xFF そのものを表示できないですか?
645デフォルトの名無しさん:2005/10/21(金) 22:21:47
面白そうなので俺も試してみよう。
646デフォルトの名無しさん:2005/10/21(金) 22:24:49
>>622
ありがとうございます。
ところで、MD5って何ですか?
647643:2005/10/21(金) 22:28:41
コンソール上で正しく表示できなくても、せめてリダイレクト先のファイルには正しく書き込まれていて欲しいんだが……。
Console.Out に指定できるのは TextWriter だから、BinaryWriter も使えないし。
648デフォルトの名無しさん:2005/10/21(金) 22:29:21
>>646
System.Security.Cryptography.MD5
649デフォルトの名無しさん:2005/10/21(金) 22:31:12
>>647
FileStreamに吐いたらどうだ。
そのファイルをFirefoxで開いてみたらウムラウトつきで表示されたし。
IEだと化けたけど。

この分野に詳しい人マダー?
650デフォルトの名無しさん:2005/10/21(金) 22:36:46
yウムラウトは UTF-16 では 0x00FF だけど
UTF-8 では 0xC3BF
651643:2005/10/21(金) 22:37:28
>>649
いや、なぜか知らんが標準出力じゃないといけないらしいんだ。
ちなみに作ってるのは BrainFuck のコンパイラな。
652デフォルトの名無しさん:2005/10/21(金) 22:45:18
標準出力のほうの問題くさいな。
653デフォルトの名無しさん:2005/10/21(金) 23:16:57
WIndowsNT系は、Unicodeベースなんだが、コマンドプロンプト(MS-DOS窓ではない)は、Unicodeベースではない。
コマンドプロンプトのタイトルバーを右クリックして、プロパティを開いてみるといい。
「オプション」タブの下に、「現在のコードページ」っていうのがあるはず。

もしかしたら、これはコマンドプロンプトだけではなく、標準入出力全般に言えることかもしれない。
654643:2005/10/21(金) 23:26:36
うひー。us.bat の存在を忘れてたよ。
根本的な解決にはなってないのが残念ですが、とりあえずこれで行くことにします。
ありがとうございました m(_ _)m
655デフォルトの名無しさん:2005/10/21(金) 23:29:27
で、.NET 2.0でそれを取得設定するOutputEncodingプロパティが追加されたと。
それぞれAPIのSetConsoleOutputCP/GetConsoleOutputCPを呼んでるだけ。
UTF8のコードページを割り当てたらyウムラウトが表示されるようになった。
656デフォルトの名無しさん:2005/10/21(金) 23:39:20
変数名に日本語使えるってはじめて知った。

private void 当たり判定()
とか出来るんだ。

半角/全角キー押すのがだるいけどつかってみようと思った。
以上 ちら裏
657デフォルトの名無しさん:2005/10/22(土) 00:18:46
>>656
IME 切り替え、思った以上にだるいよ。
enum のメンバに使うくらいならいいかも。
型名. と打った時点でインテリセンス効くし。
658デフォルトの名無しさん:2005/10/22(土) 06:00:13
だよね
659デフォルトの名無しさん:2005/10/22(土) 15:23:57
APIの SetStretchBlt( WHITEONBLACK ) と同等の.NET関数はありますか?
660デフォルトの名無しさん:2005/10/23(日) 16:44:24
みなさんUIってどうしてますか?
オフィスとかVSのツールバーみたいな感じのものを欲しいのですが
標準にはないし一から作るのもbmpまで用意することを考えるとしんどいので
なにかフリーで使えるいいやつないですかね?
661デフォルトの名無しさん:2005/10/23(日) 16:54:05
>>660
VBPowerPackのUtilityToolBarでも使えば?
662デフォルトの名無しさん:2005/10/23(日) 16:54:54
ToolStrip マジお勧め
663660:2005/10/23(日) 16:59:10
即レス多謝。
てか >>662すげぇっすね。
遅すぎるって感もありますがやっぱりVSに標準では言ってるべきものだと思うし。
ようするに2005を使えと。
それがいやなら>>661ってことですかね。
2005でもtheSpokeプライスで出てくれれば買えるのですが…
expressBeta落とそうかな。
664660:2005/10/23(日) 20:36:59
早速2005C#いれてみますた。
toolstrip標準項目の追加ってすごいですね。
undo/redoがないとか細かいことは気になるけど見栄えがこれまでと違うし
どこにでもドッキングするしひゃほいです。
665デフォルトの名無しさん:2005/10/23(日) 20:40:16
しかし、ほんと早く2005正式リリースしねぇかな。
666デフォルトの名無しさん:2005/10/23(日) 21:04:51
2005という名前もどうなのかと今更ながら思ったり。
11月中旬→12月中旬にかけて製品発表会で、たぶんその後発売でしょ?
667デフォルトの名無しさん:2005/10/23(日) 21:17:50
2000年に発売されたホームページビルダー2002よりかはいいんじゃね
668デフォルトの名無しさん:2005/10/23(日) 22:22:41
発売を1ヶ月延期して2006に名称変更することにしませんでした。
669デフォルトの名無しさん:2005/10/23(日) 22:25:18
今年が2004年なら2005にしてるだろうが、2006って半端だからな。
670デフォルトの名無しさん:2005/10/23(日) 23:03:31
2001はちょっと胡散臭い感じだよな
671デフォルトの名無しさん:2005/10/23(日) 23:29:23
C++のfriend宣言のような指定クラスのみにアクセスを許す指定子ってないんでしょうか?
672デフォルトの名無しさん:2005/10/23(日) 23:33:23
internal で代用
673デフォルトの名無しさん:2005/10/23(日) 23:42:57
>>672
ぜんぜん用途違うじゃない。
internalは外部クラスに特定クラスを見せないため。それもアセンブリを別にしないとまったく意味がない。
friendは特定クラスにのみアクセスを許す。
674デフォルトの名無しさん:2005/10/23(日) 23:44:13
>>673
だから、完全に同じ用途のものがないから代用しろと言われているのでは。
675デフォルトの名無しさん:2005/10/24(月) 09:22:20
>>674
いやinternalで代用ってお前ぜんぜん違うだろ。できるわけねーだろこのチンカスってことじゃないの?
676デフォルトの名無しさん:2005/10/24(月) 09:27:47
関連性の高いクラスなら同じモジュールに入れとくもんだしょ
677デフォルトの名無しさん:2005/10/24(月) 16:22:06
internalとか使うんじゃねーよ。
クラスは全部俺に使わせろ
678デフォルトの名無しさん:2005/10/24(月) 18:43:29
>677
スレ違い。

最高にド低脳な発言してください in ム板(VIII)
ttp://pc8.2ch.net/test/read.cgi/tech/1128354256/
679デフォルトの名無しさん:2005/10/24(月) 20:54:46
ILMerge がまともに使えるようになれば
そこらじゅうに internal を使うかも
680デフォルトの名無しさん:2005/10/24(月) 23:29:52
>>673
内部クラスにしたら?
681デフォルトの名無しさん:2005/10/25(火) 06:47:19
現在のメソッドの名前を取りたいのですが何かスマートな方法はありませんか?
Environment.StackTraceだと文字列で返ってきちゃうからMethodInfoの配列返してくれるようなの
682デフォルトの名無しさん:2005/10/25(火) 07:32:20
ASP.NETでC#を使ってます。
下のようにあるクラスを2つのページの親クラスにしたいんですが、

親クラス(parent.aspx.cs)
<---子クラス1(child1.aspx.cs) ... child1.aspxで使用
<---子クラス2(child2.aspx.cs) ... child2.aspxで使用

child1.aspx.cs, child2.aspx.csで親クラスのコードを取り込むにはどうすればよいのでしょうか。

using MyClass.parent;

とか宣言してもだめでした。
683682:2005/10/25(火) 07:33:58
すみません、もう一つ質問させてください。
DataGridにボタンを表示させているんですが、これに列ごとに固有のツールチップを出したいです。
方法をご存知の方いらっしゃいますでしょうか。
684デフォルトの名無しさん:2005/10/25(火) 07:35:26
>>681
現在のメソッドの名前を知りたいのにMethodInfoの*配列*が必要ってのが意味不明。

「現在実行中のメソッド」ならこれ
Console.WriteLine(new System.Diagnostics.StackFrame().GetMethod().Name);

「スタックトレース」ならこれ
StackTrace stackTrace = new StackTrace();
for (int i = 0; i < stackTrace.FrameCount; i++) {
StackFrame stackFrame = stackTrace.GetFrame(i);
MethodBase methodBase = stackFrame.GetMethod();
Console.WriteLine(methodBase.Name);
}

685デフォルトの名無しさん:2005/10/25(火) 11:13:06
SystemIconsで描画できるアイコンの、小さいやつ(16×16)を
描画したいのですが、g.DrawIcon(SystemIcons.Information, 0, 0)と
やると大きいアイコンしか描けません。小さいのはどうやったら
出せますか?
686デフォルトの名無しさん:2005/10/25(火) 13:35:39
>>685
Rectangle渡す方じゃダメ?
687デフォルトの名無しさん:2005/10/25(火) 16:23:46
>>686
アイコンが安置エイリアスなもので、16×16のイメージが
出てるのか、32×32が縮小されてるのかよくわかんないのですが
とりあえず出ました。
688デフォルトの名無しさん:2005/10/25(火) 17:20:02
>>684
MethodBaseっていうのか。ありがとう。これで大分省力化できる。
689デフォルトの名無しさん:2005/10/25(火) 21:07:16
いいこと思いついたんだけど。
Application_IdleでGC.Collect()する。
よくね?
690デフォルトの名無しさん:2005/10/25(火) 21:17:09
あんまり
691デフォルトの名無しさん:2005/10/25(火) 21:17:54
>>689
アサヂエ
692デフォルトの名無しさん:2005/10/25(火) 21:24:02
デジャヴュ
てか数スレ前に出たなそのネタ
693デフォルトの名無しさん:2005/10/26(水) 14:20:55
厳密な名前を持つアセンブリを作成するときに、厳密な名前を持たない
ユーザーコントロールを使用しているのですがビルドの際に
「参照されたアセンブリ 'filename' は厳密な名前を持っていません。」
とエラーになります。

厳密名を持つアセンブリで、厳密名を持たないアセンブリを参照して
使用する方法があれば教えてください。
694デフォルトの名無しさん:2005/10/26(水) 23:07:49
>>693
リフレクション。
695デフォルトの名無しさん:2005/10/27(木) 04:31:58
>>693
一回無署名のでコンパイルしてからildasm。
んで、リンクを署名済みのにIL書き換えてilasmでもう一回コンパイルすれば
いけるかもしれない。ilasmはチェックが弱いっていうかほとんどしないので

…まぁ署名する意味がなくなるので普通だと出来ないようになっているんだろうな
696デフォルトの名無しさん:2005/10/27(木) 11:21:22
object 型のオブジェクトを,任意のタイプにキャストする方法ってある?
例えば↓こんな感じ
----
Type t = int.GetType();
object obj = (object) 100;
int i = 何らかの方法(t, obj);
----
i = (t) obj; はダメだった.
t が int 以外(string とか)だったら例外発生で構わないのだけど……
697デフォルトの名無しさん:2005/10/27(木) 11:28:13
純粋仮想関数の宣言方法をおしえてください
698デフォルトの名無しさん:2005/10/27(木) 11:31:49
class Base
{
public K cast<K>()
{
return (K)(object)this;
}
}
class DerivedA : Base { }
class DerivedB : Base { }


void TestMethod(){
Base b=new DerivedA();
DerivedA da=b.cast<DerivedA>();
Base tmp = (Base)da;
DerivedB db = b.cast<DerivedB>();
}

質問です。
このコードでreturn (K)(object)this;
の部分を return (K)this; とするとBaseを型'K'に変換できないと言われるんですがなぜでしょう?
TestMethod内のコードを削除しても同様です。
パラメータつきで呼び出しコードを書いたときにその型に応じてエラーをはくのならわかるのですが、なぜ頭から跳ねられるんでしょうか?
699697:2005/10/27(木) 11:37:43
abstract class C: I
{
public abstract void M();
}
700デフォルトの名無しさん:2005/10/27(木) 13:12:12
>>696
VBのCTypeみたいなやつですね。それ俺も欲しい。
701デフォルトの名無しさん:2005/10/27(木) 13:17:22
>>696
静的に決定できない型にキャストする意味はどこにもないと思うのだが。
静的に決定できるなら(int)objでいいし。
702デフォルトの名無しさん:2005/10/27(木) 14:12:59
>>698
class A {}
class B {}

public void Main() {
    A a = new A();
    B ba = (B)(object)a;  // InvalidCastException
    B bb = (B)a;  // cs0030
}
要するにこういう事だけど?

継承元への変換:暗黙のキャスト
継承先への変換:明示的キャスト
継承関係にない:変換演算子のオーバーロードを定義する必要がある

KがBaseか何かで制約されていない限り、Kは継承関係にない型と解釈するのが自然だろう。
703698:2005/10/27(木) 14:30:51
>>702
それをパラメタライズドメソッドにしたときにコンパイラはどこで判断してるのかということです。
最初はパラメタライズメソッド呼び出しのコードを書いたときに展開され、KにBaseの派生クラスなどを指定した場合にはコンパイルとおり、無関係なものを指定した場合はエラーになると思っていたのですが、メソッドの呼び出しに関係なくエラーをはかれています。
何を基準にエラーをはいているのか、なぜobjectにキャストした場合にはエラーをはかないのかがわからないんです。
704デフォルトの名無しさん:2005/10/27(木) 15:03:46
>>703
C++のtemplateとは違って、.NETのGenericsは実行時解決。
コンパイル時に整合性は見るけど実際に展開はしない。
だからKは飽くまでK。

objectにキャストしたらOKなのは、object型は全てのクラスの継承元で暗黙にキャストできるから。
コンパイラはobject型から任意の型へのキャストを撥ねようがない。

(K)thisでは、objectを通らず直接キャストになるから、
KまたはBaseがexplicit/implicit operator K(Base b)を定義してなきゃならない。
でもKに対して定義しようはない。ので無理。
C++のtemplateならコンパイル時に解決するから、Kに実際に置かれた型が型変換演算子を定義しているかどうかは判断できるんだが。
705デフォルトの名無しさん:2005/10/27(木) 18:54:52
>>704
言われてるとおりなんですけどコンパイル時に整合性を見るのに情報がない(呼び出しもしていない場合)Kについてなぜ判断してるんでしょう?
実行時に解決する動きならばコンパイラでは不明なままとおして、実行時に例外はくのが推測できる動作だと思うんですが。
呼び出しがない->型解決の情報がない->そのまま通して実行時に例外
呼び出しがある->型解決の情報がある->コンパイル時にはねられる
んーかいてて両方で動作違い出るのおかしい気がしてきたけれど・・・ジェネリクスの細かい仕様知らないので・・・逝ってきます。
706デフォルトの名無しさん:2005/10/27(木) 20:25:50
整合性を見るのは利用する側の方であって、利用される側の方ではないよ。
利用される側はそれで完結しているもの。誰がどう利用するかは考慮しない。

> 実行時に解決する動きならばコンパイラでは不明なままとおして、実行時に例外はくのが推測できる動作だと思うんですが。

できる限りエラーはコンパイル時にというのがGenericsの役割の一つなのに、そんなことしたら利点が減るじゃないか。
常に最悪の事態を想定しないと。

> 呼び出しがない->型解決の情報がない->そのまま通して実行時に例外
> 呼び出しがある->型解決の情報がある->コンパイル時にはねられる

Baseが別アセンブリに入ってたらどうする?
コンパイルしたらBase.dllの方でエラーが出るなんて意味不明なことになってしまう。
707デフォルトの名無しさん:2005/10/28(金) 00:12:20
ASP.NETでImageButtonをクリックしたときに、イベントハンドラより
Page_Loadが先に走るみたいなんですが、これって僕だけですか?
Page_LoadでImageButtonがクリックされたかどうかを知る方法って
ないのでしょうか?
Request.Formにも何も入ってないのですが・・・。
708デフォルトの名無しさん:2005/10/28(金) 00:20:01
それは正常な動作だ。
IsPostBackを調べろ
709デフォルトの名無しさん:2005/10/28(金) 04:33:40
デバッグ中に全然関係ないところですっ飛んでいてたので追ってみたところ
ウオッチに出てくるobjectの値が壊れているようです。
exe名はFolderView.exeなのですがインスタンスの値のところに 'olderView.exe'と出てそこまでステップすると例外をはいて落ちています。
リビルド、ファイルの削除も聞きません。VS2005使ってます。これはベータのバグなんでしょうか・・・
710デフォルトの名無しさん:2005/10/28(金) 05:21:05
お前の説明能力にバグがある
711デフォルトの名無しさん:2005/10/28(金) 08:22:33
exeの名前をolderview.exeにリネームすれば?
712デフォルトの名無しさん:2005/10/28(金) 09:11:13
>>708
Page_LoadでImageButtonがクリックされたのをしることは無理なんですか?
713709:2005/10/28(金) 10:35:59
>>710
すっ飛ぶはずのないところで例外が出る。
ウォッチですっ飛んだところのフィールドなどを見てみる。
フィールドの'base'クラスの値などが"olderview.exe"となっている。そのフィールドの値を詳しく見るとexeの中身もしくはexe飲めたデータををバイナリで見たような値に変わっている。
その行を削除しても別のところで同様の現象が出る。

>>711
今度はlderview.exeでエラーが出ます。たぶん。最初はリブなどを使っていてそのファイルの追加情報がないとか出ていたのでexeに一体化したらこのような名前になった。
714デフォルトの名無しさん:2005/10/28(金) 12:54:34
OS Windows XP
  .Net Framework 1.1で
Socket.SendTo メソッド (Byte[], Int32, 0, 自分自身の端末のEndPoint)
を実行したところ
・管理者権限では成功
・ユーザ権限では成功しない
という事象が出ています。

例外としてはSocketException, ErrorCodeは10013
ということで、ユーザ権限ではICMPプロトコルが
許可されないためのようですが
対処としてはどのようにすればよいでしょうか
715デフォルトの名無しさん:2005/10/28(金) 12:58:24
>>714
実行したいユーザーを管理者グループもしくはパワーユーザーグループ、またはそれに順ずるローカルグループに設定する
そもそもそういう操作をさせたくないからユーザー権限に設定してるんじゃないのか?
716デフォルトの名無しさん:2005/10/28(金) 21:58:04
EnumなプロパティのsetterってわざわざRangeチェックするものですか?
http://www.ailight.jp/blog/kazuk/archive/2005/05/11/6890.aspx
入れるのが悪いというスタンスじゃダメですか?
717デフォルトの名無しさん:2005/10/28(金) 22:29:07
入れる奴が悪い
718デフォルトの名無しさん:2005/10/28(金) 22:50:02
DateTimeとintに無効値を設定したいのですが
java風だと
DateTime t = null;
Integer i = null;
みたいに。なにか方法はありませんか?
719デフォルトの名無しさん:2005/10/28(金) 23:21:15
.NET 2.0ならNullable。
そうでないのなら適当に有り得ない数値でもつかっとく。DateTime.MinValueとか。
720デフォルトの名無しさん:2005/10/28(金) 23:45:21
ないの?
SqlIntとかつかうしかないのか。
721デフォルトの名無しさん:2005/10/29(土) 00:05:06
構造体にして null とかが使えない代わりに
動作速度が向上するんだから我慢汁
722デフォルトの名無しさん:2005/10/29(土) 00:16:32
とあるXMLを読み込んでクラスに復元する処理がしたかったんだけど
その定義が
<xsd:element name="intValue" type="int" minOccurs="0">
だからnullが使いたかったんだけどね。
SqlInt32 intValue { get }
とかにするしかなさそうですね。
723デフォルトの名無しさん:2005/10/29(土) 00:44:47
>>722
maxOccurs の初期値は 1 だから Nullable<int> でもいい気もするけれども
maxOccurs > 2 のことも考えると int[] の方が適切なんじゃ?
724デフォルトの名無しさん:2005/10/29(土) 01:19:49
>>722
この要素は1つか0しかないのでint[]ではないのですが
int[]なら可読性は下がるけどnullを表現できますね。
1.0なのでスマートな解決法は無さそうですが参考になりました。
どうもありがとう。
725デフォルトの名無しさん:2005/10/29(土) 02:23:33
Screen.PrimaryScreen.WorkingAreaって
実行時にタスクバーなどの位置を変更しても更新されないのは既出ですか?
726デフォルトの名無しさん:2005/10/29(土) 03:44:21
取りあえずSystemInformation.WorkingAreaで回避できる。
Primary以外はWin32APIということになるかな。
727デフォルトの名無しさん:2005/10/29(土) 16:29:54
Control.BeginInvokeでメインスレッドと違うスレッドで呼ばれてるんですが・・・
ControlのハッシュでつくったControlもBeginInvokeよびだすControlも例外起こるControlが同一なのを確認。
ベータ2だから?(´・ω・`)
728デフォルトの名無しさん:2005/10/29(土) 16:36:17
わけわからん
729デフォルトの名無しさん:2005/10/29(土) 16:44:49
わけわからんね
メインスレッドと違うってどうやって判断したんだ?
730デフォルトの名無しさん:2005/10/29(土) 16:45:19
大体Control.BeginInvokeなんて使い物にならないだろ。
EndInvoke呼ばなきゃならないし
731デフォルトの名無しさん:2005/10/29(土) 16:45:26
確かにわけわからんな

正式バージョンのSDKはもう手に入るぞ
MSDN会員ならVS2005もダウンロードできるし
732デフォルトの名無しさん:2005/10/29(土) 17:15:40
>>730
返値がいらないならEndInvokeは必須ではないよ
733デフォルトの名無しさん:2005/10/29(土) 17:33:27
お舞らリフレクションのいかす使いかたないですか?
734デフォルトの名無しさん:2005/10/29(土) 17:38:10
つ 無用の用
735デフォルトの名無しさん:2005/10/29(土) 17:39:04
属性を読むときくらいにしか使わんな
736727:2005/10/29(土) 17:46:35
>>729
Win32のGetCurrentThreadIDで。
737デフォルトの名無しさん:2005/10/29(土) 18:06:02
ASP.NET(C#)で、ボタンを押したときに動的にFormのTargetを変えたいのですが
どうすればいいのでしょうか?
738デフォルトの名無しさん:2005/10/29(土) 18:25:30
>>732
EndInvoke呼ばないとメモリリークするとどっかで見たんですが
739デフォルトの名無しさん:2005/10/29(土) 18:26:22
>>738
私もそれを信じてたのだが・・・
740デフォルトの名無しさん:2005/10/29(土) 18:29:07
ん?結局必要ないの?
741デフォルトの名無しさん:2005/10/29(土) 18:29:39
以下引用

BeginInvokeメソッドは、本来のメソッドの引数以外に2つの引数を取る。
1つはAsyncCallbackデリゲートで、メソッドの実行が終了したときに
呼び出されるメソッド(コールバック・メソッド)を渡すことができる。
もう1つは状態オブジェクトで、ここでは呼び出しに使ったデリゲートを渡している。
Callbackメソッドでは、渡されたオブジェクトからShowMessageデリゲートを復元し、
BeginInvokeメソッドの対になっているEndInvokeメソッドを呼び出している。
BeginInvokeとEndInvokeは必ず対で呼び出さなければならない。
EndInvokeメソッドを呼び出し忘れると、メモリ・リークを引き起こす可能性がある。

From @IT
742デフォルトの名無しさん:2005/10/29(土) 18:30:44
結局必要なのね
743デフォルトの名無しさん:2005/10/29(土) 18:42:39
744デフォルトの名無しさん:2005/10/29(土) 19:14:00
>>727
非同期呼び出ししてるんだから別スレッドになるの当たり前だと思うんだけど?
何がしたいのかさっぱりわからん。
745デフォルトの名無しさん:2005/10/29(土) 20:55:40
>>744
MSDNよんでからほざけ。知ったかは恥かくぞ。
746デフォルトの名無しさん:2005/10/29(土) 21:25:53
Control.BeginInvokeって
コールバックからEndInvokeを呼ぶっていう手法が使えないから結局、使えないでFAなの?
747デフォルトの名無しさん:2005/10/29(土) 21:47:48
使いづらい、ではあるな
EndInvokeを更に別スレッドで実行すれば良いんだから
ややこしいけど
748デフォルトの名無しさん:2005/10/30(日) 03:38:11
>>715
そのとおりかもだ。
詳しくはここを読むと幸せになるかもだ。
http://support.microsoft.com/default.aspx?scid=kb;JA;884942
749デフォルトの名無しさん:2005/10/30(日) 03:42:04
>>733
プラグイン
750デフォルトの名無しさん:2005/10/30(日) 05:01:25
>>749
dllのアンロードに困るのが難点だな。
AppDomainを分けるのも大変だし。
751デフォルトの名無しさん:2005/10/30(日) 05:21:48
むしろ俺はリフレクションでプラグインを考えるときは
アプリケーションの終了まで持ったままにしておくな。
752デフォルトの名無しさん:2005/10/30(日) 11:07:16
Control.BeginInvoke で投げっぱなし・・・使いまくってたよ orz
投げっぱなしができるメソッドが欲しいですね。
753デフォルトの名無しさん:2005/10/30(日) 12:24:08
>>752
Invokeでは駄目なん?
754デフォルトの名無しさん:2005/10/30(日) 13:45:06
Invokeだと呼び出しスレッドのコンテキストで実行される->マズー
755デフォルトの名無しさん:2005/10/30(日) 14:44:04
HTMLコントロールとASPコントロールって何が違うのですか?
runat=serverを付ければ同じでは無いのでしょうか?
756デフォルトの名無しさん:2005/10/30(日) 15:13:51
757デフォルトの名無しさん:2005/10/30(日) 18:31:54
インスタンスメソッドの呼び出しを別のメソッドに対して実行する方法ないでしょうか?
たとえば
class Element{
public virtual Draw()
}
class ElemA:Element{
public override void Draw();
}
class ElemB:Element{
public override void Draw();
}
とあったときDrawの呼び出し方法を登録して他のインスタンスに対しそれを実行したいと考えています。
デリゲートだと呼び出しとインスタンス結びついてしまいますよね。
リフレクションになるんでしょうか?
758デフォルトの名無しさん:2005/10/30(日) 18:44:46
通訳を頼む
759デフォルトの名無しさん:2005/10/30(日) 18:50:56
>>758
↓頼む
760デフォルトの名無しさん:2005/10/30(日) 18:54:08
ElemBのインスタンスでElementのDrawを呼びたい、ってことじゃないかね。

まぁそれができると複雑化するし「じゃあabstractなメソッドはどうするの?」なわけだが。
761デフォルトの名無しさん:2005/10/30(日) 19:03:35
すいません。こんな漢字にしたいんです。
class Element{
public virtual Draw()
public virtual int Size();
}
class ElemA:Element{
public override void Draw();
public override int Size();
}
class ElemB:Element{
public override void Draw();
public override int Size();
}

void Hoge(List<Element> elementList){
DrawDelegate drawDeleg=new DrawDelegate(Draw);
DizeDelegate sizeDeleg=new DrawDelegate(Size);
foreach(Element elem in elementList){
deleg.Invoke(elem); <===elem.Draw()(ElemA.DrawもしくはElemB.Draw)の呼び出し
int size=sizeDeleg(elem); <===elem.Size()(ElemA.SizeもしくはElemB.Size)の呼び出し
}
}
762デフォルトの名無しさん:2005/10/30(日) 19:03:43
>>757 と >>760 を合わせて、なんとか推測できた。

答え: virtual 消せ
763762:2005/10/30(日) 19:06:08
>>761
やっぱり分からん。何がしたいのか言葉で説明しろ。
デリゲート越しに呼び出したいのは Element.Draw() と ElemA.Draw() のどっちなんだ。
764761:2005/10/30(日) 19:18:23
elem.Draw()と書いたのと同じ動作をしてほしいんです。
つまりelemがElemAのインスタンスならElemA.Drawが呼び出される。
やりたいことはインスタンスメソッドのデリゲートを登録してそのインスタンスを別のものにして実行できないかということなんです。
Elementがたのインスタンスに対してDrawを呼び出すということだけをオブジェクトにして、インスタンスとパラメータは実行時に渡したい。
インスタンスメソッドのデリゲートだとそのデリゲートとインスタンスが結びついてしまっていて後から変更できないと思うので何かいい方法は内科と探してます。

765デフォルトの名無しさん:2005/10/30(日) 19:22:37
2行目までしか言っていることが理解できん
766761:2005/10/30(日) 19:24:24
いみわかるよ?どうしたらいいかはしらんけど。
なにがわかんないの?
767デフォルトの名無しさん:2005/10/30(日) 19:30:18
自演乙
768デフォルトの名無しさん:2005/10/30(日) 19:32:51
お前一人が理解していても意味ねえんだよ
俺は>>758だが>>758-761からして3人は理解していないことがわかろうに
769デフォルトの名無しさん:2005/10/30(日) 19:34:18
なんでそんなことしたいのかさっぱり分からないけど
実現するならリフレクションだな

なんでそんなことしたいのかさっぱり分からないけど
770デフォルトの名無しさん:2005/10/30(日) 19:38:30
>>769
2回もいわなくてもいいじゃない
2回もいわなくてもいいじゃない
771デフォルトの名無しさん:2005/10/30(日) 19:41:05
久しぶりに可哀想な自演を見た
772デフォルトの名無しさん:2005/10/30(日) 19:43:55
>>764
>elem.Draw()と書いたのと同じ動作をしてほしいんです。 
>つまりelemがElemAのインスタンスならElemA.Drawが呼び出される。 

普通にやれば良い。何も問題は無い。

=====

using System;

class Element { public virtual void Draw() { Console.WriteLine("Element::Draw"); } }
class ElemA: Element { public override void Draw() { Console.WriteLine("ElemA::Draw"); } }
class ElemB: Element { public override void Draw() { Console.WriteLine("ElemB::Draw"); } }
delegate void DrawDelegate();

class Test {
    [STAThread]
    public static void Main(string[] args) {
        DrawDelegate    d1  = new DrawDelegate(new Element().Draw);
        DrawDelegate    d2  = new DrawDelegate(new ElemA().Draw);
        DrawDelegate    d3  = new DrawDelegate(new ElemB().Draw);
        d1();   // Element::Draw が表示される
        d2();   // ElemA::Draw が表示される
        d3();   // ElemB::Draw が表示される
    }
}
773在日外国人参政権反対:2005/10/30(日) 19:49:04
elemに対して行う操作を、条件により分岐できます。
さっきの例ではDrawの呼び出しとか明記したけれど、つぎのようにすればhogeクラスでは実行する内容についての知識が要らなくなります。

publc class ElementExecutor{
public abstract void Execute(Element elem);
}
public class ElemDelegateExecutor<Delegate>:ElementExecutor{
Delegate _deleg;
public override void Execute(Element elem){
_deleg.Invoke(elem);
}
}
void Hoge(Executor execCommand){
foreach(Element elem in elementList){
execCommand(elem);
}
}
ポイントはdelegateの指す内容がElementもしくはその派生クラスのインスタンスメソッドだということです。

>>772
実行するインスタンスはアトから注入したいんです。
774デフォルトの名無しさん:2005/10/30(日) 19:57:38
>>773
名前欄見てポカーン

>ポイントはdelegateの指す内容がElementもしくはその派生クラスのインスタンスメソッドだということです。
はい。この事実は変わりません。何か不満でも?

>実行するインスタンスはアトから注入したいんです。
なら delegate では無理ですね。
775デフォルトの名無しさん:2005/10/30(日) 20:08:59
>>774
これらしいな。
http://freett.com/iu/memo/Chapter-010104.html

質問するついでにプロパガンダをアピールする態度が気に入らん。
776773:2005/10/30(日) 20:13:19
名前欄間違いです・・・失礼しました・・・orz

>>774 不満だから質問してるんですが?自分の質問内容が実現できるんなら不満ありません。
777デフォルトの名無しさん:2005/10/30(日) 20:25:31
スレ違い。
ここで訊くといい。
http://pc5.2ch.net/test/read.cgi/tech/1069530956/l50




とっくに過去ログ倉庫に行ってるがな。
778デフォルトの名無しさん:2005/10/30(日) 20:25:56
>>776
delegate では実現できません。delegate は使わないで下さい。
779デフォルトの名無しさん:2005/10/30(日) 20:57:10
BindingSourceでソースをオブジェクトにしたとき
DataGridViewのヘッダは自動でプロパティ名になるのですが
そこを別名にする枠組みはBindingSourceにありませんか?

DataGridViewのColumnをLoad時にマッピングし直す方法を使っているのですが
より簡単な方法があれば教えてください。
780デフォルトの名無しさん:2005/10/30(日) 21:16:48
DataGridViewColumn.HeaderText
781デフォルトの名無しさん:2005/10/30(日) 21:48:32
>>774,>>777
少しはまともな答え返せないのか。このちんかす。
782デフォルトの名無しさん:2005/10/30(日) 21:50:13
783デフォルトの名無しさん:2005/10/30(日) 22:20:19
理由は不明なんですが、.NET frameworkの再頒布パッケージをインストールしたくないという強い要望があり、
半信半疑ながらの質問です。

.NET frameworkをインストールしないで動く実行ファイルって作れるんでしょうか?
MFCランタイムを静的リンクするようなイメージなのですが、.netでそれが可能かどうか教えてください。

俺的には一回で済むんだから入れろよって感じなんですが・・・
784デフォルトの名無しさん:2005/10/30(日) 22:23:43
>>783
無理。
.NET Frameworkが動く環境というのは、
その下の層の環境も整っていることを意味する。
785デフォルトの名無しさん:2005/10/30(日) 22:43:47
monoを入れれば動くかもね
786デフォルトの名無しさん:2005/10/30(日) 23:15:42
.Netって元々のThreadPoolとは別のThreadPoolって作れないんでしょうか?
非同期Delegeteで一時的に多くのThreadPoolタスクを使ってしまっていて、デッドロックの危険があるので
システムのThreadPoolとは分離しておきたいのですが
787デフォルトの名無しさん:2005/10/30(日) 23:22:42
諦めてThreadクラスを使え
788デフォルトの名無しさん:2005/10/30(日) 23:28:14
どんなにスレッド使おうとしても
プロセッサ数×25までしか同時実行できないだよね
789デフォルトの名無しさん:2005/10/30(日) 23:30:03
Threadクラスも結局デリゲード利用してるだけだから
デリゲート使えばええやん
790デフォルトの名無しさん:2005/10/30(日) 23:36:51
>>789
いや、非同期デリゲートはThreadPoolを使うがThreadはThreadPoolを使わない
>>788
それはThreadPoolの制限
Threadにはその制限はない
まあ(私の環境では)2000足らずの同時実行でOutOfMemoryExceptionが出るが
791デフォルトの名無しさん:2005/10/30(日) 23:54:18
>787
回答どうも
ライブラリであったら便利だなと思いまして。メンテ大変だし
ScheduledThreadPoolExecutorみたいなのがあればなぁと。
792デフォルトの名無しさん:2005/10/30(日) 23:57:04
フルスクリーンモードのアプリケーションを作っています。
メインメニューを全て非表示にしたいんですが方法はありますでしょうか。お願いいたします。
793デフォルトの名無しさん:2005/10/31(月) 00:12:34
FormならMenuプロパティをnullにすればいいんじゃないか。
794デフォルトの名無しさん:2005/10/31(月) 00:25:46
NULL NALL NELL NULLEST!!!!!!!!!!
795デフォルトの名無しさん:2005/10/31(月) 00:35:29
.       ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
       (;´Д`)< スンマセン、直ぐにCollectします
  -=≡  /    ヽ  \_______
.      /| | GC |. |
 -=≡ /. \ヽ/\\_
    /    ヽ⌒)==ヽ_)= ∧_∧
-=   / /⌒\.\ ||  ||  (´・ω・`) >>794
  / /    > ) ||   || ( つ旦O
 / /     / /_||_ || と_)_) _.
 し'     (_つ ̄(_)) ̄ (.)) ̄ (_)) ̄(.))
796デフォルトの名無しさん:2005/10/31(月) 02:27:06
>>793
ありがとうございます。たが、単に表示非表示を切り替えたいんです(動的に)。
797デフォルトの名無しさん:2005/10/31(月) 02:32:29
C#のアプリケーションで、アプリケーションの起動直後に行いたい処理があるのですが、
初期化処理が全て終わった後に呼び出されるフック関数とかってあるんでしょうか。
798デフォルトの名無しさん:2005/10/31(月) 02:43:32
Application.Idleで代用?
799デフォルトの名無しさん:2005/10/31(月) 06:34:21
Activatedでもいいな
800デフォルトの名無しさん:2005/10/31(月) 07:09:11
800
801デフォルトの名無しさん:2005/10/31(月) 09:20:49
ここでいいのかどうか微妙なんだけどとりあえず言語がC#なのでここに.

いま VS2005β + C# で XML を構文チェックして読み込むプログラムを書いてるんですが,
hoge.xsd ファイルを作成して XmlReader にスキーマをセットしてバリデーションできるところまで書きました.
で,今はこれを settings.Schemas.Add( null, "c:\\hoge.xsd" ); みたいにファイル名で書いてますが,
この hoge.xsd をパスに依存しないようプログラム内部に持たせたいんですが,そのやり方がわかりません.

VisualStudio のソリューションのファイル一覧に追加して,
これを Stream で読み出せたりできたら最高なんですが,こういうことって可能でしょうか?
802デフォルトの名無しさん:2005/10/31(月) 10:09:51
ResourceManagerクラスを調べると幸せになれるかもよ
803デフォルトの名無しさん:2005/10/31(月) 11:41:17
>>802
ありがとうございますー.
調べてみました.いけそうな感じです.

しかしいろんなサイトを見ていて,xsd を扱うどこのサンプルも皆ファイルから読んでるんだけど,
ファイル名をコード内に書くことに皆は抵抗ないのだろーか……
804デフォルトの名無しさん:2005/10/31(月) 12:05:43
>>803
サンプルだからでしょ
805デフォルトの名無しさん:2005/10/31(月) 16:02:10
DataTable使ってて気づいたんだけど
今までDataTableってRDBのように使ってたんだけど
よく考えたら行の順番て保障されてるような希ガス
806デフォルトの名無しさん:2005/10/31(月) 16:05:23
>>805
DataTableに一行ずつDataRowを追加すればな
807デフォルトの名無しさん:2005/10/31(月) 17:59:44
テキストボックスのようにテキストを入力できるものをを独自に実装したいのですが、IMEの取り扱い方のヒントになるようなものないでしょうか?
808デフォルトの名無しさん:2005/10/31(月) 23:09:48
キャレットがAPI使わなきゃ実現できないので
APIまわりをあたれ
そのついででIMEまわりもでてくる
809デフォルトの名無しさん:2005/10/31(月) 23:38:28
exeに埋め込むなら
マニフェストリソースとして埋め込むのがいいかも?
http://dobon.net/vb/dotnet/programing/bitmapresource.html
810デフォルトの名無しさん:2005/11/01(火) 01:57:03
どこかにC#からWin32API呼び出すときの定義一覧なかったでしたっけ?
811デフォルトの名無しさん:2005/11/01(火) 01:59:27
>>810
PINVOKE.NET
812デフォルトの名無しさん:2005/11/01(火) 02:43:10
それだ!さんくす。
813デフォルトの名無しさん:2005/11/01(火) 10:54:33
文字列[AAAA]を検索する場合に[aaaa]で検索をかけてもひっかかってしまいます。
完全一致で検索する場合にはどうしたらよいでしょうか
814デフォルトの名無しさん:2005/11/01(火) 11:00:46
何をどうやって検索したんだよ
815デフォルトの名無しさん:2005/11/01(火) 11:27:21
warota
816デフォルトの名無しさん:2005/11/01(火) 11:29:30
サイズ変更中は(ウィンドウの中身を変化させる)処理を行わず、
サイズ変更確定直後(サイズ変更枠上でMouseUpしたとき)にだけ処理を行いたいのですが、
どんな方法があるでしょうか?

(サイズ変更枠上ではFormのMouseUpイベントは発生してくれませんでした。)
817デフォルトの名無しさん:2005/11/01(火) 11:38:18
WM_NCLBUTTONUPか?
818デフォルトの名無しさん:2005/11/01(火) 11:53:46
すみません、誘導されてきました。
厨な質問なんですが、
vb2005でコンソールアプリでフォームを表示させる実験をしていた時に気づいたのですが、
System.Windows.Forms名前空間は参照の設定をしないと使えないのに、
System.Threading名前空間は参照の設定をしなくても使えました。

あとvc++2005でも同様の実験をしたのですが、C++なので#include "stdafx.h"と書いたのち、
同様のコードをやったら、こっちではSystem::Drawingの参照設定が必要だといわれました。

この違いってどこから来るのですか?
819デフォルトの名無しさん:2005/11/01(火) 12:16:44
>>818
名前空間とアセンブリは別物
820デフォルトの名無しさん:2005/11/01(火) 23:02:44
C#で改行コードとかタブを簡単にとる方法ってありますか?
821デフォルトの名無しさん:2005/11/01(火) 23:06:52
>>797
そもそもMainの最初とかFormのコンストラクタじゃ駄目なわけ?
822デフォルトの名無しさん:2005/11/01(火) 23:40:02
>>820
とるってのは削除って意味で良いの?
とかって厳密にはどの範囲?
823デフォルトの名無しさん:2005/11/01(火) 23:40:06
>>820
String.Replace()とか。
824デフォルトの名無しさん:2005/11/01(火) 23:54:55
IISで仮想ディレクトリを2つ作って、2つとも同じフォルダを指定すると
します。それって駄目なんですか?
VS.NETで開いたらうまく動かないんですが。
825デフォルトの名無しさん:2005/11/02(水) 00:02:25
>>824
スレ違い
826デフォルトの名無しさん:2005/11/02(水) 00:10:49
きもい
827デフォルトの名無しさん:2005/11/02(水) 00:22:27
C#でますみんは作れますか?
828デフォルトの名無しさん:2005/11/02(水) 01:02:30
yield構文を使って樹の探索を簡単に作れるかなと思ったら
yield中に再帰処理を書くのがうまくいきません。5行くらいで簡単に作るのは無理なのかな
829デフォルトの名無しさん:2005/11/02(水) 01:47:44
>>828
現在のコード出せ
830デフォルトの名無しさん:2005/11/02(水) 07:17:32
Enumrator GetEnumeratorHelper(Node val){
foreach(Node node in val.SubNodes){
yield return node;
return GetEnumeratorHelper(node);
}
}
こう書けたら楽なのに。と
831デフォルトの名無しさん:2005/11/02(水) 07:38:49
IEnumerable<Node> GetAllSubNodes(Node val) {
    foreach (Node node in val.SubNodes) {
        yield return node;
        foreach (Node subnode in GetAllSubNodes(node.SubNodes))
            yield return subnode;
    }
}
832デフォルトの名無しさん:2005/11/02(水) 07:39:36
あ、間違った
IEnumerable<Node> GetAllSubNodes(Node val) {
    foreach (Node node in val.SubNodes) {
        yield return node;
        foreach (Node subnode in GetAllSubNodes(node))
            yield return subnode;
    }
}
833デフォルトの名無しさん:2005/11/02(水) 11:34:33
樹の探索といって子供までのことしか考えない人のいる擦れはここですか?
834デフォルトの名無しさん:2005/11/02(水) 12:04:34
>>834
再帰
835デフォルトの名無しさん:2005/11/02(水) 14:30:16
C#で3Dプログラム作ったんだが遅すぎ
なにこのクソ言語?
存在意義あんの?
836デフォルトの名無しさん:2005/11/02(水) 14:30:45
普通に動いてるっぽいけど

class Program {
 static void Main(string[] args) {
  Node root = new Node("root", new Node[]{
   new Node("1"),
   new Node("2", new Node[]{
    new Node("2.a"),
    new Node("2.b", new Node[]{new Node("2.b.1"), new Node("2.b.2")}),
    new Node("2.c")}),
   new Node("3")});
  foreach(Node n in root.GetAllSubNodes()) Console.WriteLine(n.Name);
 }
}
class Node {
 public string Name;
 public IEnumerable<Node> SubNodes;
 public Node(string name) : this(name, new Node[]{}){}
 public Node(string name, IEnumerable<Node> subNodes) {
  this.Name = name;
  this.SubNodes = subNodes;
 }
 public IEnumerable<Node> GetAllSubNodes() {
  foreach (Node node in this.SubNodes) {
   yield return node;
   foreach(Node subnode in node.GetAllSubNodes()) yield return subnode;
  }
 }
}
837デフォルトの名無しさん:2005/11/02(水) 14:33:57
クソとか言う前に遅い原因を探ろうと考えないのか
838デフォルトの名無しさん:2005/11/02(水) 16:27:41
自分のソースが糞なだけ
839デフォルトの名無しさん:2005/11/02(水) 21:11:54
>>835
グラボ買い換えろよw
840830:2005/11/03(木) 00:16:10
>>834が本当に再帰しているのが好きです
841デフォルトの名無しさん:2005/11/03(木) 00:27:20
このスレの>>1はすごかったな。
http://piza2.2ch.net/tech/kako/992/992241842.html
842デフォルトの名無しさん:2005/11/03(木) 10:20:44
神を超えた1だね。
843659:2005/11/03(木) 15:34:36
2週間経っても誰もレスくれない・・・・
APIの SetStretchBlt( WHITEONBLACK ) と同等の.NET関数はありますか?
844デフォルトの名無しさん:2005/11/03(木) 15:36:04
>>659
このスレのレベルを超えていますので
@ITの掲示板へドウゾ
845デフォルトの名無しさん:2005/11/03(木) 17:21:29
ある年月日の末日が何日であるか調べる方法をご伝授ください。
846デフォルトの名無しさん:2005/11/03(木) 17:23:17
DateTime.DaysInMonth
847デフォルトの名無しさん:2005/11/03(木) 17:49:47
>>846
ありがとうございます。
848デフォルトの名無しさん:2005/11/03(木) 17:51:15
>>846
そんなのあったんだ
849デフォルトの名無しさん:2005/11/03(木) 18:29:59
文字列のなかに、ある文字が何個含まれているか
取得するのはどうしたらよいですか
850デフォルトの名無しさん:2005/11/03(木) 18:34:38
foreachで一文字ずつ調べる
あるいはSplitを試してみる
851デフォルトの名無しさん:2005/11/03(木) 19:12:11
いろんな文字で何度もカウントしたいのなら
char[] にしてからソートかな
852デフォルトの名無しさん:2005/11/03(木) 20:22:23
new Regex("あ").Matches(str).Count
853デフォルトの名無しさん:2005/11/03(木) 20:24:08
正規表現遅い
854デフォルトの名無しさん:2005/11/03(木) 22:11:34
C#で多重化されたIOを使うサンプルってどこかにありませんか?
Socket.Selectの使い方が今一わからないのですが
855デフォルトの名無しさん:2005/11/03(木) 22:37:01
心当たりはないが、Socket.Selectってそんなに難しいか?
856デフォルトの名無しさん:2005/11/03(木) 22:49:03
スレッドを使ったServerと非同期接続メソッドを使ったServerは作ったことあるんですけど。
最近Select知って、何だろう。と
857816:2005/11/04(金) 03:34:01
>>817
ヒントありがとうございました
うまくいきました!

蛇足ですが、なぜかWM_NCLBUTTONUPは私の環境(XPsp2)ではうまくメッセージされませんでした。
非クライアント領域でのマウス左BUTTONUPは、なぜかWM_NCLBUTTONDBLCLKの時(非クライアント領域でのマウス左ダブルクリック時)と同時にしかメッセージされませんでした(シングルクリックではメッセージされない)。
結局のところ、WM_EXITSIZEMOVEのメッセージを捕まえることで目的は遂げられました。(非クライアント領域でのマウス左BUTTONUPはWM_EXITSIZEMOVEメッセージと等価っぽい)
私の環境だけなんでしょうか??
858デフォルトの名無しさん:2005/11/04(金) 08:03:02
>>850-853
ありがとう!
859デフォルトの名無しさん:2005/11/04(金) 19:24:43
Ctrl+Cも押さないで、現在選択している文字列を取得する方法ってどのようなものがあるのでしょうか?
↑(その時点ではクリップボードに入っていない)
860デフォルトの名無しさん:2005/11/04(金) 19:33:51
なかなか難解だが、SelectedTextのことか
861デフォルトの名無しさん:2005/11/04(金) 19:56:26
構造体に配列を持たせるには、
ttp://groups.yahoo.co.jp/group/dotnet-csharp/message/1498
の方法だけですか?
862デフォルトの名無しさん:2005/11/04(金) 20:19:00
アンマネージドと相互運用するのでない限り普通に持たせればいいが。
863861@聞き方が悪かった:2005/11/04(金) 20:40:40
hoge.array = new int[5];

この方法しか思いつかないんですが、
配列の要素を、構造体で決められた数だけ、
確保する方法はあれの他にありませんか?
864デフォルトの名無しさん:2005/11/04(金) 20:49:43
意味がわからんが、引数付きコンストラクタで初期化すれば良かろう。
値を持たない構造体なぞアンマネージドとの相互運用以外では必要ないしな。
>>861の手法もマーシャリングするときにのみ意味を持つものだ。
865861:2005/11/04(金) 20:51:36
>>864
もう一度いろいろ考え直してみます。thx
866デフォルトの名無しさん:2005/11/04(金) 20:53:59
>>863
C# の 『 struct Foo { int[] bar; } 』 は C で書くと 『 struct Foo { int *bar[]; } 』 じゃなかったっけ?
良くわからんが。
867デフォルトの名無しさん:2005/11/04(金) 21:04:52
>>856
Selectは基本中の基本
そのあとTheradとか考える。

ネットワークプログラミング相談室 Port15
http://pc8.2ch.net/test/read.cgi/tech/1128088448/
868デフォルトの名無しさん:2005/11/04(金) 22:22:03
>>866
C# の 「struct Foo { int[] bar;} 」 は
C で書くと 「struct Foo { int* bar;} 」 が近いかなぁ。

C# 2.0 なら、unsafe 限定で、

unsafe struct Foo
{
fixed int bar[SIZE];
}

が可能。
869デフォルトの名無しさん:2005/11/04(金) 22:36:30
なんで今不可能なの?
870デフォルトの名無しさん:2005/11/04(金) 22:44:39
愚問だな
871デフォルトの名無しさん:2005/11/04(金) 22:45:37
あー、ウルトラマンにでてきた
872デフォルトの名無しさん:2005/11/04(金) 23:30:03
OSのあらゆる操作のSelectedTextって取れるのでしょうか?
直前にSelectした文字列とか言う感じで
873デフォルトの名無しさん:2005/11/04(金) 23:50:35
C#だとできないらしいので、他の言語でDLL作ってグローバルフック
C#からはそれを使う
874デフォルトの名無しさん:2005/11/04(金) 23:50:36
そもそも.NETで他プロセスにちょっかいかけるってのは基本的に許可されてないが
それを考えなくても無理
875デフォルトの名無しさん:2005/11/05(土) 04:28:00
グローバル フックは .NET Framework ではサポートされていない
ttp://support.microsoft.com/default.aspx?scid=kb;ja;318804

グローバルフック関連リンク
ttp://www.kab-studio.biz/Programing/Codian/DLL_Hook_SClass/06.html
ttp://www.doumo.jp/aon-java/jsp/postgretips/tips.jsp?tips=79
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/hooks/abouthooks.asp

貢献したところで質問です。
参照設定で追加したDLLは静的にバインドされますよね。
もしコード中でそのDLLの要素を全く使わなかった場合はDLLはロードされるんでしょうか?

NUnit.framework.dllを参照設定で追加しているのですが、
ソフトを配布したときに「NUnit.framework.dllが見つかりません」エラーが出ると困ります。
テストのコードは#if DEBUG #endif で囲いReleaseバージョンでは実行ファイルに含まれないようになっています。
NUnitをアンインストールして試してみたところ問題なさそうではあるんですが、心配なので教えてください。

876875:2005/11/05(土) 04:31:16
補足
つまり参照設定だけのDllが起動時に読み込まれるかどうかの質問です。
877デフォルトの名無しさん:2005/11/05(土) 08:40:47
アセンブリがロードされるのは実際にそのアセンブリのクラスが必要になったときだから、
それまではあろうが無かろうが問題はないが。
参照残したままってのはイヤな感じだ。
878デフォルトの名無しさん:2005/11/05(土) 14:01:07
各メソッドの総実行時間を計測できるプロファイラはありませんか。
マイクロソフトのCLR Profilerだとメソッドの呼び出し回数しか分かりませんでした。
879デフォルトの名無しさん:2005/11/05(土) 14:36:07
>>877
> 参照残したままってのはイヤな感じだ。
同感です。
とはいえこれはReleaseコンパイル時に参照をはずし忘れないようにするしかないみたいですね。
レスありがとうございました。
880デフォルトの名無しさん:2005/11/06(日) 13:53:35
あるアセンブリで参照設定しているアセンブリ名の一覧を取得する方法はありますか?
881デフォルトの名無しさん:2005/11/06(日) 14:52:31
オブジェクトのメンバーに対してスレッドセーフにしたいんですがどうするべきでしょう。
手作業でロックするとどこかでロックし忘れなどの間違いを起こすと思い自動化させたいと考えています。
考えたのはそのメンバーに対するアクセスをロックするクラスをとして行う方法と属性を使って行う方法です。
しかしC#でC++のスマートポインター実装に使うようなスコープでのリソース管理は実装できないと思います。
また[synchronized]属性はメソッドに対しては使えるようですが、メンバーにはつかえないようです。
何かいい知恵あれば教えてください。お願いします。
882デフォルトの名無しさん:2005/11/06(日) 16:41:36
>>881
volatile
でも実際のところ「何が分割不可能な操作なのか」っていうのは設計に
依存するので(だからSQLでもトランザクションあるんだよ)、どっちにしろ
自動化は無理。
883881:2005/11/06(日) 17:00:08
>>882
手段さえあればどのようにロックするかはポリシーでカバーできるようにすればいいので何とでもなります。
やりたいことは次のような感じです。
class Nanika{
P p;
N n;
}
でP,Nはクラスとします。
ここでNanikaクラスのインスタンスが100個あるとしてそれぞれのpに対するアクセスnに対するアクセスをおのおのスレッドセーフにしたいんです。
あるインスタンスのpへのアクセスとnへのアクセスは同時に起きてもかまいません。
あるインスタンスのnと別のインスタンスのnに対するアクセスも同時でかまいません。
あるインスタンスのnに対する複数のスレッドからのアクセスは同期を取る必要があります。
C++ならばp,nに対するアクセスをインターセプトすることで自動的にロックすることが可能ですよね。
同じようなことができないかと。
884デフォルトの名無しさん:2005/11/06(日) 17:57:11
>>833
言ってるようにスコープ管理だと無理。かわりに
class Critical : IDisposable {
}

using(Critical p = ...) {
}
のようにusing(Dispose)強制ぐらいしかないかなぁ。pには
もちろん直アクセスできないようにして。
885881:2005/11/06(日) 18:21:35
>>884
やはりそげな感じですかね・・・
->のオーバーロードみたいな感じで使える演算子もなさそうだしこてこてにかくしかないかな。
そのへんC++ がうらやましぃ・・・
886デフォルトの名無しさん:2005/11/06(日) 19:58:55
C#プログラムで以下の機能を実装したのですが、どのようにすれば良いでしょうか?

1.ping(アドレススキャン)
2.traceroute(経路調査)
3.ポートスキャン(稼動ポートを割り出す)
4.ドメインネーム調査(IPからドメイン、ドメインからIPを割り出す)
5.文章からパスワード(大文字、小文字、数字、一部記号)生成
887デフォルトの名無しさん:2005/11/06(日) 20:01:35
TCP/IPを勉強する
888デフォルトの名無しさん:2005/11/06(日) 21:09:16
どっかのだれかが作ってるだろうから借りてくればいいよ。
889デフォルトの名無しさん:2005/11/06(日) 22:49:37
>>883
それはフィールドをpublicにするのか?
いろんなところからアクセスされるのが問題なんじゃないのか?
Nanikaのインスタンスが1つのスレッドにしか所属しない状況なら
privateなフィールドがスレッドセーフになるかは意識する必要はなくなるんじゃないか?
そうするとNanikaのインスタンスは複数スレッドから操作されるわけ?

まぁ、そんな感じなら、何も考えず全部の変数の宣言にvolatileつけとけ。
890デフォルトの名無しさん:2005/11/06(日) 22:51:19
>>887-888
>C#プログラムで以下の機能を実装したのですが、どのようにすれば良いでしょうか?

「機能を実装 し た のですが」
俺たちはソースうp希望しておけばいいんだよきっと
891デフォルトの名無しさん:2005/11/06(日) 23:15:11
あるインターフェイスを実装したstructを
そのインターフェイスのフィールドに突っ込むと
ボクシングは発生しますか?
892デフォルトの名無しさん:2005/11/06(日) 23:17:07
する
893252:2005/11/06(日) 23:44:50
>>889
変数は値型だけでなく参照型も含まれるのでvolatileは使えないんです。
複数のスレッドからのアクセスです。
フィールドはパブリックにするわけではないですが、それに対する操作をするメソッドはパブリックなものもあります。
いずれにしても外部からあるオブジェクトを使うときにスレッドについてなるべく気にしないでいい方法を探しています。


894252:2005/11/06(日) 23:45:20
881です。すいません・・・
895デフォルトの名無しさん:2005/11/06(日) 23:46:32
>>893
それを操作するメソッドの中を lock すれば良いのでは?
896881:2005/11/07(月) 00:13:48
>>895
必ずしもメソッドの中に入れてるものだけではないし
あまり大きくないクラスでカプセル化を厳密にしないようなクラスだとしてください。
また同じようなクラスはいくつもあるのでそれぞれに同じようにlockするメソッドを書くのもなんか美しくないので。
さっきの例でNが複数のフィールドやメンバを持ってたとして、

Hoge hoge=new Hoge();
hoge.n.field1.Field1method();

みたいにかけるといいんです・・・


897デフォルトの名無しさん:2005/11/07(月) 00:17:16
>>896
field を property に書き直して、lock とか
898デフォルトの名無しさん:2005/11/07(月) 00:23:18
>>893
>volatile として修飾されるフィールドは、次の種類に制限されます。
>参照型
>ポインタ型 (unsafe コンテキスト内)
>sbyte、byte、short、ushort、int、uint、char、float、bool の各型
>列挙型と byte、sbyte、short、ushort、int、または uint の列挙基本型

スレッドの同期が必要な部分が大量にふくれあがったその設計がアウトなんだよ。
全部捨てて書き直せ。
そうしないといつまでたっても再現性の悪いスレッドの同期が抜けたことによるバグがうじゃうじゃ出てくるよ。
899デフォルトの名無しさん:2005/11/07(月) 00:30:16
typedef struct _DCB {
DWORD DCBlength; /* sizeof(DCB) */
DWORD BaudRate; /* Baudrate at which running */
DWORD fBinary: 1; /* Binary Mode (skip EOF check) */
この: 1はC# でどう書けばいいの?
900899:2005/11/07(月) 00:33:21
901デフォルトの名無しさん:2005/11/07(月) 00:46:44
>>900
それ、構造体サイズが全然違うんだが……。
902881:2005/11/07(月) 00:52:25
>>897 ロックで囲まないといけないのが。
>>898 参照型いけるんですね。というかvolatileよくわかってないです。見直してきます。
たとえば次のような場合どうします?
株価などのように高頻度に値が更新されてそれに対する処理、その値を基にしたほかの株価データをを必要とする計算や表示などを行う必要がある。
値が更新されるー>対象となるデータノードを検索ー>それに対し値などに応じた必要な処理という流れ。
対象となるデータのノード数は10万単位。ただしすべてメモリ処理するものとする。
複数のノードにまたがる更新処理はない。
ノードの削除処理はない。

こんな場合どんなロックの粒度にしてどんなデータ構造にします?
自分の場合だとデータノードをインスタンスとしてそれをコレクションクラスにぶっこんであるとして、
コレクションクラスをロックー>データノード検索ー>コレクションクラスのロック解除ー>ノードの必要な箇所にロック->
ノード内の関連データをその部分にロックかけながらアトミックにupdate->
該当箇所のロックをはずしobserverに通知->各observerがおのおの独自の処理を行う。その際におのおの必要なロックをかける。
こんなんなんですが、確かに複雑になるのでなにかいいほうほうあれば参考にしたいです・・・
903デフォルトの名無しさん:2005/11/07(月) 01:30:59
ダウンロードボタンを押されると、ファイルを4つダウンロードしないといけないんですが、
どうしたらいいのか・・・・
904デフォルトの名無しさん:2005/11/07(月) 01:36:13
>>902
いっそのことDBでも使えよ

>>903
何言ってんだよ
905デフォルトの名無しさん:2005/11/07(月) 01:43:50
>>892
ども
906デフォルトの名無しさん:2005/11/07(月) 05:59:39
客からの要望でこんな話がありました。

画面からボタンを押下されると、画像ファイルを4つダウンロードさせたい。
ダウンロード先は、ユーザーが任意に選択させたい。
ダウンロード先を選ぶポップアップが、4回出ても構わない。

普通、1回だよねぇ。
907デフォルトの名無しさん:2005/11/07(月) 07:01:57
ポップアップが4回出ても構わないなら、ボタンを4つ押すのも構わないよな
908デフォルトの名無しさん:2005/11/07(月) 07:38:42
zipで圧縮すれば?
909デフォルトの名無しさん:2005/11/07(月) 08:14:17
C#とどう関係あるのか
910デフォルトの名無しさん:2005/11/07(月) 08:18:26
URLDownloadToFile を4度呼べば
911デフォルトの名無しさん:2005/11/07(月) 08:38:43
>907 ボタン4回押すのは嫌なんだそうです。1つのファイルから、ファイル名の末尾違いのデータを探せとのこと。

>908 画像ファイルを作成するのは、別システムになるので無理ぽです。

>909 JAVAで画像ファイルのダウンロード作ったことあるんですけど、複数ファイルをダウンロードを作ったこともありません。
    今回C#で開発されているシステムの機能追加として話が出てきており、C#なら簡単にできないものかと思いました。

>910 サンプル探していますが、なかなかないですね。探し方が悪いんでしょうかね。

皆さん、ありがとうございます。すいません。


912デフォルトの名無しさん:2005/11/07(月) 08:53:02
C#の話ならさ、普通にSystem.Net.WebClientとかWebRequest/WebResponse使えばいいじゃん
913デフォルトの名無しさん:2005/11/07(月) 09:14:40
>911
javaでやったように、c#に置き換えたらいいよ。
基本的にそこはかわらん。
914デフォルトの名無しさん:2005/11/07(月) 18:06:58
ボタンの入力可不可をコントロールしたくて、↓こんな書き方したらエラーになった。
文字列で「True」か「False」を設定しているんだが、
「Castできません」といわれる。
なんでーーー???

Enabled='<%# DataBinder.Eval(Container.DataItem, "dl_enabled") %>'

915デフォルトの名無しさん:2005/11/07(月) 19:09:26
Windowsコントロールライブラリで作成したユーザコントロールを
プラグインとして実行時に読み込んで貼り付けて使いたい場合、
どのようにすればこの機能を実現できますか?
ググってみたけど参考例がなかったので悩んでおります
916デフォルトの名無しさん:2005/11/07(月) 19:19:51
プラグイン用の基底クラスを、メインのアセンブリとプラグインのアセンブリ両方から参照。
メインはAssembly.LoadFrom辺りを使ってプラグインをロード、GetTypeでプラグインクラスを取得。
あとはActivator.CreateInstanceとかでインスタンス作って基底クラスにキャストして適当に。
917915:2005/11/07(月) 19:22:03
>>916
すばやい回答ありがとうございます
さっそく試してみます
918デフォルトの名無しさん:2005/11/07(月) 22:51:45
すいません、ちょっと質問です。

C#を始めようと思っています。
しかし、本を読んで一から勉強しているのですが、分からないことばかりで大変です。

C#を誰かに教えて欲しいのですが、そういう教室みたいなのないでしょうか?

919デフォルトの名無しさん:2005/11/07(月) 22:53:03
学生さん?
920デフォルトの名無しさん:2005/11/07(月) 23:03:35
>>918
本を読んでわからないなら誰かに教えてもらってもわからない可能性が高いと思われる。
ばくち同然のことに大金をかけたいというなら止めないが……。
921915:2005/11/08(火) 00:06:12
できたー!
ユーザコントロールのプラグイン機能完成ー!
>>916氏には大感謝であります!
922デフォルトの名無しさん:2005/11/08(火) 00:31:35
>>902
ワーカースレッドを作る。
メインスレッドはワーカースレッドへのリクエストのデータを追加するだけ。
ワーカースレッドは溜まってるリクエストを取り出して処理し、結果をコレクションとかに溜める。
メインスレッドはワーカースレッドの処理結果があったらそれを取り出し表示。
リクエストを溜めるコレクションと結果を溜めるコレクションにアクセスする部分だけlockで排他制御を入れる。
あとはAutoResetEventあたりでスレッド間でデータを入れた通知をする。

すべてメモリ内の計算なら1スレッドでひたすら処理するのが同期処理がいらないし効率いいと思うけど。
923デフォルトの名無しさん:2005/11/08(火) 01:05:42
>>906
ブラウザにFireFoxかOperaを使わせてMIMEMultipartなHTMLを返せば希望の動作になる。
924デフォルトの名無しさん:2005/11/08(火) 03:21:07
WebRequest webReq = HttpWebRequest.Create(@"http://www.yahoo.co.jp/");
webReq.Method = "GET";

WebResponse webRes = webReq.GetResponse();
Stream stream = webRes.GetResponseStream();
StreamReader sr =
new System.IO.StreamReader(stream, Encoding.GetEncoding("x-euc-jp"));
string str = sr.ReadToEnd();

Regex regex =
new System.Text.RegularExpressions.Regex(
@"^(.*)Ya(?<target>.+)oo.*",
RegexOptions.Compiled
);

Match m = regex.Match(str);
if (m.Success)
MessageBox.Show(m.Groups["target"].Value);
else
MessageBox.Show("無かったよ");

すみません質問です、任意のサイトから(この場合Yahoo!)から
任意の文字列(同:h)を正規表現を用い抽出したいのですが、Matchしないと言われます
例えばTextBoxからの入力等は期待通りに動いてくれるのですが…
どうか御指導お願い致します
925デフォルトの名無しさん:2005/11/08(火) 06:06:27
>>924
マッチしないのは . が改行にマッチしないから
@"Ya(?<target>.+)oo" じゃ駄目なん?
926デフォルトの名無しさん:2005/11/08(火) 07:09:47
ローカル変数で RegexOptions.Compiled とするのって安全なの?
メソッドが呼ばれるたびに正規表現がコンパイルされてリソース食いそうなんだけど
927デフォルトの名無しさん:2005/11/08(火) 07:17:23
>>926
流石にそこまで馬鹿ではなかろ。

> パフォーマンスを向上させるために、regex エンジンはすべての正規表現をメモリ上にキャッシュします。
> これにより、正規表現を使用するたびに解析し直して高水準のバイト コードを生成する必要がなくなります。
928881:2005/11/08(火) 08:43:54
>>922
それだと元のデータ部に対してはアクセスできるスレッドはワーカースレッドだけになりますよね。
データを読み取りたい側は必要なオブザーバーを作ってそれに必要な参照処理させて別データを取りその別データに対してのみ参照側はアクセスすると。
このデータ部がデータベースのようなものだとするとデータベースを参照側は直接見れないってことになりますよね。
スレッドロックのことだけを考慮すればそれもありかもしれないですが、なんかしっくり来ません・・・
929デフォルトの名無しさん:2005/11/08(火) 15:02:17
SharpZipLibでFDDに圧縮中に容量オーバーしたら
Closeメソッドの中でFinishメソッドを呼んでいるので例外が発生して閉じることが出来ません。
これってバグかな?
930デフォルトの名無しさん:2005/11/08(火) 17:45:17
>>925
有難う御座います、出来ました
931デフォルトの名無しさん:2005/11/08(火) 19:52:48
画像を自由変形させるのって標準の機能でできるのあります?
(台形にしてちょっと回転したりとか)
ワールド変換とか調べてみたけど単純な回転とかスケーリングとかしかわからんかった・・
932デフォルトの名無しさん:2005/11/08(火) 20:34:21
>>931
System.Drawing.Drawing2D.Matrix でいろいろ出来た気がする。

でも、Matrix のプロパティとか使って設定できるのは、
平行移動、回転、縦横定数倍のみ。

原理的には任意のアフィン変換ができるんだけど、
台形にしてとかは、行列の知識がないときついかも。
933デフォルトの名無しさん:2005/11/08(火) 21:09:22
>929
FileStreamのバグだね。
Closeする前に内部に持つキャッシュを書き込もうとするので容量不足で例外が起きてCloseできず例外が出る。
DisposeもCloseを呼ぶので同じ。
そのまま閉じずに放置してもGCが動くとDisposeが呼ばれて例外でアプリが落ちる。
容量不足が発生するようなメディアに直接書き込まないとか代わりにAPIにするかしか回避できない。

まだ試してないが、2.0では直ってて欲しいな。
934デフォルトの名無しさん:2005/11/09(水) 02:44:03
935デフォルトの名無しさん:2005/11/09(水) 03:22:53
というか、Visual Studio 2005が正式リリースした
英語版だけどな
936デフォルトの名無しさん:2005/11/09(水) 07:50:51
.NET Framework 2.0がMicrosoftUpdateに来てる
937デフォルトの名無しさん:2005/11/09(水) 10:00:54
>>933
レスありがと〜

テンプディレクトリに書き込んで容量チェックしてから
コピーすることにしました。
938デフォルトの名無しさん:2005/11/09(水) 11:53:26
>>934
それは1週間ぐらい前からしてただろ
939デフォルトの名無しさん:2005/11/09(水) 14:03:54
Visual Studio .net 2005 の日本語ベータ版について質問
あれって無料っぽいけど使用できる期間とか限られてるの?
940デフォルトの名無しさん:2005/11/09(水) 14:09:52
>>939
無制限
後日発売されるものと同じ内容
941940:2005/11/09(水) 14:13:15
スマン、無制限は嘘
製品版がでたらすみやかに導入しろという条件が規約にある
942デフォルトの名無しさん:2005/11/09(水) 14:23:40
ウエブサービスで共通で使うインスタンスってどのタイミングで誰がnewするの?
格納場所はWebService#Applicationでいいよね?
lock(Application){
  if(Application["key"]==null])
    Application["key"]=new String("")
}
か?

943デフォルトの名無しさん:2005/11/09(水) 14:40:49
>>941
何日以降は使えない、みたいな機能制限があった気がしなくもない。

>>942
ずっと使いたいんならGlobal.asaxでも作ってApplication_Startのときにやったら?
944デフォルトの名無しさん:2005/11/09(水) 15:03:18
>>942
そんなもんがありましたか。ありがとう。
945デフォルトの名無しさん:2005/11/09(水) 15:35:07
>>939
ttp://itpro.nikkeibp.co.jp/article/NEWS/20051108/224154/
急ぎじゃないならもう少し待ってみるのもいいかもよ
946デフォルトの名無しさん:2005/11/09(水) 16:17:57
VS.NET Expの一年の期限て何の期限?
一年後にはIDEが起動しなくなる?
それともダウンロードを中止するだけ?
947デフォルトの名無しさん:2005/11/09(水) 17:04:02
>>946
ライセンスの取得が出来ないんじゃない?
948デフォルトの名無しさん:2005/11/09(水) 18:54:05
サーバーへ接続するときに、サーバーの応答がなかったりサーバーが存在しない場合、
20秒まで待機するようになっているのですが、この時間を短く設定する方法はありますか?
設定できれば有難いのですが、やはり、「他で時間を計りながら、時間が経てば
スレッドの外からクローズさせる」 という方法になるんでしょうか。
949デフォルトの名無しさん:2005/11/09(水) 19:18:42
>>948
何のサーバにどうやって接続しようとしているのか説明が無いと誰も答えられないだろうな
950デフォルトの名無しさん:2005/11/09(水) 19:27:39
DataSourceを設定したSystem.Windows.Forms.ListBoxを
複数選択にしたとき、選択された全ての項目のSelectedValueを
配列かなんかで取得できないでしょうか?
いまはSelectedItemsを1個1個キャストしてます。。。
951デフォルトの名無しさん:2005/11/09(水) 19:54:49
>>949
じゃあ質問の仕方を変えましょう。
pingを作るとき任意の時間でタイムアウトさせるにはどうすればできますか。
952デフォルトの名無しさん:2005/11/09(水) 20:20:17
SocketOptionNameにConnectTimeoutはないんだよな。
まあ、外部スレッドというかSystem.Timers.Timerで監視というのがいいんじゃないか。
Socketの派生クラスを作って実装を隠蔽すれば使い回しもできる。

>>950
ないな。
メソッドにしてしまえば書くのは一カ所で済むだろ。
953デフォルトの名無しさん:2005/11/09(水) 20:34:33
>>951
どうやって ping を打ってるのか分からなきゃ、答えようが無いな。
954デフォルトの名無しさん:2005/11/09(水) 21:05:04
>>940-941
トンクス
ならDLは止めといた方が無難だね
955デフォルトの名無しさん:2005/11/09(水) 21:14:15
>>952
やはり任意の時間で接続をタイムアウトさせるとなると、他で時間を計るしかないんですね。
ありがとうございました。

>>953
私は、“どうやって” かは限定してないんです。
「これなら接続のタイムアウトが任意に設定できる」というなら、
それでやるつもりですから。
956デフォルトの名無しさん:2005/11/09(水) 21:15:34
プロパティってカプセル化の観点からは使わない方が良い?
publicで変数にアクセスしているような感じだし
957デフォルトの名無しさん:2005/11/09(水) 21:25:03
>>956
訳わからん。
プロパティってまさに状態のカプセル化だと思うのだが。
958デフォルトの名無しさん:2005/11/09(水) 21:32:03
public int XXX
{
 get
 {
 }
 set
 {
 }
}

なんとなく違和感があるんだ・・・
959デフォルトの名無しさん:2005/11/09(水) 21:37:34
昨日始めたばっかなんだけど、参考になりそうなサイトみて文字を
表示するプログラムみたいなのをメモ帳で書いてみたんだが、いざ保存すると
sample.cs と書いているのに
sample.cs.txt と直されてしまいます..

ご存知の方、解決法を教えていただきたい。
960デフォルトの名無しさん:2005/11/09(水) 21:38:49
>>959
メモ帳を使わない。
961デフォルトの名無しさん:2005/11/09(水) 21:39:42
構文に違和感があるって程度だったらそれは気のせいだ。
962デフォルトの名無しさん:2005/11/09(水) 21:40:13
おっと、>>961>>958宛て。
963デフォルトの名無しさん:2005/11/09(水) 21:40:33
名前を付けて保存するときにファイル名を""でくくる。
が、他のフリーのエディタ使うのを薦める。
964デフォルトの名無しさん:2005/11/09(水) 21:42:39
えー、プロパティはカプセル化の観点からしたら使うべきである。
965デフォルトの名無しさん:2005/11/09(水) 21:43:12
新規テキストファイルの名前を sample.cs に変えてから、TeraPad で開いてるなぁ俺は。
966デフォルトの名無しさん:2005/11/09(水) 21:43:55
>>959
保存するときにファイルの種類で
「すべてのファイル」を選択する
967デフォルトの名無しさん:2005/11/09(水) 21:44:52
プロパティは、カプセル化というか情報隠蔽だな。どっちでも良いんだけど。

プロパティはメソッドの別名でしかないから、
ぶっちゃけメソッドへのアクセスと記述上以外の違いは無いし。
968デフォルトの名無しさん:2005/11/09(水) 21:49:53
>>960>>963
おぉ。スバライな。無事変換できたぜ
どうもッス
969デフォルトの名無しさん:2005/11/09(水) 22:00:27
string s = null;もしくはHashtable h = null;をそれぞれメンバに持つ
クラスのインスタンスを作成したとき、メモリの消費は異なりますか?
メンバのインスタンスを作成するまでは差はないと考えていいのですか?
970デフォルトの名無しさん:2005/11/09(水) 22:01:51
差は無いと考えて良いと思うけど、そんなに気になる?
971デフォルトの名無しさん:2005/11/09(水) 22:04:28
一体そのインスタンスを何万個作るんだろう。
972デフォルトの名無しさん:2005/11/09(水) 22:11:35
nullのうちは変わらない
973デフォルトの名無しさん:2005/11/09(水) 22:36:14
インスタンスのサイズはメンバ変数の個数のみによって変わるってこと?
っていうかインスタンスを大量に作成すること自体が愚かな行為
なんでしょうか?(作成自体のオーバーヘッドが大きいとか?)
出直してきます。レスありがとうございました。
974名無しさん♯:2005/11/09(水) 22:57:50
次スレです。( ゚д゚)ノ
http://pc8.2ch.net/test/read.cgi/tech/1131544541/l50
975デフォルトの名無しさん:2005/11/09(水) 23:03:39
相談:38歳主婦

string[] myArray = new string[0];

添え字0って、何か役に立つんでしょうか?
976デフォルトの名無しさん:2005/11/09(水) 23:06:02
>>975
添え字0は、
string[] myArray = null;

string[] myArray = new string[1] { "hoge" }
のどっちと近いと思う?
977デフォルトの名無しさん:2005/11/09(水) 23:12:45
回答者は態度を明確に示せ
978デフォルトの名無しさん:2005/11/09(水) 23:14:02
>>977
じゃあ氏ね
979デフォルトの名無しさん:2005/11/09(水) 23:14:07
>>975
何か役立つって言われてもどう答えていいのやら…

サイズ0の配列の意味って感じかな?
配列がnull参照に比べるといろいろ楽だよ
980デフォルトの名無しさん:2005/11/09(水) 23:31:42
string変数にnull入れずに空文字入れるようなもんか?
981デフォルトの名無しさん:2005/11/09(水) 23:38:01
そんなもんだな。
982デフォルトの名無しさん:2005/11/09(水) 23:43:07
foreach (string name in GetNames())
とかできるのが楽。
nullが返る可能性があるとなると一旦ローカル変数に代入してnullチェックってことになるし。
983デフォルトの名無しさん:2005/11/10(木) 00:01:26
「配列を返すプロパティ/メソッド」って混乱の元だよな。
984デフォルトの名無しさん:2005/11/10(木) 01:20:20
> 相談:38歳主婦
> 相談:38歳主婦
> 相談:38歳主婦
> 相談:38歳主婦
985デフォルトの名無しさん:2005/11/10(木) 02:00:31
traceroute機能ってどうやって実現したら良いの?
pingは宇宙仮面のサイトにサンプルコードがあったけど、
tracerouteは無かったのでどうしたら良いのか悩んでいるですが・・・
986デフォルトの名無しさん:2005/11/10(木) 02:17:34
TTLを順番に大きくしていくだけさ
987デフォルトの名無しさん:2005/11/10(木) 08:52:32
public interface IHoge {}
public class Hoge : IHoge {}

public class Foo<T> {
    public Foo(T value) {
        this.value = value;
    }
    private T value;
    public static implicit operator Foo<T>(T t) {
        return new Foo<T>(t);
    }
}

public static void Main() {
    Hoge hoge = new Hoge();
    Foo<Hoge> a = hoge;
    Foo<IHoge> b = hoge;
    Foo<IHoge> c = (IHoge)ihoge;  // コンパイルエラー
}

最後のがかなり納得できない。
インターフェイスとのキャスト演算オーバーロードが定義できないのが原因なんだけど。
988デフォルトの名無しさん:2005/11/10(木) 09:01:59
>>987
ihoge なんて変数は存在しないぞ
989デフォルトの名無しさん:2005/11/10(木) 09:27:20
あ、ごめんそこはhogeで。
Foo<IHoge> c = (IHoge)hoge; // やっぱりエラー

COMオブジェクトのReleaseComObjectをIDisposableでやって貰おうと思ったんだけど、
インターフェイスを暗黙にキャストできないとなると面倒で……。
990デフォルトの名無しさん:2005/11/10(木) 11:16:15
public static void Using<T>(T comObj, Action<T> action) {
    try {
        action(comObj);
    }
    finally {
        Marshal.ReleaseComObject(comObj);
    }
}

private void MenuItem1_Click(object sender, EventArgs e) {
    Using((IHTMLDocument2)webBrowser1.Document.DomDocument, delegate(IHTMLDocument2 doc2) {
        Using(doc2.all, delegate(IHTMLElementCollection elements) {
            foreach (IHTMLElement element in elements) {
                Using(element, delegate(IHTMLElement elem) {
                    Console.WriteLine(elem.tagName);
                });
            }
        });
    });
}
こういう方向でいくことにしようか。
991デフォルトの名無しさん:2005/11/10(木) 22:26:20
学校の宿題で以下の問題が出たのですがわかりません。
どなたか教えてください。明日までに提出しなければいけないのです。。。
WindowsFormでつくります。
問)textBoxを一つとbutton一つをフォームに配置する。
textBoxの文字が「学校」のときはtrueを返し、それ以外はfalseを返すような
bool型のメソッドを作る。
buttonをクリックした時に以上のメソッドを適用するようなコードを実装せよ。
なお、buttonをクリックした際に、trueの場合は以下のメッセージを表示させる。
MessageBox.Show("あなたは学校と入力しました。")

なにがなんだかさっぱりです。教えてください。
992デフォルトの名無しさん:2005/11/10(木) 22:37:44
宿題は自分でやれ。
993デフォルトの名無しさん:2005/11/10(木) 22:44:34
いまどきって授業でC#やってんの?
994デフォルトの名無しさん:2005/11/10(木) 22:51:18
>>991
ここは宿題スレじゃないよ
using System.Windows.Forms;
public class MainClass {
    public class MainForm : Form {
        TextBox textBox; Button button;
        public MainForm() {
            const int width = 150;
            this.SuspendLayout();
            textBox = new TextBox();
            textBox.Location = new System.Drawing.Point(0, 0);
            textBox.Size = new System.Drawing.Size(width, textBox.PreferredHeight);
            button = new Button();
            button.Location = new System.Drawing.Point(0, textBox.Bottom);
            button.Size = textBox.Size;
            button.Click += new System.EventHandler(button_Click);
            this.Controls.AddRange(new Control[]{textBox, button});
            this.ClientSize = new System.Drawing.Size(width, button.Bottom);
            this.ResumeLayout();
        }
        private bool is_gakko() {
            return textBox.Text == "学校";
        }
        private void button_Click(object sender, System.EventArgs e) {
            if (is_gakko())
                System.Windows.Forms.MessageBox.Show("あなたは学校と入力しました。");
        }
    }
    public static void Main() {
        Application.Run(new MainForm());
    }
}
995991:2005/11/10(木) 23:12:25
>>992
ごめんなさい。。。分かってはいるのですが単位とらないとやばいんです…。

>>93
選択でCかVBかC#を選べます。

>>94
ありがとうございます!できました。
996デフォルトの名無しさん:2005/11/11(金) 03:42:24
>>995
お前それで「できた」っていうなよ。コピペしただけだろ?
997デフォルトの名無しさん:2005/11/11(金) 09:49:14
何言ってるんだ、ボタン貼り付けたりFormのサイズ換えたり大変なんだよ!!
998デフォルトの名無しさん:2005/11/11(金) 11:04:51
もっと激しいジェネリックを!
999デフォルトの名無しさん:2005/11/11(金) 13:20:06
1000デフォルトの名無しさん:2005/11/11(金) 13:20:54
( ´ー`) 1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。