C♯相談室 Part31

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C♯相談室 Part30
http://pc8.2ch.net/test/read.cgi/tech/1141448072/

過去スレは>>2-5あたり。
2デフォルトの名無しさん:2006/04/15(土) 13:33:51
3デフォルトの名無しさん:2006/04/15(土) 13:34:23
4デフォルトの名無しさん:2006/04/15(土) 13:36:48
5デフォルトの名無しさん:2006/04/15(土) 13:43:38
1000 名前:デフォルトの名無しさん[sage] 投稿日:2006/04/15(土) 13:43:06




          次スレ以降、>>713は書き込み禁止
6デフォルトの名無しさん:2006/04/15(土) 13:46:34
>>1

>>5
ワロタ

DAT落ち、アンカー対策で一応

713 デフォルトの名無しさん sage 2006/04/09(日) 16:44:07
なぜフォーム上のコントロールのイベントがすべてフォームクラスに記述されるんでしょうか?
それぞれのイベントはそれぞれのコントロールで処理したほうがいいように思うんですが
コントロールが増えてくるとそれをすべてフォームクラスで中継して
データを参照したり受け渡ししたり変換したり、表示するように命令したりなどしなければならないのがすごく煩わしいです
7デフォルトの名無しさん:2006/04/15(土) 14:01:58
ふらっとC♯(初心者用) Part7
http://pc8.2ch.net/test/read.cgi/tech/1141458468/

関連スレとしてあげておくべきだったかな
8デフォルトの名無しさん:2006/04/15(土) 19:32:23
frm1から
frm2.Show();
で表示したfrm2からfrm1へイベントや変数などを送るにはどうすればいいでしょうか?
frm2は閉じないでずっと開いた状態です。
9デフォルトの名無しさん:2006/04/15(土) 19:41:48
frm1のポインタをfrm2にわたす。
以上。
10デフォルトの名無しさん:2006/04/15(土) 19:51:34
frm2 にイベントを用意する。
118:2006/04/15(土) 20:30:37
>>9
そんあことしてだいじょうぶなのかな?
なんか怖い><
12デフォルトの名無しさん:2006/04/15(土) 20:49:09
リモートデスクトップやターミナルサービスで接続された元のPCのホスト名やIPアドレスを
取得するにはどうしたらいいのでしょうか?

接続されるサーバをAとして、ユーザはマシンBやマシンC・・・などから
ターミナルサービス、リモートデスクトップ経由でサーバAに接続し、
サーバAにインストールされたアプリケーションを使用します。

そのアプリケーションで、接続元のホスト名やIPアドレスを表示したいのです。
138:2006/04/15(土) 20:51:22
>>12
WMI
1412:2006/04/15(土) 20:54:17
>>13
情報ありがとうございます。

WMIというものが何なのか勉強不足でわかりません。
ちょっとネットで調べたところ、API?なのでしょうか?

出来れば、どの関数を使えばいいのか教えて頂けませんか?

※WMI リモート 接続元 ホスト名 などのキーワードを組み合わせてググってみたのですが
 見当たりませんでした。
15デフォルトの名無しさん:2006/04/15(土) 20:54:27
>>12
ターミナルサービスAPI
16デフォルトの名無しさん:2006/04/16(日) 00:11:21
前スレでButtonをControls.AddしてControls.Removeしたとき
Disposeされてない気がするとか言っていたものです。
結局、ButtonはDisposeされることが確認できたのですが、
WebBrowserコントロールはされないようです。
ヘルプにはリソースへの負荷の大きいから使用を終えたら、
必ずDisposeメソッドを呼び出してくださいと書いてあります。
でも実際は、WebBrowserコントロールのDisposeメソッドが、
コントロールを生成したスレッドと同じスレッドでしか
呼び出すことができないことが原因のようですね。
ファイナライザはコントロール生成したスレッドと同じスレッドでは呼ばれないので・・・
17デフォルトの名無しさん:2006/04/16(日) 01:02:16
>>11
ポインタというか参照ですよ。Form2.OwnerFormがfrm1のはずだから、
Form1ありきならForm1にキャストすればfrm1のメンバー見放題。
Form1以外からも使うForm2ならば、逆にForm1でprivate Form2 frm2を
作って、frm2がイベントを起こせば、frm1からfrm2のメンバー見放題。
18デフォルトの名無しさん:2006/04/16(日) 01:09:12
>>16
全体に意味不明なのだが。

> WebBrowserコントロールはされないようです。
どうやって確認したんだ?
198:2006/04/16(日) 01:54:08
>>17
そんあことしてあっちこっちのformで巨大なメモリ確保されたり
コード重複いっぱいしたりしないの?
頭いいのねどっとねっとって
20前スレ981:2006/04/16(日) 02:07:34
前スレ>>983
>WM_NOTIFY は親フォームに送られるって点は OK ?
フォームで送信を見張ってたが一向に送られてくる気配がない。
試しにテスト用のプロジェクトを作って実験したら成功。そこでやっとわかった。
リストビューがパネルに乗ってたのが原因だったんだ。
直接の親コントロールで受けてやらなきゃだめだったのね。

>>962>>983のアドレスの中の人なのかな。
おー、自分のことだ、とか思って変な感じ。でもすごく参考になった。感謝。
21デフォルトの名無しさん:2006/04/16(日) 10:06:52
>>8
できれば>>10のやり方のほうがいい
form1以外からでも使えるようになる
228:2006/04/16(日) 10:55:05
>>21
デリゲートっていうのを使うのかにゃ?
調べてみたらと〜ってもむずかしそうにゃん><
23デフォルトの名無しさん:2006/04/16(日) 11:02:12
>>22
ふらっと行け。きもい。
24デフォルトの名無しさん:2006/04/16(日) 11:11:40
イベントとデリゲートは密接な関係にある。
イベント発生元からイベントハンドラに対して情報を伝えたい場合、
またはイベントハンドラからイベント発生元に対して情報を伝えたい場合などは、
独自のイベントハンドラをデリゲートとして定義してやらなければならないな。

具体的には、
・情報のやりとりを行うために、独自のEventArgsをクラスとして定義する
・object型の引数senderと、独自のEventArgs型の引数eの2つを引数とするEventHandlerデリゲートを定義する。
・独自のEventHandler型のイベントを定義する
・適切なタイミングでイベントを発生させる。

簡単に言うとこんな感じだが、ちゃんと勉強することを勧める。
25デフォルトの名無しさん:2006/04/16(日) 11:14:17
考え方は難しくないけど、構文がややこしいよね
268:2006/04/16(日) 11:19:21
>>24
デリゲート。もりもーふぃずむ><
むずかしいけどがんばってみるにゃん!
ありがとにゃん
27デフォルトの名無しさん:2006/04/16(日) 11:24:38
モリモーフィズムじゃなくてポリモーフィズムだw
つーかポリモーフィズムは全く関係ない話だぞ。

最初は難しく思えるが、理解すればそんなに難しい話ではないとわかる。
頑張れ
2816:2006/04/16(日) 12:01:46
>>18
private class MyBrowser : WebBrowser {
 protected override void Dispose(bool disposing) {
  // Disposeされればここにくるはず
  Debug.WriteLine("disposed." + disposing);
  base.Dispose(disposing);
 }
}
MyBrowser myBrowser = null;
// 適当なボタンのクリックイベント
private void button_Click(object sender, EventArgs e) {
 if (myBrowser == null) {
  myBrowser = new MyBrowser();
  Controls.Add(myBrowser);
 } else {
  Controls.Remove(myBrowser);
  myBrowser = null;
  GC.Collect(); //<- ここでGCしてもMyBrowserのDispose()が呼ばれない
 }
}
WebBrowserではなくButtonコントロールだとDisposeは呼ばれます。
29デフォルトの名無しさん:2006/04/16(日) 12:52:00
アプリの終了まで内部的な参照が保持されるってだけだよ。
これは COM との関係があるのでいかんともしがたい。
ファイナライザが呼び出されない訳じゃないし。

そして Dispose() を呼べと言うのはコンポーネントの利用者に対して言ってるんであって
システムに向けて言ってるんじゃない。
30デフォルトの名無しさん:2006/04/16(日) 13:30:36
Javaをちょっとやっただけなのに、C# Asp で開発したシステムを本番機に乗せろと言う命令を受けました。
正直開発にも関わっていませんし、何をどうしたら良いのかさっぱりわかりません。

本番機には.NETは入っていません。
リビルドしたプロジェクト全部(.cs、.aspx)を本番機にコピーして動かしてみたんですが、
マシンを再起動しても、IISの再起動をしても、ASPサービスの再起動をしても、Global.aspxが動きません。

プロジェクトの配置の仕方が間違っているのでしょうか?
(結合テストマシン(.NETインストール済)と全く同じ構成)

教えてください。
31デフォルトの名無しさん:2006/04/16(日) 13:33:38
.NET がないと ASP.NET は動かない。
そもそも C# では ASP を開発できない。ASP.NET のみ。
32デフォルトの名無しさん:2006/04/16(日) 13:34:23
>本番機には.NETは入っていません。

.NET Frameworkが入っていないのか?それじゃ動かんわ。
33デフォルトの名無しさん:2006/04/16(日) 13:34:35
>>30
Javaで作ったアプリやらサーブレットを動かすにはWebサーバとかJDK(JRE)が必要だったはず。

.NETで作ったアプリを動かすにも.NETFrameworkが必要。(WebサーバはIISが入ってるだろ?)

まずは、本番機に.NETFrameworkをインストールしないと何も始まらない。
(フレームワークのバージョンは確認しておけよ)
34デフォルトの名無しさん:2006/04/16(日) 13:40:31
.NETって何?っていうNEがいるぐらいだもんなぁ・・・
35デフォルトの名無しさん:2006/04/16(日) 13:49:35
すいません。
「.NETが入っていない」のはMicrosoft Visual Studio .NETのことで、.NET Frameworkは入っています。
静的HTML → Global.aspx → ログインページ → 業務ページ
に遷移したいのです。ログインページはきちんと動いていて、DBの接続等も正常です。
ただ、Global.aspxが動いていないと、次の画面遷移情報を取得できていないのでこけてしまいます。

ググって見ましたが、情報が多すぎるのとどれがWebの情報なのか見分けもつかなくて泣きそうです。
36デフォルトの名無しさん:2006/04/16(日) 13:51:24
まずは適当に ASP.NET の本一冊買って、そこに書いてるとおりにやってみるんだ
37デフォルトの名無しさん:2006/04/16(日) 13:59:19
この流れ、ネタとしか思えないんだけど...。
38デフォルトの名無しさん:2006/04/16(日) 14:10:04
あー、.NETとIISの入れた順番が悪いのかもしれん。
どっちかを先に入れなければいけなかった気がする。
39デフォルトの名無しさん:2006/04/16(日) 14:13:36
何にも知らないんで、そう思うかも知らないですけど。ネタじゃないです。
問題は、Global.asaxは、いつ動くかどうやったら動くか。
.csは本番機に必要なのかどうか、dllだけでいけるのかどうか。
の2点だなぁと思いました。

明日動かなさいといけないんです。

40デフォルトの名無しさん:2006/04/16(日) 14:57:50
>38

入れた順番はわからないんです。
どちらが先がよかったんでしょうか?
41デフォルトの名無しさん:2006/04/16(日) 15:00:06
IIS->.NET

.NET を先に入れちゃったんなら、reg_iis.exe か何かを使う必要あり。
42デフォルトの名無しさん:2006/04/16(日) 15:02:07
IISを先にインストールしなければいけないみたいだな。
IISを後からインストールした場合の対処法がここに載ってたから試してみて。
ttp://park16.wakwak.com/~mimi/dotnet/network/install_iis_after_sdk.html
43デフォルトの名無しさん:2006/04/16(日) 15:12:03
ありがとうございます。やってみます。
44デフォルトの名無しさん:2006/04/16(日) 21:39:20
>>39
Global.asaxは定義しているイベントによって呼ばれるタイミングは違う。
動かすだけなら*.csは不要。dllとaspxは必要だけど。
まぁスレ違いだが。
45デフォルトの名無しさん:2006/04/16(日) 22:05:28
ところで、デリゲートってイベントハンドラとかマルチスレッドとか以外
使ったことないんだけど、みんなそんなもん?
46デフォルトの名無しさん:2006/04/16(日) 22:11:23
>>45 自力でsortプログラム作るときとか・・・?(´・ω・)
47デフォルトの名無しさん:2006/04/16(日) 22:14:22
正規表現置換の MatchEvaluator とか。
2.0 になってソートとかに匿名メソッド使ったり。
48デフォルトの名無しさん:2006/04/16(日) 22:16:26
FindAll とか RemoveAll は便利だお
FindAndRemoveAll ってのがあればもっと便利だお
49デフォルトの名無しさん:2006/04/16(日) 22:26:38
そーいや匿名メソッドのHelloWorldを作ったことがあるな。

Personクラスを作って、その中に
public void Greeting(OutputDelegate output_method)
{
output_method(this.message);
}
って感じのメソッドを用意した。

OutputDelegateは
public delegate OutpuDelegate(string message);

んで、エントリーポイントは
static void Main()
{
Person person = new Person();
person.Greeting(delegate(string message){Console.Writeline(message);});
}
50デフォルトの名無しさん:2006/04/16(日) 22:27:55
HttpRequest#GetResponse だけで10秒強かかるんですけど、なんでこんなに遅いんですか?
当方、.NET Framework 2.0 WinXP SP2 火壁は OFF の状態です。


HttpWebRequest request = (HttpWebRequest) WebRequest.Create("http://pc8.2ch.net/tech/dat/1145075577.dat");
request.Method = "HEAD";
request.Timeout = TIMEOUT;
request.UserAgent = UserAgent;
using (HttpWebResponse response = (HttpWebResponse) request.GetResponse()) {  // ここ
    // ほげほげ
}
51デフォルトの名無しさん:2006/04/16(日) 22:39:42
>>45 呼び出しをコマンドとして遅延させて呼び出したりとかに使ってる。
52デフォルトの名無しさん:2006/04/16(日) 22:46:25
>>50
環境依存の何かだろう。
私んとこじゃ問題ないし。
真っ当なレスポンスは返ってきてるの?
5350:2006/04/16(日) 22:51:24
まっとうなレスポンスは帰ってきます。タイムアウトで弾かれなければ。
というか……


.NET Framework 1.1 でためしたら、一瞬で帰ってくるようになりました orz
おそらく 2.0 のどっかが悪いと推測……なんなんだろこれ (;´Д`)
54デフォルトの名無しさん:2006/04/16(日) 22:54:12
1.1 と 2.0 で送っているパケットの中身を比べて報告頼むぜ
5550:2006/04/16(日) 23:00:45
パケットじゃないとおもう。どこのサイトに接続しても似たようなもんだから。
たぶんクライアント側がおかしいんだとおもうけど……詳細不明。しらべんのめんどくさくてごめん(;´Д`)
56デフォルトの名無しさん:2006/04/16(日) 23:02:35
考えられるのはデフォルトプロクシとか?
57デフォルトの名無しさん:2006/04/16(日) 23:23:21
俺もその現象に悩まされてる。
HttpWebRequest使ってるソフトを1.1->2.0にしたら
固まるようになった。
58デフォルトの名無しさん:2006/04/16(日) 23:34:54
C#を覚えるのに最適な本は何でしょうか?
1冊だけ教えてください。
59デフォルトの名無しさん:2006/04/16(日) 23:38:51
趣味で作っている2.0のプログラムだけれども何の問題もないなあ

HttpWebRequest req = WebRequest.Create("ひみつ") as HttpWebRequest;
CookieContainer cc = new CookieContainer();
cc.Add(new Cookie("ひみつ1-1", "ひみつ1-2", "/", "ひみつ1-3"));
cc.Add(new Cookie("ひみつ2-1", "ひみつ2-2", "/", "ひみつ2-3"));
req.CookieContainer = cc;
WebResponse res = req.GetResponse();
using(TextReader reader = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding("Shift_JIS"))) {
  //whileでループさせてReadLineで一行ずつ読む
}
60デフォルトの名無しさん:2006/04/17(月) 00:15:12
>>58
300の技
初めてプログラミングだったらこれ
オブジェクト指向など知らなくても、とりあえずこれを使いまわせば
それなりものが作れてよかった。

中級者なら、本に頼らなくても、いろんなサイトにオブジェクト指向や
デザインパターンの情報があるのでそれで食っていけたりする
中級者にお勧めはAdvanced Windowsなどかな
61デフォルトの名無しさん:2006/04/17(月) 00:27:47
.NET1.1なのか2.0のなのか、書籍のタイトル見ただけじゃ分からないのが多くて怖い
62デフォルトの名無しさん:2006/04/17(月) 00:35:35
Advanced WindowsってC#関連あるの?
63デフォルトの名無しさん:2006/04/17(月) 02:31:28
>>58
プログラミングまったくの初めてか、多少は経験ありかで、選択肢全然違ってくるし。
経験ありなら、こんなとこで聞いてるより、本屋で立ち読みして、自分のレベルと
好みに合ったやつを探したほうがいい。近所にまっとうな本屋がないような地域に
住んでるなら別だけど。
6458:2006/04/17(月) 11:00:38
PG経験者(VB1年)
ブランク4年
近くの本屋あまりC#の本なくて
不安に思ったので聞いてみたす
次の職場で使うかも

>>60
300の技lか、明日本屋行ってみてみるよ

シリーズ物、独習C#ってあるんだね、今調べた
これも候補かな
6560:2006/04/17(月) 11:12:39
>>64
独習C#おれも始めた頃に買ったけど結局全然使わなかったなぁ
ネットのいろんなサイトのほうがわかりやすかった
@ITって知ってるよね?
最初はそことヘルプの入門編見るだけで十分だと思うけど
がんばってくだはい
66デフォルトの名無しさん:2006/04/17(月) 12:04:17
>>64
VB使えるなら、ネットでC#の概念的な事を掴んだら、
「Visual C#.NET逆引き大全 500の極意」がお勧め。
C#は10冊以上買ったけどこれが一番実用的で多用している。
検索するより早い。これでわからないときは諦めてググってる。
ちなみに別途解説書を買って一度熟読した方がいい。
ただし解説書は好き好きだと思う。
67デフォルトの名無しさん:2006/04/17(月) 13:19:00
最近C#を始めたのですが、教えてください。
空のフォーム(Form2)を追加すると、自動的にForm2のインスタンスを格納する変数も、どっかに宣言されるのですか?
調べてみた範囲では、そういう宣言はみつかりませんでした。
それと、Form1はスタートアップ時に自動にインスタンスが生成されてフォームが表示されるわけですが、そのForm1の
変数はどこに記述されているのでしょうか。Program.csのApplication.Run(new Form1());をForm2にすると、変数
宣言してないのに、ちゃんとForm2がスタートアップ時に表示されたりして、わけわかめです。

どうも、そのあたりの変数も持ち方が謎なので、教えてください。
68デフォルトの名無しさん:2006/04/17(月) 13:23:11
>>67 書かれてるようにProgram.csのApplication.Run(new Form1());がForm1のインスタンスを生成して保持している(Applicationのなか)ところです。
Form2は追加しても暮らすが宣言されるだけでインスタンスはまた別のところに書く必要あり。
69デフォルトの名無しさん:2006/04/17(月) 13:56:58
>>68 おお、ありがとうございます
ApplocationRunの中で何やってるんだと定義ファイルを表示させようと、いろいろみたけど、結局できなかった( ´Д`)
Expressだからかもしれないけど、usingするライブラリのソースとかが存在するわけじゃないのでつね。

なんか明示的にインスタンス破棄しなくてもいいみたいだし、破棄せずに非表示のままフォームを持ち続けたり
するのに違和感が( ´Д`)
すべてスタートアップ時の親フォームから枝葉的にインスタンスが生成されるはずだから、フォームやインスタンスを
グローバルな変数なんかで持つ必要ないし、そんなインスタンスをいれる変数の宣言なんかもいらんってことなのかなぁぁ。

もうちょい勉強してみます。ありがとうございました。
70デフォルトの名無しさん:2006/04/17(月) 14:01:30
Application.Run(new Form1())って書くけど
ApplocationのRunって
Run(Form f){
 f.show();
 f.dispose();
}
って風にForm.Disposeよんでんのかな?
それとも「どうせプロセス終了するしどうでもいいや」ってことかな。
71デフォルトの名無しさん:2006/04/17(月) 15:41:02
>>70
> それとも「どうせプロセス終了するしどうでもいいや」ってことかな。
まさにこのとおり。
72デフォルトの名無しさん:2006/04/17(月) 15:53:13
>>30
フォルダもファイルも全部コピペで展開したならIISアプリケーションが設定されていないと思うんだけど
とりあえずこれ試してみ

チュートリアル : IIS における ASP.NET Web アプリケーションのルート ディレクトリの作成
http://msdn2.microsoft.com/ja-JP/library/ha2y9493(VS.80).aspx

今後のためにこのあたり一式読んどくと幸せになれるかも

ASP.NET と IIS の構成
http://msdn2.microsoft.com/ja-JP/library/ms178477(VS.80).aspx
73デフォルトの名無しさん:2006/04/17(月) 16:02:20
>>65>>66
トン

@ITはたまに利用してる
最近だとERPやSAPを調べた(時代遅れだ・・・)

おおまかに掴んだら逆引き大全買ってみまつ^ ^
74デフォルトの名無しさん:2006/04/17(月) 18:55:05
>>70
つーより考え方が逆だ。
そのRunは「渡されたFormが破棄されたらメッセージループを終了する」
ような実装。
75デフォルトの名無しさん:2006/04/17(月) 19:57:56
>>70
ShowDialog()の場合は呼び出し側でDisposeが必要だが、
Show()した場合はフォーム自身がDisposeするので不要。
Form.Closeの説明を見ればわかるけどモーダルとモーダレスで動作が違う。
76デフォルトの名無しさん:2006/04/17(月) 20:31:03
showしたら別スレッドになるからdisposeもそのスレッドでやれってことか。
77デフォルトの名無しさん:2006/04/17(月) 20:38:37
ならないよ
78デフォルトの名無しさん:2006/04/17(月) 23:31:17
Application Architecture for .NETの話題ってここでよろしい?
798:2006/04/18(火) 00:47:14
デリゲート調べたけどどうもやりたかったことと違うみたいデス
値を別クラスから受け取りたいとかじゃなくて
form1のメソッドを実行させたかっただけなんで>>17さんのやり方でいけましたー。
時間かかったけど、デリゲートも勉強できておりこーになれたお^^
ありがとーです。
80デフォルトの名無しさん:2006/04/18(火) 00:48:39
デリゲートでもできるし
81デフォルトの名無しさん:2006/04/18(火) 00:50:45
できるなぁ
828:2006/04/18(火) 01:13:08
ええーそうなの?
delegate void Show();

class Form1:Form
{
public void ShowHallow()
{
mbox("Hallow");
};
};

class Form2:Form
{
public static void Main()
{
Form1 frm1 = new Form1();

Show show = frm1.ShowHallow; // インスタンスメソッドを代入。

show();
}
こんな感じだと、新しくフォームのインスタンス作るからほんとの実体のform1には反映されないんじゃないの?
というか、デリゲートの記述ってすごくややこしい。
デリゲート使わないでこうしたほうがわかりやすいお^^;
Form1 frm1 = new Form1();
frm1.ShowHallow();
83デフォルトの名無しさん:2006/04/18(火) 01:26:40
デリゲートっつーかイベント。
public delegate void TextUpdatedEventHandler(object sender, TextUpdatedEventArgs e);
public class TextUpdatedEventArgs : EventArgs {
  public TextUpdatedEventArgs(string text) {
    this.text = text;
  }
  private string text;
  public string Text { get { return this.text; } }
}
public class Form1 : Form {
  // 略
  Form2 form2;
  private void showButton_Click(object sender, EventArgs e) {
    if (form2 == null || form2.IsDisposed) {
      form2 = new Form2();
      form2.TextUpdated += new TextUpdatedEventHandler(this.UpdateText);
    }
    form2.Show();
  }
  private void UpdateText(object sender, TextUpdatedEventArgs e) {
    this.textBox1.Text = e.Text;
  }
}
public class Form2 : Form {
  // 略
  public event TextUpdatedEventHandler TextUpdated;
  private void updateButton_Click(object sender, EventArgs e) {
    if (this.TextUpdated != null)
      this.TextUpdated(this, new TextUpdatedEventArgs(this.textBox1.Text));
  }
}
これで Form2 が Form1 を知っている必要が無くなる、
848:2006/04/18(火) 01:46:44
>>83
な、な、な、なるほど!(あんまわかってない^^;)
自作のイベントハンドラをデリゲートととして宣言して
Form2のイベントに追加してるわけですね!!(シッタカ)
こんなコードスイスイって書けるってすごいお^^;
>>82を書くのに30分ぐらい掛かった><
やりたかったのはそういうことだったんですぅ。
別フォームのイベントとリンクしたかったんです。
参考にさせて頂きます!ありがとう!
85デフォルトの名無しさん:2006/04/18(火) 08:25:32
Emit API について質問です。
http://members.jcom.home.ne.jp/1213687801/cs/reflection/reflection4.html

このページのソースを
 AssmblyBuilder#Save を追加
 アセンブリの生成モードを Run から RunAndSave に

と修正したのですが、Reflector for .NET で逆コンパイルしてもメンバが一切出てきません。
こういうものなのでしょうか?
86デフォルトの名無しさん:2006/04/18(火) 08:42:25
DefineDynamicModule で第一引数に AssemblyModule と同じ名前を、
第二引数に同じ名前.dll を。
Save で DefineDynamicModule の第二引数と同じ文字列を。
87デフォルトの名無しさん:2006/04/18(火) 11:34:47
なるほど。早速試してみます。
ありがとうございました。
88デフォルトの名無しさん:2006/04/18(火) 20:42:03
改めて自分の投稿を見て AssemblyModule って何なんだと一人つっこみ。
8985:2006/04/18(火) 21:30:03
>>88
私も何だろうと思い MSDN を見てみたのですが、載っていなかったので
ソース中の識別子か仮引数の名前だと思っていました…。

実際には、
 ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("TempModule", "Temp.dll");
 assemblyBuilder.Save("Temp.dll");
これでうまくいきました。
90デフォルトの名無しさん:2006/04/18(火) 21:56:07
現在メインフォームにユーザコントロールがあります。
ユーザコントロールにあるListView1に大量のListViewItem追加の処理を
BeginInvoke()のようにスレッドでやってますが処理中にメインフォームが固まり操作できなくなります。
処理中にメインフォームを操作したいです。誰かヒントをください。

以下ユーザコントロールのソースです。
メインフォームのボタンでDoDelegate()を呼びます。

public void DoDelegate()
{
Thread t = new Thread( new ThreadStart(DoDelegater));
t.IsBackground = true;
t.Start();
}
private void DoDelegater()
{
CountDelegater del = new CountDelegater(DoCountUp);
this.Parent.BeginInvoke(del, null);
}
private void DoCountUp()
{
for(int i=0; i<20; i++)
{
Thread.Sleep(200);
ListViewItem item = new ListViewItem(i.ToString());
this.listView1.Items.Add(item);
}
}
91デフォルトの名無しさん:2006/04/18(火) 22:07:20
>>90
Application.DoEvent
ListView.BeginUpdate 〜 EndUpdate

このあたり
92デフォルトの名無しさん:2006/04/18(火) 22:12:33
ちがったな。

Control.BeginInvoke は別スレッドを作らない。
非同期実行はデリゲートの BeginInvoke をつかえ〜
93デフォルトの名無しさん:2006/04/18(火) 22:14:12
ん〜。ごめん。ボロボロだわ俺。・゚・(ノД`)・゚・。

とりあえず >>91
94デフォルトの名無しさん:2006/04/18(火) 22:15:25
っていうか、非常に微妙なことやってるコードなんだな……。Thread の意味がない希ガス
95デフォルトの名無しさん:2006/04/18(火) 22:20:38
>>90
いくつか纏めて AddRange していくように汁

つか AddRange or BeginUpdate してやればコストなんて大したもんじゃないんだが
ListViewItem の Add する為だけに別スレッドから Invoke やるのはほぼ意味無いぜ
96デフォルトの名無しさん:2006/04/18(火) 22:49:05
>>91-95
ありがとうございます。無事解決です。
少しもっさり感がありますが、Application.DoEvents()をループ処理の中にいれたら動きました。
あってますよね?

動作ですが実際にはListViewItem作成時に他にクラス作ったりと重い処理が入ります。
最初はデリゲートのBeginInvokeを使っていたんですが、コントロールいじる場合は
コントロールのスレッドを使えと何処かに書いてあったので・・・
MSDN駆け巡っても解決できなかったんで情けないですorz

あと気になったのですがApplication.DoEvents()は一般的なやり方なのでしょうか?
97デフォルトの名無しさん:2006/04/18(火) 22:52:54
>>96
> Application.DoEvents()
やっつけコードではご用達。
98デフォルトの名無しさん:2006/04/18(火) 22:56:11
Sleepは必要ないし、デリゲートも必要ない。

this.listView1.BeginUpdate();
for (...) {
 ListViewItem item = ...;
 this.listView1.Items.Add(item);
 Application.DoEvents();
}
this.listViwe1.EndUpdate();

こんな感じ?
Application.DoEvents()はその前後で状態が変わることがあるから注意
99デフォルトの名無しさん:2006/04/18(火) 22:56:38
>>96
Thread.Sleep(200); 



for(int j = 0; j < 200; j++) {
    Thread.Sleep(1);
    Application.DoEvent();
}

にすれば暫定解決
100デフォルトの名無しさん:2006/04/18(火) 22:59:40
違うなぁ……。
やるならこう。

private void button1_Click(object sender, EventArgs e) {
    new Thread(new ThreadStart(AddItems)).Start();
}
private void AddItems() {
    AddItemCallback callback = new AddItemCallback(AddItem);
    for (int i = 0; i < 20; i++) {
        Thread.Sleep(200);
        ListViewItem item = new ListViewItem(i.ToString());
        this.Invoke(callback, new object[]{item});
    }
}
private delegate void AddItemCallback(ListViewItem item);
private void AddItem(ListViewItem item) {
    this.listView1.Items.Add(item);
}

>>90のコードじゃ、for 内の丸ごと Invoke させてるわけで、つまりそれ全部メインスレッドで動いちゃってる。
正しくは Invoke させるのは Items.Add だけ。
101デフォルトの名無しさん:2006/04/18(火) 23:01:08
>>98-99
Sleep は「重い処理」の代わりだと思ふ
102デフォルトの名無しさん:2006/04/18(火) 23:15:27
最近デリゲートって流行ってのか?
103デフォルトの名無しさん:2006/04/18(火) 23:18:02
串だっけ?
104デフォルトの名無しさん:2006/04/18(火) 23:35:16
96です。

>>97-101 レスありがとうございます。
>>100さんの方法で実行してみましたが軽快な動作です。
必要なところだけスレッドにすれば良いということですね。勉強になりました。
105デフォルトの名無しさん:2006/04/19(水) 00:09:33
new Thread(new ThreadStart(hoge));として開始した関数hoge()の中で
無限ループに入っていて、そのループの終了条件がグローバルな
System.Booleanになっているソースコードをよく見かけるのですが、
これはSystem.Booleanがスレッドセーフだから出来ることなのですよね?
106デフォルトの名無しさん:2006/04/19(水) 00:19:19
そんなソースみたことないけど
読んでセットってな動作をしないからスレッドセーフでなくても問題なし
107デフォルトの名無しさん:2006/04/19(水) 00:20:06
はあ?
108デフォルトの名無しさん:2006/04/19(水) 00:21:41
>>105
それ、バグでそ。まず症状が出ないと思うが。
Monitor、Interlockedあたり使わないとスレッドセーフにはならん
109デフォルトの名無しさん:2006/04/19(水) 00:30:19
スレッドセーフの意味を明確にしようぜ。
Monitor、Interlockedはアトミックを保障するためのもの。
boolの読み出し単体処理はアトミックだから上記は不要。
ただしvolatileになってないのなら(もしくはMemoryBarrier等してないのなら)
最新の値を読み取れるとは限らない。
よって問題はある。
110デフォルトの名無しさん:2006/04/19(水) 00:32:01
ひとつのスレッドからしか設定せず他のスレッドからは読み取りしかしないならロックする必要ないと思うのだが。
while(stop==false){
  作業
}
じゃないのか?
111デフォルトの名無しさん:2006/04/19(水) 00:32:15
あ、Monitor使ってればvolatileになるからそれでもいいといえばいいな。
Interlockedは意味なしってかどう使うんだよ。

112デフォルトの名無しさん:2006/04/19(水) 00:33:35
別スレッドから書き込んだ値を即座に読み出せるとは限らない。
レジスタなどにキャッシュされて永遠に読み出されない可能性もある。
最適化によってただの定数になる可能性もあるかもしれない。
113105:2006/04/19(水) 00:38:24
レスありがとうございます。

>>108
.Net 2.0 SDK ドキュメントのSystem.Boolean構造体のところに
スレッド セーフ
この型は、マルチスレッド操作に対して安全です
と書いてあるので、もしかして大丈夫なのかな、と思ってしまいました。

>>106-107
次のサイトなどです。
TCP/IPソケットの接続待ち(TcpListener)
ttp://www.athomejp.com/goldfish/vcs/tcplistener.asp
Re: C#でのマルチスレッドサーバーの実装方法 - theSpoke.net
ttp://thespoke.net/forums/810538/ShowPost.aspx
114デフォルトの名無しさん:2006/04/19(水) 00:40:35
>>105
根本的に、オブジェクト指向的に間違っている。
115デフォルトの名無しさん:2006/04/19(水) 00:43:08
オブジェクト指向的にはどうすればいいのかね?
あ、グローバルが気に入らんてことか。
116デフォルトの名無しさん:2006/04/19(水) 00:46:10
Threadの替わりにBackgroundWorker使おうぜ
117デフォルトの名無しさん:2006/04/19(水) 00:55:52
>レジスタなどにキャッシュされて永遠に読み出されない可能性もある。
>最適化によってただの定数になる可能性もあるかもしれない。

ほんまかいな
118デフォルトの名無しさん:2006/04/19(水) 01:24:55
>>109
ああ、そうやすまん、アトミック保証や。
volatileつけれってことやな。

>>113
>この型は、マルチスレッド操作に対して安全です
これは同一オブジェクトに対して同時に操作しても大丈夫、の意。
119デフォルトの名無しさん:2006/04/19(水) 18:08:40
先生!変数に代入したのにレジスタにキャッシュされて代入が反映されません!
120デフォルトの名無しさん:2006/04/19(水) 19:55:35
何が言いたい?
121デフォルトの名無しさん:2006/04/20(木) 17:12:25
レジスタにキャッシュって妥当な言葉なん?
122デフォルトの名無しさん:2006/04/20(木) 17:18:49
"レジスタにキャッシュ" の検索結果のうち 日本語のページ 約 35 件中 1 - 25 件目
妥当と言うべきか判断に迷う数字だな

まあ C# とは関係ないわな
123デフォルトの名無しさん:2006/04/20(木) 17:20:41
おっぱいにダイブ の検索結果のうち 日本語のページ 約 33 件

これと同程度らしい。
124デフォルトの名無しさん:2006/04/20(木) 17:54:55
スレ違いかもしれませんが・・・、
VB6 -> C# の移植を手助けしてくれるツールとかご存知の方いませんか?
こんなのあったんですが、使ってる人いるのかな。
ttp://www.netcoole.com/vb6tocs.htm
125おじさん:2006/04/20(木) 18:03:56
変数は定数と比較して、どこが便利ですか?簡単に説明してもらえるとありがたいです^^
126デフォルトの名無しさん:2006/04/20(木) 18:12:38
VB6->C#って・・・
127デフォルトの名無しさん:2006/04/20(木) 18:18:29
>>125
死ねばいいと思うよ^^
128デフォルトの名無しさん:2006/04/20(木) 19:33:32
>>125
変数を利用した、副作用ともなうプログラムが組める
129デフォルトの名無しさん:2006/04/20(木) 20:02:00
>>125
1や2など意味が無い数字に名前を付けれる
複数ある場合、あとで変更するときに便利
省エネ
130デフォルトの名無しさん:2006/04/20(木) 20:07:20
>>129
それは逆じゃ
131デフォルトの名無しさん:2006/04/20(木) 22:12:16
>>125
例えば、1から10000まで足し算するプログラムを書いてみると分かりますよ。
132デフォルトの名無しさん:2006/04/20(木) 22:25:40
>レジスタにキャッシュって妥当な言葉なん?
べつにいいだろ言いたいことは分かるだろうがよウワーン
133デフォルトの名無しさん:2006/04/20(木) 22:31:52
>>131
const
 n = 10000;
 sum = n * (n + 1) / 2;
134デフォルトの名無しさん:2006/04/20(木) 22:45:28
>>133
おまえってスケベだなw
135デフォルトの名無しさん:2006/04/20(木) 23:04:46
コンパイルエラーで動きません。
136デフォルトの名無しさん:2006/04/20(木) 23:51:09
すまん。スレタイみてなかった
137デフォルトの名無しさん:2006/04/21(金) 00:30:07
ウィンドウサイズの変更ってどうやるんですか?
(VS.NETを使わずに)
138デフォルトの名無しさん:2006/04/21(金) 00:37:23
mshtmlへの参照を追加しようとすると固まるんだけど
俺だけ?
139デフォルトの名無しさん:2006/04/21(金) 00:39:56
>>137
意味分からん VS.NET をどう使ってどう使わないという話なんだ

>>138
お前だけ
って言われれば満足?
140デフォルトの名無しさん:2006/04/21(金) 00:50:37
あるメソッドをオーバライドすると、ある他のメソッドをオーバライドしなければならない
という警告が出るようにするにはどのようにしたらよいのでしょうか?

EqualsをオーバライドするとGetHashCodeもオーバライドしないといけないのような
141デフォルトの名無しさん:2006/04/21(金) 00:52:25
>>139
悪かった。


Visual C# 2005 Express で、
COM参照(Microsoft HTML Object Library)を選択してOKを押すと、
マウスポインタがWaitのままCPU仕様率100%で完了しないのですが
こんな症状の理由の分かるかたいらっしゃいませんか?

142デフォルトの名無しさん:2006/04/21(金) 01:29:40
>>>141
俺も同じ症状、Beta2では出来た気がするんだが
143デフォルトの名無しさん:2006/04/21(金) 01:42:23
>>141

おれんとこも同じ。
VS Standard入れてある環境だと、MSHTMLはPrimary InterOp Assembly(PIA)が入っていて
「参照の追加」で.NetのタブからMicrosoft.mshtmlがすんなり選べるんだけど、Expressの入っ
ている環境だと、なぜかmshtmlのPIAが入っておらず、COMのタブから選ぶしかない。

COM参照だとTlbimpがmshtmlのラッパを作成するので、その間にむちゃくちゃ時間
かかる(mshtmlは巨大)
数分ほうっておくと、ラッパのアセンブリが作成されて、参照可能になっているはず。

mshtmlのPIAは.net SDKに入っているんではないかなあ?
144デフォルトの名無しさん:2006/04/21(金) 01:43:42
>>137

ウィンドウサイズの変更って 普通マウスで右下隅を
ドラッグしてぐりぐりっと変更するもんで内科医?
145141:2006/04/21(金) 02:19:10
>>143
そうなんですか。明日もう一度試してみます。
できたdllも巨大なんですかね?
すると配布にはむかないかな?
146デフォルトの名無しさん:2006/04/21(金) 02:28:20
7.64MB
必要とする機能がごく限定されてるなら自前で COM インターフェイス宣言するのも良いかもね
147デフォルトの名無しさん:2006/04/21(金) 02:39:33
>>145

ラッパのくせに8MB近くになるよ。(PIAもほぼ一緒)

MS OFFICE用のPIAでもせいぜい数百キロbyte.
mshtmlはダントツに巨大っす。

まあDOMのオブジェクト、メソッド、インタフェース、イベント、その他もろもろ
すべてについて、変換用のシグネチャ書き出すんだから、仕方ないとおもうけど。

まあ、きょうび8Mb程度のファイルの配布を躊躇することも
ないとおもうけどねえ。。。
148デフォルトの名無しさん:2006/04/21(金) 07:41:02
>140
文字とおり
EqualsをオーバライドするとGetHashCodeもオーバライドしたほうがいいよ
ってことなんだけど。必要なしと確信できるならほっとけばOK。
149デフォルトの名無しさん:2006/04/21(金) 07:47:52
>>148
自前のインタフェース中の2つのメソッドを基底クラスで実装してあって、
実装クラス側にその二つのメソッドは片方オーバライドしたら両方オーバライドしたほうがよいよ
というようなことがしたいんですけどどうすればよいのかと。
150デフォルトの名無しさん:2006/04/21(金) 08:08:05
無いんじゃないかなぁ
わざわざ CS0659 から CS0661 までの 3 つの警告を割り当ててるくらいだし
151148:2006/04/21(金) 08:30:47
質問の意図をとりちがえました。失礼。属性とかでできないのかな。
152デフォルトの名無しさん:2006/04/21(金) 08:32:24
それとも<Warning>かな
153デフォルトの名無しさん:2006/04/21(金) 23:44:36
オブジェクトの同期インデックスをどのスレッドが取得しているか調べる方法はありますか?
154デフォルトの名無しさん:2006/04/22(土) 03:50:56
動機インデックスってなんね?
155デフォルトの名無しさん:2006/04/22(土) 13:19:07
VS2005 Standardを使用しています。

C#にて複数のプロジェクトをソリューションに追加し、コンパイルした場合、
1つのプロジェクトだけをコンパイルした場合でも、関連する(プロジェクト参照している)プロジェクトも
全部コンパイルされてしまいます。

※例えば、プロジェクトの1つがメインのEXEで残りはすべてDLL(複数)といった具合

プログラムの修正もしていない、または明示的にコンパイルも掛けていないのに、
勝手にコンパイルが掛かり、アセンブリの日付が変わってしまう事が嫌なのですが、
勝手にコンパイルが掛からないようにする事は可能ですか?
156デフォルトの名無しさん:2006/04/22(土) 16:32:36
>>155
ツール>オプション>プロジェクトおよびソリューション>ビルド/実行
 >実行時に、スタートアップ プロジェクトおよび依存関係のみをビルドする
にチェックを入れる
157デフォルトの名無しさん:2006/04/22(土) 16:34:00
ごめん156は勘違い。
関連するプロジェクトのリビルドは抑制できないんじゃないかと。
158デフォルトの名無しさん:2006/04/22(土) 16:58:34
dll化するしかないね
あとちょっと面倒だけど、参照させることでいける
159155:2006/04/22(土) 17:35:43
なるほど。
やはり制御は出来ないですか。

一応、現状はそれぞれ別々のソリューションにして、個々にコンパイルし、
参照設定でDLLを直接指定しています。

一応、デバッグ情報も生成させているので、デバッグ時に困るという事は無いのですが、
関連モジュールも一緒に修正したりとかするときに、別のソリューションを開いて・・・・
となるので作業が面倒でした。

160デフォルトの名無しさん:2006/04/22(土) 17:46:43
複数のTabPageで、同じコントロールを共有したいのですが、良い方法は
ありませんか?具体的には、同じ絵のPictureBoxを、どのTabPageにも表
示したいのです。タブブラウザを作る場合に、WebBrouserコントロールを
共有するというのも同じ問題になると思います。

やってみた方法としては、
tabControl1_SelectingやtabControl1_SelectedやtabControl1_SelectedIndexChanged
内で、targetControl.Parent = tabControl1.SelectedTab; とすると、一応
共有化されるのですが、タブが切り替わる際にtargetControlが一瞬見えなく
なります。それぞれのタブに、コントロールを別々に張り付けると、切り替わ
りの問題は発生しませんので、タイミング的に背景色で塗りつぶされてから
Parentが変更されるのだと思います(Selectingの時点で切り替えるのでは遅い
と言うこと)。

TabPage.Controls.Add だと、どれかひとつにしか配置できません。

何か良い方法は無いでしょうか?
VisualStudio2005+WindowXP SP2 を使っています。
161デフォルトの名無しさん:2006/04/22(土) 17:47:35
インターフェースとか使えるようになったら、ちょっと大人になった気分がするんですが
私だけですか?
162デフォルトの名無しさん:2006/04/22(土) 17:50:53
>>160
別々にコントロール貼り付けたら問題ないんだったら
それでいいじゃん
163デフォルトの名無しさん:2006/04/22(土) 17:54:04
>>160
共有したいものをタブページの中に置かずに
タブコントロールの真下に置けばいいんじゃね

それとタブブラウザではタブの数だけ
ウェブブラウザのインスタンスが存在すると思うぞ

>>161
.NET ではインタフェースはあんまり使わない
164160:2006/04/22(土) 18:00:01
>>163
エロ画像だから画面いっぱいに見たいんだよ!!
165デフォルトの名無しさん:2006/04/22(土) 18:02:51
>>164
そんな不純な動機なら知ってても教えてあげないよ!!
166デフォルトの名無しさん:2006/04/22(土) 18:10:23
ジャン♪
167デフォルトの名無しさん:2006/04/22(土) 20:46:32
>>163
めちゃくちゃ使うよ、インターフェース
168デフォルトの名無しさん:2006/04/22(土) 21:52:18
>>159
メニュー「ツール」→ユーザー設定→「コマンド」タブ

そこの「ビルド」にお探しのものがある気がする。
169デフォルトの名無しさん:2006/04/22(土) 22:28:22
>.NET ではインタフェースはあんまり使わない
なにと比較してだろ?
170デフォルトの名無しさん:2006/04/22(土) 22:33:32
イベントが .NET なら delegate を使う辺りじゃね
Java ならインターフェイス使わんといかんからな
171デフォルトの名無しさん:2006/04/22(土) 23:37:44
javaはよく知らないがイベントにインターフェースを使うってどういうこと?
ちょいと検索したらライブラリにEventListenerっていうインターフェースがあるようだが
そいつを利用するって話?
172デフォルトの名無しさん:2006/04/22(土) 23:48:23
インナークラスの間違えじゃねw
173デフォルトの名無しさん:2006/04/22(土) 23:53:32
>>171
delegate オブジェクトの代わりにイベントリスナインターフェイスを実装するオブジェクトを渡す。
// インターフェイスを実装するオブジェクトは大抵は(無名の)インナークラスで定義する。
174デフォルトの名無しさん:2006/04/23(日) 00:13:40
RichTextBoxのスクロールを制御するにはどうすればいいでしょうか?

何十行とデータがあって、1画面に収まらない時、スクロールを1番下にしたいんです。
175デフォルトの名無しさん:2006/04/23(日) 00:14:17
Java のメンバクラスって扱いがめんどくさいよな
ネストトップレベルクラスのようなシンプルさがない
176デフォルトの名無しさん:2006/04/23(日) 00:16:36
>>174
ScrollToCaret
SelectionStart
177174:2006/04/23(日) 01:41:12
>>176
今確認しました。
ありがとうございました。
178デフォルトの名無しさん:2006/04/23(日) 02:53:06
>Java のメンバクラスって扱いがめんどくさいよな
>ネストトップレベルクラスのようなシンプルさがない
???
179デフォルトの名無しさん:2006/04/23(日) 04:37:16
プログラミングしてて悩むのがクラスやメソッドの名前をどうするかなんだよね
翻訳ソフトでやると、ダサい英語や意味がわかりにくいものになったりするし
みんなどうしてるの?
デザインパターンならぬ、名前付けパターンみたいなのないかな?
180デフォルトの名無しさん:2006/04/23(日) 04:39:43
>>179
ある程度のパターンはあるが明文化されるほど明確でもない。

クラス名・変数名に迷ったら書き込むスレ。Part7
http://pc8.2ch.net/test/read.cgi/tech/1144978008/
181デフォルトの名無しさん:2006/04/23(日) 04:47:06
>>180
こんなスレがwありー
182デフォルトの名無しさん:2006/04/23(日) 05:17:59
慣れだよ慣れ
183デフォルトの名無しさん:2006/04/23(日) 07:36:50
VB.NET2005のMyの機能があると思いますが、C#(というか.NETFramework)との
対応表みたいなのってどこかにないですか?
184デフォルトの名無しさん:2006/04/23(日) 11:33:31
Myって馬鹿を甘やかすための機能じゃ?
185デフォルトの名無しさん:2006/04/23(日) 11:43:21
♯##

お前らは
これらの区別つけられますか
186デフォルトの名無しさん:2006/04/23(日) 11:47:56
>>185
大文字小文字
187デフォルトの名無しさん:2006/04/23(日) 11:49:31
いい物をやろう

private void radioButton3_CheckedChanged(object sender, System.EventArgs e)
{
if(this.radioButton3.Checked) this.radioButton1.Checked = true;
}

private void radioButton1_CheckedChanged(object sender, System.EventArgs e)
{
if(this.radioButton1.Checked) this.radioButton2.Checked = true;
}

private void radioButton2_CheckedChanged(object sender, System.EventArgs e)
{
if(this.radioButton2.Checked) this.radioButton3.Checked = true;
}
188デフォルトの名無しさん:2006/04/23(日) 11:52:37
わかりましぇん。
189デフォルトの名無しさん:2006/04/23(日) 11:53:54
スタックオーバーフローの予感
190デフォルトの名無しさん:2006/04/23(日) 11:56:44
>>187
メビウスの輪?
191デフォルトの名無しさん:2006/04/23(日) 12:03:01
Checked == true の時に Checked = true してもイベントは発生しないぜ
192デフォルトの名無しさん:2006/04/23(日) 12:13:44
private void checkBox1_CheckedChanged(object sender, System.EventArgs e)
{
if(this.checkBox1.Checked) this.checkBox1.Checked = false;
if(!this.checkBox1.Checked) this.checkBox1.Checked = true;
}
193デフォルトの名無しさん:2006/04/23(日) 12:15:56

private void test()
{
  test();
}
194デフォルトの名無しさん:2006/04/23(日) 12:20:20
private void timer_Tick(object sender, System.EventArgs e)
{
  timer.Invail=1;
  MessageBox.Show("早く閉じて終了しないと、画面がうまっちゃうぞw");
  this.Close();
}
195デフォルトの名無しさん:2006/04/23(日) 12:25:01
private bool Unko
{
 get
 {
  return this.Unko;
 }
 set
 {
  this.Unko = value;
 }
}
196デフォルトの名無しさん:2006/04/23(日) 12:28:05
ひー!たづけて><
197デフォルトの名無しさん:2006/04/23(日) 12:32:23
>>195
うんこでオーバーフローは嫌だな
198デフォルトの名無しさん:2006/04/23(日) 12:36:45
>>195みたいなのはたまにやっちゃう
199デフォルトの名無しさん:2006/04/23(日) 12:39:00
プロパティの再帰呼び出しは警告を出して欲しかったな
// 珍しく VB の方だけ警告する
200デフォルトの名無しさん:2006/04/23(日) 13:00:15
インデクサです
201デフォルトの名無しさん:2006/04/23(日) 13:12:20
ar<>sage<>2006/03/28(火) 23:34:18 ID:+HWvH7Zl0<> <a href="..test/read.cgi/tech/1145075577/200" target="_blank">>>200</a> <br>
202デフォルトの名無しさん:2006/04/23(日) 14:00:55
>>195みたいのは機能として欲しいかなと思ってしまう
匿名メソッドならぬ匿名変数として
いちいちプロパティの実体変数を宣言するの面倒くさい
スニペット使えということか
203デフォルトの名無しさん:2006/04/23(日) 14:04:49
プロパティの暗黙的実装は C# 3.0 では見送られたはず
204デフォルトの名無しさん:2006/04/23(日) 20:16:13
Visual Studio2005+C#でアプリ作ってて、メニュー操作をキーボードから
Alt+E(編集)→C(コピー)なんてやる時、IMEがオンになってると、最後に
押したCがIMEのほうに渡って、コピー動作をやってくれないんだけど、
これってこういうもんなの?
205デフォルトの名無しさん:2006/04/23(日) 20:54:08
そういうもんじゃね?
フォーカスそのものを奪ったりはしてないようだから、元コントロールのままみたいだね。
回避したいなら、MenuActivated と MenuDeactivate でごにょごにょするとか。
206デフォルトの名無しさん:2006/04/23(日) 22:04:15
普通にできるけど?
207204:2006/04/23(日) 23:29:49
>>206
ちょっと説明が中途半端で誤解を招く書き方だったけど、IDEの操作でなく、
C#で作ったアプリの動作のほうの問題なんだけど、ほんとにできてる?
こっちでやると、IMEのウインドウが開いて、押したキーがそこに表示されてしまう。
確かに本当だったらIMEオンでも問題ないと思うんだけど...
208デフォルトの名無しさん:2006/04/23(日) 23:55:26
ToolStrip〜〜 はIMEオンだとダメだね
Alt+E C ではなく Alt+E Alt+C ってやれば反応するけど

ToolStripControlHost でも内側のコントロールにフォーカスが
移りにくいのも何とかして欲しいなあ
209デフォルトの名無しさん:2006/04/24(月) 10:11:53
IMEオンのとき
メモ帳とか古くからあるメニューを使ってるやつだと
Alt押→Alt離→F→Nで新規作成が実行できるけど
IEとかCollBar型?のメニューだと
Altを押しっぱなしじゃないとfとか押しても変換に入ってしまう。
これは仕様なのかバグなのか・・・・
アクセスキーに漢字も使えるとか言うことだろうか??
210デフォルトの名無しさん:2006/04/24(月) 11:32:23
IMEオンでも普通にできるけど
もしかしたらMS-IMEじゃなくてJapanistだからかもしれない。



211デフォルトの名無しさん:2006/04/24(月) 11:39:12
>>209
> アクセスキーに漢字も使えるとか言うことだろうか??
その発想はなかったので試してみたらできたw キモスw
212デフォルトの名無しさん:2006/04/24(月) 14:24:59
くっそ、HttpUtilityなんてクラスがあったのか
必死でhtml勉強してregexやら使いながら手動でエンコードしてたぜw
213デフォルトの名無しさん:2006/04/24(月) 18:05:42
picturebox のAllowDropってデザイナ時には隠されてるけど
使っちゃまずいんですか?

いちおうドロップ動作に問題はないみたいですが
214デフォルトの名無しさん:2006/04/24(月) 18:09:15
別に問題はないと思うが
ただ MS としては D&D の対象として不自然と考えているんだろう
215デフォルトの名無しさん:2006/04/24(月) 18:13:58
不自然どころかドキュメントで「使うな」と言ってるな
216デフォルトの名無しさん:2006/04/24(月) 18:26:42
>独自に作成したコードから直接使用するためのものではありません。

とありますが、DragDropイベントもDragOverイベントも
みんなあるんですよね〜
217デフォルトの名無しさん:2006/04/24(月) 18:54:43
問題起きたら自己責任っていうくらいのもんだろ
別に使っても問題ないと思われ
218デフォルトの名無しさん:2006/04/24(月) 20:10:39
本気で使って欲しくない/使っても責任取らないってのはドキュメントに載せないから大丈夫だよ
219デフォルトの名無しさん:2006/04/24(月) 23:00:03
以下のような操作:

  Whitespace ::= ' '+ | '\t'+ | '\n'+
 と定義されるとき、与えられた文字列を「Whitespace とそれ以外」に分離する。
 例) "a b c" -> {"a", " ", "b", " ", "c"}
   "a  b  c" -> {"a", "  ", "b", "  ", "c"}
   "a\n\nb\t\tc" -> {"a", "\n\n", "b", "\t\t", "c"}
   "a\n\tb\t\nc" -> {"a", "\n", "\t", "b", "\t", "\n", "c"}

を、System.String#Split("●", System.StringSplitOptions.None);
 -> 要素と要素の間に新しい要素 ("●") を挿入
 -> 空の要素に "●" を代入
 -> 内容が "●" の要素をまとめる
を繰り返す、という方法で実現することを考えたのですが、自分があまり配列操作が得意でなく、
さらに領域操作がオーバーヘッドを生じさせてしまうのではという懸念も考えられるので、他の方法が
無いものかと悩んでいます。

何か他に効率の良い方法は無いものでしょうか?

220デフォルトの名無しさん:2006/04/24(月) 23:19:03
正規表現で手抜きしちゃえ
221デフォルトの名無しさん:2006/04/24(月) 23:23:06
List<string> result = new List<string>();
foreach (Match match in Regex.Matches(target, " +|\t+|\n+|[^ \t\n]+")) {
    result.Add(match.Value);
}
222219:2006/04/24(月) 23:35:07
>>220 >>221
わざわざ具体的なコードまで書いて頂き、本当にありがとうございます。

正規表現にあまり慣れ親しんでいない者としては、目から鱗が落ちるような
パターンで、(大げさかもしれませんが) 感動しています。

ありがとうございました。
223デフォルトの名無しさん:2006/04/24(月) 23:48:06
それで、肝心のオーバーヘッドは解決されているのか?
224219:2006/04/25(火) 00:29:56
>>223
4,000 文字程度の文字列を引数に >>221 を走らせて、出力を配列に落とし、
その内容を標準出力に出力させてみましたが、速度は十分速く、全く問題ありませんでした。
225デフォルトの名無しさん:2006/04/25(火) 00:54:38
で、配列とどっちが速かったのかね?
226デフォルトの名無しさん:2006/04/25(火) 01:00:52
なんか妙に絡んでる奴がいるな
227デフォルトの名無しさん:2006/04/25(火) 01:10:16
っていうか、半角空白開いてるんなら
replaceのほうが早いんじゃない?
228デフォルトの名無しさん:2006/04/25(火) 06:24:04
ちょっと質問なのですが、

{
  Aho aho = new Aho();
  this.Click += aho.OnClick;
}

とした場合、
  this.Click -= aho.OnClick;
を実行しなければ aho はスコープを抜けて利用不可能になっても永久に破棄されないんでしょうか?
229デフォルトの名無しさん:2006/04/25(火) 07:08:32
thisさんがコレクトされる時にはahoさんもコレクトされると思われ
230デフォルトの名無しさん:2006/04/25(火) 07:30:07
thisさんがエレクトされる時にはahoさんもエレクチオンされると思われ
231デフォルトの名無しさん:2006/04/25(火) 07:49:56
破棄されます。
232デフォルトの名無しさん:2006/04/25(火) 10:44:28
VisualStudio2003で作ったプロジェクトを2005にコンバートして実行しました。
キーコードを取得するところで"Enter"で取得していたのが取得できず"Return"で取得しないといけないようでした。

キーボードのEnterを押してみるとたしかに"Return"が返ってくるようなので書き換えればいいのですが、
これは2005から変わったのですか?それとも2003が間違っていたのでしょうか?
233デフォルトの名無しさん:2006/04/25(火) 10:53:31
Keys.Enter == Keys.Return
は true だぞ? 文字列に変換してから比較したりしてないだろうな?
234デフォルトの名無しさん:2006/04/25(火) 11:02:07
>>233
文字列に変換して比較してました・・・。
ごめんなさい・・・。
235デフォルトの名無しさん:2006/04/25(火) 11:47:29
<チラシの裏>

http://weblogs.asp.net/dr.netjes/archive/2006/02/10/437868.aspx

(no code)
(no code)
(no code)
(no code)
(no code)

エエェェ(´д`)ェェエエ

</チラシの裏>
236デフォルトの名無しさん:2006/04/25(火) 12:29:11
C#2005で統計処理をしようとしたら関数が全然見あたらないんですが、
ひょっとして存在しないんでしょうか?
エクセル同様の物があると期待していたのですが。
237デフォルトの名無しさん:2006/04/25(火) 12:34:27
どこからそんな発想がわいてくるんだ?
238デフォルトの名無しさん:2006/04/25(火) 12:36:51
>>236
自作のライブラリでも探せばよかろう。
C#1.1の時代からいろんな物が作られているから。
239デフォルトの名無しさん:2006/04/25(火) 13:15:31
Tools for Officeなど使ってExcelのものを使えばいいんじゃないかと
試しもせずに言ってみる。
240236:2006/04/25(火) 14:41:56
海外も探してみましたが有償のものしか見あたりません。
諦めて必要な機能だけ自作します・・・orz

>239
Tools for Officeはもってないです・・・
241デフォルトの名無しさん:2006/04/25(火) 15:54:22
MediaPlayerSDKで再生リストの中をクリアする方法が分かりません。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/wmplay/mmp_sdk/playlistobject.asp
を使ったサンプルが無い為、他に情報源があったら教えてください。
242デフォルトの名無しさん:2006/04/25(火) 15:56:52
一個ずつ removeItem してけばいいんじゃね?
243デフォルトの名無しさん:2006/04/25(火) 16:04:44
removeItem関数の前準備をどのようにするかで困っています。
244デフォルトの名無しさん:2006/04/25(火) 16:26:28
前準備って何か必要か?
item でインデックスから取得して removeItem するだけじゃん。
総数は count で取得できるし。
245デフォルトの名無しさん:2006/04/25(火) 16:39:29
int cnt=playlist.count;
for(int i=0;i < cnt;i++)
{
Media = playlist.get_Item(i);
playlist.removeItem(Media);
}
で16個中8個まで削除する事ができましたが、それ以降は
エラーが出て削除できませんでした。
別の遣り方でWMPを利用します。
246デフォルトの名無しさん:2006/04/25(火) 16:43:34
……。
removeItem で 0 番目のを消す。
残りは繰り上げられて 0 から 元の playlist.count - 1 までになる。
removeItem で 1 番目のを消す。
繰り上げられた 0 はどこ行った?
247デフォルトの名無しさん:2006/04/25(火) 17:49:56
>246
0番目削除でうまく全部削除できました。
248228:2006/04/25(火) 19:22:15
>>229-231
レスどうもです。
>>231
ということは、aho がスコープアウトすると自動的に -= 相当のことをしてくれるという理解でいいのでしょうか?
それとも this.Click が invoke されると実行時エラーが発生するとかでしょうか。


>>247
その場合はどうか知らないですが先頭削除はコストが高い可能性があるので
一般的には
for (int i = cnt-1; i >= 0; --i) {
  Media = playlist.get_Item(i);
  playlist.removeItem(Media);
}
の方がいい気がします
249デフォルトの名無しさん:2006/04/25(火) 19:26:52
>>248
バックで責めるのか?こやつめ!はっはっはっ
250デフォルトの名無しさん:2006/04/25(火) 19:50:18
>>248
> ということは、aho がスコープアウトすると自動的に -= 相当のことをしてくれるという理解でいいのでしょうか?
良くない。
> それとも this.Click が invoke されると実行時エラーが発生するとかでしょうか。
しない。

this.Click に aho.OnClick が追加されたら、(明示的に解除しないのなら)
this.Click が参照不可にならない限り aho.OnClick は this.Click から参照される。
だから this が GC されない限り aho のインスタンスは残る。
251228:2006/04/25(火) 19:55:03
>>250
なるほど、どうもありがとうございました。
252デフォルトの名無しさん:2006/04/25(火) 21:36:47
イベント(?)の”+=”と”-=”演算子ってどうなってんの?
a.Cloick += new Handler(OnClick)
a.Cloick -= new Handler(OnClick)
HandlerのEqualsが
同じインスタンスの同じメソッドならtrue返すようになってまんのか?
253デフォルトの名無しさん:2006/04/25(火) 21:39:40
delegate の演算子オーバーロード
254デフォルトの名無しさん:2006/04/25(火) 22:03:08
>>252
>同じインスタンスの同じメソッドならtrue返すように

なってないと思う。
くっつけてから外したいならメンバ変数なりに保持しておくことになるんじゃ。
255デフォルトの名無しさん:2006/04/25(火) 22:07:48
デリゲート勉強すればわかるのにね
256デフォルトの名無しさん:2006/04/25(火) 22:19:40
くっつけてから外したいときにはメンバ変数に保持する必要はない
普通に-= new Handler(XXX)で問題ない。
ちなみに同じハンドラを+-すると二度実行される(メンバで保持するしないにかかわらず)

リストビューでフォーカスが外れたときの色ってなんでしょう?
選択色はSystemColors.Hightlightなのはわかるのですが
SystemColors.Controlでいいのかな
257デフォルトの名無しさん:2006/04/25(火) 22:31:31
>>256
確かにその通りだね。>>254は間違い。
258デフォルトの名無しさん:2006/04/26(水) 10:55:05
>>256
リストビューのBackColorじゃないのか
普通はたぶんWindow
259デフォルトの名無しさん:2006/04/26(水) 11:01:47
ListView.HideSelection=false
LisViewItem.Selected=true
でフォーカスを外した時の色のことじゃね
標準の配色だと灰色っぽい色だが
260デフォルトの名無しさん:2006/04/26(水) 11:59:44
>>256
SystemColors.Controlです。コンパネかSetSysColorsで色をいじるとわかる。
261デフォルトの名無しさん:2006/04/26(水) 21:27:19
ImageList に単品で.Images.Add したらPNG画像のアルファがきちんと表示されるのに
画像をつなげて .Images.AddStrip するとだめなのはバグですかね?
262デフォルトの名無しさん:2006/04/26(水) 21:38:42
つなげるってどうやってつなげてんだ?
263デフォルトの名無しさん:2006/04/26(水) 23:34:57
>>258-260 サンクスです。
あんまし関係ないけど、C#のデリゲート呼び出しとVB.NETのデリゲート呼び出しのやり方って違うのね
ttp://www.atmarkit.co.jp/fdotnet/onepoint/onepoint03/onepoint03_02.html
264デフォルトの名無しさん:2006/04/26(水) 23:35:00
>>262
GIMPで一つの画像ファイルにまとめたものを
リソースに追加するということです。
265デフォルトの名無しさん:2006/04/27(木) 00:43:03
C#初めて1日目の者です。
tabcontrol内に、コントロールを追加したいのですが、
MSDNで調べたところ、以下のような例が見つかりました。

//タブコントロール内にコントロール配置
// Assuming that tabControl1 exists and has at least one tab page
// Add a button to the first tab page
tabPage1.Controls.Add(new Button());

上の例はよくわかりますが、

for (int i = 0; i < (numericUpDown1.Value - tabcnt); i++)
{
string title = "TabPage " + (tabControl1.TabCount + 1).ToString();
TabPage myTabPage = new TabPage(title);
tabControl1.TabPages.Add(myTabPage);
        }
で、増やしたtabpageにコントロールを配置するにはどうしたらよいでしょか?
コントロールを追加したいtabpageはその時々によって変化するため、MSDNの例の通りにはできません。
これで伝わりますでしょうか?
ご教授お願いいたします。
266デフォルトの名無しさん:2006/04/27(木) 00:46:38
tabControl1.TabPages とかから目的の TabPage を手に入れればいい
インデックスで探すなり SelectedTab 使うなり。
TabPages を foreach で TabPage 列挙してそれぞれの Text を調べても良いし。
267デフォルトの名無しさん:2006/04/27(木) 01:08:19
>>266
非常に申し訳ないのですが、よく理解できません。
ソースで示していただけるとありがたいのですが。
本当にごめんなさい。
268デフォルトの名無しさん:2006/04/27(木) 01:09:20
メンバぐらい調べろよ・・・
269デフォルトの名無しさん:2006/04/27(木) 01:38:39
>>266
以下のコードで解決しました。
this.tabControl1.TabPages[tabControl1.TabCount-1].Controls.Add(new Button());
ありがとうございました。
270デフォルトの名無しさん:2006/04/27(木) 09:10:34
TabPageにコントロールを配置してから
TabControlにそのTabPageを追加しないか?ふつう
271デフォルトの名無しさん:2006/04/27(木) 21:20:38
匿名メソッド構文を使用して生成されたデリゲートを内包するクラスを
バイナリフォーマットで書き出すことはできないのでしょうか?

シリアライズは可能で、きちんとファイルも生成されるのですが、デシリアライズを行おうとすると

System.Runtime.Serialization.SerializationException はハンドルされませんでした。
  Message="メンバ '<Initialize>b__0' を取得できません。"

という例外が投げられるので、ファイルを覗いて "<Initialize>b__0" という文字列を検索してみたところ、
その後に続くシグネチャがデリゲートのそれと同一だったので匿名メソッドが原因ではないかと疑っています。
272デフォルトの名無しさん:2006/04/27(木) 21:37:13
ごく簡単なコードでは問題なかったが。BinaryFormatter だよね。
再現コード書ける?
273271:2006/04/27(木) 22:52:22
>>272
検証コードを書いてみたところうまく動いたので、エラーの出るプログラム内の
クラスの readonly を外してみたり、デリゲートの引数を全て参照渡しにしてみたり
したところ、うまく動いてしまいました。

わざわざお付き合い頂いたのに自己解決してしまった上、更にスレまで汚してしまいました。
実に申し訳ありませんでした。
274デフォルトの名無しさん:2006/04/27(木) 23:10:40
申し訳ないと思っているのなら再現できるコードをうpしてよ
275デフォルトの名無しさん:2006/04/28(金) 09:00:06
もうこのスレ見てないだろう
276デフォルトの名無しさん:2006/04/28(金) 15:44:43
ツールボックスのコモンコントロールのアイコン表示がすべてNumericUpDownのアイコンになってしまった
そのほかにも、フォームデザイン表示するとフレームがガクガク揺れるし
Oneクリックしただけなのにdoubleクリックになったり
ほんと糞だなこれ
277デフォルトの名無しさん:2006/04/28(金) 15:46:43
そうだね
278デフォルトの名無しさん:2006/04/28(金) 18:11:21
Events[2] += new EventHandler(...);
みたいにしたいのですが、
インデックスつきのイベントは作れないんでしょうか?
デリゲートを返すしかない?
279デフォルトの名無しさん:2006/04/28(金) 18:15:59
どんなイベントでそんなのが要求されたんだ?
280278:2006/04/28(金) 18:24:47
>>279
そんなことは話す必要はない。
おれが聞いてるのは作れるかどうかだ。
281278:2006/04/28(金) 18:29:34
//>>280は別人です

KeyPress[Keys.A] += new EventHandler(AorBPress);
KeyPress[Keys.B] += new EventHandler(AorBkeyPress);

void AorBPress()
{
Console.Write("AかBが押されました");
}

みたいにできると便利かと思ったのですが
282デフォルトの名無しさん:2006/04/28(金) 18:42:32
それはどうにもスジが違うなぁ
KeyPress は KeyPress で、どのキーが押されたかはイベント引数でってのが .NET の方向性だろう
ま、どのみちイベントじゃ引数付きはつくれないけど
283デフォルトの名無しさん:2006/04/28(金) 18:45:14
>>281
YOUデリゲートしちゃいなよ!
284278:2006/04/28(金) 18:51:46
public Dictionary<Keys, KeyEventHandler> KeyPress{get;set;}
とかやってデリゲートを直接返してしまうしか無さそうですね。
外部から呼び出せてしまうのが気持ち悪いですが。
285デフォルトの名無しさん:2006/04/28(金) 23:52:46
デリゲートはデリケートだからさぁ、やさしくね☆ミ
286デフォルトの名無しさん:2006/04/29(土) 12:24:32
別に正式にイベントである必要がないなら、
AddHandlerとかのメソッドにすりゃいいじゃん。
正式にイベントにしたいんならそりゃ諦めるしかないが…
287デフォルトの名無しさん:2006/04/30(日) 11:44:59
C#でOracleを使用しています。
普通なら「for update nowait」で、レコードロック掛けてから更新すると思いますが、
この度、レコードロック掛けずに更新しろとのお達しがありました。

SqlPlusでは、レコードロック掛けられている間、他のセッションで更新しようとすると、ロック解除まで待ち続けますが、C#で使用するOracleのライブラリでは待たずに返って来させるようなメソッドが用意されていますか?

(どこで聞いていいものかわからずこちらで聞いてしまいました。すれ違いなら誘導していただけませんでしょうか?)
288デフォルトの名無しさん:2006/04/30(日) 12:37:58
1段落目と2段落目の関連が理解できないよう…
普通なら「for update nowait」で…てどういうこと?
レコードロック掛けずに更新しろ…てどういうこと?
289デフォルトの名無しさん:2006/04/30(日) 12:42:10
「レコードロック掛けずに更新しろ」っていうのは要するに
楽観的同時実行制御しろってことか?
だったらUPDATE実行する直前に、他のセッションで
そのレコードが変更されていないかチェックして、
変更されていなかったら普通に更新すれば委員ジャマイカ?
290デフォルトの名無しさん:2006/04/30(日) 12:47:43
>レコードロック掛けずに更新しろ
どういう要件でそういう場合があるのか知りたいので
理由を教えてほしい。
291デフォルトの名無しさん:2006/04/30(日) 12:48:37
どういう状況かがかかれてないから意味が分からんな。
読み込んでから更新までが長い状態で、ロックをかけるなという話なら、
>>289の言うように楽観的同時実効制御の話かと思うが、
直前に更新がなかったか確認するという方法であれば、
確認する際にはやっぱりレコードーロックは必要になるぞ?
WHEREの条件ではじく制御方法なら不要だが。

で、
>C#で使用するOracleのライブラリでは待たずに返って来させるようなメソッドが用意されていますか?
がどういう意図で書かれてるのか分からない。
292デフォルトの名無しさん:2006/04/30(日) 12:49:13
厳密に言うとロックを掛けずにレコードを更新することはありえない。
更新の瞬間には必ずレコードをロックしなければならない。
293デフォルトの名無しさん:2006/04/30(日) 12:51:26
だれもそんなことは聞いてない。
と思うのだよ。
294デフォルトの名無しさん:2006/04/30(日) 12:54:24
>>291
>確認する際にはやっぱりレコードーロックは必要になるぞ?
その必要すらないほど「楽観的」なのでは?w
295デフォルトの名無しさん:2006/04/30(日) 12:58:31
非同期アクセスされることがないとか
296デフォルトの名無しさん:2006/04/30(日) 12:58:59
ASP.NETでWebサービスや.NET リモーティングをホストしているとき、
そこそこ長時間かかるかもしれない非同期の処理を投入
(オンラインバッチとかそういう感じ)する場合、
どういう風に実装するのがいいんだろ?

裏でプロセスをキックするのが一番簡単なんだが、
サーバリソース的に無駄が多いと思われる(投入頻度によるが)。
しかし、ASP.NETの処理内でスレッドを起動したりス、レッドプールを
長時間(かもしれない)占有するのは、通常の処理への悪影響がありそうで怖い。
実際のところどうするべきかな…
297デフォルトの名無しさん:2006/04/30(日) 13:00:22
多分いわゆるロングトランザクションの場合とか意識せずに、
盲目的にロックはかけるなといわれてる気がする。
298デフォルトの名無しさん:2006/04/30(日) 13:01:36
その辺シビアにやりたいなら全部ストアドプロシージャで書いて、C#から呼び出すだけにすべきだな。
その前にADO.NET(ODPでもええけど)の標準的な手法というのも一度理解しておいたほうがいい。
299デフォルトの名無しさん:2006/04/30(日) 13:03:23
全部ストアドでやるとどういうメリットがあるわけ?
300デフォルトの名無しさん:2006/04/30(日) 13:04:32
>多分いわゆるロングトランザクションの場合とか意識せずに、
>盲目的にロックはかけるなといわれてる気がする。
あるいはそういわれてると誤解してるか?
301デフォルトの名無しさん:2006/04/30(日) 13:06:21
>>299

・SQLインジェクション対策(セキュリティ対策)

・プログラムのコンパイル不要でシステムの修正が可能。
 特に同じようなSQLが大量に使われてる場合、1つのストアドをサーバで直せば、全部直る。

・既にSQLがコンパイル済みなので、処理が早い。
 プログラムからSQLを発行すると、DB鯖では字句解析からコンパイル・・・といった手段を取る。
302デフォルトの名無しさん:2006/04/30(日) 13:07:21
>>299
fot updateとか nowait 指定とか使える。質問者の脳内にあるやり方がそのまま通用するということ。
質問者がこれまでなに使ってるかによるけどね。
303デフォルトの名無しさん:2006/04/30(日) 13:07:46
ビジネスロジックまでストアドで書くのはつらいな。
オラクルならなおさら・・・
304デフォルトの名無しさん:2006/04/30(日) 13:08:03
いや、
>その辺シビアにやりたいなら全部ストアドプロシージャで書いて
このその辺シビアにできるというメリットに関して聞きたかったんだ…
305デフォルトの名無しさん:2006/04/30(日) 13:08:46
>fot updateとか nowait 指定とか使える。
普通にSQLでも使えると思うんだが…
306デフォルトの名無しさん:2006/04/30(日) 13:11:15
特定の一部の処理をストアドにするってのはよくあると思うが、
どっちかっていうと低レベルの処理を行う小さな部品みたいな使い方で、
まともなロジックはあまり書きたくないな。
PL/SQLのプログラムなんざ見てたら頭痛がしてくる。

まあ、.NET拡張を使うという手も…
307デフォルトの名無しさん:2006/04/30(日) 13:11:20
>>296
優先度下げたスレッドにやらせれば?
スレッドプールは割とあっさりあふれる可能性があるので長時間の処理には使いたくないね
308デフォルトの名無しさん:2006/04/30(日) 13:11:23
>>303
Oracleなら.NETでビジネスロジック書いて、ストアドで呼び出せば良いじゃないか。
309デフォルトの名無しさん:2006/04/30(日) 13:13:53
C#で組み込み言語として、C#自身を使う方法はありますでしょうか。
あったと思うのですが、解説されたwebページを前に見たのですが、忘れてしまいました。
具体的には、スクリプトのように使いたいのですが・・・。
310303:2006/04/30(日) 13:14:36
>>308
だよな。>>298が「・・・全部ストアドプロシージャで書いて・・・」とか言ったからさぁw
311デフォルトの名無しさん:2006/04/30(日) 13:15:17
>>307やっぱそういう感じかね。
>スレッドプールは割とあっさりあふれる可能性があるので長時間の処理には使いたくないね
そう、これが気になるところなんだが、
いろいろ見てるとスレッドプールを使わないというのも
まずいように書かれてるので気になってるんだよね。
※スレッドのリソースが枯渇して云々など
スレッドプールのスレッド数をうまく調整するか、
普通に低優先度のスレッドを起動して、同時投入数を制限するか、
あるいはキューに投入して順次処理させるか。
うーん、悩むところだ。
312デフォルトの名無しさん:2006/04/30(日) 13:16:13
313デフォルトの名無しさん:2006/04/30(日) 13:19:39
>この度、レコードロック掛けずに更新しろとのお達しがありました。 
このお達しが楽観的排他を使えということなのか、
NOWAITにしろということなのかよく確かめるべきだと思う。
314デフォルトの名無しさん:2006/04/30(日) 13:20:24
お達ししてる側も分かってなかったりして。
315デフォルトの名無しさん:2006/04/30(日) 13:21:00
>>311
スレッドプールを使わないとリソースが、ってのは WWW サーバみたいな超多量のリクエストを捌く時のシナリオだよ。
316デフォルトの名無しさん:2006/04/30(日) 13:24:10
まあ、うーんそうだな、やっぱりその辺のシビア度によって違うわな…
今回のはそこまでシビアではないと思われるから、いいような気はしてきた。
同時実行数の制限をかければ十分かな…
317デフォルトの名無しさん:2006/04/30(日) 13:24:47
スレッドプール使うぐらいなら自分で独自のスレッドマネージメント作ったほうがよさげなんだが。
318デフォルトの名無しさん:2006/04/30(日) 13:26:34
同時実行数を制御してキューに投入とかやろうとしたら、
結局自分で管理せざるを得なくなるから、
>独自のスレッドマネージメント作ったほうがよさげなんだが。
結局こうなる気がしてきた…
319デフォルトの名無しさん:2006/04/30(日) 13:53:45
>>312
トンクス!!
試してみます^^
320287:2006/04/30(日) 16:03:10
>>291
>>292
知ってるよ
321デフォルトの名無しさん:2006/04/30(日) 16:07:25





 だ か ら ど う し た 




322デフォルトの名無しさん:2006/04/30(日) 16:13:32
>>320
本物かどうかよくわからんが、
お前が知ってるとか知らないとかそんなことはどうでもよくて
#そもそもお前に言ったんじゃない部分もあるような気がするが

お前がどういう風に言われたのか、どういう意味で言われたのか、
それをどう受け取っているのか(どういう意味と理解しているのか)
それともお前が言われた意味を誤解してるのか、
言った側がそもそも分かってないのか、

さっぱり分からんからそれを教えてくれといってる。
323287:2006/04/30(日) 16:15:53
>>322
おれは知ってる
324287:2006/04/30(日) 16:18:06
だが断る
325デフォルトの名無しさん:2006/04/30(日) 16:18:52
なんでやねんw
326デフォルトの名無しさん:2006/04/30(日) 16:27:15
他の人のプログラミングコードを見て参考にしたいのですが
そういうコードを載せてあるサイトがあれば教えて下さい
327デフォルトの名無しさん:2006/04/30(日) 16:29:50
328デフォルトの名無しさん:2006/04/30(日) 16:33:28
>>326
ここのサイトにたくさん載ってる。
住人もすごく親切で初心者の質問にも優しく答えてくれるし、マジお勧め。

プログラム技術@2ch掲示板
http://pc8.2ch.net/tech/
329326:2006/04/30(日) 16:37:24
>>328
ありがとう。助かりました
330326:2006/04/30(日) 16:39:07
だが断る
331デフォルトの名無しさん:2006/04/30(日) 16:41:54
なんでやねんw
332デフォルトの名無しさん:2006/04/30(日) 17:07:01
他の人のプログラミングコードを見て参考にしたいのですが
そういうコードを載せてあるサイトがあれば教えて下さい
333デフォルトの名無しさん:2006/04/30(日) 17:09:17
codeproject とか
334デフォルトの名無しさん:2006/04/30(日) 17:10:25
sourceforge とか
335デフォルトの名無しさん:2006/04/30(日) 17:14:12
他の人のプログラミングコードを見て参考にしたいのですが
そういうコードを載せてあるサイトがあれば教えて下さい
336デフォルトの名無しさん:2006/04/30(日) 19:58:01
圧縮書庫を解凍することなく閲覧する処理を行いたいのですが、どうやってやるのでしょうか?
UNZIP32.DLLなどのライブラリを使えば良いのかと思いましたが、その方法がわかりません。
よろしくお願いします。
337デフォルトの名無しさん:2006/04/30(日) 20:10:43
DllImport の解説ならそこらじゅうにあるし、
どんな関数を使えばいいのかは DLL 次第だろ。
zip なら #ziplib とかもあるけど。他のがあるかどうかは知らない。
338デフォルトの名無しさん:2006/04/30(日) 20:32:21
zipなら2.0で対応されてなかったっけ?
339デフォルトの名無しさん:2006/04/30(日) 20:35:13
ストリームとしては対応してるけどファイルとしては未対応。
やるなら自前でヘッダ読み書きする必要があるな。
340デフォルトの名無しさん:2006/04/30(日) 20:36:55
ファイルもストリームじゃないの?
341336:2006/04/30(日) 20:48:14
単なる解凍ならJ#ライブラリやSharpZipLibを使えばできるようなのですが、
「解凍せずに書庫内を閲覧」というのをどうやるのかがわかりません。
342デフォルトの名無しさん:2006/04/30(日) 21:04:57
ファイルとして出力しないだけで、メモリ上には展開しなきゃいけないんじゃないか?
343デフォルトの名無しさん:2006/04/30(日) 21:06:12
そんなもんライブラリによるでしょ
344デフォルトの名無しさん:2006/04/30(日) 21:18:01
zipファイルの中にリストだけ別に保存してあったような
345336:2006/04/30(日) 21:18:08
うーん、調べてみるとよくわからないけど「シェル拡張」ってのが関係しているみたい。
http://www.vector.co.jp/soft/win95/util/se230183.html?g
色々調べてみます。
346デフォルトの名無しさん:2006/04/30(日) 21:42:10
シェル拡張はエクスプローラに機能を追加するもんだ
347デフォルトの名無しさん:2006/05/01(月) 03:18:11
>287です。

今日、もう一度どういう意味か聞いてきたのですが、お達し出したほうはシステムがどういう具合に作られてるのか全くわかってなかったようです。
ロックかけるselectで時間を費やすのが嫌だった見たいです。
で、言うとおりにやってみたんですが、裏で表ロックかけて更新するPGがあり、にっちもさっちも行かなくなりました。

途中から関わってるから全体が見えなくて大変困っています。
皆さんありがとうございました。
348デフォルトの名無しさん:2006/05/01(月) 03:31:55
>>347
そいつらヘタレ過ぎるな。
まあ、がんばれ
349デフォルトの名無しさん:2006/05/01(月) 05:37:37
等幅フォントの横幅を調べる方法を知っている方いませんか?
縦*(2/3)って書いてあるサイトもあったんですが、日本語フォント系にしか通用しないみたいで。
350デフォルトの名無しさん:2006/05/01(月) 05:52:00
実際はBold加減によっても幅が変わるわけで。
351デフォルトの名無しさん:2006/05/01(月) 08:42:57
等幅に限らずフォントの横幅を調べる関数はあったはずです。
352デフォルトの名無しさん:2006/05/01(月) 11:10:26
>>349 ひっぱりだすのめんどくさいんだが、C#によるプログラミングウィンドウズのText周りの章にその辺の事欠いてあったはず。
353349:2006/05/01(月) 12:06:56
>>350-352
とりあえずMeasureCharacterRangesで適当な一文字('A'とか)を計って
それを横幅として使うことにしました。等幅なので問題はないと思います。
354デフォルトの名無しさん:2006/05/01(月) 13:11:45
あまい
355デフォルトの名無しさん:2006/05/01(月) 13:12:09
PCごとに固有の値を取得するにはどうすればよいですか?
値はどんなものでも構いませんが、intやstring形式に直せると助かります。
356デフォルトの名無しさん:2006/05/01(月) 13:40:47
「PCごとに固有」の定義が曖昧なので何とも。
PCを構成する個別のデバイスに固有の値ということなら、
例えばMBのシリアルナンバーとかNICのMACアドレスなんかはそうだけど、
簡単に交換できてしまうのでは「PCごとに固有」の保証にはならない気がする。
357355:2006/05/01(月) 13:52:36
>>356
知ってる
358デフォルトの名無しさん:2006/05/01(月) 13:55:56
解放されてないCOMオブジェクトが何か調べる汎用的な方法ってありますか?
どこかで暗黙的に呼ばれてるらしくて、ReleaseComObjectしたくてもできません。

COMを扱うアプリで、マネージドコントロールにAllowDrop=true;にして
ファイルのドロップ等を行うと終了してもプロセスが残ってしまいます。
SPY++で残ってるプロセス見ると".NET-BroadcastEventWindow..."というwindowが
悪さしてるみたいなんですが……
359デフォルトの名無しさん:2006/05/01(月) 14:01:22
少なくとも .NET の範囲では存在しないね
質問からじゃ COM がどこで使われてるのかよく分からんけど
360デフォルトの名無しさん:2006/05/01(月) 15:05:45
i unknown

うまいこと言ったな俺。
361デフォルトの名無しさん:2006/05/01(月) 15:13:35
>>356
なるほど、ありがとうございます。
厳密でなくても良いので、それでいこうと思います。
362デフォルトの名無しさん:2006/05/01(月) 16:24:28
355==361!=357?
363デフォルトの名無しさん:2006/05/01(月) 16:25:14
この板ではよくあること
364デフォルトの名無しさん:2006/05/01(月) 17:52:02
C#って末尾再帰の最適化できますか?
うわさによると最近のC/C++コンパイラはできるらしいですが。
365デフォルトの名無しさん:2006/05/01(月) 18:05:54
IL コードレベルの話ではないな。
JIT コンパイラが頑張れば不可能ではないだろうがどう実装されてるのか知らんし。
366デフォルトの名無しさん:2006/05/01(月) 19:06:04
>>365
ないんですかねぇ。
ILにはtail命令っていうのがあるらしいですが、
CLRの環境からダイレクトに使えるようには
見えないんですよね・・・
367デフォルトの名無しさん:2006/05/01(月) 19:26:17
>>366
CorDbgで見たかぎりはJITでもやってないな。
確かにILにtailはあるがそのうち関数型の言語をサポートするときのための布石じゃないかな。
368デフォルトの名無しさん:2006/05/01(月) 22:06:18
>>367
C#3.0でラムダ式が入るみたいですから、そのときに期待ですかね。
369デフォルトの名無しさん:2006/05/01(月) 22:44:29
NET系のプログラムは最近始めたばかりです
C#のソースを見ていますと時々ofdというものが出てくるのですが
どういう振舞いをするコマンドですか?
C++にも等価なものはありますか
370デフォルトの名無しさん:2006/05/01(月) 22:52:54
ofd なんて見たこと無いんだが
371デフォルトの名無しさん:2006/05/01(月) 22:54:02
OpenFileDialog?
372デフォルトの名無しさん:2006/05/01(月) 22:54:36
なんかの変数名と勘違いしてるんだろう。
373デフォルトの名無しさん:2006/05/01(月) 23:00:18
OmankoFuckDo!!
374デフォルトの名無しさん:2006/05/01(月) 23:36:23
375デフォルトの名無しさん:2006/05/02(火) 01:03:55
ofd オレも使ってたw
あと、
RegistryKey rk とか
376デフォルトの名無しさん:2006/05/02(火) 01:05:59
インテリセンスが強化されるほど、変数名が長くなっていく俺ガイル
377デフォルトの名無しさん:2006/05/02(火) 01:18:21
namespaceをどこまでusing宣言すべきか悩む、の巻
378デフォルトの名無しさん:2006/05/02(火) 01:23:22
使う名前空間全て
379デフォルトの名無しさん:2006/05/02(火) 02:06:39
WebBrowserコントロールにURLを設定して、ページが読み込ませると
ページが読み込み終わった時に、WebBrowserコントロールにGUIのフォーカスが移ってしまうんですが、
この時に、フォーカス移動させないようにするやり方ってありますか?
380デフォルトの名無しさん:2006/05/02(火) 02:12:56
>>379
読み込んだ後にフォーカスを移したいコントロールを指定すればいいんじゃね?
381デフォルトの名無しさん:2006/05/02(火) 03:05:26
なんでHttpWebRequestは圧縮に対応してないんだよう。
382デフォルトの名無しさん:2006/05/02(火) 03:08:52
そこで GZipStream/DeflateStream ですよ
383デフォルトの名無しさん:2006/05/02(火) 03:09:50
いやいや、内部で使ってくれないのが痛いんだよね。
384デフォルトの名無しさん:2006/05/02(火) 03:12:16
何でかって言うと、.NET Remoting のHttpChannelで使いたいからなのよね。
385デフォルトの名無しさん:2006/05/02(火) 03:39:21
GZipとDeflateを使うように設定できるプロパティがあった気がする
386デフォルトの名無しさん:2006/05/02(火) 03:41:38
というか HttpWebRequest がいつのまにかどっかにいってるよな
387デフォルトの名無しさん:2006/05/02(火) 04:33:19
>>385
うそマジ?
ちょと探してみる…
388デフォルトの名無しさん:2006/05/02(火) 04:44:53
HttpWebRequest.AutomaticDecompression
これ。
389デフォルトの名無しさん:2006/05/02(火) 04:52:16
うぉーあったのはうれしいんだけど、
リモーティングのチャネル使用時に設定する方法が分からん。
ていうか普通のやり方じゃできなさそうな希ガスorz
390デフォルトの名無しさん:2006/05/02(火) 08:09:57
質問です。
スカラー数を表す Type の集合A を A = { typeof(int), typeof(double), typeof(float), typeof(long), ... } とします。

Type dstType ( srcType ∈ A )
object srcObj ( srcObj.GetType() ∈ A )
があるのですが、dstType の型をもち、 srcObj の値をもつ新規オブジェクト dstObj を作成したいと思っています。
イメージとしてはキャストを手動でやるような感じです。
dstObj = Activator.CreateInstance(dstType, srcObj) とすればできるかと思ったのですが、コンストラクタがないとエラーがでてできませんでした。
これを実現するにはどうすればよいでしょうか。
391390:2006/05/02(火) 08:14:00
× Type dstType ( srcType ∈ A )
○ Type dstType ( dstType ∈ A )
でした。
392デフォルトの名無しさん:2006/05/02(火) 09:04:42
自己解決しました。

delegate object ConvertDelegate(object obj);

Dictionary<Type, ConvertDelegate> dict = new Dictionary<Type,ConvertDelegate>();
dict[typeof(int)]      = new ConvertDelegate(delegate(object obj) { return Convert.ToInt32(obj); });
dict[typeof(double)]   = new ConvertDelegate(delegate(object obj) { return Convert.ToDouble(obj); });
dict[typeof(float)]     = new ConvertDelegate(delegate(object obj) { return Convert.ToSingle(obj); });
dict[typeof(long)]     = new ConvertDelegate(delegate(object obj) { return Convert.ToInt64(obj); });
 :

dstObj = dict[dstType](srcObj);

のようにできました。
393デフォルトの名無しさん:2006/05/02(火) 18:42:38
>>379
いったんEnable=false;にして戻せ
394デフォルトの名無しさん:2006/05/03(水) 08:24:31
なんとなくタブブラウザっぽいの作りたくなったんですが、
WebbrowserクラスでJavaScriptとかActiveXのオン/オフってどうやるんでしょうか?
395デフォルトの名無しさん:2006/05/03(水) 16:55:06
UMLをグラフィカルに作成できるフリーソフトってありますか?
396デフォルトの名無しさん:2006/05/03(水) 17:00:10
と、思ったらあった。マインドマップっていうんですねー
http://mindmap.jp/000091.html
397デフォルトの名無しさん:2006/05/03(水) 17:05:58
やっぱだめだ、リンク死んでるし、javaだし。
他にないかなぁ
398デフォルトの名無しさん:2006/05/03(水) 17:07:14
ああ、そうだ、DRAW系のソフト使えばいいんだな
こんな糞高いソフトより使い勝手いいしな
399デフォルトの名無しさん:2006/05/03(水) 17:28:50
Visio とか Jude とか Rational なんたらとか。探せばいくらでもあるぞ。
おれは WhiteHorse で十分だkが。
400デフォルトの名無しさん:2006/05/03(水) 17:53:11
>>399
無料っつってんだろ
401デフォルトの名無しさん:2006/05/03(水) 18:14:30
はいはい、ここはお前の日記帳ですね
402デフォルトの名無しさん:2006/05/03(水) 19:06:07
whiteHorseって探してもないんだけど何?
なんかマイクロソフトの製品のコードネームみたいなんだけど
そういった製品ないし、
standerd以上についてくるクラスデザイナのこと?
403デフォルトの名無しさん:2006/05/03(水) 19:11:49
FreeMindにしたよバカヤロウ!
404デフォルトの名無しさん:2006/05/03(水) 19:14:28
>>402
そゆこと。コードネームで WhiteHorse と呼ばれていた。
405デフォルトの名無しさん:2006/05/03(水) 19:21:03
>>404
いいなースタンダード以上は!!便利そうだなー
なんてったって、ソースと連携できるんだろ?
ちしょうめ!
406デフォルトの名無しさん:2006/05/03(水) 19:34:56
おれもFreeMindは重宝している
視覚的に見てて楽しい
407デフォルトの名無しさん:2006/05/03(水) 19:58:04
>>405 まったく使い物になりません。
408デフォルトの名無しさん:2006/05/03(水) 22:29:24
今までそういうの使ったことなかったけど
freemindいいねー。html化することもできるし
ちょっと使ってみるか
409デフォルトの名無しさん:2006/05/04(木) 00:10:05
だれか>>394にこたえておくれやす
410デフォルトの名無しさん:2006/05/04(木) 00:17:43
それを調べられんでは先は絶望的な気がせんでもない。
DISPID_AMBIENT_DLCONTROL で調べてみろ。
411394:2006/05/04(木) 00:22:51
>>410
知ってる
412394:2006/05/04(木) 00:30:45
しらん(´・ω・`)がな
413デフォルトの名無しさん:2006/05/04(木) 03:33:21
FreemindはUMLの勉強にはならないんじゃないかな
JUDEは無料で使い勝手がいいぞ。UML2には対応まだみたいだけど
414デフォルトの名無しさん:2006/05/04(木) 04:42:09
フローやUMLを記述したら、自動でコードを生成してくれるようなツールありますか?
クラスデザイナだとできるんでしょうか?それならスタンダードの購入も考えたいんですけど
もしそんなソフトがあるならほんとアプリ作成もスイスイ便利ですよねー
415デフォルトの名無しさん:2006/05/04(木) 08:47:20
UMLツールってJavaで動くのばっかじゃんよ・・・
416デフォルトの名無しさん:2006/05/04(木) 12:11:04
>>415
Javaで動いて何が悪い?
VisioはJavaで動かないと思うけど。
417デフォルトの名無しさん:2006/05/04(木) 12:17:38
ContextMenuStripで右クリックメニュー出す時の、左側のイメージ表示領域って、
メニューの1階層めはShowImageMerginをFalseにしたら消せるけど、2階層目は
消すことってできない?
418デフォルトの名無しさん:2006/05/04(木) 12:25:36
>>416
だって、ここC#スレだろ?
419デフォルトの名無しさん:2006/05/04(木) 12:32:39
じゃあ、.net以外で動かないツールじゃないとダメなんだな?
420デフォルトの名無しさん:2006/05/04(木) 12:34:07
>>419
英語でも良いからわかりやすく。
421デフォルトの名無しさん:2006/05/04(木) 12:52:21
>>417
ざっと調べたけどないっぽいね。

// これはフィードバックに上げても良さそうだな。
// ToolStripMenuItem が ShowSubMenuImageMargin / ShowSubMenuCheckMargin を持つイメージかな?
422デフォルトの名無しさん:2006/05/04(木) 12:56:34
と思ったらフィードバックにあった。
ttp://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackid=ecda1c14-332d-4444-a299-eb543f013beb
ToolStripItem.DropDown プロパティからか。めんどくさいな。
423デフォルトの名無しさん:2006/05/04(木) 16:05:51
「知ってる」ってどこのエロゲが元ネタですか?
424デフォルトの名無しさん:2006/05/04(木) 16:17:52
>>423
知ってる
425デフォルトの名無しさん:2006/05/04(木) 17:56:56
>>423
知らない
426417:2006/05/04(木) 20:07:43
>>422
サンクス、バグってことね。なんかこんな感じの小さいバグって色々あるような。
それと、これはバグじゃないけど、メニューのチェックマーク(レ点)用のマージン
って広すぎて、チェックがついてない状態だと間が抜けた感じがするのは自分
だけ?
427ゲイツ:2006/05/04(木) 20:16:47
>>426
>バグってことね

じゃねーよ。
by design だってんだろ
428デフォルトの名無しさん:2006/05/04(木) 20:23:06
フォームをアクティブにせずに表示するにはどのような方法があるでしょうか?
Form#Show だと表示するときにフォームにフォーカスがうつってしまい...

具体的には Messenger のポップアップみたいなことがしたいのですが。
429デフォルトの名無しさん:2006/05/04(木) 20:38:51
>>428
Enable=falseでShow!
430デフォルトの名無しさん:2006/05/04(木) 20:39:31
>>428
APIのShowWindowを使う
431デフォルトの名無しさん:2006/05/04(木) 20:42:33
>>428
2.0でどうなったか知らんが少なくとも1.1ではない。
VBPower何とかのShowNoActivate参照。具体的にはVisible = trueの
前にShowWindow。俺はよくSetVisibleCoreあたりでやる。
432428:2006/05/04(木) 20:55:32
ShowWindow でばっちり解決しました。
ありがとうございましたー
433デフォルトの名無しさん:2006/05/04(木) 22:17:35
NetworkStream ns=tcpclient.GetStream();
//中略
do
{
ns.Read(data,0,data.Length)
}while(ns.DataAvailable)
のようにTcpClientを使って、受信するプログラムを作っているのですが
受信するサイズが大きくなると、受信が終わらないうちにDataAvaiableがfalseになって
受信が終わってしまいます。

よい解決策はありませんか?
434デフォルトの名無しさん:2006/05/04(木) 22:28:42
【テスター募集】名も無きP2Pソフト開発スレ Part1
http://tmp6.2ch.net/test/read.cgi/download/1146675993/

このソフトc#で作られてるらしいが、おまえらどうよ?
435デフォルトの名無しさん:2006/05/04(木) 22:30:33
どう、って言われても感想はない
436デフォルトの名無しさん:2006/05/04(木) 22:34:24
ファイルごとにusingを書かなければいけないのが面倒くさいです。
namespace単位でusingを有効にすることはできないんですか?
437デフォルトの名無しさん:2006/05/04(木) 22:34:56
本職のプログラマが見て、このソフトって厨房レベルなの?
このスレだと何かしら意見でると思ったんだが
評価できるレベルにも達してないってことかw
438デフォルトの名無しさん:2006/05/04(木) 22:37:31
>>434

public static string GetSpace(int Count)
{
 string text1 = "";
 for (int num1 = 0; num1 < Count; num1++)
 {
  text1 = text1 + " ";
 }
 return text1;
}

こんなんありますが・・・

いろいろ丸見えだけど大丈夫なのかね
439デフォルトの名無しさん:2006/05/04(木) 22:42:38
>>438
ワロスw初心者丸出しのコードだな、おいw
440デフォルトの名無しさん:2006/05/04(木) 22:48:03
>>438
これはびっくり
441デフォルトの名無しさん:2006/05/04(木) 22:51:15
MainFormが肥大杉だお
デザイナで弄くる時に大変そうだお
442デフォルトの名無しさん:2006/05/04(木) 22:58:09
せめてStringBuilder使ってくれよw
443デフォルトの名無しさん:2006/05/04(木) 22:59:03
>>438-439
おまいらならどう書く?
444デフォルトの名無しさん:2006/05/04(木) 23:01:18
>>443
僕にはわかりません。
445デフォルトの名無しさん:2006/05/04(木) 23:06:56
>>442
作成する文字列の長さがあらかじめ分かっているのに
無駄にStringBuilderつかってるところもあったよ
446デフォルトの名無しさん:2006/05/04(木) 23:10:07
>>445
いや、capacity指定すれば大してかわらんし。
447デフォルトの名無しさん:2006/05/04(木) 23:12:46
.NETアプリってとりあえずReflectorで中身見ちゃうよな
448デフォルトの名無しさん:2006/05/04(木) 23:14:07
>>446
いや、してないし。
449デフォルトの名無しさん:2006/05/04(木) 23:15:55
ダウソ板から来ました!

屑ども死んでください><
450デフォルトの名無しさん:2006/05/04(木) 23:18:14
GetNodeStateはなにやってるんだろう
enumじゃいけないのかなあ
451デフォルトの名無しさん:2006/05/04(木) 23:30:08
ダウソ板からきたじょ

くっせー板www
452デフォルトの名無しさん:2006/05/04(木) 23:31:10
まぁゆっくりしてけ。
453デフォルトの名無しさん:2006/05/04(木) 23:31:14
(・∀・)カエレ!!!
454デフォルトの名無しさん:2006/05/04(木) 23:32:21
>>452
タイラント先生!
455デフォルトの名無しさん:2006/05/04(木) 23:33:51
せめてdotFuscateくらいしてればこんなに叩かれまいに。
456デフォルトの名無しさん:2006/05/04(木) 23:35:06
ではゆっくりと帰ります
457デフォルトの名無しさん:2006/05/04(木) 23:43:20
>>456
おまえおもしろいな
458デフォルトの名無しさん:2006/05/04(木) 23:44:28
やっぱこうやってすぐ中見えちゃうからみんなC#やりたがらないのかな。
C#でやるならソース公開する前提でやらないと
459デフォルトの名無しさん:2006/05/04(木) 23:45:56
>>458
ソース出すっていってるよ
460デフォルトの名無しさん:2006/05/04(木) 23:59:40
あほらしいよな、ソース覗き放題ってのは。
プログラマの価値を失わせることになる。
C#でつくったものは公開したくない。
461デフォルトの名無しさん:2006/05/05(金) 00:08:35
>>455
うまい技術は盗まれるが、糞な技術は盗まれる心配がないという点では、
最良な書き方なのかも。ある意味。

と、技術のない人が言ってみるテスト。
462デフォルトの名無しさん:2006/05/05(金) 00:11:49
敢えて糞に書く、か。
自動糞化ソフトとか作ればいいのか?
463デフォルトの名無しさん:2006/05/05(金) 00:12:50
>>460
パクらせておいて、著作権侵害で請求する方が金になる場合は別かもしれないぞ。
パクったコードも見えるわけだから。
464デフォルトの名無しさん:2006/05/05(金) 00:28:44
>>433
Read の返値で判断した方が良かったと思う
465デフォルトの名無しさん:2006/05/05(金) 00:32:35
とりあえず>>434内のメソッド、
ループはRじゃなくてL

466デフォルトの名無しさん:2006/05/05(金) 00:51:53
明日は我が身になりそうで怖いな。
FuscatorのためにもやっぱStandard買おう。
467デフォルトの名無しさん:2006/05/05(金) 00:56:04
standerdならdotfuctorついてるんけ?
468デフォルトの名無しさん:2006/05/05(金) 01:14:09
>>443
43[89]じゃないけど書くなら
public static string GetSpace(int Count)
{
 return new String(' ', Count);
}
とか。
469デフォルトの名無しさん:2006/05/05(金) 01:24:53
わざわざメソッド作るまでもないじゃんw
470デフォルトの名無しさん:2006/05/05(金) 01:27:35
目欄、目欄!
471デフォルトの名無しさん:2006/05/05(金) 01:29:59
ただ、GetSpaceって言いたかっただけちゃうんかと
472デフォルトの名無しさん:2006/05/05(金) 01:44:00
空白を指定数分ほしくなるようなことってあるか?
PadLeftとかは使うけど。Formatもあるし、いらんだろ
473デフォルトの名無しさん:2006/05/05(金) 01:45:31
>>469
いやそれはそうだけど元コードの中の人が
わざわざ作ってたからそれに倣ってみただけ。
474デフォルトの名無しさん:2006/05/05(金) 01:50:40
あの板で始めたのが失敗だったな。
こっちだったら……

いくらタコでも本人の熱意があれば
助ける奴もでてきただろう………………か?
475デフォルトの名無しさん:2006/05/05(金) 01:52:33
だなぁ…でも本人は目立ちたがりやっぽいしこっちには来ないんじゃないか?w
476デフォルトの名無しさん:2006/05/05(金) 01:57:21
ちょうどこの板に C# 第三のスレ(タイトルからしてネタスレ)があったんだがな。
477デフォルトの名無しさん:2006/05/05(金) 01:58:01
何人かは釣れたし、本人は満足してるんじゃないか
それにしても、.NETの印象が悪くなったのは悲しい・・
478デフォルトの名無しさん:2006/05/05(金) 02:00:09
Formのファイルを分割できないでしょうか?
TabPageにひとつのファイルみたいに。
479デフォルトの名無しさん:2006/05/05(金) 02:01:14
>>478
partial
480デフォルトの名無しさん:2006/05/05(金) 02:15:14
>partial
手動分割ですよね?

デザイナ対応って可能ですか?
デザイナからのEvent作成とか。

教えて君ですいません。
481478:2006/05/05(金) 02:33:09
partialで分割サンプル作ってデザイナからEvent読んでみましたが、
やはりObject記述のファイルを最後まで読んで終了ですね。

Object記述とEvent記述で分けたのが間違いでしょうか?
IDEが非対応なだけでしょうか?
482デフォルトの名無しさん:2006/05/05(金) 02:39:35
>>481
非対応だね。手動でイベント分けて別クラスで処理させるとかしかないねぇ
483478:2006/05/05(金) 02:48:32
どもです。

しかしVSって意味無く重いし、using補完もされない...
他のIDEって無いんですかね?

参照設定とか基礎API展開しておいて、自動補完してくれるような。
484デフォルトの名無しさん:2006/05/05(金) 02:50:10
アレを意味無く重いと言うか。
是非ともアレと同等以上のIDEをアレより軽く作ってくれ。
485433:2006/05/05(金) 09:53:03
>>464
回答ありがとうございます。
しかし、
int length;
do
{
length=ns.Read(data,0,data.Length)
}while(length==data.Length)
のようにしてみましたが、依然読込みが途中で終わります…。
試しにBorland C++ BuilderのTClientSocketで同等の機能を持ったものを作ったら
ちゃんと受信できてるようなので送信自体はうまくいってるみたいです。
486デフォルトの名無しさん:2006/05/05(金) 11:54:23
毎ループ Read の返値を表示させてみ?
487433:2006/05/05(金) 12:00:54
>>486
表示させたりSleepを入れてみたら確かに全て受信できました。
しかし、そのようなことをしなくても全て受信する方法はないのでしょうか。。。
488デフォルトの名無しさん:2006/05/05(金) 12:03:11
んん? 表示させただけで受信できるのか? それ偶々のような気がするが……。
Read は size パラメータで指示したサイズより小さくても処理を返すのが問題のはず。
489433:2006/05/05(金) 12:05:31
>>488
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=2658&forum=7
> POP3に関しては特にRead毎にSleepは入れていませんが、一度Readすると
> NetworkStream.DataAvailableがfalseになってしまう時があるため、
> NetworkStream.DataAvailable==trueの条件でReadするとコマンドによっては
> すべてのデータをReadできないことが発生しました。
こういうことなのかなぁとは思うんですが、具体的にどうすればいいのか…。
490デフォルトの名無しさん:2006/05/05(金) 12:14:37
>>488 の理由で、Read が 1 でも返すならまだその NetworkStream は有効であると。
491433:2006/05/05(金) 12:30:44
>>490
具体的にはどうすればいいのでしょうか。
492デフォルトの名無しさん:2006/05/05(金) 14:07:43
ここから先は有料となります
493デフォルトの名無しさん:2006/05/05(金) 14:54:25
ワロw
494デフォルトの名無しさん:2006/05/05(金) 14:59:36
オプション

ソース貼り付け  10000円
出張レクチャー  30000円
コーディング代行 50000円
495デフォルトの名無しさん:2006/05/05(金) 15:07:14
出張レクチャー安いなw
496デフォルトの名無しさん:2006/05/05(金) 16:55:31
レクチャーキボヌ
497デフォルトの名無しさん:2006/05/05(金) 17:08:51
前に張られてたけど
【テスター募集】名も無きP2Pソフト開発スレ Part1
tp://tmp6.2ch.net/test/read.cgi/download/1146675993/
面白いなwwwwwあのソース書いたやつと俺らの技量がどっこいどっこいといわれて糞ワロタ
498デフォルトの名無しさん:2006/05/05(金) 17:15:30
あのさ、大勢の人間が集まる掲示板で「俺らの技量」なんてものがあるとでも思っているのか?
499デフォルトの名無しさん:2006/05/05(金) 17:16:38
マジレス返された orz
500デフォルトの名無しさん:2006/05/05(金) 17:19:58
このスレにまで下らない論争持ち込むつもりなら、ここから先は有料となります
501デフォルトの名無しさん:2006/05/05(金) 17:22:02
いくらですか?
502デフォルトの名無しさん:2006/05/05(金) 17:26:07
ひゃくおくまんえんです!
503デフォルトの名無しさん:2006/05/05(金) 17:28:52
>>501
パンスト破り 500円
パンスト素股     1,000円
ピンクローター    1,000円
生パンティ       1,000円
聖水          1,500円
即尺          3,000円
顔射          3,000円
パイズリ顔射     3,000円
ポラロイド撮影(2枚) 3,000円
オナニー鑑賞     3,000円
バイブレーター    5,000円
ごっくん         5,000円
A・F          10,000円
504デフォルトの名無しさん:2006/05/05(金) 17:32:45
>>502
100*1000^5?
505433:2006/05/05(金) 17:34:12
つまりわかんないんですね。
どうもありがとうございました。
506デフォルトの名無しさん:2006/05/05(金) 17:35:22
そうだねお疲れ
507デフォルトの名無しさん:2006/05/05(金) 19:43:27
>>505
解るよ。だけどお前には教えてやらない。
508デフォルトの名無しさん:2006/05/05(金) 20:13:24
おれもレベルが高いけど教えてやらない
509デフォルトの名無しさん:2006/05/05(金) 20:19:28
同ケースのコードを組んだことがあるならまだしも
イリーガルな部分を返答するには、テストコード組んでみて動作検証してみないと
答えが出てこない場合もある。
そこまで手間を割いてホイホイ教えるほどお人好しではない。
510デフォルトの名無しさん:2006/05/05(金) 20:21:04
ていうか 433 にはもう答えが出てるから……。
433 は読めてないようだけど。
511デフォルトの名無しさん:2006/05/05(金) 22:25:42
女って本番よりAFの方が重要度低いのか・・・・
512デフォルトの名無しさん:2006/05/05(金) 22:34:25
AFはSEXじゃないんで安くなる
513デフォルトの名無しさん:2006/05/06(土) 20:26:03
あれだけ書かれても分からんとは
514デフォルトの名無しさん:2006/05/06(土) 21:20:46
厳密名での署名についての質問です。

「ある厳密名がついていないDll」(A)があって「それを使用しているライブラリ」(B)を厳密名をつけて管理する。
ということはできるのでしょうか?
dllで提供されているAに対して厳密名をつけたいと思いal.exeなどをみたのですが
dllは受け付けないようでうまくいきません。
sn -R を使って署名しなおそうと思っても失敗するのですが、DLLに対して外部の者が署名するということはできないのでしょうか?
515デフォルトの名無しさん:2006/05/06(土) 21:41:55
それできたら署名の意味なくね?
516デフォルトの名無しさん:2006/05/06(土) 21:59:51
署名を新たに他の者が発行したとしても、
元の署名が無効となるわけではないので、意味はあるのではないかと
保証のないものを後から保証を肩代わりみたいな。

517デフォルトの名無しさん:2006/05/06(土) 22:16:30
保障されていないものを参照している時点で意味はない。
後から保障を肩代わりってのは意味がないでそ。
保障されたものを参照しないと参照先は保障できないんだから。
518デフォルトの名無しさん:2006/05/06(土) 22:17:14
保障じゃなくて保証だよっ
orz
519デフォルトの名無しさん:2006/05/06(土) 22:26:03
-Rは署名済みのアセンブリかせめて遅延署名されてないとできない、と思う。
520デフォルトの名無しさん:2006/05/06(土) 22:58:07
バージョン管理とかの点を考えて、署名されていないアセンブリを使用者が署名というのは
それなりに意味があると思うんだけどなぁ。間違ってる?

部署Aで作られたdllを部署Bで使用していて、ある時にAで作られたdllが厳密名で署名されていないことに気づいた。
セキュリティやバージョン管理を考えて、Bは自分のアセンブリに対して厳密名で署名したかった。
Bにしてみれば、Bが作った物は 「今ここにあるAで作られたdll」でしか動かないわけで
Bが「Aで作られたdll」に対してしるしをつけたい。
このdllなら動くぞ、という保証みたいな意味で使えるかなと
521デフォルトの名無しさん:2006/05/06(土) 23:00:25
Managed DirectX(MDX)を補助的な役割で使おうと思っています。
コンパイル時にMDXを参照に追加しているのですが、
実行時にMDXのアセンブリがロードできればMDXを使い、そうでなければ違ったコードを実行するという感じでやろうと思っています。
プログラム開始時にMDXがロードできるかどうかを知ることはできるのですが、実行する時点で問題があります。

void SomeMethod() {
 if (canUseMDX) {
  Device device = ...
  Texture texture = ...
 } else {
  ・・・
 }
}
という感じにしたいのですが、MDXがインストールされていなかった場合(canUseMDX==false)、たとえ実行されなくても
関数内にDeviceなどの宣言があると、関数に入った瞬間例外が発生するらしく、次のようにせざるを得ない状況です。

void _SomeMethod_2(){
 Device device = ...
 Texture texture = ...
}
void SomeMethod() {
 if (canUseMDX) {
  _SomeMethod_2();
 } else {
  ・・・
 }
}
この書き方だとMDXを使う箇所が増えてきた時にメンテナンスが難しくなってしまいます。
この問題を根本的に解決する方法は(設計云々以外に)ないでしょうか?
522デフォルトの名無しさん:2006/05/06(土) 23:09:03
>>520
問題は A.dll が本当に A で作られたアセンブリなのか、B が検証することができないって事だ。
出所不明の A.dll を参照しているのなら B.dll も全体として厳密ではなくなってしまう。

>>521
設計以外でどうやって根本的に解決するんだw
MDX を使うバージョンの DLL と、使わないバージョンの DLL を用意する。
それぞれは同じ抽象クラス(またはインターフェイス)から派生したクラスのみを使う。
メインのアセンブリは抽象クラスのアセンブリを参照する。
実行時に MDX が使える場合は MDX.dll を、使えない場合は GDI.dll を動的にロードしてインスタンスを作成し、
抽象クラスにキャストして扱う。
プラグインでよくある構成だよ。
523521:2006/05/06(土) 23:32:12
>>522
レスどうもです。
その場合たぶんそれぞれのdllを用意する必要はなく、メインアセンブリ内で各クラスを定義するだけで大丈夫ですね。
ただ、必ずしもMDXを使った処理と使わない処理が対になっている訳でなく
(独立したif(canUseMDX) {...} と if (!canUseMDX) {...} が散らばっている感じです)、
それぞれの処理に明確な名前を与えるのが難しいような感じなので >>521 の上の書き方がベストだと思います。

・・・と思ったのですが、その書き方をする方法がないのならば仰る方法がベストですかねえ。

#話がそれますが参照のプロパティで「ローカルコピー」をtrueにすればMDXのアセンブリが出力ディレクトリにコピーされるのですが、
#それでも実行時にMDXがロードできませんでした。ローカルコピーって何の意味があるんでしょう?
524デフォルトの名無しさん:2006/05/06(土) 23:43:27
ロードって何のロード?
アセンブリ自体のロードならできると思うけどそれ以外はアウトじゃね?
525デフォルトの名無しさん:2006/05/06(土) 23:44:17
あとは内部的にロードされる別のアセンブリがあるとか。
526デフォルトの名無しさん:2006/05/07(日) 00:08:17
>>514
「ある厳密名がついていないDll」(A)をリフレクションして使えば署名できると思うけど。めんどくせーけど。
527526:2006/05/07(日) 00:11:44
あ、ごめん、Aを署名しようとしたのか。Bの方かと思った。忘れてくれ。
528521:2006/05/07(日) 00:11:51
>>524
アセンブリのロード自体ができていないようです。
具体的にはVector2のみを使用した関数を呼ぶと
FileNotFoundException : 指定したモジュールが見つかりません。(Exception from HRESULT: 0x8007007E)
が発生します。

>>525
出力されたアセンブリ(Microsoft.DirectX.dll)がMicrosoft.VisualCを参照しているようなのでそれも出力してみましたが
やはり同じでした。

結局この場合ローカルコピーは使えないということなんでしょうかね。
529デフォルトの名無しさん:2006/05/07(日) 00:55:24
>>517,519,522,526レスサンクス

「今手元にあるAのdll」だけを真実としてアイデンティティを認めて名前を付ける。
Bとしてはセキュリティ保護・バージョン管理の道具として、うまく使えないものかと。

使用しているdllに一つでも厳密名がついてないなら厳密名を利用できないのは当然として、
後付できないのは不便だなぁと。
結局、sn.exe/al.exeではdllへのオーバライドの署名は無理ということか。(逆アセすればできそうだけど)
530デフォルトの名無しさん:2006/05/07(日) 01:02:25
たしかに、後から署名できると便利と思うこともないではない。
ただ、現実問題としてこれを許すと、明らかに間違った署名の使い方を
されてしまう危険性がある。
署名というか厳密名という仕組み自体の確実性を壊してしまいかねない。
こういう余地を含めることは許容できなかったんだと思うよ。
531デフォルトの名無しさん:2006/05/07(日) 02:05:22
ていうかildasmとilasmで何とかなるだろ。
532デフォルトの名無しさん:2006/05/07(日) 02:22:16
.NET 2.0 では SuppressIldasmAttribute なる属性が追加されていてな
533デフォルトの名無しさん:2006/05/07(日) 02:24:38
意味なさげ
534デフォルトの名無しさん:2006/05/07(日) 03:06:32
こ、こんなのあったのか…
535デフォルトの名無しさん:2006/05/07(日) 08:13:21
suppress 属性を無視するようになる ildasm のパッチまだー?
536デフォルトの名無しさん:2006/05/07(日) 17:34:40
WebClientのDownloadProgressChanged、
OpenReadAsyncだと呼ばれないんですけどぉ!?
537デフォルトの名無しさん:2006/05/07(日) 17:37:52
まずはソースうp
538ほい:2006/05/07(日) 18:47:26
private WebClient _wc;

private void Form1_Load(object sender, EventArgs e)
{
    _wc = new WebClient();
    _wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(_wc_DownloadProgressChanged);
    _wc.OpenReadCompleted += new OpenReadCompletedEventHandler(_wc_OpenReadCompleted);
    _wc.DownloadDataCompleted += new DownloadDataCompletedEventHandler(_wc_DownloadDataCompleted);
}

private void button1_Click(object sender, EventArgs e)
{
    _wc.OpenReadAsync(new Uri(txtUrl.Text));
    //_wc.DownloadDataAsync(new Uri(txtUrl.Text));
}

void _wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
    label1.Text = e.BytesReceived.ToString();
    label2.Text = e.TotalBytesToReceive.ToString();
    progressBar1.Value = e.ProgressPercentage;
}

void _wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    MessageBox.Show("Complete");
}

void _wc_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e)
{
    MessageBox.Show("Complete");
}
539デフォルトの名無しさん:2006/05/07(日) 21:07:13
で、どこで読み込んでるのかね?
540デフォルトの名無しさん:2006/05/07(日) 21:12:46
確かに発生しないようだな。
MSDN フォーラムのフィードバックに投げた方が良いかも。
541デフォルトの名無しさん:2006/05/08(月) 00:25:12
HttpListener上でWebサービスをホストする方法ってどこかにサンプルないですか?
Webサービス呼び出しのコールバックを受け付けるような使い道で使いたいのですが。
「IISが稼動していない環境でも、簡単にWebサービス を公開できるようになる」と聞いたんですけど
具体的実現方法がよくわかりません。(どこまでやってくれるものを期待してよいのかどうかが知りたい。)

とりあえず、Webサービス作成プロジェクトで作った↓のようなものにhttp://localhost/Serviceでアクセスできるようにしたいのですが
public class Service : System.Web.Services.WebService{
[WebMethod]
public string HelloWorld() {return "Hello World";}
}
542デフォルトの名無しさん:2006/05/08(月) 18:32:21
値型、参照型をコントロールしたい
フォームごと、ダイアログごとにソースを分けてイベント処理やコードを記述をしたい
何でもかんでもform1に記述しなくちゃならないのは気持ち悪いんだよね
やらないでいい方法もあるけど、面倒だし
てな人はC++お勧め

始めVBやってたけどいろいろ不満がでてC#をやり
c#はほんと記述が簡単で細かい処理もできるしよかったけど
C++やるとさらに細かく処理できて楽しい
やっぱ最終的にはC++になるんだなー
543デフォルトの名無しさん:2006/05/08(月) 18:35:28
そうだね
544デフォルトの名無しさん:2006/05/08(月) 18:38:41
> やらないでいい方法もあるけど、面倒だし
C++だともっと面倒だが
545デフォルトの名無しさん:2006/05/08(月) 18:39:54
うらやましいな。
C#の手軽さに毒された俺はもうC++に戻れない・・・気がする。
すくなくとも趣味の範囲ではC++やる気しないなあ
速度が重要になってくるとそうでもないのかも知れないけど
546デフォルトの名無しさん:2006/05/08(月) 18:46:44
メモ帳クローンが10分で作れるからなあ…
547542:2006/05/08(月) 18:53:12
>>544
そうなの?

>>545
そりゃ便利だけどさ、配布したいとかなるとさ
.ランタイムいれてくださいーっていうのがな・・・
やっぱネイティブでやりたいわけです

自分だけで楽しむならまあ、C#最強ですな
C++はまだ、始めたばかりでよくわかってないんだけどw
概要についていろいろ見てみると、自分がやりたかったことが
C++だと手軽にできる。APIやネイティブやらフックやら
もちろん、C#でもできるけど、きっちり学びたいんですよねー
548542:2006/05/08(月) 19:01:26
>>544
たとえばさ、OKダイアログ作るのでもさ、フォーム内に記述しちゃうでしょ?
扱いが簡単だから、
C++だったら、別のソースでイベント受けてresult==OKだった場合はうんぬんとか
記述できるし、まあ、C++でイベント作るとなると、あっちこっちに記述しないといけないのはちょっと面倒だけど
あとで、自分のソース見るときにわかりやすいんだよね。
549デフォルトの名無しさん:2006/05/08(月) 19:38:19
TraceListenerを作ってTrace.Listenersに加え、ログをはこうとしたんですが、
よそのDLL(勝手にいじれない)がTrace.WriteLineしているらしく、
余計な文字列がログに混ざってしまいます。
これを抑止できませんか?
550デフォルトの名無しさん:2006/05/08(月) 20:22:34
「よそのDLL」と違う名前のログファイルに吐けばよい(・∀・)
551デフォルトの名無しさん:2006/05/08(月) 20:24:18
>>547
>.ランタイムいれてくださいーっていうのがな・・・
大丈夫だよ。次期Windowsではデフォで
.NETがインストールされるから。
552デフォルトの名無しさん:2006/05/08(月) 20:24:40
TraceListener.Filter をどうにかすればできそうだが
553デフォルトの名無しさん:2006/05/08(月) 20:27:09
>>542
C++ね…C#になれるともう使いたくね。

何とか使えるコードがかけるレベルになるだけで書籍を
何冊も抑えないといけないような言語仕様って終わってる。
「絶対やっちゃいけないこと」集めただけであれだけたくさん本
書けるんだもん。
554542:2006/05/08(月) 21:11:52
本買わないと無理なのか・・
やっぱC++やめました

てか、C#でネイティブアプリ作れるようにしてくれよ!
って言っても趣旨が違うから無理なんだよなー
VB6ひっぱりだすか
555デフォルトの名無しさん:2006/05/08(月) 21:14:45
VBランタイムはいいのか
556デフォルトの名無しさん:2006/05/08(月) 21:18:23
D 言語が完成すればなぁ。
557デフォルトの名無しさん:2006/05/08(月) 21:18:53
VS2005+C#を使用しています。

Bitmapクラスにロードしたフルカラー画像をGIF以外の形式で256色に減色して保存する方法ってありますか?
Bitmap.SaveメソッドはどうやらGIF以外フルカラーでしか保存できなさそうですし・・・
558542:2006/05/08(月) 21:21:30
>>556
もうそれしかないね。
559デフォルトの名無しさん:2006/05/08(月) 21:22:50
TraceSource使え。
560デフォルトの名無しさん:2006/05/08(月) 21:30:40
>>557
取りあえず標準クラスライブラリ使ってお手軽にってのは存在しない。
自前で減色処理を実装する必要がある。
ひょっとしたらどこかにその辺の実装クラスがあるかも知れないが。
Paint.NET とかはどうなんだろ。

あ、一旦 GIF で保存してそいつを保存し直すって手もあるか。
561デフォルトの名無しさん:2006/05/08(月) 21:44:14
いずれ.NET上で動く.NETが出来てその.NET上で動くOSが出来て、そのOS上で動く.NETができて
いずれ、スタートレックみたいにコンピュータと会話しながらプログラミングできる時代がくるのはいつですか?
562デフォルトの名無しさん:2006/05/08(月) 23:06:19
>>556
完成いつかなぁ?
563デフォルトの名無しさん:2006/05/08(月) 23:09:45
未完の大作
564デフォルトの名無しさん:2006/05/08(月) 23:55:31
ミカンの大作
565デフォルトの名無しさん:2006/05/09(火) 01:04:03
>>561
> いずれ.NET上で動く.NETが出来てその.NET上で動くOSが出来て、そのOS上で動く.NETができて

その時はそのOSの上で.NETではない新しいフレームワークが最新の開発環境になってるから

> いずれ、スタートレックみたいにコンピュータと会話しながらプログラミングできる時代がくるのはいつですか?

コンピュータと会話しなくてもシステム開発屋を呼べば会話するだけでソフトはできまっせ
金は掛かるけど
566デフォルトの名無しさん:2006/05/09(火) 08:36:08
くだらねぇ
567デフォルトの名無しさん:2006/05/09(火) 09:46:14
いちいち会話しないといけないの?めんどくせ〜
568デフォルトの名無しさん:2006/05/09(火) 16:46:27
全ての要望をコンピュータが先読みして処理してくれるくらいじゃないとな
まあ、人間いらない世界になるわなー
569デフォルトの名無しさん:2006/05/09(火) 16:50:10
結構多くの人間が最適化で削除されると思う。
570デフォルトの名無しさん:2006/05/09(火) 16:56:26
Earth.GC.Collect();
571デフォルトの名無しさん:2006/05/09(火) 17:27:05
そして誰もいなくなった
572デフォルトの名無しさん:2006/05/09(火) 17:34:26
                      ウワァァァアン!!
                 。・。∧_∧。・。
                。゚  ( ゚´Д`)  ゚。
                  o( U U
                   'ー'ー'
         皆、何処行ったの〜。
573デフォルトの名無しさん:2006/05/09(火) 17:42:55
Earth.GC.KeepAlive(all);
574デフォルトの名無しさん:2006/05/09(火) 17:55:20
public static Object = me;
575デフォルトの名無しさん:2006/05/09(火) 18:34:59
質問させてください。以下のようなコードをcscでコンパイルして実行すると
FolderBrowserDialogは表示される(フォームとボタン)のですが、肝心のフォルダ選択をする
コントロールが表示されずに困っています。

static void Main() {
FolderBrowserDialog fbd = new FolderBrowserDialog();
fbd.ShowDialog();
}

VS 2005 expressで新規プロジェクトを作成し、イベントから同じようなコード(ダイアログのインスタンス
がフォームのメンバ変数になっているだけ)を起動すると表示されるのですが、
今実際に開発しているアプリケーションがcscでコンパイルされることを前提にしているので、
VSに移行するというのも難しく。

cscでコンパイルしてFolderBrowserDialogを正常に動かす方法を教えていただけないでしょうか。
576デフォルトの名無しさん:2006/05/09(火) 18:36:32
STAThread 属性付けろ
577デフォルトの名無しさん:2006/05/09(火) 18:46:51
即レス有り難うございます。無事表示出来ました。
これからぐーぐる先生にSTAThreadについて聞いてきます…
578デフォルトの名無しさん:2006/05/09(火) 22:25:15
泣きながら戻ってくるなよ。
579デフォルトの名無しさん:2006/05/10(水) 00:12:13
S(TAT)hread
580デフォルトの名無しさん:2006/05/10(水) 00:13:23
誰が上手い事を言えとw
581デフォルトの名無しさん:2006/05/10(水) 00:34:49
>>579
!!!!
582デフォルトの名無しさん:2006/05/10(水) 00:41:31
不覚にもワロタ
583549:2006/05/10(水) 01:03:54
>>552
>>559

ウワァァァアンうちの仕事場1.1だよ(TAT)
584デフォルトの名無しさん:2006/05/10(水) 14:14:16
フォーム上のコントロール たとえばテキストボックス「txtName」を参照するときに

this.txtName.Text
txtName.Text

とどっちで書いても普通に使えますけど、どっちのほうが一般的に良いとされているんでしょうか?
585デフォルトの名無しさん:2006/05/10(水) 14:17:36
this 付けた方がローカル変数と区別つきやすいから付けてる
586デフォルトの名無しさん:2006/05/10(水) 17:00:56
ttp://uechoco.s14.xrea.com/download/img/stm_window.jpg

こんな風に、プロセスのパスを取得したいんですが、どうすれば良いのでしょう?
System.Diagnostics.Processクラスには無かったようですが。
587デフォルトの名無しさん:2006/05/10(水) 17:17:04
プロセスは仮想的なもんだから、プロセスのメインモジュールのパスな。
588デフォルトの名無しさん:2006/05/10(水) 17:23:41
>>587
System.Diagnostics.ProcessModuleのFileNameで取得できました。thx。
589デフォルトの名無しさん:2006/05/10(水) 23:54:50
>>584
俺の場合、コントロールは「txt」「lbl」など明らかにコントロールであるとわかる
名前をつけてるからthisはつけない。
メンバ変数も「_xxxx」みたいにしていてわかるからつけない。
関数を呼ぶときにつける。this.Close();
590デフォルトの名無しさん:2006/05/10(水) 23:55:40
後プロパティにもつける。
this.IsClosed
591デフォルトの名無しさん:2006/05/11(木) 00:41:42
>>589
MSの推奨する名前付け規約と違うやりかたを持ち出されても...
592589:2006/05/11(木) 00:49:43
私はMSの命名規則を隅から隅まで熟読し、完全にのっとってプログラミングしています。
ただコントロールの名前だけは別。
そしてこの自分の意見と同じ人がかなり多いことが判明したので、そのまま通してます。
なので検索して調べてみてください。
593589:2006/05/11(木) 01:35:56
名前空間は必ず会社名から始まるようにしてますし、publicなメンバはすべてPascal形式です。
英単語の省略は避け、ものすごく長い名前を採用しています。
変数に型名の一部をつけたりしないし、必ず変数の内容のわかる名前にしてます。
Flagとかflgとかは使いません。単語の区切りに_を入れたり記号を入れたりしません。
インターフェイスの先頭には必ずIをつけてますし、キャンセル可能なイベントは〜ing形式にしてます。

ちゃんとMSの命名規約に書いてあります。
私は名前付けに漏れがないかFxCopでチェックします。

それでもコントロールは例外にしています。
594デフォルトの名無しさん:2006/05/11(木) 01:53:52
メンバ変数のって_から始めるの推奨してたっけ?
595デフォルトの名無しさん:2006/05/11(木) 02:18:44
やあ、713だ。
596デフォルトの名無しさん:2006/05/11(木) 03:14:46
FxCopってのあるんだ始めて知った
おもろい
597デフォルトの名無しさん:2006/05/11(木) 03:23:44
MSじゃないが、コーディング規約があった
http://www.objectclub.jp/community/codingstandard/

疑問点
>(54) オブジェクトの同値比較
>オブジェクトの比較では Equals() メソッドを使い、= を使うな。
>特に、Stringの比較では = を使用してはならない。
これって、なんで?Javaと違ってC#は、= overrideされてるんじゃなかったけ?
598デフォルトの名無しさん:2006/05/11(木) 03:37:11
599デフォルトの名無しさん:2006/05/11(木) 03:39:08
演算子はオーバーロードな。
理由も書いてるだろ。
まあ、C# では弱いね>文字列の比較
それ以外については、Object.Equals のドキュメントにガイドラインが示されてる:
> ・参照型のセマンティクスが、その型がなんらかの値を表しているという事実に基づいている場合には、
>  この参照型の Equals のオーバーライドを検討してください。
> ・ほとんどの参照型では、Equals をオーバーライドする場合でも、
>  等値演算子はオーバーロードしないでください。
>  ただし、複素数型のような、値のセマンティクスを持つ参照型を実装する場合には、
>  等値演算子をオーバーライドする必要があります。
600デフォルトの名無しさん:2006/05/11(木) 09:37:32
>>589
継承したとき、this付けないと継承元のが呼ばれちゃうから、
ちゃんとthis付けた方がいい。
601デフォルトの名無しさん:2006/05/11(木) 11:08:02
>>600 継承元と同じ名前のメンバ名つける気ですか?
602デフォルトの名無しさん:2006/05/11(木) 12:20:28
関数の話だろ?
603デフォルトの名無しさん:2006/05/11(木) 13:36:51
>>599
MSDNにはこうある。
>既定では、演算子 == は、2 つの参照が同じオブジェクトを示すかどうかを確認して参照の等価をテストするため、
>この機能を取得するために参照型で演算子 == を実装する必要はありません。
>型が変更できない場合、つまりインスタンスに含まれているデータを変更できない場合、
>その型は、変更不可能なオブジェクトとして、同じ値を持つ限り同一と見なされるので、
>参照の等価の代わりに値の等価を比較するように演算子 == をオーバーロードするのが有効です。
>変更不可能な型以外で演算子 == をオーバーライドすることはお勧めしません。 

stringは変更不可能な型だからこの例外規定に当てはまるわけで、
他では使おうとは思わないが stringだけ特別扱いでいいと思う。
難点としてはJavaやるときもつい文字列の比較に==を使ってしまいそうになることぐらいか。
604デフォルトの名無しさん:2006/05/11(木) 13:51:56
>>602
関数、プロパティ、protectedやpublicなインスタンス変数のどれも継承先で隠蔽にするには
明示的に new キーワードが必要で、あえて使おうとは思わないな。
>>600
隠蔽にしろoverrideにしろ何もつけなきゃ継承先のが優先されるだろう?
605デフォルトの名無しさん:2006/05/11(木) 14:27:30
継承もとのstatic関数のこと言ってるんじゃない?
606デフォルトの名無しさん:2006/05/11(木) 15:15:47
んなもんはじめからthisじゃ呼べないだろ。
607デフォルトの名無しさん:2006/05/11(木) 15:43:06
>>606
だからstaticじゃない関数を呼ぶときには
thisを付けなきゃダメってこと。
608デフォルトの名無しさん:2006/05/11(木) 16:03:39
えー
609デフォルトの名無しさん:2006/05/11(木) 16:27:15
だから、基底クラスのstatic関数と継承クラスの非static関数が同名になってしまったときに
継承クラスで後者を呼ぶときはthisを付けなきゃならない、って場合を考えろと言うことだろ?
610デフォルトの名無しさん:2006/05/11(木) 16:37:33
言ってることがうにくらげ。具体例をソースで示してよ。
611デフォルトの名無しさん:2006/05/11(木) 17:25:35
そんなことは普通やらない。
普通やらないことのために書き方を変えたりしない。
612デフォルトの名無しさん:2006/05/11(木) 17:27:15
>>609
その場合でもnewをつけないと警告が出るよ
613デフォルトの名無しさん:2006/05/11(木) 17:36:33
もう好きなように書けばいいと思うよ。
614デフォルトの名無しさん:2006/05/11(木) 17:43:59
継承元を呼ぶ場合は base.func1()で、override や new(隠蔽)した方を呼ぶ場合はthisは必須ではない。
それから、static関数を呼ぶ場合はクラス名.関数名() で呼ばないと警告が出る。

thisは付けても付けなくても生成されるコードに差は無いから規約があるならそれに沿って、
無いなら好きなほうにしろでFAだったと思う。
thisを使う必要があるのは次のケースぐらいだったかと。
private int count;
void func1(int count) { this.count = count }
615デフォルトの名無しさん:2006/05/11(木) 17:55:40
プロパティの中でキャストしてやりたいのですが、方法がわかりません。
動かないコードですが、
private Arraylist _array = new ArrayList();

public ItemBody item[int i]
{
get
{
return (ItemBody)this._array[i]
}
}
のような感じで、_array の実体は ItemBody クラスのインスタンスが格納されている
状態で、itemプロパティで、_array から必要な項目を ItemBody 型として
取りだしたいのですが…。

アドバイス頂けないでしょうか?
616デフォルトの名無しさん:2006/05/11(木) 18:02:19
>>615
> public ItemBody item[int i]

C# では引数付きプロパティはサポートされてないよ。
617615:2006/05/11(木) 18:03:54
>> 616
ありがとうございます。という事は、プロパティではなくメソッドで実装しないといけない、
という事ですね。プロパティではできない事がわかっただけでありがたいです。
618デフォルトの名無しさん:2006/05/11(木) 18:04:24
2.0なら
private List<ItemBody> _array;
public List<ItemBody> item[int i]
{
get
{
return this._array;
}
}
これでそれっぽくなる

1ならインデクサを実装したItemBody専用のコレクションクラスを作るしか無さそう
619618:2006/05/11(木) 18:05:25
>>618
item[int i]×
item○
620デフォルトの名無しさん:2006/05/11(木) 18:12:01
>>619
それ勝手にaddされたりする。
621618:2006/05/11(木) 18:18:32
そういえばそうか。
ReadOnlyItemBodyList : List<ItemBody>
...そこまでするならitem(int index)で代用したほうがいいね
622デフォルトの名無しさん:2006/05/11(木) 18:20:50
List<T> じゃなくなるが、一応 List<T> には AsReadOnly メソッドがある。
623デフォルトの名無しさん:2006/05/12(金) 10:26:43
DataGridViewなどでセルの値を取得するのにたとえば
MessageBox.Show(dataGrid[0,0].value.ToString());
と書くとします。
ところがそのセルがnullだった場合エラーになりますよね。
ではこういう時にどうするかってことなんですけど、もちろんこのコードの前でnullだったら実行しないという
if文を書けばいいのはわかりますが、たとえばVBでいうところのnz関数みたいなものがあれば
1行で事足りるのかなと思ったりしました。

手間を惜しむわけではないのですが、短くなればそれに超したことはないなと思いました。

オブジェクト指向という考え方からすれば
dataGrid[0,0].value.ToString()
こういう書き方をしないで、ちゃんとセルのインスタンスを作ってからそれを処理するべきなんでしょうけど、
こういうアクセス方法を用意してくれるならnz関数とかもありなのかなと思ったり・・・。

こういう場合はどういう書き方をするのが一般的なんでしょうか?
624デフォルトの名無しさん:2006/05/12(金) 10:27:36
>>623
Nz関数作ってしまえ
625デフォルトの名無しさん:2006/05/12(金) 12:38:30
>>623
DataGridColumnStyle.NullText
626623:2006/05/12(金) 13:00:08
>>625
こんなのがあったのか・・・。
まだまだ勉強不足でした。
627デフォルトの名無しさん:2006/05/12(金) 18:53:07
あの〜すみません。
TreeNodeで、下位のノードがあるかどうかを調べるにはどうしたらよいでしょうか?
628デフォルトの名無しさん:2006/05/12(金) 18:57:41
Nodes の Count 見ればよかろ
629デフォルトの名無しさん:2006/05/12(金) 19:05:14
へば!
そういえばそうでしたね!
ありがとうございます!!!
630デフォルトの名無しさん:2006/05/14(日) 08:46:13
みなさんはtry-catchって全てのメソッドに入れてますか?
自分はほぼ全メソッドに入れてますがこれって一般的なのか?

以前、ロジック上どう考えても例外発生しないところで
例外が発生しアプリが異常終了した苦い経験があり
try-catchをやりまくることに決めたのです。。。
catchしてExceptionのメッセージ、スタックトレースをログ出力したり、
他に取得した方が便利な情報はないか悩んだり、
そのときほど例外処理は難しいと思ったことはなかったよ。
631デフォルトの名無しさん:2006/05/14(日) 08:50:37
>>630
例外は正しく処理できなければプログラムが終了する。それはあたりまえ。
正しく処理できない例外まで捕まえて握りつぶしてるのであれば愚の骨頂じゃないかなぁ?
632デフォルトの名無しさん:2006/05/14(日) 08:55:01
乗っかって質問
通常の動作では出ないはずの例外は
ドキュメントに書いてあってもあえてcatchしてないんだけど
やっぱりcatchしたほうがいい?
633デフォルトの名無しさん:2006/05/14(日) 09:20:26
>>632
処理するつもりが無ければしなくていい。
っていうかできないだろ。空の catch でも書くつもりか?
634デフォルトの名無しさん:2006/05/14(日) 09:48:35
DLLにするような独立性の高いクラスでは一通り補足して他の例外にまとめたりログ吐いたりするようにしている。
そうじゃないものは必要なものだけ。この辺はJavaのそれとはポリシーが違うから郷に入っては郷にだよ。
635デフォルトの名無しさん:2006/05/14(日) 10:32:26
>>630-634
正しく処理できない例外は
デバッグ段階ではひとまずcatchしてログを吐かせて理由を調べ、
↓その上で
実際のリリース版ではログに吐いて処理継続していいのか
上位階層にスローするとか、ほんとに終了させちゃうのか、どうするのかを
判断すべきでしょうね。
636デフォルトの名無しさん:2006/05/14(日) 11:23:59
ゲーム作ってるが、例外が発生したらもう続けようがないので
一番上の層だけで受け取ってメッセージ出力させてる。
637デフォルトの名無しさん:2006/05/14(日) 11:30:07
exceptionのstacktrace見ても解読するの難しい。。。初心者房ですまぬ。
638デフォルトの名無しさん:2006/05/14(日) 11:33:22
何故厨房は厨房のことを房と略すのか不思議でならない。MS厨とか書いてあっても「えむえすぼう」
と読んじゃっているんだろうか。
639デフォルトの名無しさん:2006/05/14(日) 11:34:45
厨房は厨房のことを房と略す
厨房は厨房のことを房と略す
厨房は厨房のことを房と略す
640デフォルトの名無しさん:2006/05/14(日) 11:41:55
なぜかへんがえできない
641デフォルトの名無しさん:2006/05/14(日) 14:15:58
デバッグ時もキャッチしない。
どうせデバッガで止めることもできるから。

ライブラリでも想定外のものはキャッチしない。
ただこれは場合によるな、キャッチしてラップすることもある。

普通の使う側でも想定外のものはキャッチしない。
どうせキャッチしても何もできないんだから。
ログ出力とかは一番上位で勝手にさせるし。
642デフォルトの名無しさん:2006/05/14(日) 14:17:26
すべてのメソッドでtry-catchなんてやるわけがない。
いったいそれぞれのcatchで何をする気だ。
643デフォルトの名無しさん:2006/05/14(日) 14:18:43
想定外のエラーが起こってるのに処理を続行するなんて恐ろしいことはできん。
644デフォルトの名無しさん:2006/05/14(日) 14:21:44
NAL-6295の舌先三寸 - むやみにキャッチしないでね。ゴールキーパー以外はハンドで反則ですよ。
http://d.hatena.ne.jp/NAL-6295/20050909/p1

匣の向こう側 - あまりに.NETな - 例外処理の使い方
http://d.hatena.ne.jp/akiramei/20051023#p1

今週のクラス System.Exception
http://www.ailight.jp/blog/kazuk/articles/6298.aspx
645デフォルトの名無しさん:2006/05/14(日) 16:07:47
すみません、初心者です。
子ウインドウの作成はどうすればいいのでしょうか。
SDKでいう、WS_CHILD属性のウインドウです。
646デフォルトの名無しさん:2006/05/14(日) 16:19:20
>>645
from2.ShowDialog(this);
647645:2006/05/14(日) 16:44:10
>>646
すみません、それはモーダルダイアログでした。
作りたいのは、親ウインドウが動くと子ウインドウも動いて、
子ウインドウをクリックしてもタイトルバーが青くならないタイプのものです。

MDIウインドウも試しましたが、背景色が濃いグレーに固定されてしまって
希望するものになりませんでした。
648デフォルトの名無しさん:2006/05/14(日) 16:52:47
>>647
だからダイアログだっつってんだろ!!!
649デフォルトの名無しさん:2006/05/14(日) 17:38:15
?ダイアログじゃないでしょ
しかもfrom2って何

>>645の言いたいこともよくわからん
form.Controls.Add(child) とかじゃないの
650645:2006/05/14(日) 18:04:27
>>649
多分そういうことですが、childの部分にフォームを与えたところ
'トップレ ベルのコントロールをコントロールに追加できません。'
という例外が発生しました。

WindowsSDKで、CreateWindowの引数のスタイルがWS_CHILD、親ウインドウが
親ウインドウにしたいウインドウのハンドルを指定したときにできるものです。
651645:2006/05/14(日) 18:13:25
>>649
TopLevelプロパティをfalseにしたところ、form.Controls.Add(child)の
やり方で出来ました。ありがとうございます。

652デフォルトの名無しさん:2006/05/14(日) 18:13:29
フォームはトップレベルウインドウだから子ウインドウにはできないですよ
653デフォルトの名無しさん:2006/05/14(日) 21:57:40
質問です。
ドライブをリストするプログラムを作ったのですが、ちょっと問題があります。
テストに使用したPCにはフロッピードライブがついていないのですが、DriveInfo.GetDrives() の結果にはAドライブが含まれており、
DriveInfo.IsReady は false が返るのですが、呼び出しに5秒ほど待たされるという状態です。
一応 try { string s = drive.VolumeLabel; } catch { continue; } などと試してみたのですが同様でした。
ドライブがあるかないか短時間に調べる方法はないでしょうか?
654デフォルトの名無しさん:2006/05/14(日) 23:03:41
>>653
ん〜、うちではそんなこと無いな……。
WMI の Win32_LogicalDisk 使えばどうなる?
655653:2006/05/14(日) 23:19:54
>>654
レスどうもです。
WMIについてはよくわからないのですが、Webページを参考に

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
  & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery _
  ("Select * from Win32_LogicalDisk")
For Each objDisk in colDisks
  Wscript.Echo objDisk.Caption
Next

のようなコードを実行したところ
A:
C:
D:
・・・
のように表示されました。最初のA:が表示されるまでにはやはり5秒ほどかかったようです。
656デフォルトの名無しさん:2006/05/15(月) 00:39:43
>>642
今急に思いつきで、全部のメソッドで
catch(Exception ex){
  Trace.WriteLine(メソッド名);
  Trace.WriteLine(ローカル変数や仮引数などの名前と値);
  throw;
}
とか書いておいたらいざというときデバッグしやすいかもとか思ったんですが
いかがでしょうよ?
657デフォルトの名無しさん:2006/05/15(月) 00:46:22
>>656
(^ω^;)
658デフォルトの名無しさん:2006/05/15(月) 00:51:05
デバッグとかやりやすいってのはまあわかるが、
実際そんなことやっとれんでしょうよ。
やっぱしAOP的にやれんときついでしょ。
659デフォルトの名無しさん:2006/05/15(月) 05:25:48
>>656 実行時に動的に>>656が追加できればいいと思ったことは多々ある。
660デフォルトの名無しさん:2006/05/15(月) 07:47:21
>>656
デバッガ使えよ。
661デフォルトの名無しさん:2006/05/15(月) 08:35:23
>>656
もっと大きい単位でDebugかTrace入れとけば間に合うだろう。
catch (Exception ex) {
  System.Diagnostics.Debug.WriteLine(ex.ToString());
}
662デフォルトの名無しさん:2006/05/15(月) 08:42:51
catchブロック内は「ログ吐きクラス」でも作って、
その中の「ログ吐きメソッド」を呼ぶようにした方が楽。
関数名なんかはそのメソッド内でスタックトレースから
取得するようにしたらよい。
663デフォルトの名無しさん:2006/05/15(月) 13:25:56
つ[ log4net ]
664デフォルトの名無しさん:2006/05/15(月) 13:31:48
デザイナってツールボックスやサーバエクスプローラからD&Dで簡単に
コードを自動生成できて便利なんだけど、これって必ずしもControlに
依存しないよね。だけど、Control継承クラスじゃないとデザイナ画面が
出せません。それ以外のクラスでもデザイナが使えるようにすることって
できないんでしょうか?
665デフォルトの名無しさん:2006/05/15(月) 13:36:23
.NET では基本的に Control じゃない == 非 GUI ということになるが、デザイナを使いたい非コントロールってなんだ?
それとも OpenFileDialog みたいなコンポーネントを作りたいってこと?
666デフォルトの名無しさん:2006/05/15(月) 13:43:56
データベース周りいじっててそう思いました。
DataAdapterやDataSetなんかをデザイナで簡単に作成できるんですが、
それは必ずしもUIと一体化させるとは限らないような気がして。
667デフォルトの名無しさん:2006/05/15(月) 13:47:35
分かりづらくて申し訳ない。要するに(一例として)
UIを持たずにデータベースにアクセスするようなクラスでデザイナ
を使えないかということです。
668デフォルトの名無しさん:2006/05/15(月) 13:53:18
コンポーネントの追加ではいかんのか
669デフォルトの名無しさん:2006/05/15(月) 13:59:44
ああ、こんなときにコンポーネント使うんですね。
ありがとうございます。
670デフォルトの名無しさん:2006/05/15(月) 15:23:35
>>663
機能多すぎて使いづらい・・・(´・ω・`)
671デフォルトの名無しさん:2006/05/15(月) 16:30:29
起動時に開かれる親formのインスタンスを取得したいのですが、
何かいい方法ないですか?
672デフォルトの名無しさん:2006/05/15(月) 16:54:59
必要としてるメソッドに参照を渡せ
673デフォルトの名無しさん:2006/05/15(月) 17:22:49
>>672
起動時のウィンドウって形で取得したいので、パラメータ渡しはしたくないんですよね。
Formの状態を設定するだけなんでFormにキャストしてあげればいいし。

Form myForm = (Form)Application.OpenForms[0];

というわけで、これでいけるかどうか実験中です。
674デフォルトの名無しさん:2006/05/15(月) 21:47:27
>>671
「起動時に開かれる親form」って何?
そもそもそういう特別なWindowってあったっけ?
アプリによっては[起動→スプラッシュウィンドウ→初期化処理→メインウィンドウ]って流れになるから必ずしも最初にCreateWindowされるのが全ての親になるって保証はないわけだが。
どれが親になるのかは開発者しか分からないから、>>672の回答が正解だと思うんだけどね

もしかして単に「最初に作られるトップレベルウィンドウのインスタンスを取得したい」って話?
675デフォルトの名無しさん:2006/05/16(火) 13:47:33
>>656
RealProxyを使えよ。
676デフォルトの名無しさん:2006/05/17(水) 00:38:51
そういう場合普通概念的には透過プロキシ使えよ、という。
677デフォルトの名無しさん:2006/05/17(水) 00:41:34
しかしあらゆるメソッドでプロキシ使えってのは
はっきり言って現実的じゃない。ような気がする。
678デフォルトの名無しさん:2006/05/17(水) 11:36:19
メールクライアントを作ろうとしてるんだが、
POP3のやりとりで
USER−>PASS−>STAT
で動かなくなる。
アンチ・ウィルスを止めるとうまく動く。
どないせえっちゅうんや。
679デフォルトの名無しさん:2006/05/17(水) 12:49:35
アンチ・ウィルスを止める
680デフォルトの名無しさん:2006/05/17(水) 12:50:08
どないもこないもありまへんがな
681デフォルトの名無しさん:2006/05/17(水) 13:01:19
止まるだけならマシやがな
俺のはコマンド間違えるとアンチウィルスソフトが強制終了するがな
再起動するまで直らんがな
682デフォルトの名無しさん:2006/05/17(水) 14:09:49
using Microsoft.Office.Interop;←こんな感じで参照しているのに、
using Microsoft.Office.Interop.Word;←こんな感じで参照しているのに、

private Microsoft.Office.Interop.Word.Application WdAppli;←ここまで丁寧にかけば大丈夫だた。
replaceAll = Word.WdReplace.wdReplaceAll; ←これはエラーでる。

これはなぜでしょうか。

word2000を使用していた頃はこんなことにはなりませんでした。
word2000をアンインストールして、word2003をインストールし使用するようになったら、急に自分で作ったソフトがエラーを出すようになってしまいました。

なお、既に、
wordobjectlibrary11.0は参照追加済みです。

宜しくお願いします。
683デフォルトの名無しさん:2006/05/17(水) 14:15:52
エラーの内容を書かないのは相変わらずだな
684デフォルトの名無しさん:2006/05/18(木) 09:38:07
C#2.0のアプリでファイルアップロード機能を作ろうと思っています。
下記のようにして、win2kサーバのWeb共有を施したフォルダをアップロード先に指定しました。

NetworkCredential nc = new NetworkCredential();
nc.UserName = "username";
nc.Password = "pass";
webClient.Credentials = nc;

System.Net.webClient.UploadFile(url,localpath);
url="http://192.168.0.1/DLSample/"
localpath(コモンダイアログより取得)

これを実行すると以下の例外が表示されアップロードが出来ませんでした。
パスワードの間違い等はありません。

System.Net.WebException: ログオン失敗: ユーザー名を認識できないか、またはパスワードが間違っています。
---> System.IO.IOException: ログオン失敗: ユーザー名を認識できないか、またはパスワードが間違っています。

以上です。
申し訳ありませんが解決方法のヒントをいただけないでしょうか。
685デフォルトの名無しさん:2006/05/18(木) 09:56:29
NTドメインは?
686デフォルトの名無しさん:2006/05/18(木) 10:13:47
>>685
回答ありがとうございます。
[NTドメイン]と言うものを考慮する必要があることを知りませんでした。
そのあたりについてもういちど調べてみます。

ちなみにサーバ上のフォルダにファイルをアップロードするという機能自体は
WebClient.UploadFileを使用することで実現できるのでしょうか。
687デフォルトの名無しさん:2006/05/18(木) 12:06:13
>>686
JAVA
688デフォルトの名無しさん:2006/05/18(木) 22:26:33
>>682
using Word = Microsoft.Office.Interop.Word;
689デフォルトの名無しさん:2006/05/19(金) 00:55:07
private void tabControl1_Selecting( object sender, TabControlCancelEventArgs e )
{
 MessageBox.Show( e.TabPageIndex + "\n" + tabControl1.SelectedIndex );
}

で、e.TabPageIndex と tabControl1.SelectedIndex が同じ値だけど、
これっておかしくない?

tabControl1.SelectedIndex は Selected の後で変わるべきちゃうか?
だって SelectedIndex だもん
690デフォルトの名無しさん:2006/05/19(金) 01:40:07
結局Javaもプロパティをサポートすんだね。
どんだけパクれば気が済むんだ
691デフォルトの名無しさん:2006/05/19(金) 05:12:47
>>690
C#も、JavaとDelphiパクりだし気にスンナヽ(´Д`)ノ
692デフォルトの名無しさん:2006/05/19(金) 06:22:06
確かにJavaはパクってるがDelphiをパクったというのはどうだろうか
693デフォルトの名無しさん:2006/05/19(金) 06:24:19
>>692
設計者、設計者
694デフォルトの名無しさん:2006/05/19(金) 06:24:59
ああ、設計者が一緒だから、パクりじゃないだろ、といいたいのかもしれんか・・・
695デフォルトの名無しさん:2006/05/19(金) 09:08:33
>>694
正解
696デフォルトの名無しさん:2006/05/19(金) 11:07:27
教えて下さい。
string uri = @"URL〜/cgi-bin/set?data=["\]";
WebClient wc = new WebClient();
Stream st = wc.OpenRead(uri);

てな感じで/cgi-bin/set?data=["\]を送りたいんですが、
wc.OpenRead(uri);を実行すると、勝手に["\]がエスケープされて
%22,%5Cになってしまいます。
訳合ってエスケープしたくないんですが、
エスケープせずに送る場合はどうすればいいんですか?
697デフォルトの名無しさん:2006/05/19(金) 11:20:36
UrlEncode しなきゃ駄目な文字だし。そのまま送ったら RFC 違反。
698デフォルトの名無しさん:2006/05/19(金) 13:44:13
>697
そうなんですが・・・
でも、IEのアドレスバーに/cgi-bin/set?data= "\
って入力して、Enter押すと半角スペースは%20に
エスケープする癖に、"\については無変換で送ってるんですよ。

実際、送ったパケットをキャプチャしてダンプを見ると、22 5cで送ってるし・・
699デフォルトの名無しさん:2006/05/19(金) 14:24:53
>>698
といっても>>697の言うとおりだし・・・

>半角スペースは%20に エスケープする癖に
半角スペースはエスケープしないとhttpサーバでエラーになるから、
シフトJISをそのまま送る凶悪なIEでもさすがにエスケープせざるを得ない。
700デフォルトの名無しさん:2006/05/19(金) 14:39:03
>699
じゃあやっぱりIEがRFC無視したクソ野郎ってことですね(´Д`)
ああ〜IEを踏襲した仕様云々〜なんて言わなきゃよかったよ・・・

WebClientっぽいのを一から作って間に合うかどうか(;´Д`)

色々ありがとう。
吊ってきます・・・
701デフォルトの名無しさん:2006/05/20(土) 14:51:02
なぜそこでクライアントを1から作るという発想になるのか
702デフォルトの名無しさん:2006/05/20(土) 16:21:44
次のようなidlを元にmidlとtlbimpを使用して相互運用アセンブリを作成しました。

import "oleidl.idl";
[uuid(82636634-EA4C-4577-8CEF-E5D917E709AE)]
library Test{
  [uuid(4635C6B4-7916-4a6e-8266-1B92C9B3DBD9)]
  interface ITest :IUnknown{
    HRESULT MethodA(GUID guid);
}}

.Net Framework には Guid 固有のマーシャリング処理が含まれているので
MethodAの引数の型は System.Guid になるか、と期待したのですが、
相互運用アセンブリ内で定義されたGUID構造体になってしまいます。

MethodAの引数の型が System.Guid になるようにするには
どうすればよいのでしょうか?
703デフォルトの名無しさん:2006/05/20(土) 18:53:37
PanelのAutoScrollがtrueで、
乗せているコントロールの幅と高さがPanelを超える場合でも、
スクロールバーが縦と横の両方表示されるPanelと
縦しか出ないPanelがある。
PanelもPanel上のコントロールも、DockはNone以外。
Dockが共通でも挙動は異なる。
必要時にスクロールバーが表示されるにはどうしたらいいだろうか。
704デフォルトの名無しさん:2006/05/20(土) 19:02:54
>>703
もっと条件詰めれ
つか AutoScroll と Dock は相性悪いと思うが
705デフォルトの名無しさん:2006/05/20(土) 19:09:53
ScrollableControlの使えなさは異常
糞杉
706デフォルトの名無しさん:2006/05/20(土) 19:21:44
>>704
>もっと条件詰めれ
痛いとこ突かれた。ほか書くことないもんなあ。
環境はC#2005 Express。ぐらい?
Panelは別のPanelに乗っている。
挙動の異なるPanel同士は隣接し、片方がDock.FillでSplitterで分割。
あと訂正。DockがNoneのものもある。

>>705
そうなのか?
AutoScrollPositionが負の値で取得されるのはどうかと思った。
707デフォルトの名無しさん:2006/05/20(土) 20:32:44
>>706
>Panelは別のPanelに乗っている。

親のPanelをDockやめてAnchorにしたら上手くいったことがあったようななかったような
708デフォルトの名無しさん:2006/05/20(土) 21:54:04

デイトタイム構造体への変数入力について教えて下さい。
分や秒だけ、入力し、他の数字(日付や年)は、すでに入っている値をそのままにするにはどうしたらいいのでしょうか?

例えば以下のように数字を入れた後、
X = new DateTime(2006,5,20,21,5,15);

2006年とか5月はそのまま変更することなく、 分と秒だけ変えたいのです。

教えて下さい<(_ _)>
709デフォルトの名無しさん:2006/05/20(土) 21:56:34
作り直せ。
710デフォルトの名無しさん:2006/05/20(土) 22:39:04
ぷろぱてー
711デフォルトの名無しさん:2006/05/20(土) 22:57:10
>>709

レスありがとうございます。

作り直すというのは、どういうことなのでしょうか?


712デフォルトの名無しさん:2006/05/20(土) 23:10:38
X = new DateTime(X.Year, X.Month, X.Day, X.Hour, newMinute, X.Second, X.Millisecond);
元の値から差を計算して AddMinutes でもいいけどな。
713デフォルトの名無しさん:2006/05/20(土) 23:57:55
>>712
あああ〜〜
なるほどそうやればいいだけなのですね。

ありがとうございました。
714デフォルトの名無しさん:2006/05/21(日) 02:09:42
本アプリと、本アプリで使用するデータエディタを作成しております。
データエディタで作成したデータ(クラスオブジェクト)をシリアライズ化してファイルに出力し、
本アプリで読み込んで逆シリアライズをかけたのですが、

アセンブリ 'DataEditor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' が見つかりません。

と言われました。

本アプリ      :SOX.exe
データエディタ  :DataEditor.exe

なので、エディタの実行ファイル名をSOX.exeにすると本アプリでも読み込めました。
シリアライズ化したクラスオブジェクトを逆シリアライズすることが出来るのは、
同じ名前の実行ファイルだけなのでしょうか?
別の実行ファイルでも逆シリアライズできる方法を教えてください。


↓ここを参考にしました。
ttp://dobon.net/vb/dotnet/file/binaryformatter.html
715デフォルトの名無しさん:2006/05/21(日) 03:05:40
そのデータクラスを独立した DLL にして、両方から参照させろ。
716デフォルトの名無しさん:2006/05/21(日) 03:08:54
>>714
シリアライズしたい型をdllの中で定義して、
SOX.exeとDataEditor.exeの両方から参照してみては?
717デフォルトの名無しさん:2006/05/21(日) 04:03:05
>>714
XMLSerializer使うってのはどうよ。
1.1だと日本語環境で致命的なバグがあったけど2.0なら使えるんじゃないかな
718703:2006/05/21(日) 09:47:47
>>707
Anchorで代用できるか試したがうまい具合にPanelを広げられなかった。

自己解決したので報告しとく。
StatusBarのzオーダーが原因だった。
他のコントロールよりも後ろに配置してやらないと今回のような不具合が見られるようだ。
これはToolBarにも同様のことがいえる。
皆さん回答ありがとう。
719デフォルトの名無しさん:2006/05/21(日) 15:53:38
XMLSerializerで1.1だと日本語環境で致命的なバグ
げ、これってどんなの?
720デフォルトの名無しさん:2006/05/21(日) 15:55:40
10分ぐらい固まるんじゃないっけ
721デフォルトの名無しさん:2006/05/21(日) 16:03:34
XmlSerializer クラスから起動された csc.exe が一定時間応答を停止する場合がある
http://support.microsoft.com/default.aspx?scid=kb;ja;899153
722デフォルトの名無しさん:2006/05/21(日) 17:22:31
サンクス、XmlSerializerバリバリ使ってるから心配だったわ。
723デフォルトの名無しさん:2006/05/21(日) 19:10:08
XmlSerializer不便じゃないか?XmlIncludeAttributeとか
724デフォルトの名無しさん:2006/05/21(日) 19:24:37
設定ファイルなんかの
設定オブジェクト<=>Xmlでの永続化が便利じゃない?
List<string>とかもそのままいけるし
ある程度階層化とかも容易だし List<XmlSerialisableな設定オブジェクト>みたいな
725714:2006/05/21(日) 20:03:07
皆さんありがとうございました。
大変参考になりました。
726デフォルトの名無しさん:2006/05/22(月) 15:35:24
フォームが突然普通のクラスに変わってしまうのぜすが、
同じような経験の方いませんか?
(デザイナで開けず、単なるクラスとしてしか触れないので、ボタンの配置等ができない)

HogeForm : Form
と、フォームを継承しているのに、右クリックにて表示される
「デザイナの表示」メニューが消えてしまうのです。
アイコンも、フォームのアイコンでなく、クラスファイルのアイコンです。
727デフォルトの名無しさん:2006/05/22(月) 15:43:42
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
728デフォルトの名無しさん:2006/05/23(火) 02:16:17
ソフトキーボード作りたいんですけど、
キーボードの入力イベントってソフト的に発生するにはどうすれば良いですか?
729デフォルトの名無しさん:2006/05/23(火) 02:17:48
KeyDown,KeyUp,KeyChar(うろ覚え)
730デフォルトの名無しさん:2006/05/23(火) 02:55:00
>>729
なんかそれらはキー入力を処理するためのもののようです。
731デフォルトの名無しさん:2006/05/23(火) 03:14:46
んじゃ、SendMessageすればいけるんとちゃう?
732デフォルトの名無しさん:2006/05/23(火) 03:40:20
どもです。
検索の結果、SendKeys.Send()でいけそうな感じです。
でもマイクロソフトのサイトには、「重要」危ないから使うな、って書いてあるけど。
733デフォルトの名無しさん:2006/05/23(火) 15:28:52
>>702
今更のレスだが、ilasm と ildasm 使えと言うことになるんじゃないかな
734デフォルトの名無しさん:2006/05/24(水) 09:59:39
ここ数日、突然ステップ実行に異常に時間が(1行5秒ぐらい)
掛かるようになってしまったのですが、同じ現象に遭遇した人
いませんか?
ブレークしない分にはデバッグ実行も普通に動作しています。

よろしくお願いします。
735デフォルトの名無しさん:2006/05/24(水) 10:04:48
エディット&コンティニューを有効にしたとか?
//それで遅くなるかは知らん
736デフォルトの名無しさん:2006/05/24(水) 10:06:47
>>735
ありがとうございます。
エディット&コンティニューとは何でしょうか?
試してみたいと思うのですが。
737デフォルトの名無しさん:2006/05/24(水) 10:08:17
>>735
あ、オプションのデバッグのところにありました。
確かに有効になってます。
これってデフォルトは無効なんでしょうか?
738デフォルトの名無しさん:2006/05/24(水) 10:15:24
>>735
無効にしてみましたが、結果は同じですね。

またされている間の5秒間はCPU使用率も100%になってます。
書き忘れてましたが、VS2003 + ASP.NETです。
739デフォルトの名無しさん:2006/05/24(水) 10:54:37
>>735
その後、いろいろ試していたらどうも
ソリューション依存っぽかったので
8MB程度に肥大化していた.suoファイルを
削除して作り直したところ元に戻りました。
(再生成されたファイルは8KB)

エディット コンティニュは有効でも特に
遅くなるという感じはありませんでした。

お騒がせしました。
740デフォルトの名無しさん:2006/05/24(水) 11:29:52
2003でエディット&コンティニュて使えたっけ?
あと、ブレークポイントの数が増えると
極端に重くなる事がある。
741デフォルトの名無しさん:2006/05/24(水) 11:38:26
>>740
使ったことはないんですが、一応オプションに項目はありました。
742デフォルトの名無しさん:2006/05/24(水) 11:40:53
WebBrowserクラスにて、画像表示のON/OFFやActiveXの実行のON/OFF、
JavaScriptの実行のON/OFF、などをやりたいのですがどのプロパティorメソッドを用いればよいのでしょうか??
743デフォルトの名無しさん:2006/05/24(水) 16:57:18
イミディエイトウインドウて、名前完全修飾じゃないと使えないの?

名前 'Convert' は現在のコンテキスト内に存在しません。

て、出るけど、完全修飾なら使える。。。
何か方法ないかしら?
744デフォルトの名無しさん:2006/05/24(水) 17:00:56
>>742
>>394-
745デフォルトの名無しさん:2006/05/24(水) 18:53:31
>>742
COMの知識がないと厳しい。

具体的な方法は、
http://d.hatena.ne.jp/santamarta/20050220
が参考になる。
746デフォルトの名無しさん:2006/05/24(水) 18:58:24
>>733
どうもありがとうございます。

その方法でやってみましたが、
idlを書き換えた際のMSILの更新が大変だったので
結局、 .NET Reflector でDLLをC#のコードに変換して使用する事にしました。
747デフォルトの名無しさん:2006/05/24(水) 20:27:45
C#(NET)でファイルパス等の文字列を縮める
にはどうしたら良いのでしょうか?

例えばエクスプローラのように
"c:\aaa\bbb\cccc"を "c:\aaa\bb..."
としたいのですが

自分では見つけられなかったので
今のところPathCompactPathをP/Invokeしてます
748デフォルトの名無しさん:2006/05/24(水) 21:00:10
DrawString のStringFormatTypeかなんか。
749747:2006/05/24(水) 22:39:24
あ、できました

StringFormat fmt = new StringFormat(StringFormatFlags.NoWrap);
fmt.Trimming = StringTrimming.EllipsisWord;
e.Graphics.DrawString(,,,,,,fmt);
こんな感じで。

因みにEllipsisPathを指定したら中間だけ省略されて面白いですね
>>748さんありがとう


750デフォルトの名無しさん:2006/05/24(水) 23:26:38
GDI+作った奴天才だろ
751デフォルトの名無しさん:2006/05/24(水) 23:36:30
消え去る運命
752デフォルトの名無しさん:2006/05/24(水) 23:37:47
app.config で前もって設定した、keyのvalueの変更ってどうやって
やればいいんでしょうか?
753デフォルトの名無しさん:2006/05/24(水) 23:44:38
エディタで開いて変えるねん。
それがいやならXmlDocumentにでも読み込むねん。
それもいやならあきらめるねん。
754デフォルトの名無しさん:2006/05/25(木) 00:35:19
あー、やっぱり読み込みみたいに簡単にやる方法はないのね。
>>XmlDocumentにでも読み込むねん。
これでやります。dクス >752さん
755デフォルトの名無しさん:2006/05/25(木) 00:37:49
app.configって動的に書き換えるもんか?
756デフォルトの名無しさん:2006/05/25(木) 00:45:44
基本的に書き換えるな
757デフォルトの名無しさん:2006/05/25(木) 02:04:31
2.0ならOpenExeConfigurationとかで開いて変更して保存できるかも。
758デフォルトの名無しさん:2006/05/25(木) 10:02:28
MSDNでC#の文法一覧書かれてる場所わかりませんか?

while(expression)|statementみたいなかんじで・・・
どっかにあったのまえみたんだけれどみつからなす。
759デフォルトの名無しさん:2006/05/25(木) 10:25:16
言語仕様 で MSDN 検索汁
760デフォルトの名無しさん:2006/05/25(木) 10:37:36
あったよ。
あとインストールフォルダのlanguagespecificationXXX.docもあった。
さんくすこ
761デフォルトの名無しさん:2006/05/25(木) 11:48:37
ネットワーク共有についてです。ネットワーク共有で接続しているマシンのサービス名の取得ってできないでしょうか?
\\hogehoge\shareddocs
とアクセスしてフォルダやファイルの一覧の取得は可能ですが、
\\hogehoge
とアクセスして sharddocs などの共有フォルダの一覧を取得したいのです。
c# のリファレンスなどを見ても、ネットワーク共有のクラスなどはないようですし。
どなたかご存じないですか?
762デフォルトの名無しさん:2006/05/25(木) 12:08:05
.NET 単体じゃ無理。NetShareEnum とかが必要。
763デフォルトの名無しさん:2006/05/25(木) 12:22:15
>>762
どもです。System.Net あたりに用意されているといいんですけれどね〜。
ありがとうございました。
764デフォルトの名無しさん:2006/05/25(木) 14:41:16
自分でつくったDLLをグローバルアッセンブリキャッシュに登録し
VisualStudioから参照の追加でこのDLLを参照させるにはどう指定すればいいのでしょうか
765デフォルトの名無しさん:2006/05/25(木) 14:46:06
>>764
・sn.exe
・gacutil.exe

以上
766デフォルトの名無しさん:2006/05/25(木) 14:54:34
説明不足でした。
登録のほうじゃなく参照のほうを聞きたいです。
参照の追加で%SYSTEM%assemblyフォルダ開いても指定できないし
登録したDLLを直接指定すると絶対パスになってしまう。
別のPCに持って行っても大丈夫なようにファイル名だけ指定したいのですが
767デフォルトの名無しさん:2006/05/25(木) 15:02:25
>>766
assembly にあるほうじゃなくて、手元に残っている DLL を指定。
768デフォルトの名無しさん:2006/05/25(木) 15:08:39
開発用の共通ライブラリをプロジェクト間で使い回すためにGACに登録するのは邪道。
GACはあくまで実行時に参照するためにある。
769デフォルトの名無しさん:2006/05/25(木) 16:36:21
なるほど実行時のみですか。
VSでのビルド時のDLLパス指定ですが
参照設定してるDLLのプロパティにある「パス」って項目が編集不可で相対パスが指定できません。
ほかのPCにもっていっても問題なくビルドできるようにするにはどうすれば良いのでしょう
770デフォルトの名無しさん:2006/05/25(木) 17:08:25
>参照設定してるDLLのプロパティにある「パス」って項目が編集不可で相対パスが指定できません。

試してみましたか?
変なコピーの仕方をしなければ問題なくビルドできると思いますが・・・
771デフォルトの名無しさん:2006/05/25(木) 18:24:18
.csprojの中みましたが
参照DLLがプロジェクトと同じドライブにあるとReference/HintPathが相対パスになるが
ドライブがちがうと絶対パス指定に。

例えばこの参照DLLがオラクル製のだとして
違うドライブ:%PROGRAMFILES%oracle\bin\oracle.dll
を参照させると別のPCにもって行ったときoracle.dllが想定外の場所にインストールされてるとビルドできない。
このあたりをグローバルアッセンブリで解決できればいいなとおもったんですが。
プロジェクトフォルダに参照DLLのコピーいれとくのが普通の解決方でしょうか。
772デフォルトの名無しさん:2006/05/25(木) 18:27:38
csproj って、実行時には参照されないって知ってる?
773デフォルトの名無しさん:2006/05/25(木) 19:26:26
>>771
やりたいことはわかりましたが、ドライブが違うのに「相対パス」とか書いても意味ないですよ。
「ファイル名」のことですよね。

参照するアセンブリの場所が変わったときにもファイルをプロジェクトのディレクトリ内にコピーしておくか、
持って行った先でプロジェクトのプロパティで「参照パス」を設定するのが普通なような・・・

それはさておき、元々の質問
>VisualStudioから参照の追加でこのDLLを参照させるにはどう指定すればいいのでしょうか
登録済みのものはファイルを指定しなくても.NETのところの一覧に出てきませんか?
774デフォルトの名無しさん:2006/05/26(金) 17:43:14
http://www.atmarkit.co.jp/fdotnet/dotnettips/438winsettings/winsettings.html

このアプリの設定の保存場所を実行ファイルと同じ場所に変えれないでしょうか?
フォームのサイズと位置を保存したいです。
775デフォルトの名無しさん:2006/05/26(金) 20:43:54
>>773
>登録済みのものはファイルを指定しなくても.NETのところの一覧に出てきませんか?
でてきません。
gacutilからも登録が確認できない。
エクスポローラからassemblyフォルダみるとちゃんと登録はされてんですが。
776デフォルトの名無しさん:2006/05/26(金) 20:53:37
>>775
>エクスポローラから

お前はもう死んでいる!
777デフォルトの名無しさん:2006/05/26(金) 23:27:36
string str = "゚<>゚";として
str.IndexOf("<>");で-1が返ってくるんだけど何故?

最後の「゚」を取り除くと、ちゃんと1が返ってくる。
778デフォルトの名無しさん:2006/05/26(金) 23:31:20
"゚<>゚";

("<>");

↑かわいい^0^
779デフォルトの名無しさん:2006/05/26(金) 23:34:17
以前にも話題に出て答えた記憶があるな。
多分 Unicode に起因する仕様(推測)。
濁点や半濁点は、直前の文字と結合して一つの文字として認識されるようだ。
ちなみに全角の濁点半濁点でも同じ。探すと結構その手の文字は多い。
(日本語環境で表示できるのは全半角の濁点半濁点くらいだが)
780デフォルトの名無しさん:2006/05/26(金) 23:36:49
゚がカルチャ関係でひっかかってたみたいです
StringComparison.Ordinal指定したらOKでした。
781デフォルトの名無しさん:2006/05/27(土) 02:18:54
static void Main(string[] args) {
System.Net.WebClient wc = new System.Net.WebClient();
wc.Headers.Add(HttpRequestHeader.Range, "bytes=0-1");
byte[] data = wc.DownloadData("http://www.example.com");
wc.Dispose();
}

これだけのプログラムなんですが、DownloadDataのところでWebExceptionが発生します。
そのWebExceptionを見ると、StatusプロパティがWebExceptionStatus.UnknownErrorです。

InnerExceptionはArgumentExceptionで、Messageが
"このヘッダーは、適切なプロパティを使用して変更しなければなりません。\r\nパラメータ名: name"
StackTraceが
場所 System.Net.WebHeaderCollection.ThrowOnRestrictedHeader(String headerName)
場所 System.Net.WebHeaderCollection.Add(String name, String value)
場所 System.Net.HttpWebRequest.set_Headers(WebHeaderCollection value)
場所 System.Net.WebClient.CopyHeadersTo(WebRequest request)
場所 System.Net.WebClient.GetWebRequest(Uri address)
場所 System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)

これを見ると、HttpWebRequestでRangeヘッダーやIf-Modified-Sinceヘッダーなどの「制限付きヘッダー」を設定したときに投げられる例外のようです。
ところがWebClientクラスのHeaderプロパティのドキュメントには

>Headers プロパティは、WebClient が要求で送信するヘッダー情報を含む WebHeaderCollection インスタンスを格納します。
>これは無制限のヘッダーのコレクションであるため、HttpWebRequest などの WebRequest の子孫で制限されるヘッダーを設定できます。

と書いてあります。これはドキュメントが間違っているのでしょうか?
また、WebClientでRangeヘッダーやIf-Modified-Sinceヘッダーを使うにはどうしたらよいでしょうか。

.NET Framework 2.0です。
782デフォルトの名無しさん:2006/05/27(土) 02:52:20
そう言うもんだと割り切って HttpWebRequest 使えば
783デフォルトの名無しさん:2006/05/27(土) 10:09:19
MicrosoftのC#のIDEを手に入れたいんですけど、
今、製品版を買うとしたらどれがいいんでしょう?

それと>>4にある無料配布中の開発環境はバージョンが古いのでしょうか?
色々種類が多くてわかりません!
784デフォルトの名無しさん:2006/05/27(土) 10:13:08
>>783
個人開発なら>>4にあるので十分性能あるよ。
最近無期限で無料にもなったみたいだし。
785デフォルトの名無しさん:2006/05/27(土) 10:22:35
>>784
ありがとうございます!
さっそくDLしてきます
786デフォルトの名無しさん:2006/05/27(土) 11:21:13
>>774
ファイルがわけの分からない深い場所に保存されるのと
仕様がはっきりわからないのが気持ち悪くて
結局XMLSerializer使って設定読み書きしてる。
787デフォルトの名無しさん:2006/05/27(土) 11:32:51
ScopeをApplicationにすりゃ良いだけだったような。
でもそれ使わずに俺もシリアル化してる。
788デフォルトの名無しさん:2006/05/27(土) 11:55:39
2005std買ったけど、糞重いから結局無料版のC#でプログラムやってるやつはおれだけじゃないはず
789デフォルトの名無しさん:2006/05/27(土) 11:59:20
糞重いがリファクタ機能を死ぬほど使う俺には重宝
790デフォルトの名無しさん:2006/05/27(土) 12:04:55
分離ストレージの管理ツールはSDKにあるstoreadmだけだから、
GUI系の使いやすいツールがランタイムのほうに付くようにならないと安心して使えない。
ただ分離ストレージは制限ゾーンで使えるから制限ゾーンを使うアプリではよく使っている。
791デフォルトの名無しさん:2006/05/27(土) 12:56:58
アプリケーションの設定ファイルについて言えば、
XMLファイルにすると、ほとんど絶対って言っていいほど
設定用のウィンドウを作ってあげなければならない。
INIファイルならユーザーが自分で開いて楽に設定を変更できる。
よりユーザーに親切にしたいのなら、設定用ウィンドウを
作ってあげればいいし。
792デフォルトの名無しさん:2006/05/27(土) 13:10:51
手抜きするなら PropertyGrid でいいじゃん
793デフォルトの名無しさん:2006/05/27(土) 13:59:56
>>791
個人的にはINIでもXMLでも何でもユーザが手でテキスト開いて設定直すって
ありえない気がするので、どっちも設定画面作るのは一緒。俺の場合。
794デフォルトの名無しさん:2006/05/27(土) 14:41:09
書き直されることを想定して作るけど、推奨はしたくないな……
795デフォルトの名無しさん:2006/05/27(土) 14:58:56
そういえばMS-DOSの頃はユーザーがINIファイルを開いて、
自由ににカスタマイズするのが当たり前だったよな・・・
796デフォルトの名無しさん:2006/05/27(土) 15:02:35
コマンド引数付きのバッチファイル作ったりな
797デフォルトの名無しさん:2006/05/27(土) 18:37:30
>>782
当面はそうしますけど、場合によってはWebClientのほうが楽ですし
ドキュメントに「設定できる」って書いてある以上、出来なきゃおかしいと思います。

しかも例外が発生する場所がおかしいですし。
798デフォルトの名無しさん:2006/05/27(土) 19:45:01
じゃあお前はドキュメントに死ねって書いてあったら死ぬのか!!!!!!!!!!
799デフォルトの名無しさん:2006/05/27(土) 19:56:37
>>798
それだったらドキュメントを直せって話になりますし。。。
800デフォルトの名無しさん:2006/05/27(土) 23:20:02
まあ俺らに言われても困るし、MSDNフォーラムに投げたんだったら後はMSの人の回答を待っとけ。
801デフォルトの名無しさん:2006/05/28(日) 03:43:24
c++のソースをC#にコンバートするツールはありますか?
802デフォルトの名無しさん:2006/05/28(日) 03:52:22
無理だし。
803801:2006/05/28(日) 03:58:08
一旦コンパイルしてからreflectorでソース見ながら手動で変換するしかないのかな?
804デフォルトの名無しさん:2006/05/28(日) 04:11:17
C++ って Managed C++ or C++/CLI なのか?
ま、/clr:pure でもない限りまともに変換できないだろうけど。
805801:2006/05/28(日) 04:15:40
Managed C++なんですけど、文法が難しくて
どうしたもんかと思いまして
806デフォルトの名無しさん:2006/05/28(日) 04:36:38
>>805
どこの文法が難しいのかと
C#に比べてまともなライブラリが揃って無いからソースウゼェ 読メネェ の間違いじゃ?
807デフォルトの名無しさん:2006/05/28(日) 05:34:59
C++ に詳しくない人なのやも知れぬ
808801:2006/05/28(日) 05:39:36
そうなんれす
まったくわからないのれす
横着せずに勉強すればいいんでしょうが・・・
私の脳味噌では厳しいです
809デフォルトの名無しさん:2006/05/28(日) 06:36:14
C# が分かって C++ が分からんって謎だな。
810デフォルトの名無しさん:2006/05/28(日) 08:48:38
C#から始めた俺はC++なんて知らないよ
811デフォルトの名無しさん:2006/05/28(日) 09:34:06
オレはCから始めたがCOBOL,FORTRAN,アセンブラ,BASIC,JAVA,C#(ついでにPerlとPHP)が分かるぞ
ナニから始めた云々なんて関係ないんだよ

言語なんてただの書き方のルールでしかないんだ
アルゴリズムさえ分かってれば「言語が違います」なんてのは障害にすらなりゃしないんだよ

あと1つ。
分からないなら分かってる人間が教えてあげることも可能だが、
知らないなんてのはただの勉強不足でしかない。甘えんな
812デフォルトの名無しさん:2006/05/28(日) 09:37:44
>>810
俺漏れも
813デフォルトの名無しさん:2006/05/28(日) 09:40:14
C++は読めるけど自分で書けない
814デフォルトの名無しさん:2006/05/28(日) 10:42:41
そこまで青筋立てて起こらなくても。
10以上の言語で読み書きできるが、もう全部C#とrubyでいいよと思ったりするよ。
一人じゃない場合、他の人が使えない問題は明らかに障害かと。

動かなくていいから多言語のソースサンプルとか ViewだけC#で提供してくれる。というものが欲しい。
そういうのって、今いいものないのかな。
昔、BabbelFiskenってツール使ってたけど(VB,Delphi対応してた) C++は知らない。
815801:2006/05/28(日) 15:06:44
>>811
単純にプログラミング歴長いおっさんってだけでしょ
それにCからはじめれば多言語理解するのも容易だけど
C#はAPIやOS、ハードウェアなど理解しなければならないものを使う機会が少ないからね
そういう基礎的な理解を必要とせずプログラミングできるのが.NETなんだから
ある意味VB6以上に多言語への応用力がないと思うよ
816デフォルトの名無しさん:2006/05/28(日) 16:53:31
findfirst
findnext
findclose

が GetFiles(); だけで済むんだもんなぁ・・・

817デフォルトの名無しさん:2006/05/28(日) 16:58:24
>>815
ちょっと深いところ書こうとするとあっという間に P/Invoke の嵐になりがちなんだが
そうすると C++ はともかく、C の知識はそれなりに要求されるんだよな
818デフォルトの名無しさん:2006/05/28(日) 17:24:24
>>815,817
結局
 >806> C#に比べてまともなライブラリが揃って無いからソースウゼェ 読メネェ の間違いじゃ?
ってことだな。
819デフォルトの名無しさん:2006/05/28(日) 20:58:30
820デフォルトの名無しさん:2006/05/28(日) 21:07:20
プロパティグリッドにあるでしょ
821デフォルトの名無しさん:2006/05/28(日) 21:12:04
パブリックなフィールド変数をプロパティに設定する意味がよくわからない
getもsetも両方設定するならプロパティをわざわざ設定しなくてもいいんじゃないの?
って思うんだけど、どちらか片方だけ設定するなら意味はあるんだけど
822デフォルトの名無しさん:2006/05/28(日) 21:15:57
値チェックとかできるじゃないか
設定時にイベント起こしたり
823デフォルトの名無しさん:2006/05/28(日) 21:23:02
>>820
すいません、ありました・・・。
でも、これって終了時にその状態を動的に保存したりは出来ないんですね。
824デフォルトの名無しさん:2006/05/28(日) 21:34:39
コントロールを削除したりして、使わなくなったイベントやメソッドがゴミとして残るけど
それら使用されていないメソッドを削除したいんですがいい方法ありますか?
825822:2006/05/28(日) 21:38:22
>>822
set{
if(value>0) Str=value;
}

みたいな感じですか?
826デフォルトの名無しさん:2006/05/28(日) 21:45:04
Str が 数値型か。もにょるな。
827デフォルトの名無しさん:2006/05/28(日) 21:45:36
>>824
Disposeにtrueが渡されたときに
イベントにnullを代入するようにする。
828デフォルトの名無しさん:2006/05/28(日) 21:58:14
protected override void Dispose(bool disposing)
{

}
829デフォルトの名無しさん:2006/05/28(日) 22:00:07
protected override void Dispose(bool disposing)
{
 if (disposing)
 {
   this.Click = null;
 }
}




むしろthis.Events = nullってできたっけ?
830デフォルトの名無しさん:2006/05/28(日) 22:04:49
IDEのフォームエディタで手動でコントロールを削除したときの話じゃないのか?
831デフォルトの名無しさん:2006/05/28(日) 22:06:56
>>827-829 お前ら顧客の要求しようほんとに理解できるのか?
832824:2006/05/28(日) 22:12:10
>>830
それです
さくさくっといくつかのボタンなどを削除したのはいいんだけど
ボタンのイベントやメソッドがどこにあるのか探すのが大変なのでいい方法はないものかと
ちゃんとソース整理してなかったのがいけないんだけどね

決して参照されないメソッドも実行ファイルに反映されたりするのかな?
それともコメントみたいに実行ファイルの容量には反映されないのかな
不安です。
833デフォルトの名無しさん:2006/05/28(日) 22:18:00
決して参照されないメソッドでもアセンブリには含まれるよ
834デフォルトの名無しさん:2006/05/28(日) 22:43:14
>>830
えー、あの文章でよくわかったな。
”メソッドがゴミとして残る”ってどういうことだ?とは思ったが。
その発想はなかったわ、まじで。
835デフォルトの名無しさん:2006/05/28(日) 22:53:15
>>834 それしか思わなかったので>>827-829が何を言ってるんだとしか思えなかった。
836824:2006/05/28(日) 23:08:05
>>833
うはーそうなんだ
ほったらかしの未使用メソッドが大量にあるよー
困ったな。
837デフォルトの名無しさん:2006/05/28(日) 23:41:43
アセンブリに含まれてしまうことよりも、
ソースがわけ分からなくなることのほうが困るだろ。
838デフォルトの名無しさん:2006/05/29(月) 10:45:48
怪しそうなのを右クリ→参照の確認
で、定義しかなければ削除

ってのを繰り返すしかないんじゃないかな
839デフォルトの名無しさん:2006/05/29(月) 14:53:12
ここだけはVBうらやましす。
840デフォルトの名無しさん:2006/05/30(火) 18:35:15
プログラマって職だと出世は諦めたほうがいいのかな?
841デフォルトの名無しさん:2006/05/30(火) 18:37:39
ワケワカラン
842デフォルトの名無しさん:2006/05/30(火) 18:49:18
一生企業の末端として働くことを強制させられるのがプログラマですよね?
843デフォルトの名無しさん:2006/05/30(火) 18:53:41
普通に考えナよ。
言われたままプログラム組んでるだけならその程度の金しかもらえない。
組めるプログラムが高度なものならさらにいい報酬がもらえるし、強い立場にも立てる。
新しいシステムでも作れれば一財産作れる。
844デフォルトの名無しさん:2006/05/30(火) 19:00:33
高度なモノ作ってもソレを上司が理解できない。
たとえ理解されても仕様書と違うと作り直される。
新しいシステムを作ってもソレは会社の資産。
845デフォルトの名無しさん:2006/05/30(火) 19:03:50
作る機会も根気もないです
846デフォルトの名無しさん:2006/05/30(火) 19:26:07
そろそろマ板へ行け
847デフォルトの名無しさん:2006/05/30(火) 19:28:08
>>844 自分で会社作れよ。ぼけ。
848デフォルトの名無しさん:2006/05/30(火) 23:51:14
スレ違いの話題、超ウザイ
849デフォルトの名無しさん:2006/05/31(水) 00:14:06
プログラマが社長になったなんて聞いたことがないな
やっぱ文系に行っとけばよかった
850デフォルトの名無しさん:2006/05/31(水) 00:46:44
>>849
           ( ⌒ ⌒ )
          (     )
          (、 ,   ,)
            || |‘
        ミミ ヽヽヽヽリリノノノ
      ミ   ,,、,、,、,、,、,、,、、 彡  
       l  i''"        i  
       | 」  \' '/  |  >>849
      ,r-/  <・> < ・> |  バカ!
      l       ノ( 、_, )ヽ |  俺を忘れてるぞ!
      ー'    ノ、__!!_,.、|
       ∧     ヽニニソ  l _
    /   ヽ         /   \  
  /   _   `ー--一'       \
 // ̄ ̄(_)               |
 |ししl_l  (            |    |
851デフォルトの名無しさん:2006/05/31(水) 00:49:55
>>849
Gatesは?
852デフォルトの名無しさん:2006/05/31(水) 00:54:23
Visual C#.NET 2005 Express使用中です。
DataGridViewコントロールにDataGridViewImageColumn列を設定しています。
Accessのmdbをデータソースにして、OLE オブジェクト型の列にJPEGデータを
格納して、それをバインドさせてJPEG画像データを表示させてます。

JPEG画像データが正しい場合は特に問題ないのですが、列がNULLの場合は
System.FormatException例外が発生した旨のダイアログが表示されてしまいます。
ダイアログを出さず、NULLの場合は何も表示しないのが1番の希望ですが、
ErrorImageのような表示でもいいので、何かいい方法はありませんか?
853デフォルトの名無しさん:2006/05/31(水) 01:16:07
ん〜、試したけど普通に×マークのエラー画像が表示されるだけだな……。
// 直接画像ファイルのバイトデータ突っ込んだ手製の DataTable では、だけど。
854デフォルトの名無しさん:2006/05/31(水) 02:54:57
微妙にスレ違いかもしれないけど教えてください。

COMのIUnknownって、.netのObjectみたいに基底インターフェイスって考えでいいんですか?
中身が定義済みのインターフェイスだって分かってるなら、
そのインターフェイスにキャストしてOK?
855デフォルトの名無しさん:2006/05/31(水) 03:00:54
自己解決しまし……したのかな?

[InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
と定義してればOKってことですか?
856デフォルトの名無しさん:2006/05/31(水) 03:03:55
>>853
試していただきありがとうございます。
DataGridViewを作り直して、データソースの選択を含めてやり直したら出なくなりました。。。
作り直す前のと比べてみて、何か分かりましたら報告いたします。
今のところ違いは見つからず・・・。
原因がまだ不明ながら、これで結構時間をロスしてしまっていたので、助かりました!
857デフォルトの名無しさん:2006/05/31(水) 03:11:06
idexや配列は1から初めてほしいな
なんで0からなんだよ
10番目の要素がa[9]っておかしいだろ

しっかりしてよM$
858デフォルトの名無しさん:2006/05/31(水) 03:13:01
>>854
COM利用側からいうとIUnknownにキャスト(?)する必要あるか?
859デフォルトの名無しさん:2006/05/31(水) 03:14:58
>>857
釣れますか?
860デフォルトの名無しさん:2006/05/31(水) 08:50:23
>>857
ちゅーか、いまごろそんなこと言ってる奴がなぜCOMを・・・
861デフォルトの名無しさん:2006/05/31(水) 10:51:45
C#使いの漏れがたまに気分転換でVB.NETで
プログラミングするときは、配列の宣言は1つ少なく指定して
後はC#と同じ要領で使っている(・∀・)
862デフォルトの名無しさん:2006/05/31(水) 13:12:47
>>854
ホントにIHogeだっていう保証があるならいいんじゃない?
自分が実装したオブジェクトを相手にしてるときとか。

COMのIUnknownは基底インタフェイスであるのと供に、
オブジェクト実体への参照の役割も兼ねているあたり注意。
同じオブジェクト(IUnkown) に対して別のインタフェイスを要求すると、
別のIUnknown派生インタフェイスが帰ることもある。
アグリゲートされて別オブジェクト(で実装されたインタフェイス)だったりすることもある。
863デフォルトの名無しさん:2006/06/01(木) 01:13:30
>>857
"idex"や"初めてほしいな"に釣られそうだ・・・
864デフォルトの名無しさん:2006/06/01(木) 01:23:57
C#のパーサー作ろうとしてるんだけどむずかしす・・・
ANTLRを使うつもりだが、Genericsとかじぶんで対応しないと。
同じようなことしてる人いますか?
865デフォルトの名無しさん:2006/06/01(木) 03:56:39
FileInfoの移動とかコピーって
ファイルが存在しない場合もエラーでないんだね
ファイルの存在チェックとかしないでやってると、存在しない場合
見た目ではわからないが内部ではエラーが出てて次の関係ないメソッドがちゃんと実行されなかったりする

エラーぐらい出してよM$
866デフォルトの名無しさん:2006/06/01(木) 10:49:38
>>864
C#のネイティブコンパイラ作ってくれ
たのんだぞ
867デフォルトの名無しさん:2006/06/01(木) 22:04:16
http://www.uploda.org/uporg406060.jpg
ぶっ壊れた。キーボードが効かない。
868デフォルトの名無しさん:2006/06/01(木) 22:19:44
\\yakisoba\shared などのパスが存在するかどうかは
Directory.Exists() で調べられますが、
\\yakisoba のようなパスを調べるにはどうすればよいでしょうか?
869デフォルトの名無しさん:2006/06/01(木) 22:22:53
お前の日本語が理解できない
870868:2006/06/01(木) 22:30:39

\\yakisoba というパスが存在するかどうかということです。
Directory.Exists() では調べられなかったので。
871デフォルトの名無しさん:2006/06/01(木) 22:31:14
872868:2006/06/01(木) 22:35:33
>>871
Σ
こんな近くに答えがあったとは気づきませんでした。
スレ汚しすみません。
873デフォルトの名無しさん:2006/06/02(金) 16:34:36
ボタンのデザインって四角しかできないんですかね?
楕円の画像貼り付けても選択すると四角い枠が浮かんで格好が悪い
あとflatにすると押したときの灰色がでるんだがこれ消せないかな?
874デフォルトの名無しさん:2006/06/02(金) 16:41:30
875デフォルトの名無しさん:2006/06/02(金) 16:47:07
エミュレータ上のファイルエリアにアクセスするにはどうしたら出来ますか?
やりたいのは、エミュレーター上への(から)ファイルのコピーです。
876デフォルトの名無しさん:2006/06/02(金) 17:14:39
そのエミュレータがどんなのかは知らんが、普通は共有フォルダを使うんじゃないかね
877デフォルトの名無しさん:2006/06/02(金) 17:19:46
dataGridView.DataSource = dataSet; としたんですが
http://www.atmarkit.co.jp/fdotnet/basics/adonet04/adonet04_03.html
にあるようなテーブルを選択するツリーがでてきません。
直接テーブルを指定(.DataSource = dataSet.Tables[0];)
すると正常に表示されます。
どうすれば、DataSetをDataGirdViewにバインドしたときに、
DataTableの選択ができるようになりますか?
878デフォルトの名無しさん:2006/06/02(金) 17:23:33
DataGridView だとできない。
MSDN の「Windows フォームの DataGridView コントロールと DataGrid コントロールの違いについて」参照。
879デフォルトの名無しさん:2006/06/02(金) 17:25:03
ちなみに、DataSet を DataSource にした時には DataMember に表示するテーブル名を設定する。
880デフォルトの名無しさん:2006/06/02(金) 17:34:04
>>876
.Net 標準のエミュです。共有が出来ないみたいなのよ・・・やり方悪いのかもしれんけど
881デフォルトの名無しさん:2006/06/02(金) 17:35:31
ありがとうございます。
少し調べてみたのですが、このような(テーブルの選択をしたい)場合は
BindingSourceを使うのが一般的なのでしょうか?
http://www.microsoft.com/japan/msdn/thisweek/300x10/phase2/cursor/cs.aspx
そうならば、カーソルを操作するUIが必要になるようですが、
最初から用意されていたりはしないのでしょうか?
882デフォルトの名無しさん:2006/06/02(金) 17:39:59
うわ、はずい。上のはテーブル内のレコードの移動っぽいですね。
勘違いすみません。
883デフォルトの名無しさん:2006/06/02(金) 17:43:43
>>880
.NET標準のエミュって何?
つか何のエミュレータ?
そもそもC#とどのようなご関係が?
まずは正しい製品名もしくはファイルのパスを書いてみ
884デフォルトの名無しさん:2006/06/02(金) 17:51:19
>>880
.NET にはエミュなんて無いはずだが、それは VS が持ってるスマートデバイスのエミュレータか?
ttp://www.microsoft.com/japan/msdn/vs/general/grfUsingEmulatorInSmartDeviceProjects.asp
885デフォルトの名無しさん:2006/06/02(金) 18:26:11
>>883
すまん。 VS.Netのです。
>>884 それです。
886デフォルトの名無しさん:2006/06/02(金) 18:28:06
>>884
そこに、やりかた書いてありますね、ありがとう。
887デフォルトの名無しさん:2006/06/02(金) 19:26:33
サテライトアセンブリ のコンパイルをしていて、ちょっと分からないことがあるので質問させてくださいませ。

用意してある : hogehoge.en.resx
VS で resx をコンパイル ( ビルド ) →dll サイズ 32K
resgen + al でコンパイルするので→ dll サイズ 20K
生成される dll のサイズが違います。で、サイズが小さい方で exe を実行させると resgen + al コンパイルした方の
VS で作成したほうは正常なのですが、サテライトアセンブリは読み込めません。
サテライトアセンブリのコンパイルの方法で、何か違うんでしょうか?
888デフォルトの名無しさん:2006/06/02(金) 19:52:27
resgen と al につけたコンパイルオプションを書いてみろ。
あと読み込めないってのは具体的にどうなるんだ?
889デフォルトの名無しさん:2006/06/02(金) 20:02:40
>>888
どもです。環境は VS2005 Std、.NETCF1.0 で作ってます。

C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\SDKTools\resgen.exe /compile hogehoge.en.resx
al.exe /t:lib /embed:hogehoge.en.resources /out:hogehoge.en.resources.dll

読み込めないと言うのは、英語環境で表示しても英語リソース ( hogehoge.en.resources.dll ) を読み込まず、
日本語が表示されていて文字が化けてしまうことです。
890デフォルトの名無しさん:2006/06/02(金) 20:14:55
・resgen リソースファイル [リソース名].[カルチャ名].resources   で.resourcesファイルを作る
・リソース名は、検索対象の既定は対象型の完全限定名(例:HongliangSoft.Samples.Localization)
・al /out:[対象のアセンブリ名].resources.dll /c:[カルチャ名] /embed:[.resourcesファイル名]
  でリソースdllを作る。リソース以外(コードとか)を入れる事はできない
メモに書いてあったこの辺
891デフォルトの名無しさん:2006/06/02(金) 20:24:09
>>890
どもです。メモ通りやってみましたが結果は同じでした。
また調べてやってみます。
結果はご報告しますね。
892デフォルトの名無しさん:2006/06/02(金) 21:03:04
サテライトアセンブリにカルチャ名付けちゃ駄目だぞ。
× Hoge.en.resources.dll
○ Hoge.resources.dll

あとはリソースを読み込む部分がどうなってるかも問題だが……。
893デフォルトの名無しさん:2006/06/02(金) 23:22:03
>>829
イベントに=演算子は使えないな。
やるんだったら-=でデリゲート削除。
894デフォルトの名無しさん:2006/06/03(土) 02:19:41
ある型のnullオブジェクトを動的に生成する方法で
(ある型の抽象メソッドは全てvirtualで仮実装する。
戻り値が必要なものはdefault(T)の値を返す。)

1.System.Reflection.Emitを使用する。
2.CodeDomを使用する。
という方法以外に簡単な方法はないでしょうか?
895デフォルトの名無しさん:2006/06/03(土) 02:20:48
>>864
何のためにパースしたいのかわからんけど、
すでに.NET2がうごいている環境なら、
Microsoft.CSharp.CSharpCodeProvider.Parse(TextReader codeStream)
を使えば勝手にやってくれるのでは?

別の言語で一からコンパイラを作りたいとかだったら、
がんがってくれ。応援している。
896895:2006/06/03(土) 02:30:46
追記。
パーサじゃないけど、シリアライズフォーマッタを自作したことはあるよ。
速度重視なアプリでネットワークに流すのには、
BinaryFormatterはアセンブリ名のフルネームとかをひたすらstringで入れようとするので、
そのへんを短く出来るのを作ったことがあった。
ジェネリクス関連のリフレクションとか非常に面倒だったね。
VBで作れる、0以外から開始する配列とかはサポートしなかったな…
897デフォルトの名無しさん:2006/06/03(土) 03:24:17
VBでは出来たのにForm1.Text = "タイトル";ができないのは何故?
898デフォルトの名無しさん:2006/06/03(土) 03:36:24
this.Text = "タイトル";
899最凶VB厨房:2006/06/03(土) 06:24:48
>>894
ある型を動的に作成するのか、
ある型が既にあってそのインスタンスを動的に作成するのか、
どっち?
900デフォルトの名無しさん:2006/06/03(土) 09:12:43
C#で省略可能な引数を指定することはできますか?
VBのOptionalみたいなやつ。
901デフォルトの名無しさん:2006/06/03(土) 09:22:38
C# からメソッドに省略可能な引数を渡す方法
http://support.microsoft.com/default.aspx?scid=kb;ja;305814
902デフォルトの名無しさん:2006/06/03(土) 09:42:40
>>892
どもです。ご指摘通りサテライトアセンブリにカルチャ名を付けてしまっていたので
つけないようにしました。
それでも駄目でしたね。

それとリソースを読み込む部分はこのようにしてあります。
リソース周りはデザイナで作ったのではないので、手動で作りました。

System.Globalization.CultureInfo culture;
System.Resources.ResourceManager resMan;

culture = System.Globalization.CultureInfo.CurrentCulture;
resMan = new System.Resources.ResourceManager("Hoge.satteliteassemblyname", this.GetType().Assembly);

this.Text = resMan.GetString("Dialog_Text", culture);

で、使用しているリソースは resx ( XML です。 )

読み込む部分が何か違いますか?
903デフォルトの名無しさん:2006/06/03(土) 09:57:46
>>902
> "Hoge.satteliteassemblyname", this.GetType().Assembly

これだと、リソースファイルの名前は
Hoge.satteliteassemblyname.[カルチャ名].resources
でなければならないけどそれは大丈夫?
904デフォルトの名無しさん:2006/06/03(土) 11:30:33
>>903
もうちょっと正確に書きます。

1. hogehoge.en.resx → VS2005 でビルド → hogehoge.resources.dll に変換される
2. hoge.resx → VS2005 でビルド → 本体 DLL に埋め込み。
3. resMan = new System.Resources.ResourceManager("Project1.hogehoge", this.GetType().Assembly);
これで読み込み実行。

4. 日本語環境時、正しく文字列が表示される。( 埋め込んだリソースを読んでいる )
5. 英語環境時、正しく文字列が表示される。( ./en/hogehoge.resources.dll を読んでいる )

ここまでは問題ありません。しかし、
hogehoge.en.resx を >>889 に書いたように、resgen + al でコンパイルした hogehoge.resources.dll を
読み込ませようとすると、英語環境で正しく文字列が表示されません。
( 文字が化けてしまっているので、./en/hogehoge.resources.dll を読まず埋め込まれている日本語
リソースを読み込んでいるようです。)

で、分かっていることは、hogehoge.resources.dll のサイズです。
1. VS2005 で変換 → 28KB
2. resgen + al で変換 → 16KB

resgen+al で変換した場合と、VS2005 で変換した場合で何か異なるんですかね?
905デフォルトの名無しさん:2006/06/03(土) 11:57:16
で、.resources の名前は Project1.hogehoge.en.resources にしてるの?
906デフォルトの名無しさん:2006/06/03(土) 12:02:46
>>905
Project1.hogehoge.resources
Project1.hogehoge.en.resources
./en/Project1.hogehoge.resources
./en/Project1.hogehoge.en.resources
の4種類を試してみましたが、resgen+al 変換では読み込まれませんでした。
907デフォルトの名無しさん:2006/06/03(土) 13:35:46
ん〜……。

・Windows Application プロジェクトを作成(プロジェクト名 WindowsApplication1)
・Form1 の Localizable を true に、Language プロパティを日本語に
・Text プロパティを フォーム1 に
・一旦ビルド(デバッグビルド)
・プロジェクトのフォルダ(WindowsApplication1.csproj のあるフォルダ)を開く
・.NET 2.0 SDK のコマンドプロンプトを開いてカレントディレクトリをプロジェクトのフォルダに移動する
・コマンドプロンプトで以下のコマンドを実行
 resgen Form1.ja.resx WindowsApplication1.Form1.ja.resources
 al /out:bin/Debug/ja/WindowsApplication1.resources.dll /c:ja /embed:WindowsApplication1.Form1.ja.resources
・bin/Debug の WindowsApplication1.exe を(日本語環境で)起動するとフォームのタイトルが フォーム1 になる
・bin/Debug/ja/WindowsApplication1.resources.dll を削除してから exe を起動するとタイトルは Form1 のまま

ということなんだが……。
908894:2006/06/03(土) 13:46:46
>ある型を動的に作成するのか、
>ある型が既にあってそのインスタンスを動的に作成するのか、
>どっち?
型はすでにあって、 object GetNullObject(Type baseClassType, Type[] interfaceTypes);
ってなってるのが理想かな
909デフォルトの名無しさん:2006/06/03(土) 14:17:45
>>907
わざわざありがとうございます。同じようにして実行してみました。
違いはこちらはデバイスアプリケーション .NETCF1.0 というところです。

907さんのようにしてみると、907さんが掛かれたように再現しますが。
resgen+al をした DLL だけはやっぱりだめです。
違いは DLL のサイズ。
VSで生成した DLL のプロパティをみるとバージョン番号などが入っていますが、
resgen+al にはバージョン番号などは入っていませんでした。
もちろんファイルサイズも違っています。
910デフォルトの名無しさん:2006/06/03(土) 14:20:09
ちなみに resgen は、
c:\Program files\Visual Studio 8\SmartDevices\SDK\SDKTools\regen.exe
c:\Windows\Microsoft.NET\Framework\v1.1〜\al.exe
c:\Windows\Microsoft.NET\Framework\v2.0〜\al.exe
などを使いました。
911デフォルトの名無しさん:2006/06/03(土) 14:29:31
バージョン情報とかは al のオプションで与えるもんだから。

> 907さんのようにしてみると、907さんが掛かれたように再現しますが。
> resgen+al をした DLL だけはやっぱりだめです。

結局、907 で書いたのは問題なかったの? これも resgen + al した DLL なんだが。
912デフォルトの名無しさん:2006/06/03(土) 14:50:15
>>911
どうもです。
で、結局のところ 907 で書いた方法ですが、resgen+al すると駄目でした。
VSビルドの DLL なら OK でしたが。
どうしてこういうことになってしまうのか不明ですが、VS2005 のビルドと
resgen+al の変換の過程が違うようです。
( VS2003 の時は .NETCF 用に cfresgen というものがあったようです。)

バージョン情報の件、al のオプションで確認しました。

913デフォルトの名無しさん:2006/06/03(土) 16:43:54
ん〜、後の問題を思いつかね。
/template オプションなんかどうだろ……。
914デフォルトの名無しさん:2006/06/03(土) 17:20:16
>>895 Parse実装されてないとおもったんだけど。
915デフォルトの名無しさん:2006/06/03(土) 20:43:30
>>913
あ、あ〜〜。できました〜〜!!!
913 さんネ申!俺のネ申!!

al に、/template:bin\Release\Hoge.dll
と指定したら出来ました!
サテライトアセンブリのサイズも VS が変換するのと同じサイズになりました。

ありがとうございました m(__)m
916最凶VB厨房:2006/06/03(土) 21:31:32
>>908
実装が空のvirtualメソッドだけのnullオブジェクトクラスを継承させる手はダメか?
(クラス継承)
nullobj<-abstract<-concrete

abstractA(or interface)
 nullobj
 abstractB
  concreteA
  concreteB
  ・・・
理想とはほど遠いかもしれんが・・・。
917894:2006/06/03(土) 23:57:46
それをどうやって実装するのが楽かなぁと思って質問した次第です。
指定したinterfaceのvirtualメンバを動的に実装する。
IL書くのが一番楽そうでした。(ソースコードアプローチだと明示的実装とか.NetのVersionとかで大変そう)
ILに手を出すと誰も保守できなそうなのがいやなんですけど。
918デフォルトの名無しさん:2006/06/04(日) 00:06:41
ある変数が変化したら発生するイベントってありますか?
919デフォルトの名無しさん:2006/06/04(日) 00:08:40
>>918
ない。
920・∀・)っ-○◎● ◆toBASh.... :2006/06/04(日) 00:13:22
何がやりたいのかは知らないが変数の書き換えをメソッドにしてそれをオーバーライドするとか、
OnTimerで変数値をチェックするとかやればいいと思うよ
921デフォルトの名無しさん:2006/06/04(日) 00:21:07
おにいちゃんおーばーらいどってなあに?
922デフォルトの名無しさん:2006/06/04(日) 00:25:23
>>918
INotifyPropertyChanged.PropertyChanged
923デフォルトの名無しさん:2006/06/04(日) 00:28:52
>>921
同じ名前だけど引数の違う関数のことだよぉ
924デフォルトの名無しさん:2006/06/04(日) 00:40:44
ちげぇ
925デフォルトの名無しさん:2006/06/04(日) 02:13:19
どうでもいいけどComponentModelでググルと変なのが4番目に出てくるの何とかならないんだろうか。
死んだっちゅうのはいいすぎだろ。
926デフォルトの名無しさん:2006/06/04(日) 02:36:02
Componentってなんのためにあるの?
927デフォルトの名無しさん:2006/06/04(日) 02:47:42
>>925
俺が検索したら4番目はMSDNだけど

1 www.urbanpotato.net/Default.aspx/document/1757
2 weblogs.asp.net/ahoffman/archive/2004/11/25/270189.aspx
3 www.dotnet247.com/247reference/ System/ComponentModel/System.ComponentModel.aspx
4 msdn2.microsoft.com/en-us/system.componentmodel.aspx
928デフォルトの名無しさん:2006/06/04(日) 03:24:55
菊池ならしょうがない
929デフォルトの名無しさん:2006/06/04(日) 04:59:56
C#の組み込みに使う言語を探しています
・Lua
・Ruby
・C#
など、ある中で、C#を簡単そうなので選んで見ました。

C#でC#のソースを利用できないかと思い知らべたところ、
とりあえずコンパイルはできました。
http://www.atmarkit.co.jp/fdotnet/dotnettips/100compile/compile.html

しかし、そこからの組み込むためのつながりがよくわかりません。
ホスト言語からスクリプト言語へのオブジェクトの提供、
スクリプト言語からの動作トリガー、などがいまいちわかっていません。
その辺のつっこんだ資料はありませんでしょうか。
930デフォルトの名無しさん:2006/06/04(日) 05:15:19
65 :デフォルトの名無しさん :sage :2006/05/24(水) 00:29:22
poderosaってマクロ機能で、アプリケーションからJScript.NETを動かしてて
しかもpoderosa自身のオブジェクトを公開してるけど、どうやってるの?

ソース見てもわからんかった。

poderosa見てみる
931デフォルトの名無しさん:2006/06/04(日) 09:44:59
InternetExplorerをオートメーションで動かしたいんですけど、どこか解説してるとこ
ありませんかね?
VBAとかだとあるようですが、自分読めませんし、できれば.NETでうごかしたいんで
そこらへんでお勧め教えてください。
本でもいいです。英語でもがんばってみます。
932デフォルトの名無しさん:2006/06/04(日) 11:35:48
ClickOnceで起動されたProcessを直接的に取得する方法って無いよね…
933デフォルトの名無しさん:2006/06/04(日) 11:43:06
>>929
コンパイルしたらアセンブリ読み込んでロード
けど、組み込み目的で CodeDom 使うのって、SandBox 無いと危険なような希ガス
934デフォルトの名無しさん:2006/06/04(日) 15:45:55
pictureboxの上にマウスを乗せたら、pictureboxの画像が変わるようにしたいんですが、
デザイナで設定する方法しかしらないので、ちょっと戸惑っています。
動的(?)に画像を参照するようにしないといけないっぽいんですが、
exeがあるディレクトリにimageディレクトリのようなものを作ってそこから読み込むようにしないといけないんでしょうか?
935デフォルトの名無しさん:2006/06/04(日) 15:50:57
知らんがな
どこから画像ファイルを読み込むかなんて自分で考えろと
936デフォルトの名無しさん:2006/06/04(日) 15:54:59
経験が少ないので、よくあるやり方みたいなのを教えていただけたら嬉しいです。
imagelistっていうのがありますが、それに使いたい画像を全部設定すると、最初から画像を読み込んでくれるのかな??
937デフォルトの名無しさん:2006/06/04(日) 15:57:50
プロジェクトにリソース追加してその中に好きな画像つっこめ
imagelistでもいいけど、今度はどこからimagelistに画像をもってくるんだよって話
938デフォルトの名無しさん:2006/06/04(日) 16:05:08
>>937
ありがとうございます!うまくできそうです。
939デフォルトの名無しさん:2006/06/05(月) 14:25:44
VC#2005Expressのヘルプで
System.Drawing名前空間を引いてみると


System.Drawing名前空間内のクラスをWindowsサービス
またはASP.NETサービスで使用することはサポートされて
いません。使用した場合、サービスのパフォーマンス低下
や実行時の例外発生など、予期しない問題が発生する場合
があります。


とありました
WindowsサービスってWindowsに起動時から常駐するような
デーモンのようなタイプのものを言っているの?
それとも通常のWindowsApplicationのことなの?
940デフォルトの名無しさん:2006/06/05(月) 15:07:37
単に、System.Drawing名前空間内のクラスのオブジェクトを
シリアライズしてネット上を移動させることは推奨されないってことでそ?(・∀・)
941デフォルトの名無しさん:2006/06/05(月) 15:25:41
winアプリでDrawing使えなかったら泣くねwwwwwwwwwwwwwwwwwwwww
942デフォルトの名無しさん:2006/06/05(月) 15:30:59
>>939
Windows NT/2000/XP/2003 でサービスというと、普通こういう奴。
http://www.google.co.jp/search?hl=ja&q=Windows%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9&lr=
943939:2006/06/05(月) 16:01:22
.NETではバリバリGDI+使ってると聞いたが
具体的にはどういう場面で使っているの?
944デフォルトの名無しさん:2006/06/05(月) 16:04:35
描画
945デフォルトの名無しさん:2006/06/05(月) 21:59:06
>>941
Sizeとかあるしな。
946デフォルトの名無しさん:2006/06/06(火) 18:41:11
MenuクラスのHandleプロパティでメニューハンドルが取得できますが、
Strip関係、例えばContexMenuStripからHMENUを取得する方法ってないんでしょうか。
947デフォルトの名無しさん:2006/06/06(火) 19:17:33
あれは HMENU 使ってない。
948デフォルトの名無しさん:2006/06/06(火) 21:38:31
//リストの重複削除
public static ArrayList OverlapToSingle(ArrayList list)
{
list.Sort();
ArrayList newList = new ArrayList();
object tmpObj = null;
foreach(object obj in list)
{
if(obj.Equals(tmpObj)==false)
{
newList.Add(obj);
tmpObj = obj;
}
}
return newList;

}

これをジェネリック対応にするにはどうしたらいいの?
書き方がわからねぇ・・・orz
949デフォルトの名無しさん:2006/06/06(火) 21:44:07
無理してジェネリックにしなくても、ArrayListをIListにすればOK
950949:2006/06/06(火) 21:45:01
と思ったが、SortはIListにはなかった
951デフォルトの名無しさん:2006/06/06(火) 21:47:21
List<T> にすれば OK なんだな
952デフォルトの名無しさん:2006/06/06(火) 21:58:44
public static List<T> OverlapToSingle<T>( List<T> list )
{
 List<T> newList = new List<T>;

 foreach( T t in list)
 {
  if( !newList.Contains( t ) )
   newList.Add( t );
 }

 return newList;
}
953デフォルトの名無しさん:2006/06/06(火) 22:09:07
>>952
O(N^2) だお
クローンしてからソートしてリストぶち込んだ方がいくね
954デフォルトの名無しさん:2006/06/06(火) 22:18:10
出力結果がソート済みなのが難点になりうるな
955948:2006/06/06(火) 22:38:31
public static List<T> OverlapToSingle<T>( List<T> list )
{
List<T> tmpList = new List<T>(list);
tmpList.Sort();

List<T> newList = new List<T>();

T tmpT = default(T);
foreach (T t in tmpList)
{
if (t.Equals(tmpT) == false)
{
newList.Add(t);
tmpT = t;
}
}

return newList;
}

sortを組み込むとこんな感じになるのか。
ソート済みになってしまうことはとりあえず問題にならないので大丈夫ですね。
ジェネリックを使う気力が沸いてきた。THX!
956デフォルトの名無しさん:2006/06/06(火) 22:44:00
>>955
入力の list が List<int> で中身が 0,1,2 だとしたら
出力は 1,2 になる予感
957デフォルトの名無しさん:2006/06/06(火) 23:20:01
T が参照型なら参照型で、null が入っていたときに例外の予感
958948:2006/06/07(水) 12:55:41
確かにそうだな'`,、('∀`) '`,、 
959デフォルトの名無しさん:2006/06/08(木) 16:47:43
C#とJavaなどの他言語との連携方法がわかりません。
Javaで出力したテキストファイルをC#でよみこませたいのですが・・・・
よろしくおねがいします。
960デフォルトの名無しさん:2006/06/08(木) 16:50:16
いや、テキストファイルなら何で出力しようがテキストファイルだろ。
せいぜいエンコーディングに気を配る程度だ。
961デフォルトの名無しさん:2006/06/08(木) 16:55:34
>>960
私書き方が悪かったかもしれません。
一度にそれらの処理をやりたいのですが、バッチ処理しか無いのでしょうか?
JavaとC#のプログラムが常に起動していて、処理に必要な機能をそれぞれの言語で
分担して行うという複雑なものなんですが。
バッチ処理で対応しきれるのかどうか不安です。
962デフォルトの名無しさん:2006/06/08(木) 17:17:17
>>961
.net java間だとまともに使えるのはソケットくらいかな。Web Serviceでもいいが互換性がどうだろう。
あとはJ#(笑)を使う。
963デフォルトの名無しさん:2006/06/08(木) 17:17:40
どっちかでファイル監視するか
964デフォルトの名無しさん:2006/06/08(木) 17:26:50
メッセージでやれるんじゃない?
965デフォルトの名無しさん:2006/06/08(木) 17:27:27
Java Language Conversion AssistantでJavaをC#に変換する
966デフォルトの名無しさん:2006/06/08(木) 18:02:59
DDEは?
967デフォルトの名無しさん:2006/06/08(木) 18:06:35
>>961 とりあえず、バッチ処理であるか否かと通信方法は分けて考えたほうがよろしいんではないかと
968デフォルトの名無しさん:2006/06/08(木) 18:34:00
>>961
ファイル経由でのテキストの受け渡しなんて簡単なこともわからないのに、
そんなに「複雑なもの」がよく設計できたなぁ・・・・
データの受け渡しのとこも設計したんだろうから、ちゃんとそれに従えば?
969デフォルトの名無しさん:2006/06/08(木) 21:41:43
ちゃんと設計出来てたら
こんな質問しないだろ。
970デフォルトの名無しさん:2006/06/09(金) 00:32:56
メモリマップドファイルとかはどうだろう
Java で使えるかは知らないが
971デフォルトの名無しさん:2006/06/09(金) 00:43:27
JNIってなくなったの?APIつかえりゃいけるでしょ
972デフォルトの名無しさん:2006/06/09(金) 00:53:14
スプリットコンテナーのパネルの上にグループボックスはっつけて
そのうえテキストボックスなどのコントロールがある というリサイズ可能なフォームでの質問です

したいことは
ユーザがフォームを小さくしたとき、グループボックス上のコントロールが
隠れてしまう大きさにされたらパネルにスクロールバーを表示する

ということなんですが、グループボックスのDockプロパティをfillにすると
パネルのAutoScrollがTrueでもスクロールバーが出てこないのですが
コントロールの配置方法等が間違っているのでしょうか?
お願いします
973デフォルトの名無しさん:2006/06/09(金) 10:49:13
HashTableの初期化を、現在
HashTable hash = new HashTable();
hash.Add("Key1", 1);
hash.Add("Key1", 1);
      ・
      ・
のように書いていますが、 Perlのように
HashTable hash = {
  "Key1" -> 1,
  "Key2" -> 2,
};
のように、スマートに書けないでしょうか?
974デフォルトの名無しさん:2006/06/09(金) 10:55:03
hash["Key1"]=1
とかってかけないんだっけ?
975デフォルトの名無しさん:2006/06/09(金) 10:58:29
コレクションの構築初期化子は C#3.0 からだねー
976デフォルトの名無しさん:2006/06/09(金) 11:12:09
っていうか、static で作成したいんです。
977デフォルトの名無しさん:2006/06/09(金) 11:12:59
>>975
あー、でつか・・・ どうもでした。
978デフォルトの名無しさん:2006/06/09(金) 11:22:20
少なくとも今はstaticなコンストラクタでやるしかないかな。
979デフォルトの名無しさん:2006/06/09(金) 16:12:07
すんません。
今クラスのシェイプアップをしてるんですけれども、
インスタンスにしたときの占有メモリサイズを計る方法って
ありますか?
980デフォルトの名無しさん:2006/06/09(金) 16:23:16
そのクラスのインスタンス何万個作るつもりだ……
パフォーマンスカウンタ使えば?
981デフォルトの名無しさん:2006/06/09(金) 19:19:18
それは意外に難しい。
982デフォルトの名無しさん:2006/06/09(金) 20:38:09
stringの文字列中の特定の文字列を置き換える動作は
string.Replace

Regex.Replace
だったらstring.Replaceの方が速くておすすめですか?
それともstring.Replaceは内部でRegexしてたりしますか?
983デフォルトの名無しさん:2006/06/10(土) 01:57:47
どういう発想でそう思うんだよ。
984デフォルトの名無しさん:2006/06/10(土) 02:02:27
わたしはおすすめです。
985デフォルトの名無しさん:2006/06/10(土) 07:33:00
>>973
どうしてもというのならば。

private class HashtablePrivate : Hashtable {
 public HashtablePrivate(object[][] values) {
  foreach(object[] value in values)this.Add(value[0], value[1]);
 }
}

private static Hashtable values = new HashtablePrivate(new object[][] {
 new object[]{ "1", "value1" },
 ...
});

あまりお勧めはしない。
986デフォルトの名無しさん:2006/06/10(土) 08:53:26
BeginInvoke/EndInvokeメソッドを持つ最も抽象的なクラスか
インターフェースは何?
Delegate型がもっていないからわけわかんね。
object AsyncResult.AsyncDelegateからEndInvokeを呼びたいんだけど
固有の型でキャストしたくない。リフレクション使うのがベスト?
987デフォルトの名無しさん:2006/06/10(土) 09:07:47
ISynchronizedInvoke?
988デフォルトの名無しさん:2006/06/10(土) 09:22:29
デリゲートをそいつでキャストすることはできないっぽいです。
>ISynchronizedInvoke
989デフォルトの名無しさん:2006/06/10(土) 10:36:52
コンパイラが自動的につくるんじゃなかったっけ?
BeginInvoke/EndInvoke
990デフォルトの名無しさん:2006/06/10(土) 10:54:27
これうんこな仕様だよね。
ちがうデリゲート型、ジェネリックの中で実行したいのにこのせいでやりにくいし。
もうあぼかど。
991デフォルトの名無しさん:2006/06/10(土) 11:02:02
デリゲートの実行は DynamicInvoke 使えばいいんだからどうでも良いが、型制約に使えないのが痛すぎる。
992デフォルトの名無しさん:2006/06/10(土) 13:29:46
共通のシグネチャには出来ないんだから
まあ仕方ないんじゃないの?
DynamicInvokeの非同期版があるに越したことはないが。

むしろ普通にリフレクションで実行するときの
糞仕様をなんとかしてほしい。
993デフォルトの名無しさん:2006/06/10(土) 13:37:12
> むしろ普通にリフレクションで実行するときの
> 糞仕様をなんとかしてほしい。

どんな仕様をお望みだね
994デフォルトの名無しさん:2006/06/10(土) 17:07:01
何も贅沢は言わんよ。
勝手に例外をラップしたりとか、
要らんことをしなければそれでいい。
995デフォルトの名無しさん:2006/06/10(土) 17:13:10
ああ、例外ラップはうざいねー
デバッグやりづれぇ
んで結局、EndInvokeするにはリフレクションしかないってことで
いいでしょか?
996デフォルトの名無しさん:2006/06/10(土) 17:36:03
byteの配列をstringに変換する方法を教えてください
997デフォルトの名無しさん:2006/06/10(土) 17:38:59
Encoding.GetString だったか
998996:2006/06/10(土) 17:51:32
ありがとうございます。さっそく探します。
999デフォルトの名無しさん:2006/06/10(土) 18:52:27
フレームワークがあること以外での
C++とC#の違いって何ですか?
1000デフォルトの名無しさん:2006/06/10(土) 18:54:58
時間切れですにゃ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。