5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C♯相談室 Part28

1 :名無しさん♯:2005/12/14(水) 07:47:02

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


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


関連リンク
http://onigiri.s3.xrea.com:8080/csharp/index.php?%5B%5B%A5%EA%A5%F3%A5%AF%5D%5D

2 :名無しさん♯:2005/12/14(水) 07:47:35
過去スレ その1
Part27 http://pc8.2ch.net/test/read.cgi/tech/1131544541/
Part26 http://pc8.2ch.net/test/read.cgi/tech/1127063469/
Part25 http://pc8.2ch.net/test/read.cgi/tech/1122352650/
Part24 http://pc8.2ch.net/test/read.cgi/tech/1117631000/
Part23 http://pc8.2ch.net/test/read.cgi/tech/1112968209/
Part22 http://pc8.2ch.net/test/read.cgi/tech/1109630502/
Part21 http://pc5.2ch.net/test/read.cgi/tech/1106490240/
Part20 http://pc5.2ch.net/test/read.cgi/tech/1103005153/
Part19 http://pc5.2ch.net/test/read.cgi/tech/1100240847/
Part18 http://pc5.2ch.net/test/read.cgi/tech/1096112588/
Part17 http://pc5.2ch.net/test/read.cgi/tech/1091284402/
Part16 http://pc5.2ch.net/test/read.cgi/tech/1087297504/
Part15 http://pc5.2ch.net/test/read.cgi/tech/1083066815/
Part14 http://pc5.2ch.net/test/read.cgi/tech/1076933504/

3 :名無しさん♯:2005/12/14(水) 07:48:02
過去スレ その2
Part13 http://pc2.2ch.net/test/read.cgi/tech/1071663456/ (ログ行方不明)
Part12 http://pc5.2ch.net/tech/kako/1066/10660/1066038651.html
Part11 http://pc5.2ch.net/tech/kako/1061/10612/1061262958.html
Part10 http://pc5.2ch.net/tech/kako/1051/10518/1051842450.html
Part9 http://pc2.2ch.net/tech/kako/1039/10396/1039646808.html
Part8 http://pc3.2ch.net/tech/kako/1032/10324/1032488831.html
Part7 http://pc3.2ch.net/tech/kako/1027/10275/1027531796.html
Part6 http://pc3.2ch.net/tech/kako/1022/10222/1022257078.html
Part5 http://pc3.2ch.net/tech/kako/1019/10195/1019533942.html
Part4 http://pc.2ch.net/tech/kako/1016/10165/1016597767.html
Part3 http://pc.2ch.net/tech/kako/1009/10094/1009473982.html
Part2 http://pc.2ch.net/tech/kako/1002/10024/1002468050.html
Part1 http://pc.2ch.net/tech/kako/977/977112364.html

4 :デフォルトの名無しさん:2005/12/14(水) 08:40:31
4 catch

5 :デフォルトの名無しさん:2005/12/14(水) 12:10:05
乙です。

6 :デフォルトの名無しさん:2005/12/14(水) 22:18:57
いきなり初歩的な事項で申し訳ないですが…
explicit, implicit ユーザー定義変換についての質問です。

あるサイトに
「変換メソッドは、引数を受け取り、それを元に変換後の型を返します
ただし、受け取る型と変換後の型に継承関係があってはいけません
例えば、ユーザー定義変換は System.Object を受け取ることはできないのです」

との説明があったのですが、つまりはどういう事なのでしょうか?

string は System.String で、int は System.Int32
System.Object だけなんで駄目なんでしょう (゚゚)?
ある種継承関係にあるとか考えているのですが…頭がこんがらがってしまいます

7 :デフォルトの名無しさん:2005/12/14(水) 22:36:08
継承関係にあるのなら普通にキャストすればいいだけじゃん

8 :デフォルトの名無しさん:2005/12/14(水) 22:45:53
>>7
すみません。プログラムで書くとどういう事なんでしょうか?

CS0556 のエラーが英語でよくわからなかったけど、
どうやらユーザー定義変換では自クラスを含めなきゃいけないと言う事だそうです。

class Test {
int num;
public static implicit operator int (string str) {
num = int.Parse(str);
return num;
}
public int Pub {
get { return num; }
set { num = value; }
}
static void Main() {
Test a = "10";
System.Console.WriteLine(a.Pub);
}
}

うぅ…これのコンパイルが通らないのはなぜなの…orz

9 :デフォルトの名無しさん:2005/12/14(水) 22:47:26
>>8
operator int→operator Testか?

10 :デフォルトの名無しさん:2005/12/14(水) 22:51:18
>>9
accesser.cs(4,3): error CS0120: 静的でないフィールド、メソッド、またはプロパティ
'Test.num' で、オブジェクト参照が必要です。
accesser.cs(5,10): error CS0029: 型 'int' を型 'Test' に暗黙的に変換できません。

と出ました。この CS0120 のエラーはググってもMSDNのやつがひっかからず
訳わかめ状態っす ;;

11 :デフォルトの名無しさん:2005/12/14(水) 22:51:47
>>8
>   Test a = "10";
そりゃstringからTestへの型変換が定義されてないから……

12 :デフォルトの名無しさん:2005/12/14(水) 22:53:10
public static implicit operator Test (string str) {

ちなみに>>10は3行目をこう変えた場合のコンパイルエラーです

13 :デフォルトの名無しさん:2005/12/14(水) 22:53:56
>>10
Testにint型の値を1つ引数にとるコンストラクタをつけろ。

14 :デフォルトの名無しさん:2005/12/14(水) 22:54:27
その上でreturn new Test(num);

15 :デフォルトの名無しさん:2005/12/14(水) 22:59:35
OK、順番に行こう。
まずユーザ型変換は何かの型から自身の型に変換するか、自身の型から何かの型に変換するかしか定義できない。
つまりstringをintに変換するような型変換のオーバーロードは書けない。
なぜならstringもintもすでに定義済みで、「自身の型」にしようが無いから。
Test型の中での型変換はTestに変換するかTestから変換されるかしかない。

二番目に、演算子オーバーロードはstaticだ。
型変換は一般に新しいオブジェクトを作ってそれを返すって動作になる(或いはフィールドの値なんかをコピーする)。
オブジェクトが無いのに非staticメンバをいじるのは当然できない。

16 :デフォルトの名無しさん:2005/12/14(水) 23:06:49
おぉ!! >>8の一部、皆さんのご指摘どおり
static int num = 10;
public static implicit operator Test (string/*Test*/ str) {
num = int.Parse(str);
return new Test(num);
}
Test(int a) {
}
と変えたら、コンパイルが通り理想的な動作になりました。
>オブジェクトが無いのに非staticメンバをいじるのは当然できない。
は、特にすごくわかりやすかったです。

ついでの質問ですみません。面倒でしたらスルーしておいて下さい。
オブジェクト=インスタンス…で良いでしょうか?

なにはともあれ、ありがとうございました! 助かったです。

17 :デフォルトの名無しさん:2005/12/14(水) 23:27:44
>>16
15の文の中で出てくる「オブジェクト」はインスタンスの意味で使われている。

18 :デフォルトの名無しさん:2005/12/15(木) 00:31:50
axWebBrowserを利用してブラウザを作っているのですが、
Internet Explorerスクリプトエラー
ダイアログの表示を強制的にオフにする方法ってないでしょうか?

19 :デフォルトの名無しさん:2005/12/15(木) 00:36:05
>>18
ScriptErrorsSuppressed

20 :デフォルトの名無しさん:2005/12/15(木) 04:27:31
axWebBrowserならSilentをtrueに。
Managed WebBrowserなら>>19

21 :デフォルトの名無しさん:2005/12/15(木) 17:51:48
C#版のSourceNavigator見たいのあったらいる?

22 :デフォルトの名無しさん:2005/12/15(木) 19:03:28
Microsoft .NET Framework 1.0a SDK (フリーで手に入るやつ)では
コンパイルが通り、期待した通りの結果が返ってくるのですが、
統合環境の(?) .NET 2003 ではコンパイルがとおりません。以下のプログラムです。

class Output {
public static Output operator << (Output cout , System.Object obj) {
System.Console.WriteLine(obj.ToString());
return cout;
}
}

class Test {
static void Main() {
Output cout = new Output();
cout <<= "ほげ";
}
}

<<エラーメッセージ>>
オーバーロードされた shift 演算子では、最初のオペランドは
それを含む型で、二番目のオペランドの型は int でなければなりません。


なぜに、このような制約が生まれたのでしょうか?
同じ動作のプログラムを .NET 2003 では実現するのは不可能なのですか?

23 :デフォルトの名無しさん:2005/12/15(木) 19:14:39
>>22
そもそも<<はそうやって使うものじゃないと思うけど。

24 :デフォルトの名無しさん:2005/12/15(木) 19:22:30
うわ気持ち悪 なにそのC++脳に汚染されたコード

25 :デフォルトの名無しさん:2005/12/15(木) 20:12:21
>>23
なるほど。言われてみれば確かに… そちらの方が理にかなってますね。
ではこのような動作を実現するのは不可能なのでしょうか?

# 初心者スレを見つけたので今度からはそちらに行く事にします。
# http://pc8.2ch.net/test/read.cgi/tech/1122001458/l50

26 :デフォルトの名無しさん:2005/12/15(木) 21:48:26
どうみてもここだよな。
http://wisdom.sakura.ne.jp/programming/cs/cs44.html

27 :デフォルトの名無しさん:2005/12/15(木) 22:43:40
おれもそこを思い出した、お世話になったなぁ

28 :デフォルトの名無しさん:2005/12/15(木) 23:47:10
vs2005でXmlシリアライズ可能な自己定義オブジェクトを
Settingsクラス内で定義して保存することはできますか?

//XmlSerializable
public class MySettingObj{
private string name;
public string Name {get{return name;}set{name=value;}
}
こんなクラスをプロジェクトのプロパティ、設定タブでのエディッタでSettings.csに保存することは無理でしょうか?
このようなオブジェクトは別ファイルに保存するのが常套手段ですか?


29 :デフォルトの名無しさん:2005/12/16(金) 09:52:07
クラスの実行時定義のこと?

Microsoft.CSharp
System.CodeDom.Compiler

とか。自分で解放したい時は System.AppDomain を使う。
違ったらスマソ

30 :デフォルトの名無しさん:2005/12/17(土) 00:34:38
すいません、普通にローカルマシンにオブジェクトを保存する手段のことです。
ファイルパスとか考えるの面倒なのでデフォルトで用意されている機構である
アプリケーション設定(Settings)で保存できたらいいなぁ、と

あとResources.resxエディタで文字列を保存するときにセクション分けって無理なんですかね?
同一サテライトアセンブリ中で
文字列の保存をカテゴライズするにはKeyにPrefixをつけて、ずらーっと並べる位なのでしょうか?

31 :デフォルトの名無しさん:2005/12/17(土) 01:42:18
SELECT email FROM table

のSQLコマンドで呼び出されたemailのリストをArray, ArrayList,等の配列として得ることの出来るSystem.Data.SqlClient.SqlCommand関数(またはそれに代わる関数)は何かありますか? 


32 :デフォルトの名無しさん:2005/12/17(土) 02:08:55
DataReader型は自分でArrayにするので問題ないかと

33 :デフォルトの名無しさん:2005/12/17(土) 02:43:35
早速回答ありがとうございます。試してみます。

34 :デフォルトの名無しさん:2005/12/17(土) 09:51:15
今までデータベース非依存なDataSet(Read/WriteXml)で保持していたデータを
mdbに書き出したいのですが
DataSetからmdbファイルを作成することはできるのでしょうか?
(対象は素のWindows2000 Accessとかはインストールされていない)

mdbじゃなくてもお手軽DBならなんでもいいのですが、何かよいものってありますでしょうか?

35 :デフォルトの名無しさん:2005/12/17(土) 10:22:59
xml

36 :デフォルトの名無しさん:2005/12/17(土) 13:21:38
相談なんですが・・・

クラスに設定したい機能がいっぱいあるんですが、
一回設定したらもう二度と変更したくない機能ばっかりなんです

一回設定したらもう二度と変更したくない機能ってコンストラクタの引数で設定するべきだとは思うんですが
これやるとコンストラクタの引数が10個とか20個とかになってしまいます。
かといって、インスタンス生成後にプロパティで1つずつ設定するのも変・・・

これってそもそもクラスの設計が不味いんですかねえ

37 :デフォルトの名無しさん:2005/12/17(土) 13:29:01
不味いだろうな

38 :デフォルトの名無しさん:2005/12/17(土) 13:42:20
SQL Server 2005のXML対応って、
XmlファイルをXPathやらXmlWriter/Readerで操作するのと
同じイメージで使えるってことなのかな。

39 :デフォルトの名無しさん:2005/12/17(土) 13:46:13
>>36
引数に独自クラスを当てればすっきりするんじゃないの?構造体でもなんでもいいんだけど。

40 :デフォルトの名無しさん:2005/12/17(土) 13:53:11
>>36
ProcessStartInfoクラスとか参考にしてみれば?

41 :デフォルトの名無しさん:2005/12/17(土) 16:30:23
Object型の変数に値型を格納するとボクシングが起きて効率がよくないと
何かで見ました。効率など気にせず実際に利用されていますか?
また、列挙型ではボクシングは発生するのでしょうか?

42 :デフォルトの名無しさん:2005/12/17(土) 16:40:24
>>41
列挙型は値型なのでボクシングは起きる

実行効率が必要かいなかも不明な状態で
実行効率を気にするのは馬鹿のすること

43 :デフォルトの名無しさん:2005/12/17(土) 22:17:25
privateなコンストラクタをもつクラスHoge(既存でいじれない)は
Hoge hoge = new Hoge();
ってできないですよね?
ここで
Hogeを返すtool.hogeってメソッドがある場合、
Hoge hoge = tool.hoge();
は通りますよね?
なんとかして、Hogeを継承するクラスって作れないでしょうか?
toolはpublic classでどっからでも呼べます。

やりたいことはHogeにプロパティ、メソッドをいくつか増やしたいだけなのですが。

44 :43:2005/12/17(土) 22:27:11
キャストまたはas演算子でHogeとみなせればどんな方法でもかまいません。

よろしくお願いします。

45 :デフォルトの名無しさん:2005/12/17(土) 22:44:18
Hogeのインスタンスをフィールドとしてもつクラスを作り
ユーザ定義のキャストで Hoge にキャストできるようにする

46 :デフォルトの名無しさん:2005/12/17(土) 22:46:22
あんたむちゃいうな。


47 :デフォルトの名無しさん:2005/12/17(土) 22:47:57
もうちょっと言っとくと、
ユーザ定義のキャストを実施した時点でMyHogeはHogeそのものに変えてしまうしかなく、
もはや追加のプロパティなどは存在できない。


48 :デフォルトの名無しさん:2005/12/17(土) 22:48:33
いや、ひょっとしてそれでいいのかな。
だったらすまん。


49 :デフォルトの名無しさん:2005/12/17(土) 22:57:47
プロパティやメソッドを追加するだけらしいから
オーバーライドがないってことでいいんじゃね

50 :43:2005/12/17(土) 23:55:39
public static implicit operator
で試してみます。
ありがとうございました。

51 :デフォルトの名無しさん:2005/12/18(日) 05:02:51
Microsoft Visual C# 2005 Express Editionの制限ってどんなものがありますか?


52 :デフォルトの名無しさん:2005/12/18(日) 07:53:34
ttp://www.microsoft.com/japan/msdn/howtobuy/vs2005/editions/stdexp/
ttp://www.microsoft.com/japan/msdn/vstudio/productinfo/productline/

53 :デフォルトの名無しさん:2005/12/18(日) 11:10:32
ひょっとしてExpress EditionてUserControl作れない?

54 :デフォルトの名無しさん:2005/12/18(日) 11:13:30
Expressはβ2でしか弄くってないが作れた記憶があるぞ

55 :デフォルトの名無しさん:2005/12/18(日) 12:11:10
つくれないのはインストーラ

56 :デフォルトの名無しさん:2005/12/18(日) 12:49:52
話を総合すると、数Mbyte程度のWinアプリを作っている人なら
Express Editionで十分って事ですか。
Standard Edition買おうかと思っていたけどタダのExpress Editionと比べると
お金払ってまで必要なのか?と思ってしまいます。

57 :デフォルトの名無しさん:2005/12/18(日) 13:18:37
Standardとの大きな違いは、対応言語、CompactFrameworkでの開発の有無、クラスデザイナ、辺りかな。
詳しくはMSとかに。
//日本語のじゃ全製品の詳細比較が見つからないんだが……。
製品版はどうせ2月発売なんだから、それまではExpressEdition使って様子を見ればいい。

58 :デフォルトの名無しさん:2005/12/18(日) 13:26:11
Javaしか知らないんですがC#の案件をやることになりました。
文法はよく似てるんですが何か決定的な違いとかこれは気をつけろみたいなのありますか?

59 :デフォルトの名無しさん:2005/12/18(日) 13:49:07
>>57
確かに現状Express Editionしかないんだしね。
様子を見るしかありませんね。

60 :デフォルトの名無しさん:2005/12/18(日) 14:14:24
案件によるが、一番Javaの人が引っかかるのはやはりデリゲートかね?

61 :デフォルトの名無しさん:2005/12/18(日) 14:24:37
>>58
Main

62 :デフォルトの名無しさん:2005/12/18(日) 14:25:19
P/Invokeと構造体

63 :デフォルトの名無しさん:2005/12/18(日) 14:50:25
Express Edition には System.Runtime 空間がない。
→P/Invoke とか、Marshal が使えない。

1.1でクラスライブラリ作れってことかな。

64 :デフォルトの名無しさん:2005/12/18(日) 14:53:48
webページを取得するのにHttpWebRequestクラスとか
TcpClientクラスとかWebClientクラスがありますが
どれが一番早く処理できますか?

65 :デフォルトの名無しさん:2005/12/18(日) 14:54:05
なんと、Express EditionはSDKにも劣るのか。


馬鹿なこと言うな。大体標準ライブラリの名前空間が無いってどういう意味だ。

66 :デフォルトの名無しさん:2005/12/18(日) 14:54:57
>>64
コーディングの手間ならWebClientが一番小さいな

67 :デフォルトの名無しさん:2005/12/18(日) 14:57:32
>>63
ヘルプ?のリファレンスには無いけど、普通に使えた。
インテリセンスにも表示されたし。

68 :デフォルトの名無しさん:2005/12/18(日) 14:59:39
ん〜? 普通にあるぞ?
ms-help://MS.VSExpressCC.v80/MS.NETFramework.v20.ja/cpref11/html/N_System_Runtime_InteropServices.htm

69 :デフォルトの名無しさん:2005/12/18(日) 15:02:57
Expressだとリファクタリングの機能が大幅に少ない?
フィールドのカプセル化の機能は期待してたんだが、メニューにないorz

70 :63:2005/12/18(日) 15:11:03
ありゃ、ほんとだ。

ヘルプの
Visual Studio 2005 Express Edition 対応 MSDN ライブラリ
 - NET Framewrok SDK ドキュメント
  - クラスライブラリ
の中に見つからないから誤解してた。

71 :デフォルトの名無しさん:2005/12/18(日) 15:35:44
結構ドキュメントにないの多いね。いちいちwebに探しに行ってうざい。
Microsoft.Win32.Registoryとかもない

72 :デフォルトの名無しさん:2005/12/18(日) 15:45:08
いやあるよ?
ms-help://MS.VSExpressCC.v80/MS.NETFramework.v20.ja/cpref1/html/T_Microsoft_Win32_Registry.htm

なんだ、私のドキュメントとほかの人のは別物なのか?
SDK入れた後でExpress入れたんだけど。

73 :67:2005/12/18(日) 15:53:08
俺も見つからない… >>68>>72

74 :デフォルトの名無しさん:2005/12/18(日) 15:53:23
えーーー
第一cpref1.hxsがない
expressと同時にいれたやつだと少ないのかな?
とりあえず間違えて落としたSDK解凍して漁ってみる


75 :デフォルトの名無しさん:2005/12/18(日) 17:43:13
俺もないな。
何でだろ。



76 :デフォルトの名無しさん:2005/12/18(日) 18:09:09
ArrayListの中のPointをPoint[]としてとりだすにはどうしたらいいでしょうか?

(Point[])arrayPoints.ToArray();

は通りませんでした。

77 :デフォルトの名無しさん:2005/12/18(日) 18:13:04
もうひとつのオーバーロード

78 :デフォルトの名無しさん:2005/12/18(日) 18:14:47
(Point[])arrayPoints.ToArray(Type.GetType("Point[]"))
ってことですか?
無事いけたみたいです。

ありがとうございました。
#なんで気づかなかったんだろう…orz

79 :デフォルトの名無しさん:2005/12/18(日) 18:19:30
Typeを静的に取得するにはtypeof使えー。

80 :デフォルトの名無しさん:2005/12/18(日) 18:20:01
文字列で型情報を取り出さずに typeof を使えよ

81 :78:2005/12/18(日) 18:28:34
(Point[])arrayPoints.ToArray(typeof(Point));
でいけました。
>>78でかいたのはコンパイル通ったもののエラーでした
×(Point[])arrayPoints.ToArray(Type.GetType("Point[]"))
×(Point[])arrayPoints.ToArray(Type.GetType("Point"))
○(Point[])arrayPoints.ToArray(typeof(Point));

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

82 :デフォルトの名無しさん:2005/12/18(日) 19:24:30
>>66
ありがとうございます。
webページをゲットするスピードは
どれもあまり変わらないのでしょうか?
また他にアクセスできるクラスとかあったり
しますか?

83 :75:2005/12/18(日) 19:40:49
>>67, >>70, >>71, >>74
見つけた。.NET Framework 2.0 SDKのドキュメントに含まれてた。
一旦MSDN Express Libraryをアンインストールして、
SDKを入れてからもう一回MSDNライブラリ入れたら見れるようになった。
普通にインストールするだけでもいけたのかもしれん。

84 :デフォルトの名無しさん:2005/12/18(日) 21:24:24
using (FileStream fs = File.OpenRead(@"70M位の実在するファイル.txt"))
using (StreamReader reader = new StreamReader(fs, Encoding.Default))
{
  do
  {
    line = reader.ReadLine();
    Console.WriteLine(line);//なぜかlineが nullなんですけど なぜでしょう
  } while (line != null);
}

85 :デフォルトの名無しさん:2005/12/18(日) 21:30:12
なんか変態。
streamreaderでファイル開いちゃだめなの?

86 :デフォルトの名無しさん:2005/12/18(日) 21:31:26
うん変だね

87 :デフォルトの名無しさん:2005/12/18(日) 21:37:30
 StreamとStreamReaderの関係とかProcessとThreadとか、.NETのクラスライブラリの中で野クラスの相互関係、のドキュメントどっかない?
 それあれば大雑把に仕様把握するのが早くなるのに。

88 :デフォルトの名無しさん:2005/12/18(日) 21:40:46
>>83
あとからSDKのドキュメント部分だけインストールでもいけた。
//SDKインストールだけじゃドキュメントに出てくれなかったんだよな……。

89 :デフォルトの名無しさん:2005/12/18(日) 21:49:04
class Vector{
  int key;
  int value;
}
というクラスがあって、その配列
Vector v = new Vector[n];
を作った後に、要素keyだけを配列として取り出すことは
できますでしょうか?

例えば、SortedListの、Keysプロパティのように、
とりだした配列なりコレクションなりを
foreach構文にかけることがしたいのですが・・・

よろしくお願いいたします。

90 :デフォルトの名無しさん:2005/12/18(日) 21:54:56
レスありがとうございます。

ファイルを開いて>一行ずつ読み込んで・・
と日本語をそのままコードにしていったときにそうなってしまったのですが。

StreamReaderをそのまま使うと問題ないです。
でも、なぜFileStreamを開いて、StreamReaderに渡して実行できないのかわからないのです。
(Streamを渡して〜〜するという処理をやる予定があるので勉強のため)

↓でも同じようなコードがあるのですが 知ってる人いませんか?
「C#で作るWindowsアプリ −ファイルを読み込む− 」
http://www.divakk.co.jp/aoyagi/csharp_winexe_04.html
// ファイルを読み込む
Stream stm = opendlg.OpenFile();
if (stm != null) {
StreamReader reader = new StreamReader(stm);
mTextBox.Text = reader.ReadToEnd();
stm.Close();
}


91 :デフォルトの名無しさん:2005/12/18(日) 21:55:36
一回り拾っていってArrayListに突っ込んでいく

92 :デフォルトの名無しさん:2005/12/18(日) 21:58:48
ないのでforeach(Vector v in vectors){ v.key....}とVectorでまわすべし
#elementの名前がVectorなのがちょっと引っかかるが。。

93 :89:2005/12/18(日) 21:59:03
>>91
やっぱそれしかないのですかね・・・
今はそうしているのですが、
O(n)になっちゃうので、毎回参照されるとつらいですよね・・・

Vectorクラスか、外側のクラス(Vectorをコンポジションするクラス)
に細工をしてどうにかならないでしょうか?

94 :デフォルトの名無しさん:2005/12/18(日) 22:02:08
>>93
配列で何がしたいんだ?
たぶん、配列でまわすのもVectorのまままわすのも同じようにできると思うよ。

95 :89:2005/12/18(日) 22:05:26
>>94
外側に
class Container{
  Vector[] data;

  public int[] Keys{
    get{
      :
      :
    }
  }
}
SortedListみたいなコンテナクラスを作っていまして、
として、Vector[] dataのkey要素だけを返すような
プロパティが作りたいのです。
Keysプロパティを参照されるたびに「・・・・」の部分で
コピーして返す、ってのはイヤですよね・・・?



96 :デフォルトの名無しさん:2005/12/18(日) 22:15:31
そもそもKeysを頻繁に使う必要あるの?
あるなら、内部データとして喪ってもいいかもしれないけど、ソートなどにあわして更新しなおすオーバーヘッドかかる。


97 :89:2005/12/18(日) 22:20:30
>>96
内部のアルゴリズムで使われていたりします。
積極的な理由としては、将来、複数のコンテナクラスを、
interfaceをimplementしたクラスとしてまとめたときに、
統一性がはかれるように、というのが目的なのですが。

なお、Vector[] dataの要素数は10000ぐらいです。
おっしゃるとおり、別にkeys[]という参照の配列を持とうとも
考えたのですが、他のメソッドも書き直す必要があって、やめました。
10000ぐらいならコピーのオーバーヘッドを黙殺するというのも
手ではあるのですが・・・

98 :デフォルトの名無しさん:2005/12/18(日) 22:28:37
内部アルゴリズムはvector.keyでまわして、外部にはコピーしてまわすとかもありでは?そういう仕様だから使うときはKyes[2]と化するなといっておいて。
両方ともどれぐらいのパフォかによるけど。


99 :デフォルトの名無しさん:2005/12/18(日) 22:34:10
keys が vector じゃなくてもいいなら
IEnumeratorとインデクサを実装した KeyCollection とか定義してkeysで、
それを返せばいいんじゃない?

100 :デフォルトの名無しさん:2005/12/18(日) 22:34:47
内部でキーと値別々に持てば良いんじゃね

101 :デフォルトの名無しさん:2005/12/18(日) 22:34:50
こんなのもあり?

class VectorKeyEnumerator : IEnumerator{
    private Vector[] vectors;
    ・・・
}
class VectorKeys : IEnumerable{
    private Vector[] vectors;
    ・・・
}

class Container{
    Vector[] data;

    public IEnumerable Keys{
        get{return new VectorKeys(this.data);}
    }
}

102 :89:2005/12/18(日) 22:36:22
>>98
そうですね。
任意の位置の要素へのアクセスはO(1)でできるので、
GetKey(int index);
なども公開して、そちらの使用を推奨する形で逃げれば
いいですかね。

GetKey(0)〜GetKey(n)までが返す全ての要素を
集合としてもつクラスを定義できればいいのになぁ。

103 :デフォルトの名無しさん:2005/12/18(日) 22:38:11
かぶったorz

104 :89:2005/12/18(日) 22:43:20
>>100
本当はそうしたいのですが、Vectorそのものを返すメソッドや、
内部データとしてかなり使い回しているので、
全部直すのは大変そうです。
下手にいじるとバグも入れちゃいそうで・・・

>>99 >>101
なんかそれ凄くよさそうですね。
それなら、GetKey()を生かせますね。
IEnumerableって、次に返す位置を覚えておけましたっけ?
だったら、万事解決です。


105 :デフォルトの名無しさん:2005/12/18(日) 22:52:48
つyield

106 :89:2005/12/18(日) 23:01:50
>>105
2.0からそんな便利なのが追加されたのですか・・・
本当にありがとうございます。一発で解決しました。

参考までに
  public IEnumerable Keys{
    get{
      for(int i=0; i<data.Count; i++)
        yield return data[i].key;
    }
  }


107 :89:2005/12/18(日) 23:07:01
でも、コピーするときに比べてちょっとパフォーマンスが
落ちた気がしますね。(0.5%ぐらい実行時間増)
コピーする手間が省けたのに、何でだろ。
0.5%ぐらい時間がかかるぐらい、無視してもいいんだけど・・・

108 :89:2005/12/18(日) 23:09:22
あーそうか。
いままでコピーしてた部分は、時間測定外だったからかな。
内部ではyieldを使った場合、ちょっとした変なことを
やってるんだろうな・・・

109 :デフォルトの名無しさん:2005/12/18(日) 23:34:16
GeckoをC#から使いたいんですが、どうすれば良いのでしょうか?
とりあえずMozzilaのActiveXコントロールを埋め込んでみましたが、Navigateは普通にできるものの、
Documentなどの肝心な値がobject型(GetType().Nameは__ComObject)で使い物になりません。

DotNETEmbedというものも見つけましたが、ビルドできる環境がありません。
DotNETEmbedのビルド済みDLLがある場所か、他に使用できるGeckoの.Netラッパーをご存知の方、教えて頂けないでしょうか?

110 :デフォルトの名無しさん:2005/12/18(日) 23:50:40
>>109
Microsoft HTML Object Libraryを参照設定
Documentが__ComObjectなのはIEコントロールでも同じだから妥当なインターフェイスにキャスト汁

111 :デフォルトの名無しさん:2005/12/19(月) 00:11:12
VC# Express Editionを入れた後
.Net Framework 2.0 SDK Beta2 日本語版を入れたのですが
>>72
ms-help://MS.VSExpressCC.v80/MS.NETFramework.v20.ja/cpref1/html/T_Microsoft_Win32_Registry.htm
が出てきません。VC#のヘルプに出てくるURL欄に直打ち→Enterで良いんですよね?

112 :デフォルトの名無しさん:2005/12/19(月) 00:36:12
>>111
とりあえず

SDKβアンインストール

VC#Expressと一緒に入ったMSDNアンインストール

SDKリリースバージョンインストール

でいけるとおも

113 :デフォルトの名無しさん:2005/12/19(月) 00:39:08
なんで今更ベータ入れてるんだよ……

114 :デフォルトの名無しさん:2005/12/19(月) 05:50:48
beta じゃない .NET Framework がどこにあるのか探しまくっちゃったぜ。

ttp://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=fe6f2099-b7b4-4f47-a244-c96d69c35dec

115 :デフォルトの名無しさん:2005/12/19(月) 12:03:13
要するにリアルタイムでログ会話監視してその内容からアプリ走らせるって事で合ってるか?
むかーしIRCだったかにそういうのあったな

116 :115:2005/12/19(月) 12:04:05
すまん誤爆った、しかもageちまった
しかもどうでもいいような内容だ、吊ってくる

117 :デフォルトの名無しさん:2005/12/19(月) 12:44:45
( ´∀`)σ)Д`)プニュ >>115-116
かわいいやつめ

118 :デフォルトの名無しさん:2005/12/19(月) 14:32:05
>>116
             / ̄ ̄^ヽ   /::.__  .:::::::::::::  __   ヽ_
             l       l / /  ヽ_ヽv /: / ヽ   ヽ
       _ /,--、l       ノ /   ̄ ̄ √___丶 ̄ ̄    |
   ,--、_ノ:: `ー'::   、ミー---‐,,l |      // tーーー|ヽ       |
  ,/   :::         i ̄ ̄  | |      ..: |    |ヽ       |
/          l:::    l:::    l  |       | |⊂ニヽ| |      |
l   .   l     !::    |:::    l  |     | |  |:::T::::| !       |
|   l   l     |::    l:      l \:     ト--^^^^^┤    丿
|   l .   }    l:::::,r-----    l  \::      ̄ ̄^ヽ    丿
ヽ  :l::::   ト:;;;;;;;/-/__...........  /        __o
                              | 二|二゛  ___
                             ノ   |  ヤ


119 :デフォルトの名無しさん:2005/12/19(月) 14:46:23
同じフォームを
ふつうにウィンドウズアプリケーションで動かしたらフォームが開くのに、
ウィンドウズサービスで動かすとフォームが開かない。
エラーにもならない。
なんでや?


120 :デフォルトの名無しさん:2005/12/19(月) 14:50:26
サービスは独自のデスクトップを持っててそこで開いてる。
UIを持たせたいならUI用の別アプリを作ってサービスとプロセス間通信させる。

121 :デフォルトの名無しさん:2005/12/19(月) 15:55:03
面倒だけど、管理ツールから該当サービスの
プロパティ開いて、対話を許可してもできたはず。

122 :デフォルトの名無しさん:2005/12/19(月) 16:06:57
1.1SDKと2.0SDKって同居させてもなんの問題もない?

123 :デフォルトの名無しさん:2005/12/19(月) 16:28:18
1.0も同居させてるぜ

124 :デフォルトの名無しさん:2005/12/19(月) 16:33:11
>>123
サンクスコ

125 :119:2005/12/19(月) 16:58:10
>>120
>>121
さんきゅ。

126 :デフォルトの名無しさん:2005/12/19(月) 20:03:30
>>111,112
う〜んヘルプを開こうとすると
[パッケージ 'Visual Studio Common IDE Package' を読み込めませんでした]
とダイアログが出るようになった
MS MSDN Express再インストール
VC# Express Editionの修復をしても変わらず・・・
とりあえず害は無さそうなんだけど、同じ人居る?

127 :109:2005/12/19(月) 22:32:38
>>114
ランタイムならMicrosoft Updateで入るし、SDKならVS Express Edition落とした方が便利だと思うが。

>>110
えっ マジですか>mshtml
最終的にはFirefoxの「選択した部分のソースを表示」機能と同等のものを作りたいんですが…
WebBrowserコントロールではできない(ElementからInnerHTMLとかを取るとmshtml解析後のHTMLになってしまう)ので
Geckoにしようと思ったのに、もしや同じ結末・・・?

128 :デフォルトの名無しさん:2005/12/19(月) 23:13:07
マンドクサイけどWebBrowser使っても実装できないことはないと思う。


129 :114:2005/12/20(火) 02:46:52
>>127
あぁ、SDK2.0ね。
ちなみに114=63です。そこら辺から読んでくれれば、探しまくった理由がわかると思う。

130 :デフォルトの名無しさん:2005/12/20(火) 04:57:47
.NET SDK2.0を入れたんだが、これSystem32の下のDLLいくつか上書きしちゃうんだな・・・
clを起動しようとしたら(SHELL32.DLLがリンクしてる)APPHELP.DLLがないと言われるし、
なんだか90年代の不安定でいい加減な作りのWindowsを思い出した。

131 :デフォルトの名無しさん:2005/12/20(火) 05:42:32
side-by-side とか言ってるそばからコレか

132 :130:2005/12/20(火) 05:57:56
ごめん起動しないのは、MSPDB80.DLLのあるディレクトリにパス通してなかった・・・すまんこ
APPHELP.DLLはDelay-load Modulesだからなくてもとりあえず動いた・・・すまんこ

133 :デフォルトの名無しさん:2005/12/20(火) 07:17:03
>>131

134 :デフォルトの名無しさん:2005/12/20(火) 10:10:09
えーと、おしえてください。

あるDLLのエクスポートしてる関数にstructを渡すときに、
その関数の仕様でゼロクリアして渡さないといけないんですけど
C#だとどうやって記述すればいいんでしょう?
Cだと、memset (&obj, 0, sizeof(hoge)); の作業です。

とりあえず、今は

byte[] buf = new byte[Marshal.SizeOf(type(hoge))];
Array.Clear(buf);

hoge temp;
unsafe{
 fixed(byte* p = &buf[0]){
  temp = (hoge)Marshal.PtrToStructure((IntPtr)p, typeof(hoge));
}
}

dest = temp;

てなコードでお茶を濁してるのですけど、もっとスマートな書き方があるような気がするし、第一仕様を満たしているのか自信がありません。

135 :134:2005/12/20(火) 10:10:47
ちなみに、
unsafe{
 fixed(hoge* p = &dest){
  for(int i = 0; i < Marshal.SizeOf(dest); i++){
   Marshal.WriteByte((IntPtr)p, 0);  //←うろおぼえ
  }
 }
}
こんなコードを書いてみましたけど、hoge* p = &destのところでコンパイラに
マネージド/アンマネージドがどうのこうのとエラーをはかれました。


136 :デフォルトの名無しさん:2005/12/20(火) 10:18:35
エラーメッセージを略すな。

新しく構造体作るとか。デフォルトコンストラクタでnewされた直後の構造体は自動的に全て0。
byte[]にしたってArray.Clear呼ぶ必要もなく自動的に全ての要素が0。これの場合はMarshal.Copy。
Win32APIのZeroMemoryをP/Invokeするとか。

137 :デフォルトの名無しさん:2005/12/20(火) 10:19:47
>>136
> byte[]にしたってArray.Clear呼ぶ必要もなく自動的に全ての要素が0。これの場合はMarshal.Copy。
おっとこいつの場合はスマートにはいかないな。

138 :デフォルトの名無しさん:2005/12/20(火) 10:20:15
構造体ならば初期化時にフィールドは全部0だよ

139 :134:2005/12/20(火) 10:38:20
>>136:エラーメッセージ
あ、ごめんなさい。引っ越したばっかりで自宅がまだネットにつなげてないんで
ネカフェで記憶に頼って書き込んでるのです。


ふむふむ。んじゃたとえば、
struct hoge{
 private static hoge Zero = new hoge();
 
 public int i;
 public void ZeroClear() { this = Zero; }
}
みたいなことができそうですね。

140 :デフォルトの名無しさん:2005/12/20(火) 10:43:56
構造体のメソッドで自身のフィールドを変更するのはやめれ。
Zeroをpublic static readonlyなフィールドにした方がなんぼかましだ。

141 :デフォルトの名無しさん:2005/12/20(火) 13:14:02
適切な名前がついてればいいんじゃね?

142 :デフォルトの名無しさん:2005/12/20(火) 20:01:29
「this=」に誰も突っ込まないのは仕様?

>140
それ134の希望には全く沿わないだろ。

143 :デフォルトの名無しさん:2005/12/20(火) 20:36:56
C#のオススメの書籍・参考書を教えてください
このスレ(とその>>1)を参考にしたけれど、C#についてはほとんど触れらていないので。



144 :デフォルトの名無しさん:2005/12/20(火) 20:37:27

あ、このスレのことです。
推薦図書/必読書のためのスレッド PART28
http://pc8.2ch.net/test/read.cgi/tech/1133629787/

145 :デフォルトの名無しさん:2005/12/20(火) 23:15:48
すいません、DataGridViewのコンボボックスの使い方で質問お願いします。

DataGridViewでDataGridViewComboBoxColumnを使った列で
ComboBoxのItemsにRegexのインスタンスをいくつか入れて選択できるようにしたのですが
行を加えた後、ドロップダウンでその列を変更すると
エラー(そのデータ型はサポートされません。のような)が出てしまいます。
※データグリッドは非バインドで使用しています。

//コード例
btn1_Clicked(object o, EventArgs e){ dataGridView1.Rows.Add(new object[]{comboBox1.SelectedItem});}
comboBox1.ItemsとdataGridViewComboBoxColumn.Itemsには同じオブジェクトを使用しています。

dataGridViewのコンボボックスで選択された後、Cellの値はStringになってしまうのでしょうか?
Cellの値をDataGridViewComboBoxCellで選択された値にするためのプロパティとかどこかにありませんか?

146 :デフォルトの名無しさん:2005/12/21(水) 01:14:53
むう、DataGridViewComboBoxColumnがさっぱりわからん。
とりあえずなんかCellのメンバに入れるのに基本型以外のは撥ねられるっぽいな。
つかDataGridViewComboBoxCellにSelectedIndexすらないってのはどういうことだ。
後からCellのItemsに追加してもドロップダウンされたのの表示が変わらん。

あと>>145のコードじゃ新しい行としてcomboBox1.SelectedItemを入れてるが、
新しいDataGridViewComboBoxCellにこれ渡すのは拙くないか?

147 :デフォルトの名無しさん:2005/12/21(水) 01:27:40
> 「this=」に誰も突っ込まないのは仕様?
どう突っ込めばいいんだ?


148 :デフォルトの名無しさん:2005/12/21(水) 15:45:24
SDKのドキュメント、ClickOnceの解説部分で肝心の「方法 : ClickOnce アプリケーションを発行する」のページがない件について

149 :デフォルトの名無しさん:2005/12/21(水) 15:50:03
いやあるな
VSでの配置ってジャンルになってるからVS Expressが必要かも

150 :デフォルトの名無しさん:2005/12/21(水) 19:12:46
CSVファイルを正確に読み込む方法ってどうしてます?

一行読み込んでカンマで区切るのが基本と思いますが、
これだとデータ内にカンマがあったりすると正確に読み込めなんですよね。

151 :デフォルトの名無しさん:2005/12/21(水) 19:16:07
正確なCSVファイルの定義は?

で、その定義に従って解釈

152 :デフォルトの名無しさん:2005/12/21(水) 19:17:53
>>150-151
つRFC4180

153 :デフォルトの名無しさん:2005/12/21(水) 19:29:38
問題はCSV側がRFCを守ってるかどうかだよな……。

154 :デフォルトの名無しさん:2005/12/21(水) 19:49:20
いつも思うけどCSVから逃げてタブ区切りにしたい。

155 :デフォルトの名無しさん:2005/12/21(水) 19:51:02
いやXMLに池よw

156 :デフォルトの名無しさん:2005/12/21(水) 20:01:28
ああ、それも選択肢だけどさ

157 :デフォルトの名無しさん:2005/12/21(水) 20:49:17
XMLかわいいよXML

158 :デフォルトの名無しさん:2005/12/21(水) 21:20:54
でもデータ取るのめんどくさいよ。
まあ仕事ならやるけどさあ

159 :デフォルトの名無しさん:2005/12/21(水) 22:18:42
そうでもないよ。

160 :145:2005/12/21(水) 23:14:20
>>146 どうも。
選択肢として用意するItems内のオブジェクトRegexの他、
ToString()をオーバライドして、Immutableなものとして使っているので大丈夫かと・・
表示用と実データを分けたかったので。

DataGridViewComboBoxColumnのItemsは一応何でもいけそうです
データグリッドのGUI上で変更したらCell内は一度Stringになってしまうようですが・・

ついでに蛇足ながら
DataGridViewCheckBoxColumnを使っていて
dataGridView1.Row.Add(new object[]{true, ...});とやると
一行目だけなぜかチェックボックスが反転しないという現象があったのですが
VS2005の製品版にしたら直ってました・・
DataGridViewComboBoxの方も試してみないと

161 :デフォルトの名無しさん:2005/12/21(水) 23:38:56
C#で開発しています。OleDbでデータベースに接続し、
社員Mから、社員名と、最終更新日を取得し、データグリッドに表示させています

取得した、最終更新日の表示が2005/12/21なんですが、2005年12月21日と、データグリッドに表示させようと思っていますが、分かりません。
よろしくお願いします。

DataSet ds = new DataSet("社員M");
DataView dv;

da = new System.Data.OleDb.OleDbDataAdapter(
"SELECT 社員名,最終更新日 FROM 社員M", cn);
da.Fill(ds, "社員M");

dv = new DataView(ds.Tables["社員M"]
," ","", DataViewRowState.CurrentRows);
dataGrid1.DataSource = dv;


162 :デフォルトの名無しさん:2005/12/21(水) 23:50:48
"2005/12/21"を"2005年12月21日"に変換表示したいだけ?
だったら DateTime.ParseExact 使えばいいんじゃないの。

163 :156:2005/12/22(木) 00:00:53
>>162
すみませんがもっと詳しく教えてください。
ほんとに、これが精一杯です。

164 :デフォルトの名無しさん:2005/12/22(木) 00:07:54
DataGridTextBoxColumn.Formatをいじる。
実装例はMSDNのサンプルにある。
FormatプロパティのだけじゃなくてDataGridTextBoxColumnとかDataGridTableStyleとかの解説も読めよ。

165 :デフォルトの名無しさん:2005/12/22(木) 00:13:10
>>163
その最終更新日自体は取得できてるんでしょ?

それなら、大事なのはデータベースの話じゃなくて
日付の扱い方の話だね。

とりあえずこれとか。サンプルもあるよ。
http://www.atmarkit.co.jp/fdotnet/dotnettips/203dateparse/dateparse.html

166 :156:2005/12/22(木) 00:14:04
>>164
やってみます。ありがとう

167 :デフォルトの名無しさん:2005/12/22(木) 00:29:50
マルチかよ氏ね

168 :デフォルトの名無しさん:2005/12/22(木) 00:47:19
2重起動されたことを感知し、最初に起動された奴にコマンドラインを渡す方法は
VBだと イベントを取れるようなのですが、C#ではそれと同等な方法はあるでしょうか?

アプリケーションプロジェクトのみをVBにする価値ってありますか?
なんかちょっと怖いんですけど

169 :デフォルトの名無しさん:2005/12/22(木) 00:51:07
二重起動の感知ならMutex使うなりで可能。
コマンドラインを渡すのは、簡単にやるならSendMessageでWM_COPYDATAかな。

170 :デフォルトの名無しさん:2005/12/22(木) 02:06:23
UNIX系では、名前付きパイプを作成できた奴だけが起動って方法をよく見かけるけど。


171 :デフォルトの名無しさん:2005/12/22(木) 02:11:43
Windowsでも可能だが、.NETの標準ライブラリじゃ名前つきパイプをサポートしてないからP/Invokeということになるな

172 :デフォルトの名無しさん:2005/12/22(木) 02:15:44
レジストリを使う方法はやめた方がよさげだね。
MSOutlookは時々多重起動してるし、立ち上がらなくなることもあるwwww

173 :デフォルトの名無しさん:2005/12/22(木) 07:23:16
CrystalReportで表形式の伝票を作っていて
ページをまたがったとき下記のように
1ページ目の一番下の線が切れるんですが
__________
|hoge|foo|bar| 
            ページ終了
大見出し 二ページ目
______________________
|hogee|fooo|barrr|
 ̄ ̄ ̄ ̄ ̄ ̄ ̄

どう線を割り込ませればよいか教えてください

174 :デフォルトの名無しさん:2005/12/22(木) 08:42:03
CrystalReportは日本語の文献が少ないね。

書籍探すか、この辺を応用するかで頑張ってみれば。
ttp://www.hirano.cc/crystalreports/

175 :デフォルトの名無しさん:2005/12/22(木) 08:47:19
NDoc 以外にもドキュメント作ってくれるツールないかな。

C#2.0対応のやつが欲しいのだけど。

176 :デフォルトの名無しさん:2005/12/22(木) 11:41:00
System.Windows.Forms.StatusBarPanelのAutoSizeをContentsにすると、
EnableVisualStyled()していても、StatusBarの視覚スタイルが無効になってしまいます。
これってバグ?
1.1です。


177 :デフォルトの名無しさん:2005/12/22(木) 11:42:48
マニフェスト使ったらどうなる?

178 :デフォルトの名無しさん:2005/12/22(木) 11:45:14
176です。直後ですみません。
もしやと思って、デザイン時はNoneでForm_LoadでContentsにしたら
視覚スタイル有効で表示されました。

全般に、Loadの前にウィンドウハンドルを作るようなことをすると
視覚スタイルが無効になるような気がします。AutoSizeをいじると
ハンドルが出来るんでしょうか?


179 :デフォルトの名無しさん:2005/12/22(木) 12:01:18
1.1なんてどうでもいい

180 :デフォルトの名無しさん:2005/12/22(木) 12:03:23
private void button1_Click(object sender, System.EventArgs e)
{
Console.WriteLine("こんそーる");
System.Diagnostics.Debug.WriteLine("でばっぐ");
}
て書いたら、出力ウインドウに

でばっぐ
こんそーる

と表示されます。
順番が逆なのはなぜなんですか?
よろしくお願いします。


181 :デフォルトの名無しさん:2005/12/22(木) 12:52:36
デバッグのほうが先に読み込まれるからに決まってるだろヴォケ。


182 :デフォルトの名無しさん:2005/12/22(木) 13:39:34
>>180
ConsoleをFlushしてみれば?

183 :デフォルトの名無しさん:2005/12/22(木) 14:26:07
>>177
マニフェストを置いたらちゃんと視覚スタイルで表示されました。なんなんだ。


184 :デフォルトの名無しさん:2005/12/22(木) 15:32:20
>>182
ありがとうございます。でもFlushのやり方がわからないです。。

185 :デフォルトの名無しさん:2005/12/22(木) 16:13:24
Console.WriteLine("こんそーる");
Console.Out.Flush() ;
System.Diagnostics.Debug.WriteLine("でばっぐ");
順番変わんない。
ConsoleとDebugは別々のストリームで
出力ウインドウはそれらを適当なタイミングかなにかで読み込んでくるだけで
ストリーム単位での順番は保障できないんじゃないか?

ちなみにボタンにフォーカスをあわせてリターンを押しっぱなしにすると
>でばっぐ
>でばっぐ
>でばっぐ
>こんそーる
>こんそーる
>こんそーる
>こんそーる
とか出る。

186 :デフォルトの名無しさん:2005/12/22(木) 22:05:55
>>185

なるほど。よくわかりました。
ありがとうございます。


187 :デフォルトの名無しさん:2005/12/22(木) 22:26:16
出力順が保証されないとイヤンと言うのなら、
Debug.Listeners.Clear();
Debug.Listeners.Add(new TextWriterTraceListener(Console.Out));
なんて微妙に変態ちっくなこともできるが。

188 :デフォルトの名無しさん:2005/12/22(木) 23:20:56
shdocvw.dllからエクスプローラのフォルダウインドウ取得して
FolderItemsに対して処理をしています。

//FolderViewはShell32.IShellFolderViewDual
//FolderView.SelectedItems()はShell32.FolderItems、IEnumerable

object oItem;
foreach( FolderItem folitem in FolderView.SelectedItems() )
{
 oItem = folitem;
 if(なにか条件)
  FileList.SelectItem( ref oItem, 25 );
 else
  FileList.SelectItem( ref oItem, 0 );
}

なにかの条件で選択するものを変えたいんです。
これだとFolderView.SelectedItems()の要素がループの度に変わると思うんですが
(実際Countプロパティをとると1ループごとに変化してます)
これで動いてしまうんです。

なんで動くか教えてくれません?(;´Д`)

怖いんで今は一旦FolderItemをArrayListなりに格納してからSelectItemしてるんですが

189 :デフォルトの名無しさん:2005/12/22(木) 23:25:06
ん?
FolderView.SelectedItems() は foreach の初めに1度だけ実行されるような気がするが。

190 :デフォルトの名無しさん:2005/12/22(木) 23:34:24
>>187

変態ちっくなコーディングしたら、期待通りに動きました。
ためになりました。(もっと勉強しなきゃなぁ。。)

ありがとうございます。


191 :188:2005/12/23(金) 00:04:51
>>189
といいますと?

192 :デフォルトの名無しさん:2005/12/23(金) 00:17:39
IEnumerator と IEnumerable を区別しろよ

193 :デフォルトの名無しさん:2005/12/23(金) 00:19:03
>>191
IEnumerable e = FolderView.SelectedItems();
foreach(FolderItem folitem in e) {
    ....

と変わらないはず。多分。

194 :デフォルトの名無しさん:2005/12/23(金) 00:19:45
あ、やば。気付かなかった。すまぬ。

195 :デフォルトの名無しさん:2005/12/23(金) 00:27:01
>>188
エナミュレータ・インタフェースの勉強するといいよ。
最も、結局MSがどういう実装してるかによるわけだが。


196 :デフォルトの名無しさん:2005/12/23(金) 00:30:09
IEnumerable/IEnumeratorの実装とは関係なく、SelectedItems()の実装次第じゃね?

197 :188:2005/12/23(金) 00:43:24
>>189>>192>>193>>195>>196
レスありがとう

コード間違えた

foreach( FolderItem folitem in FolderView.SelectedItems() )
{
 oItem = folitem;
 if(なにか条件)
  FolderView.SelectItem( ref oItem, 25 );
 else
  FolderView.SelectItem( ref oItem, 0 );
}

>>195
勉強します。とりあえず内部でIEnumeratorにMoveNextしたとき
ループの中で選択してるオブジェクトの数が減ったりしてるはずなのに
エラーも出さず動いてるんですが、仕組みが分からない以上使えないなと思いました。
動くってことはSelectedItems()で取得したFolderItemsは不変ってことなのかな?
でもプロパティとると変わってる。

結局>>196に行き着くんですかね?
こういうコードは止めた方がいいですか?


198 :デフォルトの名無しさん:2005/12/23(金) 01:36:30
>>196
MSDN見てみた。ディスパッチ・インタフェースか。
確かに .Net と言うよりVBの 'for each' 文化だな。
このインタフェース clsid 付いてるのか。

199 :デフォルトの名無しさん:2005/12/23(金) 01:48:29
>>197
灰皿があるんなら、吸ってもいいんでね?

200 :デフォルトの名無しさん:2005/12/23(金) 02:04:35
俺だけかもしれんがMouseWorksインストールするとVS2005でコンパイルできなくなるみたいだ
Kensington製品使う人は気をつけたほうがいいかもしれんな…


201 :デフォルトの名無しさん:2005/12/23(金) 07:04:45
2005Expressでユーザーコントロールの作り方が分からない…
新規作成に出てこないんだけど作れないってこと?

202 :デフォルトの名無しさん:2005/12/23(金) 08:38:31
[プロジェクト]→[ユーザーコントロールの追加]

203 :デフォルトの名無しさん:2005/12/23(金) 20:19:32
2005 Expressのデバッグでの実行速度が遅くて悩んでます。

例えば、下のプログラムを実行すると、
デバックなし(CTRL+F5)で実行 --> 2.8秒
デバッグ開始(F5)で実行すると --> 9.5秒
で、3倍以上も遅いです。
ちなみに、コマンドラインでコンパイルすると、
csc /optimize+ program.cs --> 2.8秒
csc /debug+ /checked+ program.cs --> 3.5秒
です。
2003 Proだとコマンドラインの結果と同等です。

2005 Expressのデバッグ実行はどうしてこんなに遅いのですか?

using System;
class Program
{
static void Main(string[] args)
{
int w = 1000; int h = 100000;
DateTime dt = DateTime.Now;
Random r = new Random();
double d = 0.0;
for (int y = 0; y < h; y++)
for (int x = 0; x < w; x++)
d += r.NextDouble();
TimeSpan ts = DateTime.Now - dt;
Console.WriteLine(ts.ToString());
}
}

204 :デフォルトの名無しさん:2005/12/23(金) 20:22:59
>>203
そりゃデバッグは実行速度ではなくあくまでデバッグが目的なんだから
そのためにより多くの情報を集めるようになった2005で遅くなるのは割りと自然だろう。

205 :デフォルトの名無しさん:2005/12/23(金) 20:33:09
>>204
今デバッグしている実際のプログラムだと、
デバッグなしだと3秒ぐらいなのに、デバッグありだと1分以上かかるんです。
ブレークポイントを使いたいだけなので・・・
多くの情報を集めなくて良いから、オプション設定とかで速くなる方法はないですかね?



206 :デフォルトの名無しさん:2005/12/23(金) 22:36:17
データベースから取得したパスワードと、テキストに入力した文字を比較し
ようと、if文を作ったんですけどエラーがでて実行できませんでした。
if文の書き方は合っていますか?

if(dr["パスワード"]=="パスワード.text")
{
処理
}


207 :デフォルトの名無しさん:2005/12/23(金) 22:42:37
>>206
メッセージボックスなりDebugなりで二つを出力させてみたらいいんじゃね

208 :デフォルトの名無しさん:2005/12/23(金) 22:51:18
エラーが出るのならばエラーメッセージくらい読めばいいのに

209 :デフォルトの名無しさん:2005/12/23(金) 23:18:44
2005 Expressは、IDEからデバッグ実行すると、
実行速度が数分の1にスローダウンするようだ。
エクスプローラで直接DebugフォルダにあるEXEを
実行すると普通のスピードで動作する。

スローダウンする仕掛けが入っているのだろうか。
誰かExpress版とPro版の両方で試せる人はいない
ですか?

210 :デフォルトの名無しさん:2005/12/23(金) 23:24:07
>>209
だからIDE側にデバッグ時情報を渡すからだろうと

211 :デフォルトの名無しさん:2005/12/23(金) 23:34:16
>>209
ウォッチ式とか付けてない?
数分の1は大きいなぁ。

212 :デフォルトの名無しさん:2005/12/23(金) 23:51:22
>>210,211
ウォッチ式はつけていない。
リリースビルドした実行形式をDebugフォルダにコピーしてもだめだった。
絶対にわざと遅くしていると思う。

213 :デフォルトの名無しさん:2005/12/24(土) 00:20:35
そもそも、
デバッグ情報がついたプログラムを通常実行するのと、
デバッグ情報がついたプログラムをデバッグ実行するのは違うぞ。

ちなみにブレークポイントの数は?
まあこれは2003での話しなので関係ないかもしれんが、
ブレークポイントの数が多くなるとデバッグ実行の速度が大きく落ちた。
※でも遅かったのは止めてステップ実行などしたときだけだったかもしれん。


214 :デフォルトの名無しさん:2005/12/24(土) 00:33:05
>>205
3秒が1分てのは極端だな…
何の処理で時間がかかってるのか調べられないかい?
たとえば通常処理で例外を起こしてキャッチを大量に繰り返してたりとか。


215 :デフォルトの名無しさん:2005/12/24(土) 00:50:38
>>214
Visual Studio 2005スレ Part6 の
827に実験結果をおいてます

216 :デフォルトの名無しさん:2005/12/24(土) 00:58:53
>>209
つーか、マルチ氏ね

217 :デフォルトの名無しさん:2005/12/24(土) 01:03:37
>>216
すまねえ、VS2005すれPart6に逝きます。

218 :デフォルトの名無しさん:2005/12/24(土) 02:51:53
メソッドにnewってどんなときに必要なります?

いまいち分からないのですが、教えてください。

219 :デフォルトの名無しさん:2005/12/24(土) 02:56:44
あー、隠蔽の話か。分かりづらい。

いらない。 と考えて良いよ。

220 :デフォルトの名無しさん:2005/12/24(土) 03:01:07
age
で答えられない程度なら、知ったかぶって回答すんなよw

221 :デフォルトの名無しさん:2005/12/24(土) 03:10:08
はいはいワロ

222 :デフォルトの名無しさん:2005/12/24(土) 03:12:04
何を聞きたいのかよくわからんが、
引数が同じで戻り値が違う時と答えておこう。

223 :デフォルトの名無しさん:2005/12/24(土) 03:17:08
class Base
{
public Base Optimize();
}

class Sub : Base
{
public new Sub Optimize();
}

元がvirtualでなかったり、戻り値の型変更する時にどうぞ

224 :デフォルトの名無しさん:2005/12/24(土) 03:40:14
XmlSerializerでストリームに書き込んだとき
「xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"」
みたいな奴を出さないようにできますか?

Xmlでの直列化を 各XmlSerializerに任せて書き込ませたらネームスペースなどが書き込まれて邪魔なので
こんな感じ
public class ComplexType: IXmlSerializable{
 public SimpleObject OneData;
 public SimpleObject AnotherData;
 void IXmlSerializable.WriteXml(XmlWriter writer){
   new XmlSerializer(typeof(SimpleObject)).Serialize(writer, OneData);//...ストリームに書き込み
 }
//...
}

//XmlSerializerでシリアライズ可能
public class SimpleObject{...}

具体的には<OneData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
じゃなくて<OneData>....</OneData>と書き込んでほしいです。

225 :デフォルトの名無しさん:2005/12/24(土) 03:46:53
GenericのList<>,Dictionary<>と
ArrayList,Hashtableを互いに変換することはできないのでしょうか?

226 :デフォルトの名無しさん:2005/12/24(土) 03:47:32
Regex.Replace()使ってごまかした事なら歩けどな。。。

227 :デフォルトの名無しさん:2005/12/24(土) 04:08:13
>>225
List<T>からArrayList、Dictionary<TKey, TValue>からHashtableにはコンストラクタに当てれば良い。
逆はちょっと面倒だな。素直にforeachで入れなおした方が良いかもしれない。

228 :デフォルトの名無しさん:2005/12/24(土) 04:19:12
IEquatable<T> があるのに ICloneable<T> がないのはなぜなんだよ
おかげで ICloneable を implicit に実装したことねえぞ

229 :デフォルトの名無しさん:2005/12/24(土) 04:29:53
どう使えるのか書いてみてくれよ。


230 :デフォルトの名無しさん:2005/12/24(土) 04:33:46
って思ったけど、まあ場面によっては使えるか。
でもこっちは自分で作ったらいいんじゃね?


231 :デフォルトの名無しさん:2005/12/24(土) 04:34:28
ICloneable の戻り値が object であるせいで
呼び出し元でキャストするのが面倒

232 :デフォルトの名無しさん:2005/12/24(土) 04:36:34
でもICloneableである必要ってよく分からないんだよな
各クラスが独自に実装してしまってもそう困るもんでないような気が

>>231
object ICloneable.Clone() {...}
public Hoge Clone() {...}
じゃ駄目?

233 :デフォルトの名無しさん:2005/12/24(土) 04:53:31
>>232
>282にそう書いてあるじゃん

234 :デフォルトの名無しさん:2005/12/24(土) 05:06:53
今までの傾向からして
public interface ICloneable<T> : ICloneable
になりそうな予感。

235 :デフォルトの名無しさん:2005/12/24(土) 11:36:08
そしてそれをどう使うのか…
あんまり有効な使い方は思い付かん。


236 :デフォルトの名無しさん:2005/12/24(土) 13:28:03
質問させて下さい。VC#2005Expressで、
 using System.Web.UI.HtmlControls;   
を使うと
 エラー 型または名前空間名 'UI' は名前空間 'System.Web' に存在しません。アセンブリ参照が不足しています。
と出て、UIに青い波線が入ります。
オブジェクトブラウザをみるとちゃんと存在します。
どこがいけないのでしょうか?ヘルプをみても問題ない気がします。
昔VBの経験があり、OSはXP2、PCは自作です。お願いします。

237 :デフォルトの名無しさん:2005/12/24(土) 13:30:31
add reference

238 :デフォルトの名無しさん:2005/12/24(土) 13:32:48
>>236
参照の追加

239 :デフォルトの名無しさん:2005/12/24(土) 13:42:52
>>237 >>238
おお、早速の返答ありがとうございます。
しかし悲しいかな、いまひとつ理解できず苦しんでおります。
もう少し詳しい説明をお願いできないでしょうか。


240 :デフォルトの名無しさん:2005/12/24(土) 13:47:39
>>239
ソリューションエクスプローラのプロジェクトのところに参照ってない?
右クリックしてみ

しまった、俺まだ2003だった

241 :デフォルトの名無しさん:2005/12/24(土) 13:52:22
>>240
おお、これか!
動いた!
ありがとうございました!!!

242 :デフォルトの名無しさん:2005/12/24(土) 15:30:07
p/invoke した関数から NullReferenceException 飛んでくるんだけど、
呼び出し先の関数が null 返した時にもこの例外は出るんだっけ?

243 :デフォルトの名無しさん:2005/12/24(土) 15:39:37
定義やら宣言やらが間違ってると思われ

244 :236:2005/12/24(土) 15:47:18
度々で恐縮です。
C#でHPに自動ログインさせようとしてるのですが、うまくいきません。
HtmlDocumentを使うのは分かったのですが、Itemプロパティが何故か使えません。
仕方ないの調べたらSetAttributeが使えそうなのですがこれも何故かうまく使えません。
Helpファイルの使用例も変です。恐れ入りますがよろしくお願いします。


245 :236:2005/12/24(土) 15:54:01
あ、IDは事前に分かっています。

246 :デフォルトの名無しさん:2005/12/24(土) 15:54:37
System.Windows.Forms.HtmlDocument?
Itemなんてプロパティは見当たらないが。HtmlElementにも。
うまく使えないってなにがどううまく使えないんだ。

……ってSystem.Web?
その名前空間は基本的にASP.NET用の名前空間であってWinFormアプリには使わないぞ?

247 :242:2005/12/24(土) 16:00:53
>>243
ん〜。NULL 以外の値が帰ってくる時には正常に動作するらしい。
NULL を返す時に限って例外出てくるんだけど……。それとも内部でこけてるだけかな……?

ちなみに宣言は
[DllImport("dxwrap.dll")] private extern static IntPtr DXMusic_New_FromFile(IntPtr hWnd, string filename);

248 :236:2005/12/24(土) 16:11:22
>>246
実は下記のサイトを参考に自分なりに作り直しています。
http://peace.poosan.net/investor/workshop/2512.htm
このページからダウンロードしたソリューションは動くんです。
C#のバージョンが違うのですが、新しいバージョンならもっと簡単に出来るのではないかと勉強がてらにやっていました。
ここではログインページを管理する変数とタイマーを使ってるのですが、DocumentCompletedを使ってやれないか模索していました。
ですがうまくデータを書き込めないんです。

249 :デフォルトの名無しさん:2005/12/24(土) 16:26:09
つまりAxWebBrowser/IHTMLDocument/IHTMLElement他の仕様と
System.Windows.Forms名前空間のWebBrowser/HtmlDocument/HtmlElementの仕様の差がわからないと。
ヘルプ嫁としか言いようが無いな。

//しかしそのサンプルもずいぶん無造作にCOMオブジェクトを使ってるねー。

250 :242:2005/12/24(土) 16:47:01
>>243
悪い。自己解決。p/invoke 先にバグがあった orz

251 :236:2005/12/24(土) 17:00:50
>>249
要は自動ログインしたいだけなんです。
WebBrowser.Document プロパティのヘルプに
「HTML ドキュメント オブジェクト モデル (DOM: Document Object Model) によって、
WebBrowser コントロールに表示されている Web ページのコンテンツにアクセスするには、このプロパティを使用します。」
とあるのですが、うまくログインできないんです。
他に参考になるページは http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=18348 ですが、
ここもやり方が古い(?)ようです。
お付き合いくださってありがとうございました。頑張って試行錯誤を続けます。

252 :デフォルトの名無しさん:2005/12/24(土) 17:06:18
> とあるのですが、うまくログインできないんです。

なにやら果てしない飛躍だな。

253 :236:2005/12/24(土) 17:15:37
え?方向性間違ってますか・・・orz

254 :デフォルトの名無しさん:2005/12/24(土) 17:25:50
エクスプローラーのファイルリストのように、
列の入れ替えができるリストビュ−ってどうやれば実装できるのでしょうか?
コンポーネントの名前とかも分らないので教えてもらえないでしょうか〜。m(_ _)m

255 :デフォルトの名無しさん:2005/12/24(土) 17:26:42
別に間違っては無いが、過程がすっぽ抜けてるから。
質問するときは具体的に、なにをどうやってどうなったかをはっきりと。

256 :デフォルトの名無しさん:2005/12/24(土) 17:27:53
>>254
AllowColumnReorder?
アイテムの管理が大変だけど。

257 :デフォルトの名無しさん:2005/12/24(土) 17:30:31
>>256
サンクスです!

258 :デフォルトの名無しさん:2005/12/24(土) 17:43:11
>>253
2005で付いたブラウザコンポーネントは、
フレーム超えられないみたいだから注意してね。
まぁ、ネイティブのインタフェースも実装してるから
そっち使えばいいだけだけどね。

そんじゃ、これからデートで体力限界までハッスルしてきまつ!


259 :236:2005/12/24(土) 18:00:55
すみません。説明不足でしたか・・・orz  Form1にwebBrowse1を貼り付けて以下のように記入しました。

private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("http://login.yahoo.co.jp/config/login?.src=www&.done=http://www.yahoo.co.jp");
}

private void webBrowser1_DocumentCompleted(object sender, WebBrowserNavigatedEventArgs e)
{
HtmlDocument doc = this.webBrowser1.Document;
doc.All.Item("login",0).value = "名前";  //axwebBrowserの例からこれでいけると思ったがダメ。itemの定義がないとエラー
}
この後SetAttributeを使ったり、書き方を変えてみたりしたが全滅でした。
現在もググってますが良い例が見つかっていません。

260 :デフォルトの名無しさん:2005/12/24(土) 18:05:20
<input type=text size=23 id=txbx name="login">

261 :デフォルトの名無しさん:2005/12/24(土) 18:15:35
HtmlDocumentにSetAttributeなんてないが。
つかVS2005使ってないの?

まずHtmlDocument.Allを調べる。するとHtmlElementCollection型のインスタンスが返ってくると言うことが分かる。
HtmlElementCollectionのItemプロパティを調べる。
で、ここでC#の一般常識:Itemって名前の"引数をとるプロパティ"は、普通C#ではインデクサで表現する。
インデクサの使い方を調べる。
改めてHtmlElementCollection.Itemプロパティを見てみる。

と言う風に順番に解決してけ。

262 :236:2005/12/24(土) 18:51:09
>>261
VS2005使ってますがhelpでクリックして辿ってる内に変なところにたどり着いていたようです。
半ばヤケになっていろいろ試していました。もう一度最初から調べてみます。
ありがとうございました。

263 :デフォルトの名無しさん:2005/12/24(土) 21:05:13
ライブラリモジュールに
namespace Lib{
class ClassA{
}
}
というのがあるんだが、ほかのプロジェクトで使うときLib.ClassAじゃあかんのですか?
リファレンス参照追加しても見つけてくれない・・・orz

264 :デフォルトの名無しさん:2005/12/24(土) 21:09:10
Libプロジェクトを追加したの? ならLibはビルドしてる?

265 :デフォルトの名無しさん:2005/12/24(土) 21:14:45
class は internal class じゃけえの
public class にせいや

266 :デフォルトの名無しさん:2005/12/24(土) 21:18:52
レスありがとうございます。
ビルドはしてます。
現状:
ライブラリプロジェクトを同じソリューションに追加。
ライブラリのDLLは作成されている。
リフレクターで見ると対象のクラスなどは存在する。
ライブラリを参照したいプロジェクトにはDLLは存在しない←これがおかしい?

267 :263:2005/12/24(土) 22:24:47
DLLをソリューションに直接追加したらコンパイル通りました。
でもライブラリいじっても古いDLLのままなので手動でコピーしないといけないですね。

268 :デフォルトの名無しさん:2005/12/24(土) 23:44:49
ほかの掲示板にも書き込んで見ます。
理由わかったら結果報告します。

269 :デフォルトの名無しさん:2005/12/24(土) 23:53:44
クロスポストなら許そう

270 :デフォルトの名無しさん:2005/12/25(日) 01:12:30
文字列通信を行うコンポーネントが読み込んだ文字列を string で返してくるのですが、
文字列の文字コードは UTF-8, UTF-16, ASCII, SHIFT-JIS, EUC-JP などさまざまです。

そこで、文字コードと string の関係がすごく気になります。
EUC-JP とか SHIFT-JIS の文字列を string に代入したら、内容は破壊されるんでしょうか。

もし破壊されないのなら、string で渡された文字列を byte[] に変換して、
それから正しい文字コードを指定して表示するなり変換するなりできますが、
場合によって破壊されてしまうのなら、そもそもそのコンポーネントの仕様に
問題があることになるので…。


271 :デフォルトの名無しさん:2005/12/25(日) 01:18:48
stringはstringだ。CLIでの内部表現はUTF16だな。
内容が破壊とか意味不明。
EUC-JPなりShift_jisなりで表現されるのは所詮バイト列。stringとは関係無い。

272 :デフォルトの名無しさん:2005/12/25(日) 01:34:18
要は、
・そのコンポーネントは文字列を string として返してくる。
・しかし、その内容は UTF-8, Shift_JIS, EUC-JP などさまざま。
という点が問題なのです。

おっしゃるとおり string の内部表現は UTC-16 です。

しかし、実際にコンポーネントが EUC-JP の文字列を string に
入れて返してきたものを、そのまま UTF-16 のつもりで表示すると、
化け化けでまったく表示できないんです。

ですので。

コンポーネントが string に入れてきた文字列は、 UTF-16 のように
みせているが byte[] としてとりだすと元のエンコーディングの
文字列のバイト列のままで、バイト列から正しいエンコーディングに
変換することができるのか。

それとも、そもそも string に入れて返されてきた(もともと UTF で
はない EUC-JP などだった)文字列は、UTF-16 と思って表示すると
化け化けなことから、既に破壊されていて、そこから変換して正しい
文字列を EUC-JP なり UTF-8 なりとして取り出すなんてことは、
不可能なのか。

そのどちらなのかが、わからないのです。


273 :デフォルトの名無しさん:2005/12/25(日) 01:39:54
書き込んでからしばらく考えて思ったのですが、この場合、
コンポーネント内部の処理の時点で既におかしくなっている
気がしてきました。

string で値を渡してくるわけだから、string として表示
なりなんなりしたときに化ける時点で値をセットした側の
処理に問題がある気がします。


274 :デフォルトの名無しさん:2005/12/25(日) 01:56:10
○○の考え休むに似たり。
普通にデコードためしてみりゃ良かろうに

275 :デフォルトの名無しさん:2005/12/25(日) 02:00:13
>>272
勿論stringはstringなのだから、stringで返してきた文字列が化けているのならそれはコンポーネントのデコードミスだ。
コンポーネントがバイト列からstringに変換するときに正しいエンコーディングを使わなかったんだろう

> 化け化けなことから、既に破壊されていて、そこから変換して正しい
> 文字列を EUC-JP なり UTF-8 なりとして取り出すなんてことは、
> 不可能なのか。

例えば「あいうえお」という文字列をUTF-8で表現すると
E3 81 82 E3 81 84 E3 81 86 E3 81 88 E3 81 8A
ってバイトの列になる。
これをShift_jisでデコードするとまあ当然化けるわけだが、
その化けた文字列を再びShift_jisとしてバイト列にしてみると、
E3 81 82 E3 81 84 E3 81 81 45 81 88 E3 81 81 45
って感じになる。
何故かと言うと、途中変換できない文字は?または・に強制的に変更してしまうから。
だから>>272が言う「既に破壊」はある意味では正しい。

276 :デフォルトの名無しさん:2005/12/25(日) 02:01:38
あーなるほど。
実際に byte[] に変換して元データのエンコーディングを使って
再度 string にして確かめてみろということですね。
やってみます。ありがとう。


277 :デフォルトの名無しさん:2005/12/25(日) 02:06:56
お舞らC#のパーサー(コンパイルまでしなくていいから、継承関係とかどこでどのメソッドが使われてるかがわかるレベル)作るとしたらどのぐらい時間かかると思います?
なんかかなりまんどくせそうなんだが。

278 :デフォルトの名無しさん:2005/12/25(日) 02:13:36
継承関係を調べるだけならリフレクションでやればすむだけじゃん
呼び出し関係を調べたいならコンパイルしてからILを読めばいいだけだし

279 :デフォルトの名無しさん:2005/12/25(日) 02:17:59
プログラム中で使うんだよ。VSのエディタみたいなもんだと思ってくれ。

280 :デフォルトの名無しさん:2005/12/25(日) 02:30:25
>>269
それはただのスレ違いレスとどう違うんだ?

281 :デフォルトの名無しさん:2005/12/25(日) 02:32:25
>>277
かなり。
とりあえずC#の言語仕様を精査するところから開始。


気が遠くなるだろ?

282 :デフォルトの名無しさん:2005/12/25(日) 02:37:23
>>277
どこで使われてるか調べるならObsolete付けてビルドするのが手っ取り早いと思う。

283 :デフォルトの名無しさん:2005/12/25(日) 02:39:33
>>278=282かわからないけど、そういう話じゃないから。

284 :デフォルトの名無しさん:2005/12/25(日) 02:42:55
.NETで作るんならCodeDOMはどうよ?

285 :デフォルトの名無しさん:2005/12/25(日) 02:47:12
>>284
よく調べてないんだけど、実質パーサー何もなくない?

286 :デフォルトの名無しさん:2005/12/25(日) 02:56:24
http://sourceforge.net/projects/cscodedomparser/

287 :デフォルトの名無しさん:2005/12/25(日) 02:59:13
>>277
まぁ、System.CodeDom名前空間のクラス郡か、ANTLRでも持ってくるかって感じだな。

288 :デフォルトの名無しさん:2005/12/25(日) 03:21:12
>>276
System.Text.Encoding

289 :デフォルトの名無しさん:2005/12/25(日) 09:38:26
>>263
DLLの直接参照をやめて、プロジェクト参照にしたら動きました・・・
デモなんかそれができなかったりしたんだよな・・・

290 :236:2005/12/25(日) 16:16:56
>>261
丸三日掛かりましたがようやく出来ました。
ありがとうございました。

291 :デフォルトの名無しさん:2005/12/25(日) 16:52:47
テキストファイルから文字を読み込んでlistBoxに表示
させる時に、スペースやカンマだけは読み込まないように
したいのですがどうすればいいのでしょうか?
誰か助けて!

292 :デフォルトの名無しさん:2005/12/25(日) 16:58:55
読み込まないって意味をどう理解するのかが難しいな。
とりあえずReplaceで取り除くという簡単な手段を提示。

293 :デフォルトの名無しさん:2005/12/25(日) 17:11:15
C#でツールバーって作れますか?
エクスプローラでファイルの操作とかしたいんですが、できますかね?
具体的にはどうやったらいいんでしょう

294 :デフォルトの名無しさん:2005/12/25(日) 17:19:20
BancObjectでも使え。

295 :デフォルトの名無しさん:2005/12/25(日) 18:04:49
http://www.google.com/search?num=100&as_qdr=all&as_occt=any&as_dt=i&lr=lang_ja&as_q=C%23+tips

296 :デフォルトの名無しさん:2005/12/25(日) 20:23:30
DNSのMXレコード引く方法は用意されてるの?

297 :デフォルトの名無しさん:2005/12/25(日) 20:34:05
Socket使うことになるな

298 :デフォルトの名無しさん:2005/12/25(日) 20:37:01
>>297
生で出し入れするのか…。
ありがとう。RFC文書探してみるよ。

299 :デフォルトの名無しさん:2005/12/25(日) 20:41:53
勉強したいってんなら別だが、CodeProject辺り調べたらあるんじゃね?

300 :デフォルトの名無しさん:2005/12/25(日) 20:42:02
何が面倒って、プロトコルの規格を調べることだよな・・・
Socket使って生からで作る事自体は大した手間ではなかったり



301 :デフォルトの名無しさん:2005/12/25(日) 21:01:54
HttpWebRequest.Connection プロパティってどうやって設定するの?
ヘルプには「Connection HTTP ヘッダーの値を取得または設定します。 」って書いてあるけど、
ヘルプのサンプルを動かしたら、
HttpWebRequest myHttpWebRequest2 =
(HttpWebRequest)WebRequest.Create("http://www.contoso.com");
myHttpWebRequest2.Connection = "Close";    ←ここでエラーが起こる。

このプロパティを使用して、Keep-Alive および Close を設定することはできません。
パラメータ名: value
なんてエラーが出やがった。




302 :デフォルトの名無しさん:2005/12/25(日) 21:09:24
KeepAliveのプロパティで良いんじゃね

303 :デフォルトの名無しさん:2005/12/25(日) 21:11:57
>>298
生で出し入れだと!

304 :デフォルトの名無しさん:2005/12/25(日) 21:13:03
KeepAlive = false;
ってすればいいだけなのか。サンクス。

305 :デフォルトの名無しさん:2005/12/25(日) 23:54:15
>>303
53番のネェちゃんがアナ開けて待ってるから
そこにナマで出し入れしてネタを聞き出すんだよ。

306 :デフォルトの名無しさん:2005/12/26(月) 00:24:55
下品なネタよそうよ。
今年は2日で計8戦して、摩擦しすぎで腫れちゃって
風呂入っても凍みるんだから。
くだらない妄想なんてやめて、
世界がどうやったら平和になるか考えようよ。

307 :デフォルトの名無しさん:2005/12/26(月) 00:55:29
>>306
人類が滅べば平和

308 :デフォルトの名無しさん:2005/12/26(月) 01:33:52
順子4組+頭をそろえると平和

309 :デフォルトの名無しさん:2005/12/26(月) 01:34:08
所詮この世は弱肉強食なんだよ
俺は真っ先に死にそうだがorz


310 :デフォルトの名無しさん:2005/12/26(月) 03:28:26
>>308
最後が頭だとダメだろ

311 :デフォルトの名無しさん:2005/12/26(月) 18:36:44
IList<T> のソートってどうやればいいんでしょう?
List<T>ならList<T>.Sortメソッドがあるし配列ならArray.Sortメソッドがあるんですが
そのどちらかわからない場合はどうすれば・・・

312 :デフォルトの名無しさん:2005/12/26(月) 18:37:40
インタフェースの明示的実装

313 :311:2005/12/26(月) 19:10:20
>>312
インターフェースってIList<T>のことですか?
ドキュメントによるとIList<T>にソートをするメソッドはないみたいです。


314 :デフォルトの名無しさん:2005/12/26(月) 19:14:14
頑張ってSort<T>(IList<T>)とかSort<T>(IList<T>, IComparer<T>)とか自前で書くこったな。

315 :311:2005/12/26(月) 19:34:20
>>314
ほんとにそれしかないんですか・・・
なんか釈然としないですがとにかくやってみます。
どうもありがとうございました。


316 :デフォルトの名無しさん:2005/12/26(月) 20:28:21
KeyEventについて質問させてください。

KeyEventArgsで
KeyCodeとKeyDataってどう違うんですか?

ただコンボボックスでEnterが押されたらコマンドを実行するようにしたいだけなんですが

317 :デフォルトの名無しさん:2005/12/26(月) 20:53:14
KeyDataの解説に書いてるだろ。

318 :デフォルトの名無しさん:2005/12/26(月) 23:18:03
前スレを読んだんですが、.NETでは(Win32APIを呼ばない限り)
caretを直接扱えないってことでしょうか。

ドローソフトみたいに画面上の任意の位置に文字を入力できるようなのを
作りたいのですが……。


319 :デフォルトの名無しさん:2005/12/26(月) 23:23:33
枠なしTextBox使うとかどうよ。

320 :デフォルトの名無しさん:2005/12/26(月) 23:25:46
.NET は Win32API ありきだから

321 :デフォルトの名無しさん:2005/12/27(火) 00:43:25
sgenってDLL中の特定の複数の型に対して使うのはむりぽ?
/t Hogeって単体は指定できるのですが・・

322 :デフォルトの名無しさん:2005/12/27(火) 00:44:58
デフォルトだと全部にならないっけ?
sgenの情報が少ないな

323 :311:2005/12/27(火) 05:44:32
もう一度よく調べてみたら、
ArrayList.AdapterメソッドがIListをArrayListに変換するのに使えるようです。
内容のコピーはしないらしいのでIListのコピーに使えそうです。


324 :311:2005/12/27(火) 05:45:17
× IListのコピー
○ IListのソート

325 :デフォルトの名無しさん:2005/12/27(火) 10:05:28
IList<T>はIListを実装しないけどな。

326 :311:2005/12/27(火) 12:19:29
>>325
そうでした・・・
List<T> と配列が両方 IList を継承していたからうまくいっただけでした。
IList<T> をソートする方法は依然として不明のままです。


327 :デフォルトの名無しさん:2005/12/27(火) 14:35:34
IList<T>ってインターフェースだよね。
一体何を悩んでいるのか読めない。

328 :311:2005/12/27(火) 16:15:10
あ、自分の場合は List<T> と配列を共通の方法でソートしたかっただけなので
>>323 の方法で問題ないです。すみません。
ただ IList<T> を実装したコレクションを共通の方法でソートする場合はどうするのかなあと思っただけです。


329 :デフォルトの名無しさん:2005/12/28(水) 00:07:51
いくつかの動画を同時に再生しようと思っているのですが
MediaPlayerをウィンドウに配置してMDIとして再生するのと
DirectShowを使ってウィンドウに直接描画し、MDIアプリとして再生するのでは
どちらの方が処理が軽くなるでしょうか?
再生する動画の数は1〜4つを想定しています。

また、DirectShowを使う場合はマルチスレッドにする必要がありますか?

330 :デフォルトの名無しさん:2005/12/28(水) 00:31:18
そんぐらいは自分で試せ。

331 :デフォルトの名無しさん:2005/12/28(水) 00:42:17
>>330
わかりました。

332 :327:2005/12/28(水) 03:46:08
>>328
http://www.atmarkit.co.jp/fdotnet/dotnettips/218classsort/classsort.html
要するにこういう事かな。
IList<T>の実装でやるなら、ソート部分は自作するしかないキガス。


333 :デフォルトの名無しさん:2005/12/28(水) 14:01:12
IEquatableだったかを指定して、コレクションから検索するようなメソッドて
どっかにない?
別にIComparerとかその他でもいいんだけど。…


334 :デフォルトの名無しさん:2005/12/28(水) 14:06:01
例えばList<T>にはFindメソッドがあるが。
IEquatable<T>.EqualsをPredicate<T>にできるし。

335 :デフォルトの名無しさん:2005/12/28(水) 16:05:20
ありがとん
でも、ICollectionでできるのがないかなって
コレクションて書いたのが悪かった。
ところでIListにはFindなくない?


336 :デフォルトの名無しさん:2005/12/28(水) 16:06:23
ごめん、Listて書いてあった…


337 :デフォルトの名無しさん:2005/12/28(水) 16:19:27
List<T>.Findの実装は簡単なもんだから(forループでPredicate<T>をそれぞれ実行してるだけ)、
自前でメソッドを実装すれ。
ICollectionならforeachと、型不定だから独自のデリゲートかIComparerかなにか使うことになるな。

338 :デフォルトの名無しさん:2005/12/28(水) 16:51:02
自作しました。
まあ作ることはたいしたことないんたけど
標準的なのがあるならそれにしたかったわけです。


339 :デフォルトの名無しさん:2005/12/28(水) 17:01:02
C#2005でWebBrowserで開いているページのリンクで
右クリックしたときだけ特定のContextMenuを表示したいのですが
マウスポインタがリンクの上にあるか判別するにはどうすればいいでしょうか?

WebBrowserのContextMenuStripにContextMenuを設定して
ContextMenuのOpeningイベントに実装しようと思っているので
リンク上ではなかったときにContextMenuを開かないようにすることも
教えていただければ幸いです。

340 :デフォルトの名無しさん:2005/12/28(水) 17:39:19
HtmlDocument.ContextMenuShowing
どれで右クリックされたかはHtmlDocument.ActiveElement辺りかね。
//HtmlElementEventArgsにSrcElementがないのは何でだ。
多分明示的にContextMenuStrip.Showを呼び出さなきゃなんないけど。

341 :デフォルトの名無しさん:2005/12/28(水) 18:17:14
>>340
いろいろいじってたところ WebBrowser.StatesText なるものを発見して
リンクの上にマウスポインタが載るとそこにアドレスが格納されるように
なってたのでContextMenuのOpeningイベントで想定したアドレス以外だと
e.Cancel = true; で開かないようにできました。
(WebBrowserコントロールがIEとほとんど同じ仕様だからできたようなものですが・・・)

MSDNのHtmlDocumetを見てましたがこれを使えば色々なことができそうですね・・・
(ActiveLinkColorとかは使うのか・・・?)

342 :デフォルトの名無しさん:2005/12/29(木) 08:28:55
HtmlDocumetでラジオボタンがクリックできないのですが良い手ないですか?
現在OuterHtml使ってますがもっとスマートな方法があるとおもうのですが。

343 :デフォルトの名無しさん:2005/12/29(木) 10:37:32
できるし。
どうしてクリックできないと結論付けたんだ。

344 :342:2005/12/29(木) 11:16:41
>>343
今こんなふうにしかやる方法が思いつかないのですが他にあります?
Doc.All["gender"].OuterHtml = @"<input type=""radio"" name=""gender"" value=""1"" checked>";

345 :デフォルトの名無しさん:2005/12/29(木) 11:23:08
SetAttributeでもInvokeMemberでも。

346 :342:2005/12/29(木) 15:23:54
>>345
あ、InvokeMemberってclick使うのか。checkだと思っていましたw
ありがとうございます。

347 :デフォルトの名無しさん:2005/12/29(木) 15:41:22
System.Windows.Forms.TabControlって、どうしてリサイズするときにあんなにチラつくんでしょうか・・・

348 :デフォルトの名無しさん:2005/12/29(木) 21:13:29
ウィンドウにTabControlを貼り付けたのですが
ウィンドウの大きさにタブコントロールの大きさを合わせるには
どうしたら良いですか?
AutoSizeみたいなプロパティはないようなので・・・

349 :デフォルトの名無しさん:2005/12/29(木) 21:15:25
Dockプロパティでも使えば。

350 :デフォルトの名無しさん:2005/12/29(木) 21:15:43
Dock プロパティを Fill に

351 :デフォルトの名無しさん:2005/12/30(金) 00:01:45
そして>>347に戻る

352 :デフォルトの名無しさん:2005/12/30(金) 00:59:16
何度も言うが、Windows Formsは腐ってる

353 :デフォルトの名無しさん:2005/12/30(金) 01:08:18
カコイイボタンとかコンポーネント探してます

どこかオススメありましたら教えてくだされ
できればC#^^;



354 :デフォルトの名無しさん:2005/12/30(金) 01:31:24
タスクトレイのアイコンをダブルクリックでFormをアクティブにしたい(他のアプリなどが存在しても上に表示したい)
のですが
うまくいきません。

NotifyIconのダブルクリックイベントでform.BringToFrontをしても 上に行かないし
.Netは別のプロセスのFormをいじれないからダメかなと思い
Win32APIのShowWindow,SetForegroundWindowを使用すると上にはなるのですが
アプリ@.NETを最大化してから最小化し、タスクトレイをダブルクリックして復元しようとしても
通常状態のウィンドウで復元されてしまいます(最大化した状態で上にきてほしい)

[DllImport("USER32.DLL", CharSet = CharSet.Auto)]
private static extern int ShowWindow(IntPtr hWnd, int nCmdShow);

[DllImport("USER32.DLL", CharSet = CharSet.Auto)]
private static extern bool SetForegroundWindow( IntPtr hWnd);

//処理
ShowWindow(form.Handle, SW_RESTORE);//SW_RESTORE=9
SetForegroundWindow(form.Handle);
そもそもWin32APIを使わないで何とかしたいのですが・・
何か良い方法はありませんでしょうか?

355 :デフォルトの名無しさん:2005/12/30(金) 01:41:46
>>354
> アプリ@.NETを最大化してから最小化し、タスクトレイをダブルクリックして復元しようとしても
> 通常状態のウィンドウで復元されてしまいます(最大化した状態で上にきてほしい)

Minimizeした時点でMaximizeかどうかの情報が欠落するから。
Layoutイベント辺りでWindowStateを保存しとけば良いだろう。

> そもそもWin32APIを使わないで何とかしたいのですが・・
> 何か良い方法はありませんでしょうか?

無理。

356 :デフォルトの名無しさん:2005/12/30(金) 05:30:03
やっぱ、MS製品はバージョン3にならないとダメなのね。

357 :デフォルトの名無しさん:2005/12/30(金) 07:42:42
C#にインラインアセンブラを搭載します。

358 :デフォルトの名無しさん:2005/12/30(金) 17:57:29
TextBoxのAutoCompleteCustomSourceで問題があるんですが・・・心当たりある方いますか?
TextBox.TextChangedイベントでTextBox.AutoCompleteCustomSource.Clear() を呼んで
その後別の候補をセットすると候補が表示されないか、例外が発生して落ちる場合があります。
普通に候補が表示される場合もあります。
TextBox.AutoCompleteCustomSource.Clear() を除去するとちゃんと候補が表示されます。
TextBoxはダイアログボックスの子としてデザイナで作ってます。
以下は例外の詳細です。

System.AccessViolationException : 保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。
スタックトレース:
  場所 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
  場所 System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
  場所 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
  場所 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
  場所 System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
  場所 System.Windows.Forms.Form.ShowDialog()
   :


359 :デフォルトの名無しさん:2005/12/30(金) 18:07:23
.net2で走らせるとき、

.net1で書いた非ジェネリックなStackと
.net2で書いたジェネリックなStackだと
実行速度に差は出ますか?

360 :デフォルトの名無しさん:2005/12/30(金) 18:09:37
>>359
スタックの中身が構造体の場合は速度の向上が存分にあるらしい

361 :デフォルトの名無しさん:2005/12/30(金) 19:24:52
> .net1で書いた非ジェネリックなStack
> .net1で書いた

この解釈はどうすれば

362 :デフォルトの名無しさん:2005/12/30(金) 21:16:30
>>358
フレームワークのバグっぽいねぇ。
Clearする代わりに、

新しくAutoCompleteStringCollectionを作成>
それに対してアイテム追加>
それをAutoCompleteCustomSourceに代入>
protectedであるRecreateHandleメソッドを呼び出し

でとりあえず回避できそう。
しかしまあTextChangedでAutoCompleteCustomSourceをいじるなんてトリッキーなことしないのが自然な気がする。

363 :358:2005/12/31(土) 00:03:26
>>362
レスどうもありがとうございます。
落ちる確率はぐっと減ったのですが、まだごく稀に落ちるようです。
階層的な構造をもつ文字列を入力させるのに便利かなと思ったんですが・・・
バグが直るまでとりあえずあきらめようと思います。


364 :デフォルトの名無しさん:2005/12/31(土) 00:50:28
>>359
試せばいいのに

365 :デフォルトの名無しさん:2005/12/31(土) 00:59:21
>>363
直ってほしいのなら、ただ待ってるだけじゃなくてMSに報告しろよー。

366 :354:2005/12/31(土) 08:18:11
>>355
無理ですか。 レスありがとうございました。

367 :デフォルトの名無しさん:2005/12/31(土) 15:14:19
結局、C#で中国と戦えるのかと。そういうことですよ。結論は。
日本国内の不正アクセスの95%が中国ハッカー団。
残りの5%が韓国。
これ常識。

368 :デフォルトの名無しさん:2005/12/31(土) 15:15:28
はいはい、ハッカーじゃなくてクラッカーですよ。

369 :デフォルトの名無しさん:2005/12/31(土) 15:18:36
>>367
おまいは中国と戦争をしようというのか!!!

370 :デフォルトの名無しさん:2005/12/31(土) 15:45:11
IT戦争のことですよ。
中国には人民のインターネット通信を管理する公の組織があります。
そいつらは日本にスパイウェアやらウイルスやら攻撃を仕掛けてきているんですよ。

371 :デフォルトの名無しさん:2005/12/31(土) 16:01:03
>>370
ttp://live22x.2ch.net/test/read.cgi/livejupiter/1135999239/
こうしている今も攻撃を受けているわけか。

372 :デフォルトの名無しさん:2005/12/31(土) 16:33:20
>>370
日本語に慣れてないのか?省略して悪かったな。

おまいは中国とIT戦争をしようというのか!!!

373 :デフォルトの名無しさん:2005/12/31(土) 16:47:12
>>372
そうでしたか。こちらこそ誤解してすみません。
戦争しなくてもやつらは仕掛けてくるのです。

374 :デフォルトの名無しさん:2005/12/31(土) 17:10:57
これのことか?
--------------------- SSHD Begin ------------------------
Failed logins from these:
211.121.160.90 (211.121.160.90) : 128 Time(s)

375 :デフォルトの名無しさん:2005/12/31(土) 17:11:58
こっちのほうがよかったか…
210.118.170.41 (210.118.170.41) : 863 Time(s)


376 :デフォルトの名無しさん:2005/12/31(土) 17:17:45
Windows Form でアプリを作ってますが、フォーム上のテキストボックスとプロパティを
DataBinding.Add しても、双方向連結が出来ていないようで困っとります。

テキストボックスとオブジェクトのプロパティを連結しても、テキストボックスの値を変えて
フォーカスが外れた瞬間、値が元に戻ってしまいます。

前は問題なかったのにどうしてでしょう?

377 :デフォルトの名無しさん:2005/12/31(土) 17:52:16
>>376
すまそ。俺のミス。これで帰れる。

378 :デフォルトの名無しさん:2005/12/31(土) 19:27:07
ネイティブの吐ける自分専用のインタプリタを作りました。
これをC#と同期させれば、ほとんど何でも出来てしまいます。
なんていうか負ける気がしない?
なんか今年の千葉ロッテみたいな、そんな気分です。
そんなわけで、どうやら中国との決戦も近いようです。
みなさん、強力お願いします。OTL

379 :デフォルトの名無しさん:2005/12/31(土) 19:32:25
がんばってね

380 :デフォルトの名無しさん:2005/12/31(土) 19:50:29
がんばれよ中国
とくにマイナーな山口県とか、ここポイントだから。

381 :デフォルトの名無しさん:2005/12/31(土) 20:10:07
>>378
>ネイティブの吐ける自分専用のインタプリタを作りました。

おじさんには時代の進歩について行けない。
最近はこういうの普通なの?

382 :デフォルトの名無しさん:2005/12/31(土) 20:57:34
>>381
普通だよ。
ネタとしてはだが。

383 :デフォルトの名無しさん:2005/12/31(土) 22:57:23
C#使ったら2chに自動書込みツールとか簡単に作れますか?

384 :デフォルトの名無しさん:2005/12/31(土) 23:05:13
専ブラを作るよりか楽チンでしょ

385 :デフォルトの名無しさん:2006/01/01(日) 01:36:40
>>383
すっげぇ簡単。
2.0からはライブラリにzlib対応ストリーム入ってるっぽいし。

386 :デフォルトの名無しさん:2006/01/01(日) 01:39:47
一番早く作れるのは WebBrowser で書き込ませることじゃね?
人大杉だと使えないけど

387 :デフォルトの名無しさん:2006/01/01(日) 01:48:28
簡単に作れるんだったら荒らしとかに悪用されるんじゃないの?

388 :デフォルトの名無しさん:2006/01/01(日) 02:25:06
>>387
だからなに

389 :デフォルトの名無しさん:2006/01/01(日) 02:31:54
書き込むだけなら簡単。
規制されないようにあちこちから書き込むのはちょっと面倒。
人に書き込ませるゾンビ系はかなり面倒。

でも結局はプログラムの技術ではなくて、
ネットワークそのものの知識とかの方が重要。C#かどうかは関係ない。

390 :デフォルトの名無しさん:2006/01/01(日) 02:35:42
質問なんだけど、PCにあるネットワークインターフェースを指定して
通信することは可能なのかな?

条件によって通信を行うNICを切り替えたいのだけど。

391 :デフォルトの名無しさん:2006/01/01(日) 17:16:24
C#のネットワークインタフェースは知らないが、一般的にいって、
発アドレスはbindするときに指定できるが、どのNICを使うかなんて
ルーティングが決めることであってプログラマが指定しても意味ないぞ。


392 :デフォルトの名無しさん:2006/01/02(月) 00:31:09
ToolTipをownerdraw かつ IsBalloonって出来ないんですかね。
バルーンのなかにシステムアイコン以外のアイコンを表示したいんですが


393 :デフォルトの名無しさん:2006/01/02(月) 03:34:16
ジェネリクスの型引数から条件分岐をさせることはできませんか。


394 :デフォルトの名無しさん:2006/01/02(月) 03:40:50
ジェネリクスの意味が失われそうだな、
if (typeof(T).Equals(typeof(string))) {...}
とか。

395 :デフォルトの名無しさん:2006/01/02(月) 11:20:42
まずC#を極める。
それからCをやる。
まずはそれから。
チャイナとの戦争は少数精鋭でいく!

396 :デフォルトの名無しさん:2006/01/02(月) 11:30:57
超どうでも良い発見。

public struct Hoge {
   public int Value;
   public void Add(int value) { this.Value += value; }
   public Hoge(int value) { this.Value = value; }
   public override string ToString() { return this.Value.ToString(); }

   public static void Main() {
      //ボクシング。
      object obj = new Hoge(3);
      //(Hoge)objの時点で値のコピーになるので、
      ((Hoge)obj).Add(4);
      //objには影響が無い。
      Console.WriteLine(obj);
      //リフレクションでobjのメソッドを直接呼ぶと、
      typeof(Hoge).InvokeMember("Add", BindingFlags.InvokeMethod, null, obj, new object[] {4});
      //値のコピーが発生しないのでobjに影響する。
      Console.WriteLine(obj);
   }
}

397 :デフォルトの名無しさん:2006/01/02(月) 11:47:49
そういうキャストがコピーになるネタ、別のところで別の言語についても
読んだ記憶があるんだが、なんだったかなあ。

398 :デフォルトの名無しさん:2006/01/02(月) 13:05:31
VBAいらないからC#を搭載しなさいといいたい。

399 :デフォルトの名無しさん:2006/01/02(月) 13:13:11
C#を普及させるためにC#専用の擬似インラインアセンブラを開発しました。
私はこれを「AssenblerForC#」と命名しました。
それはC言語で書かれています。
また構文はまんまCASLです。

400 :デフォルトの名無しさん:2006/01/02(月) 13:29:43
フォームのテキストボックスとあるオブジェクトのプロパティを DataBinding.Add でバインドしたのですが、
オブジェクトのプロパティを変更すると、テキストボックスに値が更新されません。

DataBinding.Clear してから Add すれば更新されます。
テキストボックスの値を変更すれば、オブジェクトのプロパティの値は変わります。

どうすればプロパティの値を変更したときにフォームの値も変更できるのでしょうか?
よろしくお願いいたします。

401 :デフォルトの名無しさん:2006/01/02(月) 14:02:03
CurrencyManager の Refresh

402 :デフォルトの名無しさん:2006/01/02(月) 18:22:12
>>401
どもども。
でも DataBinding してるのが ILIST を実装していないオブジェクトのプロパティなので
CurrencyManager ではなく PropertyManager が返ってくる。
PropertyManager には Refresh が実装されていない。

どうすれば??

403 :デフォルトの名無しさん:2006/01/02(月) 18:50:36
>>396
C#って、"->"演算子使えるんだっけ?

404 :デフォルトの名無しさん:2006/01/02(月) 18:55:46
unsafe内でなら使えるが、参照とポインタは別物だぞ。

405 :デフォルトの名無しさん:2006/01/02(月) 21:52:01
>>400
DataBindingsは単純データ連結だからそんなもんだ。
「あるオブジェクト」にHogeChangedイベントでも実装させて、
そのイベントでテキストボックスの値を直接書き換えるとか。

406 :デフォルトの名無しさん:2006/01/02(月) 23:59:07
>>405
なるほど。単純だとそうなのですね。
DataGrid だかをつかってデータベースと連携するときなどは便利そうですね。

ご指摘の方法で実装します。
ありがとうございました。

407 :デフォルトの名無しさん:2006/01/03(火) 00:20:17
.NET 2.0 の SslStream を証明書無しで使いたいんだが、やり方わかる椰子いる?
漏れのやり方じゃ、証明書作成しないとダメっぽ。。。orz

408 :デフォルトの名無しさん:2006/01/03(火) 00:40:55
C#でHTMLの内容取得をやりたいのですが、どうするのが正道でしょうか?
できるかどうかは分かりませんが現在次の方法を考えています。
 1.HTMLDocumentからタグで辿って取得。
 2.XMLに変換して構造的に取得。
 3.Streamで取得して強引に検索する。

409 :デフォルトの名無しさん:2006/01/03(火) 00:43:38
ある程度しっかりしたHTMLなら3.
どんなHTMLがくるか未知数なら1.
well-formedなXHTMLしか来ないことが分かってるときだけ2.

410 :デフォルトの名無しさん:2006/01/03(火) 09:08:17
>>396
値型のインスタンスってnew した時点ではどっちもHeapに取られるんだっけ?
で、値型のキャストはスタックにコピーを作る?
なんかこのへんの理解についてあやふやなんだよなあ、あってる?
Reflection 経由で呼ぶとHeap 上のフィールドを直接編集できるって理解で
OKでしょうか?

411 :408:2006/01/03(火) 12:24:11
>>409
レスありがとです。
参考になりました。

412 :デフォルトの名無しさん:2006/01/03(火) 13:04:36
>>410
メソッド内でnewしたらスタックに、メンバとしてnewしたらヒープにとられる(配列要素なんかもヒープ)。
//ちなみに参照型はメソッド内でnewしたら「参照が」スタックに、インスタンスがヒープにとられる。
ボクシングした場合、値がヒープにコピーされて、その参照(object型)がスタックにとられる(ローカルなら)。
アンボクシングでは、ヒープに入ってる値がスタックにコピーされる。

アンボクシングしない限り値のコピーは発生しないので同一インスタンスとして扱える。
ま、そんな複雑なことを値型に要求するのが間違ってるが。

413 :プログラミング初心者:2006/01/03(火) 17:01:35
VS.NETやWORDでは、テキストをD&Dで別の場所に移動できますよね?
あの機能をリッチテキストボックスで実現したいのですが、どのようにすれば良いですか?
(ドラッグオーバーイベントとかでやってみたのですがうまくいきませんでした)
なにか参考になるようなサイトがあれば教えてください。

414 :デフォルトの名無しさん:2006/01/03(火) 17:44:38
>>412
有難うございました。

415 :デフォルトの名無しさん:2006/01/03(火) 17:54:26
MouseDown/MouseMoveで自前でDoDragDropを呼ばないと巧くいかないようだよ。
デフォルトでもドラッグ動作が動くように見えるんだが、どうにも微妙。

簡単には、
・MouseDownでマウス位置保存
・MouseMoveで、MouseDownからの移動量がSystemInformation.DragSize以上になったらDoDragDrop呼び出し。
 データ形式に独自の形式を使うと便利。
・DragDropで、自分からのドロップの場合、元々選択していた文字列を削除して、新しく張り付け。

416 :デフォルトの名無しさん:2006/01/03(火) 22:53:22
>>413
同じ所に嵌った人がいてウレシイ
でもここじゃなくふらっとあたりで聞いたほうが

enable auto... を true でどう?


417 :デフォルトの名無しさん:2006/01/04(水) 02:31:57
Win32APIのPathRelativePathToを使わずに相対パスを、得る方法が
あれば、教えてくださいm(_ _)m

418 :デフォルトの名無しさん:2006/01/04(水) 02:35:29
System.IO.Path のメンバ関数を全部見てみろ

419 :デフォルトの名無しさん:2006/01/04(水) 02:50:45
>>418
ないということですね。ありがとうございました。

420 :デフォルトの名無しさん:2006/01/04(水) 03:18:26
まあSystem.Uriクラスを使い倒せば可能なんだが。
.NET 1.0/1.1の場合はSystem.Web.HttpUtilityも必要だけど。

421 :デフォルトの名無しさん:2006/01/04(水) 03:35:35
>>417
Wankuma.IO.Path.PathAbsoluteRelativeメソッド Version1
http://blogs.wankuma.com/naka//articles/2666.aspx

422 :デフォルトの名無しさん:2006/01/04(水) 04:41:06
>>415
ありがとうございます!

423 :デフォルトの名無しさん:2006/01/04(水) 12:26:27
>>370
公でやっててあの程度ならどうでも良い。

424 :デフォルトの名無しさん:2006/01/04(水) 13:57:02
Form1_Load時にResizeイベントを発行したいのですが、Loadになにを記述すればいいんでしょか?
本当に初心者の質問なんですけどよろしくお願いします。

425 :デフォルトの名無しさん:2006/01/04(水) 13:59:04
OnResize

426 :デフォルトの名無しさん:2006/01/04(水) 14:11:16
>>425
出来ました、ありがとうございます!

427 :デフォルトの名無しさん:2006/01/05(木) 03:57:55
BOMを付けたUTF-16のファイルを作るには、自分でBOMをWriteする
しかないのでしょうか?それともそこまで面倒を見てくれるクラスがある
のでしょうか?探しましたが見つかりませんでした。ご存知でしたら教えて
ください。

428 :427:2006/01/05(木) 04:11:52
自己レスです。GetPreamble()で取得して自分でWrite()するしか
ないようです。失礼しました。

429 :デフォルトの名無しさん:2006/01/05(木) 06:38:29
System.Text.UnicodeEncoding

430 :デフォルトの名無しさん:2006/01/05(木) 22:24:44
DoDragDropよぶとすぐに抜けてしまうんだけれど何か前処理必要でしたでしょうか?
拾ってきたサンプルだとDoDragDropの次にトレースメッセージかくとドラッグが終わるまで表示されない。
自分で作ったものだとDoDragDropがすぐ抜けてきているようでマウスで引っ張ってる途中のつもりのときにすでにメッセージが表示されてしまっています。




431 :デフォルトの名無しさん:2006/01/05(木) 22:31:34
普通はドロップされるまでブロックされるが。
コード見ないと何とも言えないな。

432 :デフォルトの名無しさん:2006/01/05(木) 22:36:19
DataObject o = new DataObject(
  DataFormats.FileDrop,
  _nodeList[mindex].FullName());
Debug.WriteLine("begin DD");
DragDropEffects de=RootControl().DoDragDrop("Test", DragDropEffects.Copy);//RootControlはFormの派生オブオブジェクトを返す。
Debug.WriteLine(string.Format("end DD:{0}",de.ToString()));

こんなんです。
言われるとおりサンプルだとマウスを放すまでDoDragDropをぬけてこないんだけど、自分のコードだとすぐに抜けてきてしまいます。


433 :デフォルトの名無しさん:2006/01/05(木) 22:53:15
まあそのRootControlメソッドとやらが怪しいな。

どうでもいいが DataObject o がさびしそうだな。
あとちなみに
root
━━ v. 根づく[かせる]; 定着する[させる]; 動けなくする, 立ちすくませる.
━━ v. (ブタが)鼻で掘る ((up)); 捜す.

434 :432:2006/01/05(木) 22:57:29
public partial class RootForm : Form
{
 public RootForm()
 {
  MouseDown += new MouseEventHandler(RootForm_MouseDown);
 }
 void RootForm_MouseDown(object sender, MouseEventArgs e) {
  DoDragDrop("Test", DragDropEffects.Copy);
  Debug.WriteLine("end DD");
 }
RootControl()はこのRootFormをかえすんですが、今試しに作ったMouseDownイベントでも一緒・・・orz

435 :デフォルトの名無しさん:2006/01/06(金) 00:07:12
本当に帰ってきてるかチェックしる!

RootForm rf = RootControl();
if( rf == null )
MessageBox.show("ダメじゃん");
DragDropEffects de = rf.DoDragDrop("Test", DragDropEffects.Copy);

まあRootControlがどこのインスタンス返してるか次第ではなにも起きない可能性もあるしな。
RootFormのコンストラクタでスタティックメンバにオブジェクトつっこんどいて一致するかも
チェックしてみたら。


436 :デフォルトの名無しさん:2006/01/06(金) 06:25:41
帰ってきてます・・・
どういうときに何も起きない可能性あるんでしょ?

437 :デフォルトの名無しさん:2006/01/06(金) 09:26:28
ダイアログとして起動してないフォームとか。

438 :デフォルトの名無しさん:2006/01/06(金) 09:40:45
ちょっとほかの掲示板にも出してみました。
結果わかったら報告します。
>>437
ダイアログとして起動することがなにか関係するんですか?

439 :デフォルトの名無しさん:2006/01/06(金) 12:01:59
GDNJの書き込み見て気づいた。
MainメソッドにSTAThread属性つけてないんじゃないか?

440 :デフォルトの名無しさん:2006/01/06(金) 12:50:55
>>439
Mainにはつけてます。ただこれ暮らすライブラリの中のクラスなんだけど、暮らすライブラリのほうにはCOM関連の属性指定なんかないのかいまみてるとこです。

441 :デフォルトの名無しさん:2006/01/06(金) 13:21:52
暮らす暮らすって、そんぐらい直せよ。

442 :デフォルトの名無しさん:2006/01/06(金) 13:33:29
.NETアプリでIME変換ウインドウをいじりたいのですが、
Win32APIを使うしかないのでしょうか。

具体的には変換ウインドウの位置を変更するというのと、
背景色・フォントを変更したいと考えています。


443 :デフォルトの名無しさん:2006/01/06(金) 13:40:58
APIしかないね。
まあそもそもそんなもんいじるなと思うけど。

444 :デフォルトの名無しさん:2006/01/06(金) 14:57:03
テキストエディタ用とかじゃない?

445 :デフォルトの名無しさん:2006/01/06(金) 17:23:31
>>442
ATOK
WXG
Japanist

とかも忘れずにね!

446 :442:2006/01/06(金) 18:01:05
>>443
どうも。

>>444
ですです。

>>445
TextEditとかはコントロール側で対応してるんでしょうか。
IMとアプリの関係がよくわかってません・・・

447 :デフォルトの名無しさん:2006/01/06(金) 18:16:10
VS.netでTabPageを継承したクラスを作ろうとしています。
具体的にはページ上に複数のコントロールを配置して、それをTabCotrolに登録して使う予定です。

複数のコントロールを並べるのはデザイナでやりたいのですが、
public class UserControl1 : System.Windows.Forms.TabPage;
とするとデザイナでコントロールを並べられなくなります。

どうすればいいでしょうか?

448 :447:2006/01/06(金) 18:16:46
訂正
public class UserControl1 : System.Windows.Forms.TabPage
の最後の;は誤植です。

449 :デフォルトの名無しさん:2006/01/07(土) 00:14:33
C#っていうかオブジェクト指向的なことになるんですが
staticにするべき関数の定義について教えてください。

ちなみにWebアプリで考えるとしてです。
例えばメール送信クラスを作ったとして、これはstaticにすべきでしょうか?しないほうがいいでしょうか?
Webアプリなので、この関数自体は同時に呼び出される可能性はあります。

こういうのに限らず、一体どういったクラス内のメソッドをstaticにしていいかよくわかりません。
なにか基準があるんでしょうか?
どこかでユーティリティっぽいのはstaticでつくっとけ
みたいに書いていたんですが、その線引きもいまいちわからず。

何か明確な定義はあるでしょうか?

元々ASP(非.net)をしていて、最近.net(C#)にしたので
オブジェクト指向というのがまだあまりよくわかっていないもので。
ASpなら関数なのでstaticもなにもないんですが・・・


450 :デフォルトの名無しさん:2006/01/07(土) 00:34:59
>>449
メンバ変数をわないならstaticとか

451 :デフォルトの名無しさん:2006/01/07(土) 00:35:21
staticが問題になるのはフィールドであってメソッドではない。
インスタンスの状態に関係なく処理でき副作用がないのなら、そのメソッドが静的かどうかは余り関係がない。
違うスレッドが同時に実行しようが何の問題もない。

「インスタンスの状態に関係なく処理できる」のが静的メソッドの必要条件。
「副作用がない」は必要条件ではないが、副作用があると極めて面倒なことになるだろう。特にWebアプリでは。
まあ要は静的フィールド(プロパティ)を作るなと言うことだが。

必要条件を満たしているとして、
そのオブジェクトインスタンスに意味的に関わるのなら非静的、そうでないのなら静的、とか。
インスタンスが必要でないのなら静的、とか。
自身の型のインスタンスを作る(WebRequest.Createみたいの)なら静的、とか。
ま、静的メソッドを作る機会は(オブジェクト指向に則ってれば)あんまりないけど。

> 例えばメール送信クラスを作ったとして、これはstaticにすべきでしょうか?しないほうがいいでしょうか?
> Webアプリなので、この関数自体は同時に呼び出される可能性はあります。
メールクラスの送信メソッド?
まさにインスタンスメンバにすべきものじゃね?
メールクラス作って、本文プロパティやら件名プロパティやら埋めて送信メソッド実行。

452 :デフォルトの名無しさん:2006/01/07(土) 00:41:19
メッセンジャーとかで誰かログインした時とかに
右下からにょーんと通知ウィンドウが出ますよね。
数年前会社にMSの人が.NETの宣伝に来たときに
その通知ウィンドウに任意の文字列を表示するデモを見せてもらったんですが、
.NETで提供されているものなのでしょうか?

453 :デフォルトの名無しさん:2006/01/07(土) 00:45:17
MSのサイトにVB.NETのが転がってた希ガス
NotificationWindowだったっけ?

454 :デフォルトの名無しさん:2006/01/07(土) 00:57:43
PowerToysみたいな名称で10個くらいのコンポーネントがあったはず

455 :デフォルトの名無しさん:2006/01/07(土) 01:00:13
>>453
ありがとうございます!

「通知ウィンドウ」「NotifyWindow」「にょーん」「びろーん」「にょきっ」
とかで検索してたんですけどなかなか見つからなくて…

456 :デフォルトの名無しさん:2006/01/07(土) 01:03:29
>>454
Visual Basic Power Packですね。

ってVBか…スレ違いすみませんでした。

457 :デフォルトの名無しさん:2006/01/07(土) 01:04:36
> 「にょーん」「びろーん」「にょきっ」
> とかで検索してたんですけどなかなか見つからなくて…

まあそりゃ……w

458 :デフォルトの名無しさん:2006/01/07(土) 01:32:19
>>456
VBだけど、C#からも使えるからいいんじゃない?

459 :デフォルトの名無しさん:2006/01/07(土) 15:26:24
C#でLineinやMicなどからの音声を取得したいんだけど、.NET Frameworkのライブラリにはそういうのはない?
リアルタイムで処理するので、MCIを使うのは無理っぽい。waveIn〜系のwin32apiみたいに使えるやつがほしい。

460 :デフォルトの名無しさん:2006/01/07(土) 15:36:25
ならwaveIn〜をDllImportして使えば。

461 :デフォルトの名無しさん:2006/01/07(土) 17:01:40
AxWebBrowser で、 HTMLDocument から
GIF 動画が、終了したか取得するにはどうすればいいの?
 今の所、以下みたいにしたんだが、動画ダウンロード終了までしかとれん。
〜〜mDocument とるまでは、省略〜〜
HTMLImg mImg=null;
IEnumerator ee;
ee = mDocument.images.GetEnumerator();
while(ee.MoveNext())
{
mImg=(HTMLImg)ee.Current;
if( mImg.alt.IndexOf("テスト動画")>=0)
{
do{}while(! mImg.readyState.Equals("complete"))
break;
}
Marshal.ReleaseComObject (mImg);
}
Marshal.ReleaseComObject(mDocument);



462 :デフォルトの名無しさん:2006/01/07(土) 17:51:27
>>451
コードを出すと(一部簡略化しています)
----------------------------------------------
public class Mail
{
private static readonly string smtpserver = ConfigurationSettings.AppSettings["SMTPSERVER"];

  public static bool SendMail(MailMessage mail)
{
try
{
System.Web.Mail.SmtpMail.SmtpServer = smtpserver;

SmtpMail.Send(mail);
}
catch (Exception e)
{
//ログ書き込み
return false;
}
return true;
}
}
----------------------------------------------
こんな感じなのですが。
もう一つオーバーライドで、引数増やして添付ファイルVerもあります。



463 :デフォルトの名無しさん:2006/01/07(土) 17:52:03
改行が多いと言われたので上の続きです。


この場合、メッセージは引数としてわたってきますが
もしこのクラス内にメンバ変数でメッセージ自体を持ち
new時にそれを初期設定するような作り方の場合、staticでは不味く
メンバ変数がないこの状態であれば、特に問題はない。
という解釈であっているでしょうか?

464 :デフォルトの名無しさん:2006/01/07(土) 17:59:08
staticではまずいと言うかそもそもstaticメソッドじゃインスタンスフィールドには触れない。
つまりその場合staticメソッドじゃ実現できない。

465 :デフォルトの名無しさん:2006/01/07(土) 18:18:03
質問です。
ConfigurationSectionを継承して配列やArrayListをシリアライズするにはどうすればいいのでしょう。
this["TestArray"] = new ArrayList();
などとすると、Configuration.Save() のタイミングで例外が発生します。
ApplicationSettingsBaseを継承する方法では普通にシリアライズできているんですが、
こちらはアプリケーションスコープの設定の書き込みができないようなので・・・


466 :デフォルトの名無しさん:2006/01/07(土) 20:45:16
リモーティングについての質問です。

Remotingで 型RemotingObjectがサーバ側で登録されているかどうかを知るためにはどのようにしたら良いのでしょうか?

サーバ側で登録されていない場合、
RemotingObject remoteObject = (RemotingObject)Activator.GetObject(
 typeof(RemotingObject),
 "ipc://IpcSample/SampleApp");//この時点ではプロキシが作られるだけなのでエラーが出ない
string str = remotingObject.ToString();//←ここでエラーが出る

(実はやりたいことはアプリケーションの2重起動時にコマンドラインを受け渡すだけなんですが

467 :デフォルトの名無しさん:2006/01/07(土) 20:51:22
>>447
普通のUserControlの上にコントロール並べてDock=FillにしてTabPageにAddすればよくね?

468 :デフォルトの名無しさん:2006/01/07(土) 22:01:58
O-Rマッピング関係のスレ知ってたら教えてください。


469 :デフォルトの名無しさん:2006/01/07(土) 22:12:07
MDI子ウィンドウの中にWMPを貼り付けて再生すると
サイズが変わるのは仕様ですか?
(しかもWMPのDockをFillにしとくと落ちる)

470 :デフォルトの名無しさん:2006/01/08(日) 04:38:34
File.SetAttributes( path, fileAttributes )
ではNTFSのフォルダ圧縮は設定できないようですが、
他に方法はありませんか?

471 :デフォルトの名無しさん:2006/01/08(日) 05:34:31
>>470
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnfiles/html/ntfs2.asp

472 :デフォルトの名無しさん:2006/01/08(日) 10:56:59
>>471
ありがとう


473 :デフォルトの名無しさん:2006/01/08(日) 15:32:52
デフォルトコンストラクタがない、こんな簡単なクラスAを自作したとして

class A{
public A(int a, int b){
_a = a;
_b = b;
}

private _a;
private _b;

protected virtual bool SomeMethod(){
return false;
}
}

SomeMethodだけをoverrideしたクラスを作りたい場合でも、必ずコンストラクタを書かない方法ってないですか?
書かないとコンパイル時に「引数を '0' 個指定できる、メソッド 'A' のオーバーロードはありません。」となってしまいます。

自分が作ったクラスAに相当するものはコンストラクタのオーバーロードが8個あって、
派生クラスでもそのままそのコンストラクタを使いたいのですが、いちいち

B(int a, int b):base(a,b)

見たいな感じで渡すのは大変だし、記述ミスを考えるとあんまり良いやり方には思えないのですが。。。

474 :デフォルトの名無しさん:2006/01/08(日) 15:35:44
基底クラスが引数2つ要求してるのに、派生クラスがそれを守らなかったら整合性が木っ端微塵だ。
例えばその基底クラスコンストラクタで引数使ってOpenFileしてたらどうする?

475 :デフォルトの名無しさん:2006/01/08(日) 15:56:28
Hashtable.comparerが参考になるかも

476 :デフォルトの名無しさん:2006/01/08(日) 17:07:20
これからプログラムというのを始めようと思っています。

で、質問です。

あるサイトに行って、ある順番でページを進んで、複数のページのHTMLデータを取得するプログラムを作りたいのですが、
C#でもできますでしょうか。


C#というのは、初心者にも優しいと聞いて、是非C#でやりたいのですが、こういうのは作れますでしょうか?

477 :デフォルトの名無しさん:2006/01/08(日) 17:09:47
可也

478 :476:2006/01/08(日) 17:17:04
>>477
即レスありがとうございます。

えーと、中国語?煤i; ̄□ ̄
たぶん、可能ということですね。

ありがとうございました。

479 :デフォルトの名無しさん:2006/01/08(日) 17:24:32
すいません、後学のため追加質問させてください。

よそで聞いたところによると、C#よりC/C++とかのほうが難しいけど、C/C++の方ができることは多いと聞きました。
では、C#だとこういうのが作れないというのは、どういうプログラムでしょうか?


480 :デフォルトの名無しさん:2006/01/08(日) 17:27:27
作りにくい(面倒くさい)ってのはあっても作れないってのはないよ
直接API(Windowsネイティブの命令)を扱うこともできるから

481 :デフォルトの名無しさん:2006/01/08(日) 17:27:32
ハードウェアの制御はまず無理だな

482 :デフォルトの名無しさん:2006/01/08(日) 17:48:29
CLR に依存しないプログラム

483 :デフォルトの名無しさん:2006/01/08(日) 17:49:27
>>479
おまいがやりたいと思うようなことではなかなか遭遇しないだろうから
気にしないでおいたほうがいいよ。

484 :デフォルトの名無しさん:2006/01/08(日) 17:52:53
そうですか。
ハードの制御なんてしませんし、サイト情報の取得加工ができるなら、問題なしです。
ではもう 心おきなくC#を勉強致します。

ありがとうございました。

485 :デフォルトの名無しさん:2006/01/08(日) 19:28:07
>>473
そもそもアンダーバーで始まる名前を作るな

486 :デフォルトの名無しさん:2006/01/08(日) 19:29:06
C/C++じゃないからいいじゃん

487 :485:2006/01/08(日) 19:31:37
スレ間違えたwww

488 :342:2006/01/08(日) 19:51:35
>>476
>あるサイトに行って、ある順番でページを進んで、複数のページのHTMLデータを取得するプログラムを作りたいのですが、
>C#でもできますでしょうか。

俺C#歴1ヶ月だけど楽勝。

489 :デフォルトの名無しさん:2006/01/08(日) 20:07:34
>>476
「文字コードの自動判別で詰まる」に一票。

490 :デフォルトの名無しさん:2006/01/08(日) 20:14:24
昔クローラを作ったときはMSHTMLを使った
文字コードの判別なんて気にせず使えていい

491 :デフォルトの名無しさん:2006/01/08(日) 20:26:05
クローラってなに?

492 :デフォルトの名無しさん:2006/01/08(日) 20:28:36
芋虫。

493 :デフォルトの名無しさん:2006/01/08(日) 21:25:40
クロール、クローラ、クローレスト

494 :デフォルトの名無しさん:2006/01/08(日) 21:36:23
南の島の

495 :473:2006/01/08(日) 21:36:57
>>474
>>475
だめだ、全然理解できませんでした _| ̄|○

496 :デフォルトの名無しさん:2006/01/08(日) 22:38:28
IClonableを実装したいクラスがあるんですけど
フィールドが全部値型とか読み取り専用の参照型(String、Uriなど)の場合ってMemberwiseCloneを返すだけでいい?

497 :デフォルトの名無しさん:2006/01/08(日) 22:41:31
うん

498 :デフォルトの名無しさん:2006/01/08(日) 22:44:29
別にICloneable.Cloneは必ず詳細コピーが要求されると言うわけでもないがな。

499 :デフォルトの名無しさん:2006/01/08(日) 23:13:52
VB6から乗り換えるのにC#とC++どっちがいいですか?
c#とc++って何が違うんでしょうか?


500 :デフォルトの名無しさん:2006/01/08(日) 23:18:12
確実にC#だろうな

501 :デフォルトの名無しさん:2006/01/08(日) 23:25:19
今からC++に乗り換える人って
絶対マゾだよね

502 :500:2006/01/08(日) 23:33:11
>>501
そういう意味で書いたわけではないんだけどな。ただVBからだったら
.netからではないにせよC#の方がとっつきやすいという意味で書いた
だけで。
>>499,501
個人的には、今からC++をやる人がマゾだとは思わないよ。スキルを
上げようと少しでも思っているのなら、多言語、特にC/C++あたりは
触っておいて損はないと思う。C#をメインで使うにしても、その経験は
色々と生きてくる。

503 :デフォルトの名無しさん:2006/01/08(日) 23:37:46
いきなり C++/CLI から入るのはやめといた方がいいだろうけどな。

504 :500:2006/01/08(日) 23:58:28
>>503
確かに。

505 :デフォルトの名無しさん:2006/01/09(月) 00:10:53
車で言えばVB6は軽自動車、C#はカローラ、C++はフォーミュラマシン。
レーサーになるのでなければカローラで十分。
コンビニ行くのにフォーミュラマシンを乗りこなす必要はないw

506 :デフォルトの名無しさん:2006/01/09(月) 00:17:32
>>505
>>499さんではありませんが、問題が解決しました。
有難うございました。

507 :デフォルトの名無しさん:2006/01/09(月) 00:19:49
なにがどう解決したんだろう

508 :デフォルトの名無しさん:2006/01/09(月) 00:20:08
ハードをさわるようになって、ドライバを書いたり、
研究室でシミュレータいじるようになったらCやC++は必須だけどな。

わざわざGUI周りの苦労をC++で味わう必要はなし。

509 :デフォルトの名無しさん:2006/01/09(月) 00:22:17
>>499
VS2001でVB6からC#に乗り換えた俺は、C#を強く推奨。
ポインタに触る気がなければVB9(VB2005)を推奨。
なんでVB9を無視してC#とC++の二択なのか理解に苦しむけど。

それと、C#とC++の比較論とは関係無いけど、C#(もしくはVB.NET)は、変数の寿命がVB6とは違う事に注意。
VB6では参照されなくなった途端に変数が削除されて、それがクラスインスタンスならば、即座にTerminateイベントが呼び出される。

でも、C#・VB.NETの場合は、変数が消滅するのはガベージコレクタの気分次第。
参照が無くなっても、いつ消えるか分からない。
ファイナライザやらデストラクタやらにいくら終了処理を記述しても、その実行を期待してはいけない。
最悪の場合、ファイナライザやらデストラクタが全く実行される事無くアプリが終了まで到る事もある。

>>505
良い例えだな。
でも、フォーミュラマシンでコンビニに行かされるならまだマシ。
業務の場合、軽でサーキットやら荒地を走れと言われるんだからたまったもんじゃないw

510 :デフォルトの名無しさん:2006/01/09(月) 00:41:16
>いつ消えるか分からない。
VB.Netなら nothing のセットで消えるはず。

>最悪の場合、ファイナライザやらデストラクタが全く実行される事無く
>アプリが終了まで到る事もある。
ありえへん。




511 :デフォルトの名無しさん:2006/01/09(月) 00:42:08
C#がカローラというのはどうか。
カムリくらいじゃ?(たいしてかわらないか)

それほどメジャーじゃないし
かといってそれほど低性能でもない


512 :デフォルトの名無しさん:2006/01/09(月) 00:42:35
>>510
>VB.Netなら nothing のセットで消えるはず。
セットしても実際に GC 動かないと消えないよ

513 :デフォルトの名無しさん:2006/01/09(月) 00:58:04
カムリってまだ売ってんのか。

514 :デフォルトの名無しさん:2006/01/09(月) 01:00:34
>>512 これは?
■Usingステートメント(VB 2005のみ)
http://www.atmarkit.co.jp/fdotnet/special/vs2005_02/vs2005_02_02.html

515 :デフォルトの名無しさん:2006/01/09(月) 01:07:10
C#に元々存在してる機能ですが何か?
インスタンスの消滅とは何の関係もないぞ。

516 :509:2006/01/09(月) 01:18:22
>>510
~Form1()
{
System.IO.FileStream fs = System.IO.File.Create( @"c:\hoge.txt" );
fs.Dispose();
}
新規プロジェクト作って、このコンストラクタを追加して実行。んで、フォーム閉じて終了させてみ。
ブレーク貼っても止まらんし、ファイルもできない。

>>514
こういう事じゃね?
ttp://www.divakk.co.jp/aoyagi/csharp_tips_using.html

517 :509:2006/01/09(月) 01:19:40
コンストラクタじゃなくてデストラクタだったw

518 :デフォルトの名無しさん:2006/01/09(月) 01:55:44
499ですが、
VB.NETはVB6と大きく変わってしまって、
address ofがデリケード型使えとかなんとかで訳わからず。
それならCにしようと。
順番としてCを覚えてからC++からc#になるのかと思ったのですが、
C++とばしてC#でも大丈夫でしょうか?



519 :デフォルトの名無しさん:2006/01/09(月) 02:01:55
とばすとかそういうもんじゃない別言語だし。
なにが大丈夫か不安なのかよくわからん。

520 :500:2006/01/09(月) 02:02:24
>>518
C→C++なら分かるが、C#は全く別系列。手軽に使いたいんなら
最初からC#にした方が吉。
ただし、そのdelegateとかはC#でもやはり理解しないと無理。

521 :デフォルトの名無しさん:2006/01/09(月) 02:02:30
CとC++は互換性があるけど、C#は似てるだけだから

522 :デフォルトの名無しさん:2006/01/09(月) 10:53:36
C#を使うにもメモリ管理のことは常に頭に入れておいたほうがいいね。
前のスレにも出てたけど、ガベレージコレクタを意のままに操るのは実は結構難しい。
終了処理を書くにもタイミングがあるんだ。
ここって結構C#の穴なんじゃないかと思う。

523 :デフォルトの名無しさん:2006/01/09(月) 10:57:43
GCぐらいC#じゃなくてもついてるだろ

524 :デフォルトの名無しさん:2006/01/09(月) 12:38:38
そもそも「意のままに操る」必要性がどこにある

525 :デフォルトの名無しさん:2006/01/09(月) 13:05:28
そういうことをやりたいのなら言語違うもんにすればいいんでは。
もしくはC++と混ぜて使うとか。

526 :デフォルトの名無しさん:2006/01/09(月) 14:01:29
VB6やっててC/C++とC#迷うようなやつは
1年たってもC/C++は出来るようにならねーよ


527 :デフォルトの名無しさん:2006/01/09(月) 14:03:51
>>510
お前の方がありえん
でたらめ教えんな、信じる馬鹿がでるだろ


528 :デフォルトの名無しさん:2006/01/09(月) 14:14:35
アプリ終了のタイミングと同時にデストラクタやファイナライザが呼ばれるが
それをどっちに含めるかだな。(笑)

絶対呼ばれるという理解を前提に話するのは危険だと思うが。相談スレだし。

529 :デフォルトの名無しさん:2006/01/09(月) 14:27:13
そういうこといってんじゃない。
いやまあ普通は必ず実行されるという理解でいいが
実際は必ず実行されるとは限らない。
そういう話に対して、ありえないって反応だったから
書いたんだよ

念のため、普通にドキュメントに書かれてることだ


530 :デフォルトの名無しさん:2006/01/09(月) 14:37:04
>>510
> VB.Netなら nothing のセットで消えるはず。
本当かよそれ。VBはrefcountGCでも使ってんのか?

GCの動作を理解してないと非マネージリソースの扱いでハマる。
後始末が必要なオブジェクトは明示的に後始末しとけってだけの話だが。

531 :デフォルトの名無しさん:2006/01/09(月) 14:56:26
>業務の場合、軽でサーキットやら荒地を走れと言われるんだからたまったもんじゃないw
ワロタ

532 :デフォルトの名無しさん:2006/01/09(月) 15:05:40
>>530
nothing セットしても消えないよ。
それはC#と同じ。

ちなみに旧VBでも Nothing セットするのと
インスタンスの消滅は別問題。
参照がある限り消えない

533 :デフォルトの名無しさん:2006/01/09(月) 16:00:09
.NETではアプリ終了時のファイナライザ呼び出しは時間制限があるんじゃなかったっけ

534 :デフォルトの名無しさん:2006/01/09(月) 16:21:34
時間制限って何だい?

535 :デフォルトの名無しさん:2006/01/09(月) 22:03:17
デストラクタであまりに重い処理をまわしてみると、その後の処理がカットされる場合があったような気が
時間制限の技術文書ってどこかにあったっけ?

Remotingに関して質問させてください。
Remotingでの異常処理(サーバがダウンしたなど)ってどうやってトラップすべきなんでしょう?

透過的プロキシオブジェクトのメソッドを呼び出してる部分を片っ端からTryCatchするしか方法ないのかな
OneWayAttributeっていまいち信用性に欠けるし

たとえば、あるサーバがRomotingObjectをシングルトンでサーバアクティベーションしているとして
//クライアント側
RemotingObject ro = new RemotingObject();
try{
ro.ExitApplication();//中身はこんなの--> public void ExitApplication(){Application.Exit();}
}catch(RemotingException){}//サーバが終了するのでExceptionが起こる
みたいに全部TryCatch書かないとダメなのかな。
こんなんだったら、透過的じゃないほうがわかりやすい気がするんだけど・・

536 :デフォルトの名無しさん:2006/01/09(月) 23:34:22
VC#2005のビルドオプションで、CPUはどうしてる?
Any CPU?

537 :デフォルトの名無しさん:2006/01/09(月) 23:51:10
nullableって列挙型にもできるんだな。
かんがえてみりゃ当たり前なんだけど、気づかなかったw

538 :デフォルトの名無しさん:2006/01/09(月) 23:53:05
ベータでは参照型にも使えたんだよな

539 :デフォルトの名無しさん:2006/01/09(月) 23:58:07
>>535
やっぱ単純にはThreadExceptionとかでまとめてやる、とかかな?

誰か、自作のRealProxyからリモーティングの透過プロキシへの
メッセージの受け渡しの正しい方法を教えてくれ。


540 :デフォルトの名無しさん:2006/01/10(火) 00:18:30
.NET v1のころの書籍には1Finalizeメソッド2秒、全部で40秒とかの
ルールが載ってたように思うな。
MSDNとかの記述では、具体的な数字なんかは出てこない。

ほかに、finallyブロックでThreadAbortExceptionが発生した場合、
finallyの残りが実行されないとか、通常レベルで想定外な事象ってのは発生し得る。


541 :デフォルトの名無しさん:2006/01/10(火) 14:54:24
エディタの色ってどこで直すの?
オプション探しても、共通のウィンドウの色の変更しか見当たらない。

542 :デフォルトの名無しさん:2006/01/10(火) 15:01:40
オプションの環境>フォントおよび色で
テキストエディタにうんざりするほどたくさん項目があるが。

543 :デフォルトの名無しさん:2006/01/10(火) 15:12:45
>>542 出てきますた・・・orz
再起動する前はセッティング対象に3種類しか出てこなかったんだよ・・・

544 :デフォルトの名無しさん:2006/01/10(火) 16:22:17
Console.WriteLine の結果をデバッグウィンドウではなく
Form 上に表示したいのですがどのようにすればいいのでしょうか?

545 :デフォルトの名無しさん:2006/01/10(火) 16:25:45
TextWriterの派生クラスで表示させるコードを実装させて
Console.SetOutでその派生クラスのインスタンスを設定する

546 :デフォルトの名無しさん:2006/01/10(火) 17:44:06
確かにそうやりゃ出るとは思うが、
根本的に何か間違ってるんじゃね?


547 :デフォルトの名無しさん:2006/01/10(火) 19:27:54
すいません。質問があるのですが、、、

web上のテーブルデータを取得して
データグリッドを使って表示させることって可能ですか?

548 :デフォルトの名無しさん:2006/01/10(火) 19:31:43
可也

549 :デフォルトの名無しさん:2006/01/10(火) 19:31:46
おおよそ意味不明だが、まあ頑張ってテーブル要素解析汁

550 :547:2006/01/10(火) 19:56:08
Infoseekのマネーにある、株価の時系列データを取得したいのですが、
ソース取得まではわかるんですが・・・その後がわかりません。

551 :デフォルトの名無しさん:2006/01/10(火) 20:17:36
わかりませんがわかりません!!

552 :デフォルトの名無しさん:2006/01/10(火) 20:18:59
C#2005ExpressでWebにアクセスするアプリを作ってるんですが、
ラジオボタンのクリックでwebBrouserを使って (axWebBrouserではなく)
Doc.All["gender"].InvokeMember("click", "1")
は出来るのですが値を2にして
Doc.All["gender"].InvokeMember("click", "2")
にしても1をクリックしてしまいます。
何か間違ってますでしょうか?

553 :デフォルトの名無しさん:2006/01/10(火) 20:31:59
・HtmlElementCollection.Itemは同名の要素が複数あった場合、先頭の要素を返す
・clickメソッドは引数を取らない

Doc.All.GetElementsByNameで同じname属性持ってる要素のコレクション取り出してそれにItem(int)でアクセスする、とかしな

554 :デフォルトの名無しさん:2006/01/10(火) 20:32:50
>何か間違ってますでしょうか

とりあえずスペルが間違ってる

555 :547:2006/01/10(火) 20:35:31
その取得したソースをどうしたらデータグリッドに表示できるのかが
わかりません・・・。
説明不足とは思いますが、わかるかた教えていただけないでしょうか。

556 :デフォルトの名無しさん:2006/01/10(火) 20:43:45
>>555
・HTMLを、正規表現System.Text.RegularExpressions.Regexクラスなどを用いて解析し、必要なデータを取得する
・データをSystem.Data.DataTableクラスなどに格納
・System.Windows.Forms.DataGridのDataSourceに設定する

これでいいか?

557 :デフォルトの名無しさん:2006/01/10(火) 20:59:08
アプリケーション構成ファイルが
単体なら読めるのに
ウィンドウズサービスに乗せると読めなくなる。


558 :デフォルトの名無しさん:2006/01/10(火) 21:09:02
>>557
作業フォルダが違うだけで、読めねーわけではないと思うが。

559 :547:2006/01/10(火) 21:28:02
>>556
ありがとうございます。うまく書けるかわかりませんがやってみます。

560 :デフォルトの名無しさん:2006/01/10(火) 21:30:22
アプリケーションベースに置いてやれば読めるんでね?


561 :557:2006/01/10(火) 21:48:14
もう少し詳しく言うと、
RPC (Remote Procedure Call) のサーバープログラムを作って、
そのときサーバーの構成を構成ファイルに定義するのだが、
単体のときはうまく読めてサーバープログラムとして機能するのだが、
それをそのままウィンドウズサービスに乗せると、
サービス開始時に、構成ファイルを読み込むところで
ファイルが存在しないという例外になってしまう。
構成ファイルに記述せず、
直接ソースプログラムに書き込めば問題ないのだが。


562 :デフォルトの名無しさん:2006/01/10(火) 21:50:11
そのときの作業フォルダはどうなってるんだ?

563 :557:2006/01/10(火) 22:03:48
Visual Studio 2003 でつくった状態では
¥プロジェクト¥app.conf
¥プロジェクト¥bin¥Release¥実行ファイル
というかたち。
これを installutil というプログラムでサービスにインストールする。
ありゃ? どこへ?
このとき、構成ファイルは無視されるのかな?


564 :552:2006/01/10(火) 22:06:20
>>553
ありがとうございます。出来ました。

>>554
え?   あ、失礼しました。

565 :デフォルトの名無しさん:2006/01/10(火) 22:06:37
ウィンドウズサービスに乗せるって?

566 :デフォルトの名無しさん:2006/01/10(火) 22:23:21
>>563
そこで通常は実行ファイルと同じディレクトリに、実行ファイル.conf(だったっけ?)
が自動的に作成されるはず。

そいつを、 installutilで実行ファイルをインストールした先にもコピーすれば良いような気がする。


567 :557:2006/01/10(火) 22:23:28
Visual Studio 2003 で
新しいプロジェクトの開始でウィンドウズサービスを選択して
そこへ元のプログラムを若干の改造をしたうえで組み込む。
構成ファイルを使わずソースプログラムに直接書き込んだ場合は
ちゃんと動いてくれるのだが。


568 :557:2006/01/10(火) 22:24:40
> 566

ありがと。試してみる。

569 :デフォルトの名無しさん:2006/01/10(火) 23:43:50
はじめまして!!c#について質問させてください。
私の家のパソコンにはC#のVisual Studio Net 2003がインストールされています。
ここで、プログラムを作って完成させたんですが・・・よく考えてみると大学では、
C#2005だったと思うんです。できたら、家だ作ったプログラムをコピーして大学
の授業でも使いたいと思っているんですが・・・この2つには互換性はあるのでしょうか?
どなたか知っている方おられませんか??

570 :デフォルトの名無しさん:2006/01/10(火) 23:48:25
2005が入ってる大学……早いな
一応上位互換性/下位互換性はある
.NET 1.1が無くて.NET 2.0が入ってる環境では.NET 1.1のアセンブリも.NET 2.0で動く
ただしそれは完全な互換性を保証するものではない

ソースを使いまわす方向じゃ駄目なのか?

571 :デフォルトの名無しさん:2006/01/10(火) 23:54:58
VS のソリューションとかの互換性の話?
2003 → 2005は OK。
逆は無理。

>>570
いまどき、MSDNAA 入れば割と VS 入れたい放題だからねぇ。

572 :デフォルトの名無しさん:2006/01/11(水) 00:00:10
>>569
マルチ氏ね




573 :デフォルトの名無しさん:2006/01/11(水) 00:01:35
>570
情報ありがとうございます!!
ソースを使い回す方向というのは・・・どういうことを意味するのですか?
私がやりたいと思っていることは、SDカードに完成したプログラミングを
保存して、大学のパソコンへ入れる。そして、そのソースプログラムをコピーし、
そのまま、c#2005のプロジェクトに貼り付けをして実行してみたいと思っているんです。
説明の仕方がわかりにくくてすいません。

574 :デフォルトの名無しさん:2006/01/11(水) 00:02:28
プログラミングを完成させたのか……。そいつは驚きだ。

575 :デフォルトの名無しさん:2006/01/11(水) 00:03:29
.NET Frameworkの互換性で混乱してるソフト

2ちゃんねる用ブラウザ「twintail」その9
http://pc7.2ch.net/test/read.cgi/software/1133970302/

576 :デフォルトの名無しさん:2006/01/11(水) 00:26:48
なんで?
俺それ.NET 2.0でコンパイルして使えたぞ?
何の問題?

577 :デフォルトの名無しさん:2006/01/11(水) 00:31:42
作者は2002だから、配布されているのは1.0でコンパイルされたバイナリ。

1.0をインストールしてない人は、2.0をインストールすると2.0で動こうとするわけだが、
1.0でコンパイルされたtwintailは2.0では挙動がおかしいらしい。

578 :デフォルトの名無しさん:2006/01/11(水) 00:33:17
twintail2使ってるが…作者さん大変だな

579 :デフォルトの名無しさん:2006/01/11(水) 00:33:19
なるほそ

580 :デフォルトの名無しさん:2006/01/11(水) 00:34:29
みなさん、c#について、質問させてください。
グラフィックなどのプログラムを作成するときすべて削除したいときには、
g.Clearという言語を用いますが・・・一つ前の作業だけを削除したいときなどは
どんなプログラミング言語を使えば良いのでしょうか??


581 :デフォルトの名無しさん:2006/01/11(水) 00:34:47
でも2005でビルドすればいいのでは?
2005ベータ2で試したときはたいした変更いらなかったぞ?
まぁたいした機能も使ってなかったが。

582 :デフォルトの名無しさん:2006/01/11(水) 00:36:13
だれか 580の ほんやく たのむ

583 :デフォルトの名無しさん:2006/01/11(水) 00:37:24
むりだろ

584 :デフォルトの名無しさん:2006/01/11(水) 00:43:03
              
やっぱり、明日大学の教授に質問します。
ここでは上手く説明できないので・・・。


585 :デフォルトの名無しさん:2006/01/11(水) 00:50:50
>>580 最後の一行はノイズだ。削除して考える。
つまり『元に戻す』だろ? 今何描いているか、最後に何を追加したか憶えておけばいいよ。

586 :デフォルトの名無しさん:2006/01/11(水) 00:51:48
スレタイの♯ってどうやって入力してるの?
自分がやると#か#になるんだけど・・・

587 :デフォルトの名無しさん:2006/01/11(水) 00:54:02
しゃーぷ

588 :デフォルトの名無しさん:2006/01/11(水) 00:58:45
できた、ありがとう。
じゃあ
これは何? →#ぁ
          3 あ

589 :デフォルトの名無しさん:2006/01/11(水) 01:12:25
再変換してろこのピザ

590 :デフォルトの名無しさん:2006/01/11(水) 01:15:21
なんばー

591 :デフォルトの名無しさん:2006/01/11(水) 01:19:03
ふらっとC♯(初心者用) Part6
http://pc8.2ch.net/test/read.cgi/tech/1122001458/

こちらと使い分けましょう。

つまりプログラミングを完成してしまった人や
どんなプログラミング言語を使ったらよいかについては
こちらに書き込めってこと。

592 :デフォルトの名無しさん:2006/01/11(水) 01:39:03
♯と#にそんな違いがあったのか知らんかったorz
>>589
フヒヒすみません

593 :デフォルトの名無しさん:2006/01/11(水) 01:54:05
C#の#はナンバーだがナンバーは通常のキーボードでの入力は困難なため
ナンバーと表記するがシャープと読むことになっている
2chの仕様でスレタイには#が使えないから全角シャープで代用しているんだろうけど
全角の場合でもナンバーで書いておいたほうが正しいような気がする
全半角一致検索では全角ナンバーは#で引っ掛からない不便さもあるし

594 :デフォルトの名無しさん:2006/01/11(水) 02:00:13
いや、C♯は普通に「しーしゃーぷ」だぞ?
半角の♯が無いからshift+3で打てる#で代用してるだけで

595 :デフォルトの名無しさん:2006/01/11(水) 02:15:06
今日はじめてRemoting触ってみた。
これすごいいいハァハァ。

596 :デフォルトの名無しさん:2006/01/11(水) 02:20:08
>>595
どういいのよ

597 :デフォルトの名無しさん:2006/01/11(水) 02:26:20
複数のコントロールに関連付けされているContextMenuStripのイベントが、
どのコントロールから呼び出されているかを調べるにはどうすればいいのでしょうか?

598 :デフォルトの名無しさん:2006/01/11(水) 02:29:11
sender

599 :デフォルトの名無しさん:2006/01/11(水) 02:43:39
>>596
んースピードとかはかってないけど、プロセス間通信でオブジェクトの呼び出しや受け渡しがほぼ自分のイメージに近いまま、ライブラリ作るのと同じような感覚でできる。


600 :デフォルトの名無しさん:2006/01/11(水) 02:43:51
SourceControl のが自然じゃね?

601 :デフォルトの名無しさん:2006/01/11(水) 02:56:57
>>598
重ね重ねすいません、
ContextMenuStripの親を取得できる様なプロパティ・メソッドを教えて欲しいのです

602 :デフォルトの名無しさん:2006/01/11(水) 03:02:33
うわごめんなさい、自分に対してだとは思わなかった
>>600の方法で何とかなりそうです、ご迷惑おかけしました

603 :デフォルトの名無しさん:2006/01/11(水) 16:43:33
全角使ってたのは 2ch のスレタイって # が使えない為だったのか……
2ch検索で幾ら検索しても見付からなくて、
C# 初めて数ヶ月間、C# 系のスレに辿り付けずに VS のスレだけ見てた俺ガイル orz

604 :デフォルトの名無しさん:2006/01/11(水) 16:50:25
>>603
#♯
この違いもあるしな。

605 :デフォルトの名無しさん:2006/01/11(水) 17:40:55
.この話も散々既出だが、NET関係のMSのネーミングは
Googleへの嫌がらせじゃねぇかというぐらい検索しづらいよな。

606 :デフォルトの名無しさん:2006/01/11(水) 17:50:57
C や C++ と大差ないだろ

607 :デフォルトの名無しさん:2006/01/11(水) 18:07:28

おまいら、愛してるぜ!!!!

608 :デフォルトの名無しさん:2006/01/11(水) 18:16:28
デジカメ繋いだら自動で画像をコピーしたいんだけどなんかいい方法ありますか?

609 :デフォルトの名無しさん:2006/01/11(水) 18:16:43
私のことどれぐらい好きか、金額で言ってみて!

610 :デフォルトの名無しさん:2006/01/11(水) 18:57:15
>>605
C++0xが最凶だとおもった

611 :デフォルトの名無しさん:2006/01/11(水) 19:38:27
C#と直接関係ないんだが、XPにしたらスレッドのスケジューリング変わってるのか複数プロセス立ち上げてデバッグしてるとプロセスが固まってく・・・
反応なしとか多発。とりあえず視覚効果ほとんどきってみた。解消願う。

612 :デフォルトの名無しさん:2006/01/12(木) 00:08:11
>>599 リモーティング普通に使ってる分にはいいけど、例外処理がちょっとつらくないですか?
ところで
Remotingで自分自身が一つのリモーティングオブジェクトを使ったリモーティングサーバかつ
クライアントな一つの構成ファイルって作れますか?
↓のように記述したんですがダメでした。
<configuration><system.runtime.remoting><application>
<service>
<wellknown mode="Singleton" type="RemotingObject,RemotingTest" objectUri="ServerObject"/>
</service>
<client>
<wellknown type="RemotingObject,RemotingTest" url="ipc://IpcServerXX/ServerObject" />
</client>
<channels>
<channel ref="ipc" portName="IpcServerXX"/>
</channels>
</application></system.runtime.remoting></configuration>

613 :デフォルトの名無しさん :2006/01/12(木) 02:02:47
特定のマシンでしか実行出来ないソフトを遠隔地から実行したいのですが、
つまりリモートで別のマシン上でソフトを起動するプログラムを作成したいのですが、
なにかいい方法はないでしょうか?

可能で有れば情報をご教示下さい。


614 :デフォルトの名無しさん:2006/01/12(木) 02:20:33
telnet でも使えばいいじゃん

615 :デフォルトの名無しさん:2006/01/12(木) 11:11:11
>>613
今私はまさに、そういうプログラムを動かしました。
bbs.cgiという名のプログラムを。

616 :デフォルトの名無しさん:2006/01/12(木) 11:30:27
クライアント用チャネルも要るとか


617 :デフォルトの名無しさん:2006/01/12(木) 11:43:43
XPのリモートデスクトップ

618 :デフォルトの名無しさん:2006/01/13(金) 00:21:15
スレ違いかも知れませんが、C#でJavaの「Effective Java」とかC++の「Effective C++」みたいな
中級者向け(?)のノウハウ本みたいな書籍ってありますか?
文法とか機能中心ではなく、C#ならではのテクニック集みたいな書籍が欲しいのですが・・・。

619 :デフォルトの名無しさん:2006/01/13(金) 00:37:39
C#自体は文法ぐらいしか規定しとらんからのう

620 :デフォルトの名無しさん:2006/01/13(金) 01:10:28
>>619
意味がわからん

621 :デフォルトの名無しさん:2006/01/13(金) 04:34:42
というか読んでないがEffective C#ってそもそもあるだろ。見た気がするぞ。

622 :465:2006/01/13(金) 09:31:15
>>465 ですが、どなたかわかる方いませんか?
現在 XmlSerializer でXMLファイルに保存しているんですが、
new XmlSerializer(typeof(Hoge)) がやたら時間がかかってしまいます。
というわけで ConfigurationSectionでシリアライズをしたいのですが・・・
こちらは >>465 のようにコレクションをシリアライズする方法がわからなくて
困っています。

623 :デフォルトの名無しさん:2006/01/13(金) 23:34:25
ConfigurationElementCollectionクラスの例に従って、サブクラスを定義してやればいいんじゃないかな。

ArrayListをそのまま保存なんてXmlSerialierでもそのままではできないので無理があるのでは・・
>ApplicationSettingsBaseを継承する方法では普通にシリアライズできているんですが、
普通にユーザスコープにArrayListなんて保存できたの?
自分は無理だったわけですが・・

new XmlSerializer(typeof(Hoge))は遅いけど、初回だけなのでとりあえず、我慢して使ってます。将来的にSgen使う予定
VSで自動的にsgenでシリアライズ用のアセンブリはいてくれればいいのに・・・

System.Configure.*空間の作法に従って実装したほうがいいのかなぁ

624 :618:2006/01/13(金) 23:44:39
>>621
情報ありがとうございます。
でも洋書なんすね・・・・・。

ヘタレ専門卒PGの俺には敷居が高いっす・・・。
和書でなんかいい本、知りません??

そもそも出てないのかなぁ。

625 :デフォルトの名無しさん:2006/01/14(土) 02:12:13
AutoCompleteStringCollection をstatic classで持ったら
COM例外ではまった……

なんでだろ?

626 :465:2006/01/14(土) 02:20:00
>>623
レスありがとうございます。

>ArrayListをそのまま保存なんてXmlSerialierでもそのままではできないので無理があるのでは・・
>>ApplicationSettingsBaseを継承する方法では普通にシリアライズできているんですが、
>普通にユーザスコープにArrayListなんて保存できたの?
>自分は無理だったわけですが・・
あれ、そうですか?
こっちではいずれの方法も特別なことをせずに保存できています。

>ConfigurationElementCollectionクラスの例に従って、サブクラスを定義してやればいいんじゃないかな。
情報どうもありがとうございます。
ちょっと勉強してみます。

627 :デフォルトの名無しさん:2006/01/14(土) 03:32:43
>>624
入門書でありながら、1ランク上を目指してる本
ttp://www.amazon.co.jp/exec/obidos/ASIN/4434029460/503-3713559-2631133

628 :初心者:2006/01/14(土) 09:30:41
特定の文字列を基にパスワード文字列を作成するツールを作っております。
文字列からパスワード文字列を作成する手順としては、

テキストボックスにテキスト入力

そのテキストを System.Text.Encoding.Unicode.GetBytes でバイト列に変換

そのバイト列を MD5 の ComputeHash の引数にしてハッシュ

ハッシュコードを int 型に収まるように加工する

それをシードにして Random 型のインスタンスを生成

その擬似乱数を基に、指定された条件(大文字、小文字、数字、記号、文字数)に従って文字列作成

ウマー

ってな感じです。
ここで問題となるのは、ハッシュコードを int 型に収まるように加工する部分です。
せっかく MD5 で 128bit もの一意な値を取得しているのに、
Random のシードにするために 32bit にサイズを落とさなければならない訳です。
32bit ってことは、最大でも約 43 億通りのシードしか用意できないことになります。
すると、文字数などの条件によってもある程度は変わってくると思いますが、
何百兆回とか何千兆回とか総当りすれば、あっさりと破られてしまうことになります。
そこで質問なんですが、Random と同じ効果の得られて、
long 型の値をシードにできるクラスとかメソッドとかってないですかね?
シードが long 型になれば、最大通り数も天文学的な数値にまで跳ね上がります。
そうなれば、よほどのことがなければ破られない強固なパスワード文字列が生成できます。
すばらしいと思いませんか?

629 :デフォルトの名無しさん:2006/01/14(土) 09:48:20
ある文字列がURLであるのか否かを判断するにはどうしたら良い?

630 :デフォルトの名無しさん:2006/01/14(土) 10:09:53
>>628
思わない

>>629
常識的なURLならURIクラスをnewするとか。

631 :デフォルトの名無しさん:2006/01/14(土) 10:11:13
>>628
確かにそれじゃ、MD5やらなにやらでシードにするまでが意味ないぽ
あんまりInput関係ないし

じゃ、32Bit*4で
ランダム4個作って何とかする
r1.Next() ^ r2.Next() ^ r3.Next() ^ r4.Next()みたいな

どういった目的で入力を基にしてるのかと
入力キーさえわかれば 総当りで可能なオーダでパスワードを作成してくれるとか?

>>629
つ正規表現 もしくは Uriクラス

632 :デフォルトの名無しさん:2006/01/14(土) 10:17:17
Convert.ToBase64String

633 :デフォルトの名無しさん:2006/01/14(土) 10:20:26
>>628
入力を基にすることにどういう意味があるわけ?


634 :初心者:2006/01/14(土) 11:02:58
レスありがとうございます。
参考になりました。

>>633
ヒント:パスワードを忘れても(ry

635 :デフォルトの名無しさん:2006/01/14(土) 11:59:40
MD5は既に時代遅れです

636 :デフォルトの名無しさん:2006/01/14(土) 12:04:49
で、MD5のなにがダメでいまどきは何なのよ?

637 :デフォルトの名無しさん:2006/01/14(土) 12:12:33
MD5の強衝突耐性が破られたってニュースは最近のものだがチェックしてなかったのか。
この場合の用途なら余り関係はないだろうけど。
代替品はSHAの256ビット以上とかそんなの。

638 :デフォルトの名無しさん:2006/01/14(土) 12:32:41
どういう用途なんだ?
サーバアプリなら、キーつきのハッシュをそのまま乱数代わりに使えばよくない?


639 :デフォルトの名無しさん:2006/01/14(土) 12:39:46
>>637 サンクス。勉強になりますた

640 :デフォルトの名無しさん:2006/01/14(土) 12:58:02
マシン単位で、そのマシンでしか有効でないような処理を行いたいのですが
システムのSIDを取得する方法はどうすればよいでしょうか?

641 :デフォルトの名無しさん:2006/01/14(土) 13:16:51
SIDはローカルでしか通用しないような

642 :デフォルトの名無しさん:2006/01/14(土) 13:19:13
メルセンヌ・ツイスターの移植とかなかったっけ?
あれってシードでかく指定できなかったかな?


643 :デフォルトの名無しさん:2006/01/14(土) 13:28:48
MTはシードにintを4つ指定できたはず
ちなみに移植は超簡単にできた
Random から派生させてオーバーライドするのがおしゃれかな

644 :デフォルトの名無しさん:2006/01/14(土) 14:08:52
>>624
Essential.NETとかどうなの?

645 :デフォルトの名無しさん:2006/01/14(土) 14:43:38
ありゃC#の本じゃないだろ…

646 :デフォルトの名無しさん:2006/01/14(土) 14:53:25
プライマーはどうなんかな?
またちょっと系統が違うか…

647 :デフォルトの名無しさん:2006/01/14(土) 22:22:46
ペンやブラシってPaintイベントが来る度に生成/破棄繰り返した方がいいんでしょうか。
それともプログラム開始時に作っておく方が効率いいんでしょうか。
ちなみにペン/ブラシの数は20個くらいです。


648 :デフォルトの名無しさん:2006/01/14(土) 23:02:22
 >>647 試そうよそれぐらい・・・

649 :デフォルトの名無しさん:2006/01/14(土) 23:12:36
質問の仕方間違えました。
効率だけ考えたらプログラム開始時に作った方がいいと思います。
でもソースの見た目的には生成/破棄繰り返した方がメンバ変数が減っていいんですね。
それとGDIオブジェクトを一つのプログラムがたくさん保持ってるのって行儀悪いのかなとか。
その変のトレードオフ考えてどっちがいいんでしょうかってことです。


650 :640:2006/01/14(土) 23:31:20
>>641
ローカルでしか通用しなくていいんです。
インストールしたフォルダから特定のデータファイルを異なるマシンに移動したときに
そのまま簡単には使えないようにする。という目的なので


651 :デフォルトの名無しさん:2006/01/14(土) 23:32:19
structでまとめちゃえば・・・

652 :デフォルトの名無しさん:2006/01/15(日) 01:05:15
>>649
20個くらいならどっちでもいいんでね?
桁が1つ大きくなったら考えるけど

653 :デフォルトの名無しさん:2006/01/15(日) 02:02:04
>>649
俺だったら楽なほうにする。その程度の高速化は誰の役にも立たない。

654 :デフォルトの名無しさん:2006/01/15(日) 02:03:43
C#(1.1でも2.0でもいいです)で、JavaScriptの
WScript.CreateObject("InternetExplorer.Application");
みたいな事がしたいです。

具体的には、JavaScriptであるURLにアクセスして、ボタン等を自動的に
押すという内容なのですが、CPU使用率が100%行ってしまい、重くて他の
事をするのが困難で(Athlon X2使えって話は無しの方向で)困っています。

IE.Document.forms を C#で書くとどのようになるのでしょうか。具体的な
例を示してある書籍やサイトがありましたら、ご紹介いただければ幸いです。

655 :デフォルトの名無しさん:2006/01/15(日) 02:07:07
そのスクリプトがうんこなだけ。

656 :デフォルトの名無しさん:2006/01/15(日) 02:10:00
なにで書こうが大して変わらんよ。
まあ言葉は悪いが855の言う通りなんだろう。

657 :デフォルトの名無しさん:2006/01/15(日) 02:11:19
>>654
VB用のクラスにある希ガス

658 :デフォルトの名無しさん:2006/01/15(日) 02:12:37
>>655
回線状態が悪い所で使う事もあり、ウェイトルーチンを入れてあるの
ですが、それがCPUを食っているのです。

JavaScriptにはSleepがないので (new Date()).getTime() を使って、
ループさせています。Win32のSleep()が呼び出せれば軽く出来るんですが・・・・

659 :デフォルトの名無しさん:2006/01/15(日) 02:16:39
WSHならWScript.Sleepとかあるし。

660 :デフォルトの名無しさん:2006/01/15(日) 02:22:46
う〜ん。
C#にAxWebBrowserというクラスがあるのを発見しましたので、
これをちょっといじくり回してみたいと思います。

WSHも調べてみます。ありがとうございました。

661 :デフォルトの名無しさん:2006/01/15(日) 03:59:14
ToolStripDropDownで動的メニューを作ってるんですが、
menuitemのVisibleをfalseにしたりしてアイテムの数が減ると
キーボードで操作したときにスクロールしてしまう現象に悩まされています。

具体的には一番上や、一番下まで行くと表示してないメニューを
表示しようとしてるみたいにスクロールしてしまい、
表示してるメニューが流れていってしまいます。

何か解決法はないでしょうか?

662 :デフォルトの名無しさん:2006/01/15(日) 12:04:59
>>660
C#2005ならWebBrowser

663 :デフォルトの名無しさん:2006/01/15(日) 13:03:20
超初心者ですみません。
C#で入力した年月のカレンダーを表示させたいと思います。
どのように作成したらよいのか、さっぱり検討がつきません。
アドバイスお願いします。

664 :デフォルトの名無しさん:2006/01/15(日) 13:07:22
カレンダー用のコントロールがあるじゃん

665 :デフォルトの名無しさん:2006/01/15(日) 13:11:49
記入不足で、すみません。
Calendarコントロールを使わずに表示させたいのです。
いい方法があれば、宜しくお願いします。

666 :デフォルトの名無しさん:2006/01/15(日) 13:17:30
そんじゃあ cal くらい自分で作れよ
折れんとこじゃ学部の演習でやったぞ

667 :デフォルトの名無しさん:2006/01/15(日) 13:21:45
ラベル:年月
1234567
891011121314
15161718192021
22232425262728
293031

これでええやん

668 :デフォルトの名無しさん:2006/01/15(日) 13:25:19
>折れんとこじゃ学部の演習でやったぞ

よく分からんいきりっぷりだなw

669 :660:2006/01/15(日) 13:59:01
>>662
ありがとうございます。実はそれも見つけて、あの後格闘していました。
お陰で目覚めるとこんな時間に('A`)

で、INPUTにTEXTを代入する方法はわかりました(InnerText)が、
SELECT〜OPTIONタグに値を代入する方法がわからなくて四苦八苦
しています。

JavaScriptなら、INPUTと同じようにvalueを代入するだけで良かった
のですが、C#だとなぜか空白になってしまいます。

HtmlDocumentとFORM上の部品との関係を詳しく説明してある
サイトか書籍があればぜひ紹介してください。書籍は、まだまだC#2.0が
新しい事もあり、あまり出ていないようです・・・・・

670 :デフォルトの名無しさん:2006/01/15(日) 16:31:00
「document.forms」でぐぐれ

671 :デフォルトの名無しさん:2006/01/15(日) 16:33:32
C#で○○を継承したクラス型のリストが欲しいのですが、
どういった方法がありますか?
継承したクラスの静的コンストラクタで型を登録しようにも
そのクラスをnewするなどしないと、コンストラクタ自身が呼ばれません。
リフレクションなどでうまく処理できますか?

672 :デフォルトの名無しさん:2006/01/15(日) 16:41:21
基本的に無理。基底クラスは派生クラスを知らない。
AppDomain.GetAssembliesでGetTypesして一つずつチェックしていくにしても、
そのときまでにアセンブリが読み込まれていないものについては対処できないし。

673 :デフォルトの名無しさん:2006/01/15(日) 16:57:55
>>672
ども〜。基本的には無理なのですかorz
無理矢理な解決方法を探すことにします。

参考資料が見つけられ無いのですが、
クラス情報がアセンブリに読み込まれるタイミングや条件は分かりますか?

674 :デフォルトの名無しさん:2006/01/15(日) 17:05:10
>>673
> クラス情報がアセンブリに読み込まれるタイミングや条件は分かりますか?
これは意味不明だな。
AppDomain.GetAssembliesを呼び出せば、既に読み込まれているアセンブリを返す。
Assembly.GetTypesはそのアセンブリに含まれる型情報を全て返す。
つまりいつアセンブリが読み込まれるかが問題。
実際にいつ読み込まれるかと言うと、普通は
現在読み込まれて無いアセンブリに存在するものを操作するメソッドをJITコンパイルするとき。

675 :デフォルトの名無しさん:2006/01/15(日) 17:16:21
>>674
ども〜。なるほど。
対象クラス群が同一アセンブリにある場合は動くけど、
たとえばDLL化なんかで外部に出すと動かなくなる可能性があると。
ということは、対象クラス群とそれらの型リストを操作するクラスを同一アセンブリに置けば、
問題は無いのですか?

676 :デフォルトの名無しさん:2006/01/15(日) 17:49:53
例えば構成ファイルに対象のアセンブリのリストを設定出来るようにするとか、
特定のサブディレクトリにあるDLLは強制的にロードして調査対象にするとか、
とにかく、何らかのルールを決めてやるしかないと思う。


677 :デフォルトの名無しさん:2006/01/15(日) 17:51:39
同一のアセンブリにしてしまうのが問題ないのなら
それが楽だろうね。


678 :デフォルトの名無しさん:2006/01/15(日) 19:53:11
>>672>>674>>676>>677
実はAssembly.GetTypesの存在を知らなかったので、それだけでも大きな収穫でした。
操作リストと対象クラス群は確実に同一アセンブリ上にあるのでどうにかなりそうです。
ありがとうございました。

679 :デフォルトの名無しさん:2006/01/15(日) 22:53:12
>>674
AppDomain.AssemblyLoadイベント

680 :649:2006/01/15(日) 22:58:52
>>652 >>653
ありがとうございます。
Paintハンドラ内で生成させることにします。


681 :デフォルトの名無しさん:2006/01/16(月) 00:44:56
>>669
axWebBrowserを使ってるけどこのページが参考なると思う。
http://peace.poosan.net/investor/workshop/
WebBrowserに関しては参考になるのはHELPくらい。

682 :デフォルトの名無しさん:2006/01/16(月) 08:42:58
3.0はいつから使えるようになるんだい?

683 :デフォルトの名無しさん:2006/01/16(月) 09:02:48
2007か2008ってとこじゃね

684 :660:2006/01/16(月) 12:22:55
>>681
ありがとうございます。
早速見てみましたが、肝心のSELECT〜OPTIONへの値の代入方法が
書かれていませんでした。
INPUTは既にうまく行っているので、リストボックスの選択を自動にやらせる
方法が知りたいのですが・・・・
あちこちのサイトも必死に見ています。

685 :デフォルトの名無しさん:2006/01/16(月) 18:41:02
ListView.Items.Clear()を間違えてListView.Clear()にしていて
Columnまで消えてしまい、その原因が分からず2時間も無駄にしました。

明らかにListView.Clear()は地雷です。本当にありがとうございました。

686 :デフォルトの名無しさん:2006/01/16(月) 18:42:32
その気持ちは分かる

687 :デフォルトの名無しさん:2006/01/17(火) 01:00:18
VS2003で書いたHTMLをたたくコードを
開発環境(WinXP Pro SP2 office2003)では問題なく実行できたのですが、

別の環境(WinXP Pro SP2 officeなし)では
System.IO.FileNotFoundException: File or assembly name Microsoft.mshtml, or one of its dependencies, was not found.
File name: "Microsoft.mshtml"
のエラーでとまってしまいます。

mshtmlってどこで追加すればいいんでしょうか?

688 :デフォルトの名無しさん:2006/01/17(火) 01:08:53
参照を追加 COM

689 :デフォルトの名無しさん:2006/01/17(火) 01:13:09
>>688
それって開発時の話ですよね?
それは追加してあるから、開発マシンではrelease buildの実行ファイル直接指定してもエラーは出ません。

他のマシンで"Microsoft.mshtml" が見つからなくて困ってるのですが。

690 :デフォルトの名無しさん:2006/01/17(火) 01:23:40
InteropHoge.dllを持っていかないと駄目なんじゃ?

691 :デフォルトの名無しさん:2006/01/17(火) 01:35:00
AxInterop.SHDocVw.dll
Interop.SHDocVw.dll
ってReleaseフォルダにあったのでフォルダごとコピーしたのですが、
>>687のエラーメッセージで困ってます。

.net framework2入れてみたけど当然のようにエラーは変わらずでした。


692 :デフォルトの名無しさん:2006/01/17(火) 01:41:23
GAC

693 :デフォルトの名無しさん:2006/01/17(火) 02:01:03
C:\Program Files\Microsoft.NET\Primary Interop Assemblies\
あたりに転がってないか?
確かこれは「SDKが」GACに突っ込むから、SDK入れてない人は参照できないんだよね……いやそもそも無いんだったっけか
.NET 2.0でもSDKオンリーなのかな

694 :デフォルトの名無しさん:2006/01/17(火) 12:07:40
mshtml.dllは最初からは入ってない。
twintailをみてみろ。一緒に配布してる。

.NET 2.0ならManaged WebBrowserがあるからそっちを使え。

695 :デフォルトの名無しさん:2006/01/17(火) 12:43:51
昔はMSHTMLを使ったらdllが吐き出されたけど
2005の製品版にしたら吐き出されなくなったな
同じプロジェクトファイルなのに意味不明

696 :デフォルトの名無しさん:2006/01/17(火) 20:42:37
Webページ側にポートスキャンがあって
特定のポートを開けてないと開けないようなページがあって
WebRequest.GetResponse().GetResponseStream()で取得しても
403エラーを返されるんですがどうすればいいでしょうか?
WebBrowserで開くとちゃんと返してくれるので、別の取得の仕方をすればいけるとおもうのですが・・・

697 :デフォルトの名無しさん:2006/01/17(火) 20:52:12
状況が分からん

698 :デフォルトの名無しさん:2006/01/17(火) 20:52:43
やり取りの詳細を見ないと何とも言えないが、
素直にTcpClientとかSocketとか使ってきっちりブラウザでのやり取りをシミュレートすれば?

ネットワーク絡みのはまずパケットキャプチャ使えば便利。

699 :デフォルトの名無しさん:2006/01/17(火) 20:57:33
パケットキャプチャですか。
よく分かりませんが色々調べてみます。
それで分からなければまたよろしくお願いします。

700 :デフォルトの名無しさん:2006/01/17(火) 21:48:23
FileInfo fi = new FileInfo(file);
FileAttributes fa = fi.Attributes | FileAttributes.Compressed;
fi.Attributes = fa;

こんな感じのコードなんですが、ファイルが圧縮されません。
CompressedではなくReadOnlyだときちんと読み取り専用になります。
また、Explorer上でファイルのプロパティをいじれば圧縮されます。
なぜでしょうか? .NET Framework 2.0です。

701 :700:2006/01/17(火) 22:20:04
自己レスです

Reflector.NETを使ってちょっとのぞいてみたところ、File.SetAttributesは、
kernel32.dllの SetFileAttributesをほとんどそのまま呼び出しているようです。

んで、SetFileAttributesを検索してみたところ、MSDNのリファレンスが引っかかりました。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpfileio/html/_win32_setfileattributes.asp
にこのような記述がありました。ちょっとこの方法をやってみようと思います。


いくつかの属性は、SetFileAttributes 関数を呼び出しても設定できません。次の表は、それらの属性を設定する方法を示します。
FILE_ATTRIBUTE_COMPRESSED ファイルの圧縮状態を設定するには、FSCTL_SET_COMPRESSION の動作を指定して DeviceIoControl 関数を使ってください。

702 :デフォルトの名無しさん:2006/01/17(火) 22:48:09
>>701
こんなおっかねーものいじくりたくねえだ

703 :700:2006/01/17(火) 23:56:47
>>702
自分だってやりたくないですよ・・・
でも圧縮できないとなると計画が全てパーなんで;;;


んでなんとか出来ました。.NETのクラスライブラリのリファレンスに、
「Compressedは読み取り専用です」なんてどこにも書いてないよなあ。
これはひどい。

704 :696:2006/01/17(火) 23:59:18
ブラウザのパケット見てヘッダーを加えていったら
UserAgentにMozilla/4.0 () を設定してみたら返してくれるようになりました。
つかれた(;´Д`)

705 :デフォルトの名無しさん:2006/01/18(水) 00:01:29
>>703
SetAttributesでCompress指定したら、圧縮属性は付くよ。圧縮されないだけで。

706 :デフォルトの名無しさん:2006/01/18(水) 01:43:06
VS2005で、ビルドの構成のCPUについてなんですが
ふつうに32bitOSで使うときAny CPU とx86ってどっち使ってます?

なんか字面からするとx86のほうが最適化できるような気がするんですが


707 :デフォルトの名無しさん:2006/01/18(水) 01:57:57
>>706
最適化には無関係なのでAnyCPUを使え。
CPU固定は、参照してるライブラリの制限とかその他の理由でCPUを限定したいときにだけ使う。

708 :700:2006/01/18(水) 09:07:31
>>705
string path = @"c:\適当なファイル.txt";
FileAttributes fa = File.GetAttributes(path);
Console.WriteLine(fa);
fa |= FileAttributes.Compressed;
File.SetAttributes(path, fa);
Console.WriteLine(fa);
Console.WriteLine(File.GetAttributes(path));

出力された文字列
Archive, NotContentIndexed
Archive, Compressed, NotContentIndexed
Archive, NotContentIndexed

付いてないようです。

709 :デフォルトの名無しさん:2006/01/18(水) 09:21:31
今日VS2005インストールして、C#2.0使ったんだが、反復子便利だねえ

710 :デフォルトの名無しさん:2006/01/18(水) 09:25:27
yield か?
俺に言わせりゃゴミ機能

711 :デフォルトの名無しさん:2006/01/18(水) 10:05:36
>>707
thx

712 :デフォルトの名無しさん:2006/01/18(水) 11:18:00
実際のとこ、この機能は使うもんかな?
色々な面をひっくるめて考えて。

まあ、単純に機能としては便利かも知れんが。


713 :デフォルトの名無しさん:2006/01/18(水) 11:23:42
yieldむっちゃ便利ですが?

714 :デフォルトの名無しさん:2006/01/18(水) 11:52:44
今のところyield使う場面には遭遇してないが、なんとなく使ってみたい。

715 :デフォルトの名無しさん:2006/01/18(水) 12:12:39
yieldは何よりMSがほしかったんでは?
ライブラリ作るのめんどくせー とか

716 :デフォルトの名無しさん:2006/01/18(水) 12:23:31
yieldないと確かにGetEnumratorとか実装する気にならんな。

717 :デフォルトの名無しさん:2006/01/18(水) 12:59:51
Windows Forms のButtonに絵を出したいとき、2003だと視覚テーマを
無効にしないと出せませんが、(FlatStyleをSystemにすると絵が出ない)
2005だとどうなってますか?
ちょっと手元に2005がないもので。


718 :デフォルトの名無しさん:2006/01/18(水) 13:55:29
>>717
スタイルと貼り付けた絵が共存してるよ

719 :デフォルトの名無しさん:2006/01/18(水) 14:39:39
マイクロスレッド的に使つかえんかなと妄想中>yield

720 :デフォルトの名無しさん:2006/01/18(水) 17:08:22
「あるテキストボックスがnullか空の時・・・」というif文を書くとき、

if ((this.txtTEST.TEXT == null) || (this.txtTEST.TEXT == "")){・・・}

と書いたんですが、たとえばVB(VBA)ではnz関数というのがあるので

if nz(Me.txtTEST,"") = "" Then

と、nullの時も空文字列の時も判別出来たのですが、
このnz関数のようなものはありますか?

また、上のように書くのはC#的には正しいのでしょうか?

721 :デフォルトの名無しさん:2006/01/18(水) 17:10:35
2.0からあったはずだけど忘れたw


722 :デフォルトの名無しさん:2006/01/18(水) 17:15:37
string.IsNullOrEmpty

723 :デフォルトの名無しさん:2006/01/18(水) 18:00:46
VS2003と.NetFramework1.1でWebアプリを作っています。
ユーザーが半角数字で生年月日を入力したものをDateTimeに入れるにはどうすれば良いんでしょうか?
現状ではテキストボックスを年(y)、月(m)、日(d)の3つを用意して
int year=Convert.ToInt32(y);
int month=Convert.ToInt32(m);
int day=Convert.ToInt32(d);
DateTime dt = new DateTime(year,month,day)
int year = dt.Year;

と言うような形で取得しているのですが、国が変わった時にもこのやり方でランタイムエラーを
出すことなく値を取得する事が出来るのでしょうか?
リファレンスを読むんだのですがグローバリゼーションの所がイマイチ理解出来ずにいます。


724 :デフォルトの名無しさん:2006/01/18(水) 18:54:36
>>723
大丈夫。

国(カルチャ)が関係するのって、 "2006年2月29日"みたいな文字列を
DateTime.Parseメソッドとかに渡す場合。

725 :デフォルトの名無しさん:2006/01/18(水) 19:42:40
>>724
回答、ありがとうございます。
これで気兼ねなく次のコーディングに進めます。

726 :デフォルトの名無しさん:2006/01/18(水) 23:19:20
.NET 2.0になってEventHandlerジェネリックデリゲートが出来たことで、
もしかして今まで○○EventHandlerってデリゲートが大量に存在するのはもう不必要?

727 :デフォルトの名無しさん:2006/01/18(水) 23:38:52
今後は新たに 〜〜EventHandler を定義することはないだろうね

728 :720:2006/01/18(水) 23:50:30
>>721,722
ありがとうございました。
ちゃんとバージョンも書かないといけなかったですね。
まあ、それほど手間が掛かるってわけではないのですが、スマートな書き方
があればそっちの方がいいかなと思って質問しました。

729 :デフォルトの名無しさん:2006/01/19(木) 00:31:29 ?
C#でWEBアプリを作成しています。
親画面から子画面を呼び出して、検索を行い値(2つ)を親画面に
戻すんですが、親に値をどのようにして渡せばいいのか分からず困ってます。

んで条件もあって親画面は開いたままで、リロード処理を行わない方法で子より値を渡さないといけないんです。
それでいろいろ調べた結果javascriptの、window.opener.document.Form1.〜〜〜を
使えばいいのかと考え、無理やりopenerを2つ並べて試したりしたんですけど、
上手くできません。

どなたか解決策を教えてください。よろしくです。




730 :デフォルトの名無しさん:2006/01/19(木) 00:49:57
質問です。

ユーザーコントロールで、フォームにコントロールを配置する時だけ
実行したい処理があるときはどうしたらいいのでしょうか?
UserControlのForm_Load時に設定すると、実行時にも呼び出されてしまうので
困っています。

やりたいことは、スイッチのON・OFFを表現するプログラムで、
Flg = true ; //スイッチをオンにする
をコントロール貼り付け時に呼び出し、
プロパティSwitchFlg = trueにするように作りたいのです。

環境は VS2003です。
どうか、よろしくお願いします。

731 :デフォルトの名無しさん:2006/01/19(木) 00:58:29
>>730
プロパティ定義の頭に
[DefaultValueAttribute(true)]

732 :デフォルトの名無しさん:2006/01/19(木) 10:37:38
流れを読まずに申し訳ないけど無いけど相談に乗っておくれ
その間にこのスレだけはROMっとくので

今度の案件でC#+ASP.NETを使うらしいんだ
んで、なにを覚えておけばいいやらわからないんで
アドバイスや気をつけておくべきことは無いものだろうか
まわりに環境無いんで触って見ようにも触れないんだわ
挫折しそうなポイントとかあれば先につぶしておきたい

とりあえず本買って読むぐらいしかないかねぇ

前提:
C#はこれまで触ったことがない、ASPも同様
VBは高校からWEBとヘルプだけでやってきた
趣味でVB使ってゲーム作ったりしてたときはCのような組み方だといわれた
(多分VBなのにコントロールほとんど使わずモジュール内だけでWinAPI使って組んでたからだろうとおもう)
専門学校でCを1週間習った、Javaを半年習った(基礎+アプレット程度)
4月で社会人2年生になる。これまでの業務経験はVB・AccessVBAばっかり
ロジック組むのは割りと自身があるがオリジナリティあふれるというか世間一般でどうやってるのか知らない

733 :デフォルトの名無しさん:2006/01/19(木) 11:05:08
windows forms のカスタムコントロールを作成しています。

コントロールがのっているコンテナ(親フォーム)の、
コントロールがのっている部分の画像を取得するには
どのようにしたらよいでしょうか?

いびつな形のコントロールで、親フォームの背景画像を透過させて
あげる必要があり四苦八苦しています。
コントロールがのっている画像を取得し、コントロール側の透過部分と
合成して描画してあげればいいかな、と思っています。


アドバイスよろしくお願いします。


734 :デフォルトの名無しさん:2006/01/19(木) 11:16:32
悩んでいます。。
海外仕様のサーバーに.aspxのページをあげたんですが、アクセスすると403.1エラーが出ます。
cgiやisapiなんて使わず、Javaを二行(データベースのデータ削除の確認用)使っているだけで
ほかは全てC#で組んでいます。
ですがそのページにアクセスするとcgiやisapiのエラーと言った旨のエラーメッセージが
表示されます。
同じような経験をされた方はいらっしゃいませんか?

735 :デフォルトの名無しさん:2006/01/19(木) 12:53:12
>>734
asp.net 自体がisapiで実装されてるからね。実行が許可されていないだけでは。
そのサーバーというのはそもそもasp.netはサポートしてるの?

736 :734:2006/01/19(木) 14:06:58
>>735
.NET自体がisapiだっだんですか。知らなかったorz

サーバー自体はASPに対応してるはずです。
順を追って説明すると
暫定版WEBアプリをサーバーの仮想ディレクトリに載せる

この時点での動作はIEで確認出来た

細かい改良と追加プログラムを入れて修正版を載せる

同じようにIEから確認する

403.1エラーが発生
という感じです。

737 :デフォルトの名無しさん:2006/01/19(木) 14:47:54
それは普通修正した部分のバグじゃないの?


738 :734:2006/01/19(木) 15:13:56
>>737
LOCALHOST上でVS2003でデバッグすると動作したんですが、サーバーにあげると
出るバグってあるんですかorz
捜してるんですが見つからない。。
MSDNにもそういった記述が無いようなのですがサーバー上で起こるバグを発見する
デバッグのテクニックと言うのはないんでしょうか?

739 :デフォルトの名無しさん:2006/01/19(木) 15:21:02
>>738 ASPよくしらんがファイルに書き込めるんだったら、普通にファイルにどこまで進んだかとか書いてデバッグするがよろし。

740 :デフォルトの名無しさん:2006/01/19(木) 15:39:56
ありがとうございます。無事動きました。

741 :デフォルトの名無しさん:2006/01/19(木) 15:40:50
あ、↑は730です(汗)

742 :デフォルトの名無しさん:2006/01/19(木) 15:43:56
>>740 バグ内容ぐらい報告知る

743 :デフォルトの名無しさん:2006/01/19(木) 16:10:27
>>738
そういう現象のときはたいてい権限周り。

744 :734:2006/01/19(木) 19:04:20
なんとか403.1エラーは消えました。
結果から言うと、仮想ディレクトリの権限の設定でした。
自分で修正したのではない為、理解できていませんがorz
貴重な時間をさいて知恵を貸してくださった方々ありがとうございます。

745 :734:2006/01/19(木) 19:17:03
やっと見えたので報告です。
仮想ディレクトリを最初に作成した時は実行アクセス許可をしていたのですが
Webアプリを作成していく間に、いつの間にか実行アクセス許可が[なし]に切り替わっていた
事が原因でした。
仮想ディレクトリは全く触っていないのに設定が変わったのは謎ですが。。
403.1エラーが出たときは一番に実行アクセス許可を疑うと。
覚え書きもかねて書き込んでおきます。

746 :デフォルトの名無しさん:2006/01/19(木) 21:00:30
2.0で新しく追加されたTextBox等のAutoCompleteなんですが、
これに別インスタンスからアクセスすると例外を出すかフリーズしてしまいます。
そういうものなのでしょうか?



747 :デフォルトの名無しさん:2006/01/19(木) 23:01:24
>>732
とりあえずオブジェクト指向について猛勉強しろよっと

748 :デフォルトの名無しさん:2006/01/20(金) 01:57:09
> 2.0で新しく追加されたTextBox等のAutoCompleteなんですが、
> これに別インスタンスからアクセスすると例外を出すかフリーズしてしまいます。

普通は別インスタンスからアクセスするものだと思うんだがよ?


749 :デフォルトの名無しさん:2006/01/20(金) 08:00:11
つsealed

750 :デフォルトの名無しさん:2006/01/20(金) 09:33:00
>>747
thx
そうだなぁ、確かにJavaでちょろっと習ったくらいで
概念は理解してても実装段階で何をしたらそこから外れてしまうだとか
どういう方法が推奨されてるだとかはまったく知らないからな・・・

OK、そっちから攻めてみることにするよ

751 :デフォルトの名無しさん:2006/01/20(金) 11:36:20
>>746
別にハングも例外も出てないけどどんなケースで出てるんだ?
「別インスタンス」の言葉の使い方を間違ってる可能性が高いがエスパー伊藤で予想すると。
1.IDEのデザイナではなく実行時に設定している。
2.さらにTextBoxをpublicにしてフォームの外から設定している。
3.他のスレッドから設定している。
4.他のプロセスからPostMessegeで文字を送っている。
1と2は問題ない。3だったらハングする。4はしらん。

752 :デフォルトの名無しさん:2006/01/20(金) 13:18:39
>>751
どうも。言葉の使い方間違っててすみません。
他スレッドからアクセスしてました。

それとは別に、アプリから別exeを起動した後のProcess.Exitedイベント
ハンドラでアクセスするとハングor例外。

これもやっぱり
>3.他のスレッドから設定している。
に該当するんですか?


753 :デフォルトの名無しさん:2006/01/20(金) 13:20:47
InvokeRequired 見ろ

754 :デフォルトの名無しさん:2006/01/20(金) 15:23:12
もしくはProcessクラスならSynchronizingObjectを設定


755 :デフォルトの名無しさん:2006/01/20(金) 16:40:33
自動でウェブにアクセスして情報収集するアプリ作ってるのですが、
webBrowserで画像は読み込まないようにする方法ありませんか?
ヘルプ読んでもググっても情報見当たらないのですが。

756 :デフォルトの名無しさん:2006/01/20(金) 16:44:41
情報収集のオートメーションにWebBrowserコントロール使うのがまずどうかと思う

757 :デフォルトの名無しさん:2006/01/20(金) 17:47:57
まあ普通はwebclient等で取ってきてregexで抜き出すわな

758 :デフォルトの名無しさん:2006/01/20(金) 20:04:02
>>756, >>758
レスありがとうございます。
やっぱり駄目ですか。
webBrowserだとログインとか楽なんでこれでいけないかと思ったんですが。




759 :デフォルトの名無しさん:2006/01/20(金) 20:23:44
>>758
自分でいっといてなんだけど IInternetSecurityManager 使えばできるかもしれん

760 :デフォルトの名無しさん:2006/01/20(金) 22:04:32
tcpChannelでリモート処理を使っているのですが、
リスニングするアドレスを127.0.0.1に限定することはできますか?
現在の設定は下記のとおりです。
<configuration>
   <system.runtime.remoting>
      <application>
         <service>
            <wellknown 
               type="testpgm1.func1Service, testpgm1" 
               objectUri="func1Service.rem" 
               mode="SingleCall"
            />
         </service>
         <channels>
            <channel ref="tcp" port="14481"/>
         </channels>
      </application>
   </system.runtime.remoting>
</configuration>


761 :デフォルトの名無しさん:2006/01/21(土) 01:12:18
今、それぞれの階層に別の意味を持つデータ構造のものを作ろうとしてます。
(DataSet→DataTable→DataRowみたいな感じ)
またそれぞれの階層で変更があった場合にイベントで通知するつもりです。
この場合C# 2としてはどのように実装するのが美しいのでしょうか?
例)CollectionBase継承、IList実装+List<T>フィールド内蔵

762 :デフォルトの名無しさん:2006/01/21(土) 17:08:04
Mutexって、using使って自動的にClose()が呼ばれるようにした場合、ReleaseMutex()は呼ばなくてもOK?

763 :デフォルトの名無しさん:2006/01/21(土) 17:11:02
OK。

764 :デフォルトの名無しさん:2006/01/21(土) 17:11:50
サンキュー

実験だとOKのように見えたけどいまいち自信を持てなかったんだ

765 :デフォルトの名無しさん:2006/01/21(土) 20:24:05
.NET以外でC#って使われないのかなあ。
.NETに対していろいろ言う人はいるけど、C#は素晴らしいと思う。
C#でネイティブアプリを作れたりするようにならないのかな。

766 :デフォルトの名無しさん:2006/01/21(土) 20:37:56
C#よりも普及度が高いであろうJavaですら
ネイティブコンパイルすることなんてあんまりないのに

767 :デフォルトの名無しさん:2006/01/21(土) 21:05:21
C#そのものは最低限しかないから素晴らしいってほどのもんでもないなぁ
.NETのライブラリがバックグラウンドに存在するからこそだと思う

768 :デフォルトの名無しさん:2006/01/21(土) 21:52:51
しかしCodeProjectはすごいな
FontのSerializeで困って行ってみたらみごとにやり方があったし。

769 :デフォルトの名無しさん:2006/01/21(土) 21:54:27
いや、それは割りとFAQ

770 :デフォルトの名無しさん:2006/01/21(土) 22:11:45
>>768 どうやんの?フォント名とか持っとくだけじゃだめなの?

771 :デフォルトの名無しさん:2006/01/21(土) 22:16:51
つ ttp://www.codeproject.com/soap/xmlsettings.asp

772 :デフォルトの名無しさん:2006/01/21(土) 22:20:23
>>771
要約して

773 :デフォルトの名無しさん:2006/01/21(土) 22:24:53
設定ダイアログを閉じたときに設定を本体の方へ反映したいのですが
プログラムの再起動以外に方法はありますか?

774 :デフォルトの名無しさん:2006/01/21(土) 22:28:13
>>772
public struct XmlFont{
 public string FontFamily;
 public GraphicsUnit GraphicsUnit;
 public float Size;
 public FontStyle Style;

 public XmlFont(Font f){ ... }

 public Font ToFont(){ ... }
}

775 :デフォルトの名無しさん:2006/01/21(土) 22:31:53
>>774
結局は>>770と同じじゃん

776 :デフォルトの名無しさん:2006/01/21(土) 22:50:48
到達するはずがないと思われるコードパスに
明示するために書いておくと適当と思われる例外はなんでしょうか。

if (a < b)
  return -1;
else if (b < a)
  return 1;
else if (a == b)
  return 0;

という風に書くとエラーになるんで最後に例外投げることにしようと思うんですが。
# 最後のelse if節は敢えてelseにはしてません。


777 :デフォルトの名無しさん:2006/01/21(土) 22:59:31
俺ルールだと
a や b が引数ならば ArgumentException
フィールドならば InvalidOperationException

778 :デフォルトの名無しさん:2006/01/21(土) 23:00:44
Debug.Assert(false); も良いかも

779 :デフォルトの名無しさん:2006/01/21(土) 23:13:20
みんな意外と色々知ってるな

780 :776:2006/01/21(土) 23:19:51
ありがとうございます。

>>777
ここを通ったら環境云々以前にまず例外発生場所のロジックを疑えというようなニュアンスが欲しいんですよ。

>>778
コードの主張としてはそういうことなんですが、
コンパイルエラー「値を返さないコードパスがあります。」
を通すという意図がありまして、単なる関数呼び出しではなく例外スローにしたいのです。


781 :デフォルトの名無しさん:2006/01/21(土) 23:31:25
ApplicationException

782 :デフォルトの名無しさん:2006/01/21(土) 23:31:34
InvalidProgramExceptionとか、WarningExceptionとかどうかな

783 :デフォルトの名無しさん:2006/01/21(土) 23:41:49
普通に Exception でいいんじゃね
デザイナでコントロールをダブルクリックして作成されるイベントハンドラは
throw new Exception("This method is not implimented");
とかじゃなかったっけ

784 :デフォルトの名無しさん:2006/01/21(土) 23:49:40
UnExpectedPathExceptionとか?

785 :デフォルトの名無しさん:2006/01/21(土) 23:56:25
これって前からそう?
何かで、ユーザー独自の例外はApplicationExceptionを使えって習ったんだけど。。。


System.ApplicationException をスローしたり、System.ApplicationException から派生したりしないでください。
http://msdn2.microsoft.com/ja-jp/ms229007.aspx
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.ja/dv_fxdesignguide/html/ab22ce03-78f9-4dca-8824-c7ed3bdccc27.htm


ApplicationException からカスタム例外を派生させることは推奨されていない
http://msdn2.microsoft.com/ja-jp/ms229064(ja-jp,VS.80).aspx
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.ja/dv_fxdesignguide/html/eede32ea-1fe9-4a9b-a70a-749840b92e26.htm

786 :デフォルトの名無しさん:2006/01/22(日) 00:00:05
2.0で方針転換。
それまで例外に対する議論が結構あったから、それを反映したんだろね。

787 :デフォルトの名無しさん:2006/01/22(日) 00:05:34
ControlのInvokeメソッドに渡すデリゲートを匿名メソッドにしたいんですが、うまくいきません。

this.Invoke(delegate() {
MessageBox.Show("test");
});


コンパイルすると、
エラー 2 'System.Windows.Forms.Control.Invoke(System.Delegate)' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。
エラー 3 引数 '1': '匿名メソッド' から 'System.Delegate' に変換できません。
となってしまいます。


System.Delegateはdelegate型ではないのでダメってことですかね?
これが出来ないとかなり面倒くさいなあ。

788 :デフォルトの名無しさん:2006/01/22(日) 00:06:03
>>773
ダイアログのクラスをDisposeする前にメンバにアクセス

789 :776:2006/01/22(日) 00:08:53
んー、なんかしっくりくるのがないので、派生定義することにします。
アプリレベルでないものはできるだけ共通言語を使いたいんですけどね。

>>783 >>785
>System.Exception や System.SystemException はスローしないでください。
VSが非推奨コードを吐くのってどうなんでしょうね・・・


790 :デフォルトの名無しさん:2006/01/22(日) 00:12:58
>>787
Delegateは抽象型だから、具体的にどんなデリゲートを作ればいいのかコンパイラが判断できない。
this.Invoke(new ThreadStart(delegate {
   MessageBox.Show("test");
}));
とかいう風に明示すればよし。確かにちょっとコーディングは長くなるが。

791 :デフォルトの名無しさん:2006/01/22(日) 00:13:11
俺も思った。
throw new Exception("This method is not implimented");
じゃなくて NotSupportedExceptionにしときゃいいのにねえ。

792 :デフォルトの名無しさん:2006/01/22(日) 00:13:23
>>787
ThreadStartでもnewしてその引数にいれとけ

793 :デフォルトの名無しさん:2006/01/22(日) 00:14:36
>>791
> NotSupportedException
NotImplemenetedExceptionの方が妥当だな

794 :787:2006/01/22(日) 00:19:11
>>790
>>792
キタ━━━━━━(゚∀゚)━━━━━━ !!

てか言われて見れば当たり前ですね。。。ありがとう。

795 :デフォルトの名無しさん:2006/01/22(日) 00:26:05
>>785
俺なんて

try{
ほげほげ
}catch{
}

なんてコードが山ほどあるぜ

796 :デフォルトの名無しさん:2006/01/22(日) 00:56:40
>>789
VSが吐くコードはカスタマイズできるよ。
ttp://www.divakk.co.jp/blog/aoyagi/archive/2005/12/09/7094.aspx

797 :デフォルトの名無しさん:2006/01/22(日) 01:09:05
>>796
カスタマイズできればいいとかいう次元の問題ではなくて

798 :デフォルトの名無しさん:2006/01/22(日) 01:14:57
何でデフォルトでそうなのかって言うのが問題だよな

799 :デフォルトの名無しさん:2006/01/22(日) 01:20:39
>>797-798
まあ言いたいことはわからんでもない。
そういうのはMSにフィードバックしたほうがこの先いいと思う。

800 :デフォルトの名無しさん:2006/01/22(日) 03:20:19
.netで最も手軽にwmvなどのメディアファイルをWindows.Forms.Form内で
再生する方法は?

801 :デフォルトの名無しさん:2006/01/22(日) 05:07:40
まずどの段階での手軽かと言うところから定義が必要だな

802 :デフォルトの名無しさん:2006/01/22(日) 06:31:30
なんでMethodInvokerつかわねーんだよ


803 :デフォルトの名無しさん:2006/01/22(日) 10:29:09
なんでリフレクションでメソッドとか呼ぶと、
例外の扱いが違うんだ。
勝手にラップしてんじゃねぇ。
せめて情報を減らさずに元に戻せる方法を…


804 :デフォルトの名無しさん:2006/01/22(日) 13:06:36
>>795
俺も良く使うわそれ・・・
もしくはエラーログだけ投げておくとかで

805 :760:2006/01/22(日) 13:14:27
TcpChannelでは見つけられなかったのですが、
.NET2.0でIpcChannelというのが追加になっていてこれがローカル専用のようです。
<channel ref="ipc" portName="xxxxx"/> 

806 :デフォルトの名無しさん:2006/01/22(日) 15:21:55
>>785
うげー、まじか
ApplicationExceptionを使えとCodeZineかどこかで見た覚えが・・
ショックだ

807 :デフォルトの名無しさん:2006/01/22(日) 16:00:35
ルールが変わったんだよ

ttp://d.hatena.ne.jp/akiramei/20051225/p1

808 :デフォルトの名無しさん:2006/01/22(日) 16:25:37
C#の質問かどうか微妙なんですが

シーク不能なストリーム(標準入力とかNetworkStreamとか)から、
複数のデータが順番に流れてきて、大体10バイト程度の区切りがそれぞれのデータの間についている。
流れてくるデータの合計サイズは巨大で予測不能で、全てをいっぺんにメモリに読み込むことは不可能。
そして、例えば3つめのデータの塊だけをファイルに保存したい。

こういう状況の場合、1バイトずつ読み取って区切りかどうかを判断しなければならないですかね?

809 :デフォルトの名無しさん:2006/01/22(日) 16:35:10
別に読み取るのは1バイトずつじゃなくても良いが、
判断はそりゃ1バイトずつ調べにゃならんだろう。

810 :デフォルトの名無しさん:2006/01/22(日) 16:40:07
>>808
TextReaderのReadLineメソッドを逆コンパイルみそ。
TextReaderは1文字読み取ってCRか、そしたら次の文字はLFか、を調べてる。

内部にバッファがあるからStringReaderやStreamReaderはoverrideしてるけど

811 :デフォルトの名無しさん:2006/01/22(日) 18:34:28
ん〜結局ApplicationExceptionの代わりにどうすりゃいいのさ?

適当なExceptionから派生しろってこと?

812 :デフォルトの名無しさん:2006/01/22(日) 18:51:53
> System.Exception または他の一般的な基本例外のいずれかから例外を派生させます。
> 「標準の例外の種類のキャッチとスロー」のガイドラインに示されているように、
> ApplicationException からカスタム例外を派生させることは推奨されていない点に注意します。

813 :デフォルトの名無しさん:2006/01/22(日) 19:25:05
エディタによくEOFとか改行マークって表示されますよね。
あれって標準で何かありますか?
それともみんな画像用意してやってるんでしょうか。


814 :デフォルトの名無しさん:2006/01/22(日) 19:34:33
もちろん手書き。

815 :デフォルトの名無しさん:2006/01/22(日) 20:02:13
そですか。
とりあえずWingdings等の絵文字フォントでやればいいかな。


816 :デフォルトの名無しさん:2006/01/23(月) 11:47:07
http://msdn2.microsoft.com/en-us/library/system.io.driveinfo.isready.aspx

ここに、論理ドライブ一覧を取得して、それが利用可能かどうかチェックする
サンプルがあるのですが、これを、自分の指定したドライブのみをチェックする
にはどうすればいいのでしょうか?
まだ挿していない USB メモリの情報のチェックに使いたいの
DriveInfo.GetDrives() で取得できるドライブ以外もallDrivesに追加したいのです。


817 :816:2006/01/23(月) 11:53:06
具体的に言うと、これからUSBメモリが刺さるF:\からI:\までのドライブに対して
USBメモリが挿して利用可能になったかを一覧で情報が取得したいのです。


818 :861:2006/01/23(月) 13:09:14
なんどもすいません。

DriveInfo[] allDrives = DriveInfo.GetDrives();
Console.WriteLine(allDrives[0]);

とすると、C:\ と表示される。
そこで

DriveInfo[] allDrives = DriveInfo.GetDrives();
allDrives[0] = "F:\\";
Console.WriteLine(allDrives[0]);

なんてしてみると、「型 'string' を型 'System.IO.DriveInfo' に暗黙的に変換できません。」
と出てしまう・・。string を System.IO.DriveInfo に型変換すればいいのだろうか。。。
これを解決するヒントをください。

819 :デフォルトの名無しさん:2006/01/23(月) 13:28:48
普通にDriveInfoのコンストラクタ
DriveInfo di = new DriveInfo( driveName );


>Console.WriteLine(allDrives[0]);
これは暗黙的にToStringしてるの。



820 :816:2006/01/23(月) 14:02:15
>>819
ありがとうございました。コンストラクタを調べてみます。

821 :デフォルトの名無しさん:2006/01/23(月) 17:10:37
ListViewのカラムやアイテムをCSVとしてファイルに書き出したいのですが、

foreach (ListViewItem item in listView.Items)
{
string[] str = 【itemのSubItemsをstring配列にしたもの】;
streamWriter.WriteLine(String.Join(",", str));
}

としようと思っているのですが、itemをstring[]に変換する方法がわかりません。
うまい方法や、ListView⇔CSVの常套手段があったらご教授願います (ペコリ

822 :デフォルトの名無しさん:2006/01/23(月) 17:21:50
SubItemsをforeachで見ていけばいいだろ

823 :821:2006/01/23(月) 17:31:48
>>822
やはり地道が一番ですかね。。。ありがとうございました (ペコリ

824 :720:2006/01/23(月) 17:46:10
DataGridでデータを入力して別の行に移動するとデータが確定しますが、
それをプログラムから確定させることはできませんか?

DataGridColumnStyle dgc = dataGrid.TableStyles[0].GridColumnStyles[0];
grdMain.EndEdit(dgc, this.dataGrid.CurrentCell.RowNumber, false);

などとやってみたのですがうまくいきませんでした。

何をしたいかというと、KeyDownイベントを取得して、
入力された文字一文字ごとに検索をしたいと思います。

"a"が入力されたら "〜 like 'a%'"で抽出
"ab"が入力されたら "〜 like 'ab%'"で抽出
として少しずつ条件を絞っていきたいと思います。

825 :デフォルトの名無しさん:2006/01/23(月) 21:19:24
>>824
たしか、ProcessCmdKeyメソッドをオーバーライドしてやらなければ、
DataGrid上でのKeyDownイベントは拾えなかったはず。
#甘利ちゃんと調べずに書いたので、詳細は自分で確認してくれ

826 :デフォルトの名無しさん:2006/01/24(火) 06:29:33
System.Net.Socket の UDP 送受信の初歩的なところでつまずいています。どなたかお教え頂けないでしょうか?

http://msdn.microsoft.com/library/ja/cpref/html/frlrfSystemNetSocketsSocketClassSendToTopic.asp にある
C#サンプルで受信エラーになるんです。サンプルをそのまま貼っただけなのに...orz

UDP パケットを送信して 受信するだけなのですが、受信メソッドで以下のエラーが発生します。

  既存の接続はリモートホストに強制的に切断されました。

どうかよろしくお願いします。



827 :デフォルトの名無しさん:2006/01/24(火) 06:36:49
>>826 ですが、ソースを貼ります。以下をコンソールアプリケーションのMainに挿入するだけです。お願いします。

IPHostEntry lipa = Dns.Resolve("localhost");
IPEndPoint lep = new IPEndPoint(lipa.AddressList[0], 11000);

Socket s = new Socket(lep.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);

byte[] msg = Encoding.ASCII.GetBytes("This is a test");

try
{
s.SendTo(msg, 0, msg.Length, SocketFlags.None, lep);

IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint tempRemoteEP = (EndPoint)sender;

byte[] buffer = new byte[1024];

s.ReceiveFrom(buffer, 0, 100, SocketFlags.None, ref tempRemoteEP);

Console.WriteLine(" I received the following message : " +
Encoding.ASCII.GetString(buffer));
}
catch(Exception e)
{
Console.WriteLine("Exception : " + e.ToString());
}

828 :デフォルトの名無しさん:2006/01/24(火) 07:20:42
すみません。自己解決しました。

これは自分に送って自分で受けるサンプルではなかったのですね...orz  お騒がせしました。

829 :デフォルトの名無しさん:2006/01/24(火) 11:04:14

        ∧∧
       ヽ(・ω・)/   ズコー
      \(.\ ノ
    、ハ,,、  ̄
     ̄



830 :デフォルトの名無しさん:2006/01/24(火) 12:26:22
>>825
ありがとうございます。
なんとかキーボードイベントを取得できました。
KeyUpイベントでデータを拾えました。

831 :デフォルトの名無しさん:2006/01/24(火) 18:47:08
C#で作ったクラスをVB.netで継承したり、
VB.netで作ったクラスをC#で継承したりすることって可能?
例えば、C#で Hoge というクラスを作ってコンパイルする
で、出来上がった Hoge.dll をVB.netで参照して利用する
これができるとかなり便利なんだが・・・

832 :デフォルトの名無しさん:2006/01/24(火) 18:49:01
可能だよ。
そうでなきゃFormの派生クラスとか作れないじゃないか。

833 :デフォルトの名無しさん:2006/01/24(火) 19:06:18
若干の注意や制限はあるけどね。


834 :デフォルトの名無しさん:2006/01/24(火) 19:28:01
>>832-833
トンクス!

835 :デフォルトの名無しさん:2006/01/25(水) 00:15:10
クラス設計について質問です。
渡されたオブジェクトに対し何らかの処理をする必要があり、その処理が幾通りもあるとします。
そして、それぞれの処理は、処理を施せるオブジェクトとできないオブジェクトがあるとします。
コードにすると、感覚的には下のような感じです。(もちろんコンパイルは通りません。)

ここで問題になるのは、
 ・static関数をinterfaceのメンバにできない
 ・「型の配列」(下のコードでのtypes)を作れない
の2点です。

解決方法としては、
 ・staticをはずし、「型の配列」を「インスタンスの配列」にする
 ・staticをはずし、「型の配列」を「Type型の配列」にし、リフレクションで呼び出す

の二つを思いつきましたが、それぞれ
 ・「各クラスごとに、意味のないインスタンスを余分に用意する必要がある」
 ・「リフレクションのオーバーヘッド」+「煩雑」

という短所があります。
このようなケースをスマートに記述する方法はないでしょうか?
 

836 :デフォルトの名無しさん:2006/01/25(水) 00:16:29
// 以下コード

interface IProcessor {
 static bool CanProcess(object target);
 void PrepareForProcess(object target);
 void DoProcess();
}
class ProcessorA : IProcessor { ... }
class ProcessorB : IProcessor { ... }
class ProcessorC : IProcessor { ... }
class ProcessorManager {
 IProcessor[] types = { ProcessorA, ProcessorB, ProcessorC };
 IProcessor GetProcessor(object target) {
  foreach (T in types) {
   if (T.CanProcess(target)) { return new T(); }
  }
  return null;
 }
}

// 以上

837 :デフォルトの名無しさん:2006/01/25(水) 00:25:44
シングルトン
new IProcesser[]{new ProcessorA(), ....}

838 :デフォルトの名無しさん:2006/01/25(水) 00:33:51
属性を使う手もあるがイマイチこの場合にはしっくりこないなぁ……。

839 :デフォルトの名無しさん:2006/01/25(水) 00:43:58
Processorの数が膨大でなければ、インスタンス作っとく。
ちなみにTargetとProcessはどんなものを想定してるの?場合によっちゃその設計からしなおしたほうがいいかも。

840 :デフォルトの名無しさん:2006/01/25(水) 01:02:16
やっぱり各Processor実装にシングルトンメンバを持たせて、
型配列の代わりにシングルトンフィールドをわたす、とかかな。
シングルトンフィールドに関するコントラクトが定義できないのがいやだが、
まあ、型配列作るときにお約束にしとくしかないかな。


841 :デフォルトの名無しさん:2006/01/25(水) 01:04:19
まあ、Processorが状態を持つようだと、
これでも無駄なインスタンスを用意することにはなるが。


842 :デフォルトの名無しさん:2006/01/25(水) 01:08:17
>>840 シングルトンフィールド渡してターゲットを処理できるかの判定はどうすんの?

843 :835:2006/01/25(水) 01:15:05
>>837-842
早速のレスどうもです。
>>837,840
説明が不足していましたが、
PrepareForProcess で情報をメンバに格納して、DoProcess でその情報に対して処理をするといった感じなので、シングルトンでは
できない気がします。また、複数のスレッドから呼び出されないとも限らないです。

>>839
上の例とはだいぶ違いますが、実際は DoProcessとして「複数の項目をリストアップする」処理をしようと思っています。
target は、場所を表す一意の文字列(ファイルシステムのパス、書庫内の相対パスを含むパスなど)です。
PrepareForProcess で項目の配列(やリストやツリー)を用意して、DoProcess(実際はGetItemのような名前になります)で項目を取得します。

ProcessorA : ファイルシステムのファイルをリストするクラス
ProcessorB : 書庫内のファイルをリストするクラス
ProcessorC : FTPファイルをリストするクラス
:
のような感じになるかと思います。(名前は違いますが)
たしかに、これが膨大な数になることはない(せいぜい増えて10以下?)ので、インスタンスを作っておくのも
手かも知れません。


844 :デフォルトの名無しさん:2006/01/25(水) 08:19:27
>>842
シングルトンのフィールドにはインスタンスを入れとくんだから
インスタンスメソッドにして普通に判断できるっしょ。
ただ、>>843で出てきた内容で使えるかは別だが。


845 :デフォルトの名無しさん:2006/01/25(水) 09:37:18
>>843
その各Processorが状態を持たない処理だけを行うのなら、
シングルトンで十分だろ。

846 :デフォルトの名無しさん:2006/01/25(水) 09:56:41
>>845
と決め付けるのもどうかと思うんだ。
後で状態を持った処理を行うProcesserを作りたくなるかもよ?

847 :デフォルトの名無しさん:2006/01/25(水) 10:16:57
あ、わり。
決めつけたわけじゃないんだ、書き方が悪かった。
もし状態がいらないなら、ってだけで。
処理内容から、なんとなくいらなさそう、と思った。


848 :デフォルトの名無しさん:2006/01/25(水) 10:22:37
状態がいるなら、判定用と処理用でインターフェイスを分けて、
判定用クラスのインスタンスダだけシングルトンにすればいい。
Processor実装は、判定用と処理用をペアで実装する。
内部クラスにでもしとけばいい。


849 :デフォルトの名無しさん:2006/01/25(水) 16:34:10
".NET Runtime Optimization Service"に関するドキュメントってないすかね

850 :デフォルトの名無しさん:2006/01/26(木) 09:03:30
クラスや構造体のメンバを宣言順に取り出すことはできますか?
VBで使用していたLSETみたいな関数を自作したいんですが。

851 :デフォルトの名無しさん:2006/01/26(木) 10:21:06
リフレクションでメンバをまとめて読み取る時は宣言順に出てくるような気がする

852 :835:2006/01/26(木) 12:58:44
>>848
レスどうもです。
判定メソッドとインスタンス作成メソッドを別の判定用クラスに分け、そのクラスの配列をManagerクラスで持つことで
うまく実装できました。
どうもありがとうございました。


853 :デフォルトの名無しさん:2006/01/26(木) 13:07:43
>>851
getfieldsメソッドで、メンバの情報を取得して
ループで回すと宣言順には出てくるようなんですが、
この順番は保証されているのかなあと。
StructLayout属性を読取るクラスに指定していれば
大丈夫なんでしょうか。

854 :デフォルトの名無しさん:2006/01/26(木) 14:49:19
保証はされてないよ。実装依存。
.NET2.0までではとりあえず宣言順どおりに出てくるけど。
StructLayoutはこの場合には関係ないな。

855 :850:2006/01/26(木) 15:04:47
>>851
>>854
書き忘れていましたが、レス有難うございます。
では、宣言順に確実に取り出す方法は今のところないと
いうことでしょうか?

856 :デフォルトの名無しさん:2006/01/26(木) 15:07:23
C#2.0でpartialクラスを使えるようになったけどさ、
ソースAとソースBでそれぞれ宣言したフィールド、この場合どっちが宣言順的に先になるの?
って話。

857 :デフォルトの名無しさん:2006/01/26(木) 19:08:18
C#.netというのを最近始めました。
質問です。

form.csというのをちくちくいじって、いじったら動かなくなった上に、元に戻せなくなったので
やり直そうと、セーブせずにC#のアプリを終了させて、もう一度、起動しました。
しかし、なぜか、前の状態のままです。
セーブしてないのに、勝手にセーブされてるんでしょうか?

858 :デフォルトの名無しさん:2006/01/26(木) 19:13:40
まずはパソコンに詳しくなることから始めよう

859 :デフォルトの名無しさん:2006/01/26(木) 20:06:57
ビルドしたらセーブするんじゃねーの

860 :デフォルトの名無しさん:2006/01/26(木) 21:03:46
面白そうだからコード晒してみそ

861 :850:2006/01/26(木) 22:33:18
>>856
遅レスですがありがとうございました。
VB6のソースで、LSETをあちこちで使用して、
違う型の構造体に代入しているものを
C♯に移植しているのですが、
LSETのようなものをC♯でつくれないかなと
考えてるのですが。
いい方法はないようですね。

862 :デフォルトの名無しさん:2006/01/26(木) 22:50:51
そんな旧世代な型を無意味にさせる行為はさっさとやめろってことだな

863 :デフォルトの名無しさん:2006/01/27(金) 01:01:46
Component.Eventsって線形リストでイベントが多いと効率悪いですと書かれているくせに
Formとかイベントがかなり多くてパフォーマンス悪いのではないか?と考えてる漏れは考えすぎですか?

864 :デフォルトの名無しさん:2006/01/27(金) 01:08:12
たかが50やそこらでは大して悪くなる効率も無いだろ
逆に少ないと今度はハッシュテーブルのほうが効率が悪かったりする品

865 :デフォルトの名無しさん:2006/01/27(金) 01:13:46
>>863 イベントが多くては登録されてるイベントリスナーが多いのかイベントの種類が多いのかどっち?
イベントの種類が多くても実行効率にはなんら影響ないと思うが。
リスナーが多くても、削除時に効率悪いだけでイベント挙げるときに葉関係ないと思うが。

866 :デフォルトの名無しさん:2006/01/27(金) 01:25:23
>>863
いや、考えたらなさすぎだろ。
言葉づらじゃなくて正しく意味を読み取らんと。


867 :863:2006/01/27(金) 08:23:54
>>864-866レスサンクス
そうですね、普通リスナを10種類も登録しないし、問題なかったですね。
任意のクラスのpublicなeventに自動的にそれ用のdelegate生成してaddするお勉強アプリ作ったら
微妙にもっさりしてたので、気になったんです。

868 :デフォルトの名無しさん:2006/01/27(金) 18:01:27
他スレでも分からなかったので質問します。
C#でリアルタイム株価情報を取得しようと思い、DDE接続でRequest形式で作りました。
動作が不安定なのでCallback形式に変更しようとしていますが実装がうまく出来ずはまっています。
どなたか具体的に実装の仕方を教えて頂けないでしょうか。

C#2005Expressを使用して作ってあります。
http://nurupo.net/cabinet/hippo/RSS.cs?ak=c6fb27a58fd815673bae167e7fb8f89c

869 :デフォルトの名無しさん:2006/01/27(金) 18:03:21
DDEって何

870 :デフォルトの名無しさん:2006/01/27(金) 18:11:09
具体的にって掲示板ごときでDDEの実装書けってのか。無茶言うな。
DDEMLでも調べてみたらどうだ。

871 :デフォルトの名無しさん:2006/01/27(金) 18:12:24
>>869
DDE(Dynamic Data Exchange)
Windows上でアプリケーションソフト同士がデータやコマンドを行なうための手順の一つ。
Windows 2.0から実装されているが、OLEなどに取って代わられ、現在ではあまり使われていない。
http://e-words.jp/w/DDE.html

だそうです。

872 :デフォルトの名無しさん:2006/01/27(金) 18:15:18
>>870
そうっすか。すいません。DDEMLググってみます。どうも。

873 :デフォルトの名無しさん:2006/01/27(金) 18:37:40
nurupo.net

874 :デフォルトの名無しさん:2006/01/27(金) 19:20:09
ラベルの位置をコードの方で指定したいのですが以下のやり方ではエラーが出ます。
label1.location.X = 10;

どうやったらいいのでしょうか?

label1.Height = 10;
ならうまくいくのに何故でしょう・・。

875 :デフォルトの名無しさん:2006/01/27(金) 19:25:46
label1.Left = 10;

876 :デフォルトの名無しさん:2006/01/27(金) 20:11:11
>>875
ありがとうございます<(_ _)>

あとの3方向は類推します。

877 :デフォルトの名無しさん:2006/01/27(金) 20:23:39
  Ue
Left Migi
  Shita

878 :デフォルトの名無しさん:2006/01/27(金) 20:31:16
そのりくつは おかしい

879 :デフォルトの名無しさん:2006/01/27(金) 20:35:08
 Sky
Left Right
 Sea


880 :デフォルトの名無しさん:2006/01/28(土) 00:06:36
 Heaven
Left Right
 Hell

881 :デフォルトの名無しさん:2006/01/28(土) 11:46:49
Head
Left Right
Tail

882 :デフォルトの名無しさん:2006/01/28(土) 12:22:06
   SaitamaTaiyou
SaitamaHidari SaitamaMigi


883 :デフォルトの名無しさん:2006/01/28(土) 12:45:30
あるフォルダ内のファイルの名前を全て取得するといった処理を行う場合、
その取得されるファイル名は昇順になっていますか?

884 :デフォルトの名無しさん:2006/01/28(土) 12:52:17
>>883
Directory.GetFiles()あたりを使って取得してるなら、返ってくる内容のならびについてはなんら保証されていないので
仮に今、昇順で返ってくるようになっていても将来変更される可能性がある。

885 :デフォルトの名無しさん:2006/01/28(土) 12:53:26
>>884
レスありがとうございます。
では自力でソートした方が無難ですね。

886 :デフォルトの名無しさん:2006/01/28(土) 14:45:49
現在自分の端末にVS.NET2003 1.1
がインストールされているんですけど、

Visual C# 2005 Express Editionを試しに
MSからダウンロードしてインストールしてみようと思いました。
ですが、心配事が一つ。

.NET Framework が2.0にアップデートされちゃうんですか?
もしそうなら、その状態でVS2003(.NET Framework 1.1)を
起動したらどうなるんですか?

以上よろしくおながいします。


887 :デフォルトの名無しさん:2006/01/28(土) 14:50:09
.NETはバージョンが違うのは別物。
別のところにインストールされて別々に動く。

888 :デフォルトの名無しさん:2006/01/28(土) 14:57:29
ありがとうございました!
早速クリックワンスを試してみます。

889 :デフォルトの名無しさん:2006/01/28(土) 21:51:47
インテリセンスで 文字補完で表示される時、その候補のヘルプを見る方法ありますでしょうか?

例えば、label1.t  ってやった時にでてくる Text というコードのヘルプをその場で見たいのですが、無理でしょうか?

890 :デフォルトの名無しさん:2006/01/28(土) 22:02:59
知らないけどそれはまたうざそうだな

891 :デフォルトの名無しさん:2006/01/28(土) 22:27:43
>>890
そうですか・・・。
そういう機能はないのですね。
ありがとうございました。

892 :デフォルトの名無しさん:2006/01/28(土) 22:32:41
テキストボックスでエンターが押されたら発動するイベントを組みたいのですが、
それっぽいイベントが見つかりません。
enter は違うみたいだし・・・。

なんて言うイベントでしょうか?教えてやって下さい<(_ _)>

893 :デフォルトの名無しさん:2006/01/28(土) 22:44:15
AllowEnter で KeyDown とか

894 :892:2006/01/28(土) 22:49:20
>>893
さっそくレスありがとうございます。

ああ〜 キーダウンイベントつかって、エンターが押されたらってif文を作ればいいのですね。
わかりました。

ところで、AllowEnterというのはなんでしょうか?
ググったのですが、ヒットしません(´・ω・`)


895 :デフォルトの名無しさん:2006/01/28(土) 23:47:41
フォー
わけわからん状態になった

メインマシンの WinXP Pro + .NET Framework 1.1 + SharpDevelop 1.1 でコンパイルすると
サブマシンの Win2K + .NET Framework 1.1 で
System.Reflection.TargetInvocationException、ImageList の詠み込みに失敗
イメージリストの部分を サブマシン Win2K で作り直したら動く
メインマシンに .NET Framework 2.0 を入れて消したことが関係しているのだろうか?

ぐぐってると、DEVENV.exe.manifest がほげほげとあるけれど
そんなファイルは手元の環境には無いぞ・・・

誰か助けてくれぃ・・・駄目ですか? orz

896 :デフォルトの名無しさん:2006/01/29(日) 00:06:42
>>894
AllowEnterなんて存在しないし
AcceptsReturnは関係ないし

こんな感じ?

  private void textBox1_KeyDown( object sender, KeyEventArgs e )
  {
   if( e.KeyCode == Keys.Enter )
   {
    System.Media.SystemSounds.Asterisk.Play();
   }
  }

  private void textBox1_KeyPress( object sender, KeyPressEventArgs e )
  {
   if( e.KeyChar == (char)Keys.Enter )
   {
    e.Handled = true;
   }
  }


897 :894:2006/01/29(日) 00:31:39
>>896
わざわざありがとうございます。
どちらも試してみました。

上の方は 以下のエラーがでました。
.Forms.KeyPressEventArgs' に 'KeyCode' の定義がありません。

下の方が以下のエラーがでました。
\Form1.cs(327): 型 'System.Windows.Forms.Keys' を型 'char' に変換できません。

ちょっと調べてみます<(_ _)>



898 :897:2006/01/29(日) 00:39:26
すいません。
key down の場合は KeyCode で
key press の場合は KeyChar を使わなければならなかったのですね。


それに気づけばエラーは出なくなりました。
downとpressの違いでなぜ、変数の形が変わるのか、私には全く分かりませんが(´・ω・`) とりあえず
動いたので、ありがとうございました<(_ _)>

899 :デフォルトの名無しさん:2006/01/29(日) 14:15:29
勉強していると、コードに知らない単語がいっぱいでてきて、そこでつまづいてしまいます。

知らない単語の意味を調べられる、便利な辞書のような本か、サイトがあると助かるのですが、
そういうのはないでしょうか?

try catch とかそういう単語がでてきて、これなんだ??と詰まっています・・・。

900 :デフォルトの名無しさん:2006/01/29(日) 14:26:50
予約語なんだけど

901 :895:2006/01/29(日) 14:31:46
やっと解決した

SharpDevelop\1.1\bin\SharpDevelop.exe.manifest
を削除したらうまく動いた・・・

なんでこんな事になってたんだろう・・・

902 :デフォルトの名無しさん:2006/01/29(日) 14:35:56
>>899
MSDNみろ

903 :デフォルトの名無しさん:2006/01/29(日) 16:13:17
>>899
せめてヘルプ開きながらやろうよ (^^;

904 :デフォルトの名無しさん:2006/01/29(日) 16:25:46
>>899
F1押す

905 :デフォルトの名無しさん:2006/01/29(日) 17:40:00
ソースコードのバックアップを一定時間ごとに取るような
ソフトないですかね?
UIの操作ミスって作り直す羽目に2度もなったんで・・・orz

906 :デフォルトの名無しさん:2006/01/29(日) 17:48:20
WORD

907 :デフォルトの名無しさん:2006/01/29(日) 17:56:35
いくらでもあるんじゃないかと思うんだが。


908 :デフォルトの名無しさん:2006/01/29(日) 17:59:44
自分で作ったプログラムをexeファイルにして、友達に送ったらエラーが出ました。

アプリケーションを正しく初期化出来ませんでした。oxc0000135

というようなエラーが出たそうです。
なぜなんでしょうか?

自分のマシンではもちろん正常に動いていました。
自分も友達も同じWINXPですが、向こうは フレームワークというのを入れてないです。
そのせいでしょうか?

909 :デフォルトの名無しさん:2006/01/29(日) 18:00:10
>>905
作ればいいじゃん
ただしUIの操作ミスんないように

910 :デフォルトの名無しさん:2006/01/29(日) 18:04:36
>>908
.NET Framework入れなきゃ動くわけがない

911 :デフォルトの名無しさん:2006/01/29(日) 19:36:14
>>910
そうなんですか煤i; ̄□ ̄
全く知りませんでした。


では、フリーとかで配布してる人はどうやってるんでしょうか?

912 :デフォルトの名無しさん:2006/01/29(日) 19:42:16
ドキュメントにその旨を書くだけじゃん

913 :デフォルトの名無しさん:2006/01/29(日) 19:54:01
>>912
そうだったのですか・・・・・

ではC#でプログラム作って配布しても、一般人には遊んでもらえないんですね。
知りませんでした_| ̄|○ かなりショックです。

914 :デフォルトの名無しさん:2006/01/29(日) 19:56:02
フレームワークぐらい入れるよ。気にするな。そんな特別なモンじゃない。

915 :デフォルトの名無しさん:2006/01/29(日) 20:04:06
最初から、テキストボックスにカーソルがある状態( |が点滅してる状態)にしたいのですがどうやればいいでしょうか?
テキストボックスのプロパティのどれをいじればいいでしょうか?

916 :デフォルトの名無しさん:2006/01/29(日) 20:17:01
>>915
textBox1.Focus();
文字がある状態だとその後に
textBox1.Select(0, 0);
など適宜に

917 :デフォルトの名無しさん:2006/01/29(日) 20:34:12
>>916
早速レスありがとうございます。
ただ、そのnyuuryoku.Focus(); をどこで実行したらいいのか分かりません。

下みたいに form1のloadイベントで実行したら、最初に実行してくれるかなと思ったのですが、これだとなぜかうまくいきません。
private void Form1_Load(object sender, System.EventArgs e)
{
nyuuryoku.Focus();
nyuuryoku.Select(0, 0);
}

下みたいにボタンクリックのイベントで実行したら、確かにそっちにカーソルがいったのですが、これではダメだし・・・。
private void button1_Click_1(object sender, System.EventArgs e)
{
nyuuryoku.Focus();
nyuuryoku.Select(0, 0);
}

重ね重ねすみません。

918 :デフォルトの名無しさん:2006/01/29(日) 20:42:01
>>917
http://www.atmarkit.co.jp/fdotnet/dotnettips/226winloadfocus/winloadfocus.html

919 :デフォルトの名無しさん:2006/01/29(日) 20:48:11
ウチではFoucus()でちゃんと動作するけど
じゃあ
this.ActiveControl = textBox1;
の方で

920 :デフォルトの名無しさん:2006/01/29(日) 20:57:28
IQテストやって見れ
http://www.iqtest.dk/main.swf

921 :デフォルトの名無しさん:2006/01/29(日) 21:25:06
>>918
>>919

それで解決しました。
ありがとうございました。

しかし、皆さん、なぜそういう回答がすぐ分かるんであろうか…

922 :デフォルトの名無しさん:2006/01/29(日) 21:52:02
Regexクラスに正しい正規表現かどうか判断するメソッドがないって困りませんか?
ArgumentExceptionをキャッチするしかないのってどうよ

923 :デフォルトの名無しさん:2006/01/29(日) 22:00:33
このページのやり方がうまくいきません。
http://www.uchukamen.com/Programming/Strings/Strings.htm#SEC29

文字列の指定した場所にある文字列を挿入したいばあい、以下のようにしろという話ですが、全くその通りになりません。
↓↓
string str1 = "Hello!";
str1.Insert( 5, "World");

何か間違ってますでしょうか

924 :デフォルトの名無しさん:2006/01/29(日) 22:06:37
>>923
不親切だが、Stringがインスタンスの変更が不可のクラスであることを考えれば、
あるいはヘルプでInsertの定義をみれば正解は分かる。

>>922
動的に正規表現を作ることってあまりない気がするから別に構わないな。

925 :デフォルトの名無しさん:2006/01/29(日) 22:06:50
Insertメソッドは、そのインスタンスに挿入するのではなく、挿入した結果を返す。
基本的にStringは変更不可能だと覚えておいたほうがいい。

string str1 = "Hello!";
stri1 = str1.Insert( 5, "World");

926 :デフォルトの名無しさん:2006/01/29(日) 22:49:15
>>924-925

よく分かりました。ありがとうございました。

927 :デフォルトの名無しさん:2006/01/30(月) 00:05:54
>>905
Vectorと窓の杜で調べたらあると思うよ。

928 :名無しさん♯:2006/01/30(月) 00:07:09
|ω・`) 950超えたら、どなたかスレ立ててくださいな

929 :デフォルトの名無しさん:2006/01/30(月) 00:09:56
950じゃまだ早い 980くらいで十分

930 :デフォルトの名無しさん:2006/01/30(月) 00:39:42
C#でゲーム作りたいのですが、よい解説ページはないでしょうか?



931 :デフォルトの名無しさん:2006/01/30(月) 02:11:25
ちょっとSplitContainerについて質問なんですが

  Form form = new Form();
  form.Size = new Size(600, 600);
  //form.SuspendLayout();

  SplitContainer sp = new SplitContainer();
  ListView lv;
  lv = new ListView();
  lv.Dock = DockStyle.Fill;
  sp.Panel1.Controls.Add(lv);
  lv = new ListView();
  lv.Dock = DockStyle.Fill;
  sp.Panel2.Controls.Add(lv);
  sp.Dock = DockStyle.Fill;
  form.Controls.Add(sp);
  sp.SplitterDistance = 300;

  //form.ResumeLayout();
  form.Visible = true;

このコードを実行したところ、SuspendLayout、ResumeLayoutをコメントアウトしてあればちゃんと
スプリッタが中央あたりに表示されるんですが、そうでなければ右よりに表示されてしまいます。
どうもResumeLayoutのタイミングでSplitterDistanceが変更されているようなんですが、
これは何故でしょうか。
また、SuspendLayout、ResumeLayoutをコメントアウトする以外に(あるいはその外側でSplitterDistanceを変更する以外に)解決する方法はないでしょうか。


932 :デフォルトの名無しさん:2006/01/30(月) 06:25:56
>>931
SuspendLayout しているのでDock=Fillが効かずに
Widthがデフォルト(150)のままになっている。

そこでSplitterDistance=300にしてもWidthを超えているため
SplitterDistance=121になってしまう。
(これはSplitterContainerの仕様らしい)

その後ResumeLayoutしたときにDock=Fillが効いて
Widthが変更されるのでSplitterDistanceも変更される。
(これもSplitterContainerの仕様らしい)

解決策はsp.SplitterDistance=300の前に
sp.Width=form.ClientSize.Widthとでも入れればいいんじゃない?
(フォームデザイナが生成するコードではSizeを固定値で設定してるけど)

933 :931:2006/01/30(月) 14:15:56
>>932
なるほど・・・そういう訳だったんですか。
spのサイズを直接変更する方法でうまくいきました。
なんとなく格好悪くはありますが、そうするしかないみたいですね。
どうもありがとうございました。


934 :デフォルトの名無しさん:2006/01/30(月) 18:26:30
>>905
>ソースコードのバックアップを一定時間ごとに取るようなソフトないですかね?

MSDNならVisual SourceSafeがあるけど・・・うーん


935 :デフォルトの名無しさん:2006/01/30(月) 20:18:24
VisualStudio.net(以下、VS200*)のバージョンによって、
出来上がるプログラムのサイズが違うのは何故ですか?
ある全く同じのソースコードをVS2002とVS2003でコンパイルしてみたところ、
VS2003の方が100kBくらいもサイズが大きくなりました
環境やソースの中身によっても違うかもしれませんが、
もしこれが多くのプログラムに当てはまるようであれば、
VS2002を使った方が得策ですよね?

936 :デフォルトの名無しさん:2006/01/30(月) 20:24:07
まだアセンブリのサイズをどうこう言う時代なのか?

937 :デフォルトの名無しさん:2006/01/30(月) 20:26:54
ファイルサイズが重要と言うことであればそうなるな。

938 :デフォルトの名無しさん:2006/01/30(月) 20:30:54
メモリ容量がアレなので・・・

939 :デフォルトの名無しさん:2006/01/30(月) 20:53:15
100kBを惜しむような環境で.NETなんて贅沢なもん使うな、って答えしか出てこないな

940 :デフォルトの名無しさん:2006/01/31(火) 00:44:12
C#は今後生き残ることができるのだろうか?

941 :デフォルトの名無しさん:2006/01/31(火) 01:07:18
×C#は今後生き残ることができるのだろうか?
○C#はこの先生きのこることができるのだろうか?

942 :デフォルトの名無しさん:2006/01/31(火) 01:10:58
死にはしないが流行りもしない。
そんなだめだめ状態がつづくでしょう

943 :デフォルトの名無しさん:2006/01/31(火) 08:58:05
.NETが流行らないことによりC#が流行らないとしたら非常にもったいないな

944 :デフォルトの名無しさん:2006/01/31(火) 18:24:19
例外を
Application.ThreadException
Thread.GetDomain().UnhandledException
で拾おうとしているのですが、JITデバッグダイアログが出てきてしまいます。
リンクにあるようにDrwtsn32 -iも実行しレジストリ書き換えたのですが依然出てきます。
ご存知の方いらっしゃいますか?
http://www.atmarkit.co.jp/fdotnet/dotnettips/262apperror/apperror.html

945 :デフォルトの名無しさん:2006/01/31(火) 21:42:23
>>941
    /⌒ヽ   
   /  ●  ヽ
  (●/⌒ヽ●)
   ヽ| ´∀`|ノ  きのこってんじゃねーよ
    .ゝ___ノ

946 :デフォルトの名無しさん:2006/01/31(火) 22:18:29
C#からXMLを扱いたいのですが、調べてもいまいち理解できませんでした。
参考になるサイト等があれば教えてください。

947 :デフォルトの名無しさん:2006/01/31(火) 22:21:42
>>946
http://www.atmarkit.co.jp/fdotnet/easyxml/index/index.html

948 :デフォルトの名無しさん:2006/01/31(火) 22:34:21
>>946
http://www.microsoft.com/japan/msdn/library/ja/cpref/html/frlrfSystemXml.asp

949 :デフォルトの名無しさん:2006/02/01(水) 04:00:44
うひょ〜!
ありがとうございます

>>948を見るたびにVS.NETのインストーラーが勝手に立ち上がるのはなんとかならないですか…

# >>1の (#゚ー゚)つ は正しくは (*゚ー゚)つ な希ガス

950 :デフォルトの名無しさん:2006/02/01(水) 04:03:46
>>949
> >>948を見るたびにVS.NETのインストーラーが勝手に立ち上がるのはなんとかならないですか…
なにそれ?

> # >>1の (#゚ー゚)つ は正しくは (*゚ー゚)つ な希ガス
ここがどこのスレだと思ってる

951 :デフォルトの名無しさん:2006/02/01(水) 06:52:28
ヘルプ見ようとすると出てくるあれか。
ちなみに俺の勤務先ではOfficeのインストーラが出てくる。

952 :デフォルトの名無しさん:2006/02/01(水) 08:00:43
「通常使うプリンタ」に設定されているプリンタ名を獲得するのはどうすればいいのか。


953 :デフォルトの名無しさん:2006/02/01(水) 10:43:51
「アタック25」でパリ挑戦権を獲得するにはどうすればいいのか。

954 :デフォルトの名無しさん:2006/02/01(水) 11:05:29
まず葉書き。

955 :デフォルトの名無しさん:2006/02/01(水) 14:17:42
なんで勝手にインストーラが立ち上がるんだよ!
uzeeeeeeeeeeeeeeeeeeeeeeeeeee!

956 :デフォルトの名無しさん:2006/02/01(水) 18:05:11
>>952
new System.Drawing.Printing.PrinterSettings().PrinterName;


957 :デフォルトの名無しさん:2006/02/01(水) 19:17:40
DataGridView勉強し始めたら参考資料がなくて愕然としています。
良いサイトを御存知でしたら誰か教えて頂けませんか?
命令や使い方があればOKです。


958 :デフォルトの名無しさん:2006/02/01(水) 19:19:08
まだ見かけないな。頑張れ、君がパイオニアだ。

959 :デフォルトの名無しさん:2006/02/01(水) 19:23:11
try{}.catch{] に関して教えてください。

あるクラスで
try
{
FormA f = new FormA
f.show()
}
catch (Exception ex)
{
// ここで f の Exception を拾いたい
}
のように、FormA での Exception を呼び出した元クラスで拾いたいのですが
今だと FormA のエラー発生箇所で、エラーメッセージが表示されてしまいます。

上記の事を実現する方法はありますか?

960 :デフォルトの名無しさん:2006/02/01(水) 19:28:13
>>957 こことか
ttp://www.atmarkit.co.jp/fdotnet/special/win20review02/win20review02_01.html


961 :デフォルトの名無しさん:2006/02/01(水) 19:34:55
>>960
ありがとうございます。でもこのサイトの説明はSQL使うんですよ。
大げさなしかけはいらないのですが・・・
ヘルプの説明も分かりづらいしググってもいいサイトないんです。
とにかくありがとうございました。

962 :デフォルトの名無しさん:2006/02/01(水) 20:34:42
>>959
普通にcatchできるはずだけど


963 :デフォルトの名無しさん:2006/02/01(水) 20:38:09
>>959
ShowをShowDialogの違い

964 :959:2006/02/01(水) 21:00:45
>>962
それが catch できないんですよ。。。

>>963
Show でも ShowDialog でも catch できませんでした。

もしかして、別 DLL だと catch できませんか?

965 :デフォルトの名無しさん:2006/02/01(水) 21:03:29
コンパイルは通ってるのか?

966 :デフォルトの名無しさん:2006/02/01(水) 21:11:06
例外がメッセージループのスレッドで発生するようになるのでトラップできなくなる。
//Showはそれ以前に次に移ってしまうがな。
Application.ThreadExceptionイベントで処理。

967 :959:2006/02/01(水) 21:19:56
>>966
ありがとうございます。
Application.ThreadExceptionイベントですね、勉強します。

メニューの Exe があって、そこから各機能の DLL(form) を Show しています。
想定できる Exception は、各機能の DLL で処理するんですが、
万が一想定外の例外が発生した場合は、このメニューの EXE でキャッチ
して、.NETFx が出力するメッセージをユーザーには見せたくないん
ですよね。なんで、show した後で、その show を行なった部分で
キャッチしようとしたんですが、たしかに show したら次に進みますね…。


こういった場合、他に定石みたいな組み立て方があれば
アドバイス頂けるとうれしく思います。よろしくお願いします。

968 :デフォルトの名無しさん:2006/02/01(水) 21:28:14
PageSetupDialogのセンチ指定の問題があるのでいっそインチで使いたいのですが
プログラムから切り替える方法がわかりません。
2.0のPageSetupDialog.EnableMetricは確認しましたが妙な風に丸められるのは相変わらずでした。
コントロールパネルの地域オプションで単位をヤードポンド法に変えれば換わるのは確かめました。
Thread.CurrentCultureやGlobalizationSection.UICultureをいじってるのですが変わってくれません。
今のところ2.0で試してみてますが、1.1でできる方法があればお願いします。




969 :デフォルトの名無しさん:2006/02/01(水) 21:55:33
>>959
>FormA f = new FormA
>f.show()
行末にセミコロンがないのが気になるんだが…

970 :デフォルトの名無しさん:2006/02/01(水) 22:03:25
>>959 そのFormのエラーを一まとめにしたいってことでしょ?
Thread.GetDomain().UnhandledException += new UnhandledExceptionEventHandler(Form1_UnhandledException);
で例外出したスレッドをそのままハンドルできるのでそれでやるべし。


971 :デフォルトの名無しさん:2006/02/01(水) 22:13:55
WinFormの場合は、というかメッセージループに対応する場合はApplication.ThreadExceptionの方。

972 :970:2006/02/01(水) 22:47:47
補足:Form作るとき別スレッドで作ること。

973 :デフォルトの名無しさん:2006/02/01(水) 23:41:11
.net初心者です。
イベントについて教えてください。

以下のようなControlクラスのOnClickをオーバーライドするメソッドがありますです。
public class Form1 : System.Windows.Forms.Form
{
protected override void OnClick(EventArgs e)
{
base.OnClick (e);//@
}
}

デリゲートとイベントの仕組みを一通り読み終えたところなんですが、
今の知識で上のメソッドを読むと、
「このFormの基本クラスであるControlクラスのOnClickメソッドをオーバーライドして、
Controlクラスの@OnClickイベントデリゲートに、EventArgs型の引数を渡す事で、
Controlクラスにきっと記述してあるであろう、Control.OnClick += new EventHandler(。。。
んもう。わけわかりません。




974 :デフォルトの名無しさん:2006/02/01(水) 23:42:09
MSDNに以下のような文言を発見しました。
メモ プロテクトされた OnEventName メソッドを使用すると、
デリゲートをアタッチせずに、派生クラスでイベントをオーバーライドすることもできます。
派生クラスでは、登録されたデリゲートがイベントを必ず受信できるように、
常に基本クラスの OnEventName メソッドを呼び出す必要があります。

んもう。さっき読んだ仕組みも説明がつかなくなってしまったので、以下のように書いてみました。
protected override void OnClick(EventArgs e)
{
base.OnClick (e);//@
}

private void Form1_Click(object sender, System.EventArgs e)
{
MessageBox.Show("Form1_Click");//A

}
private void Form2_Click(object sender, System.EventArgs e)
{
MessageBox.Show("Form2_Click");//B

}
実際にフォームをクリックしてみると、@・A・Bという順番で呼ばれました。
俺。逝ってよし。

975 :デフォルトの名無しさん:2006/02/01(水) 23:58:44
結局何を聞きたいんだ? 自己完結?
とりあえずOnClickはイベントハンドラではない。

976 :デフォルトの名無しさん:2006/02/02(木) 00:05:01
すいません。。
↑の二つ無かった事にしてください。

protected override void OnClick(EventArgs e)
{
MessageBox.Show("test");
}
private void Form1_Click(object sender, System.EventArgs e)
{
MessageBox.Show("test");

}
このように書くと、Form1_Clickイベントが発生しないのは何故ですか?


977 :デフォルトの名無しさん:2006/02/02(木) 00:06:44
イベントハンドら登録してないんだろ

978 :デフォルトの名無しさん:2006/02/02(木) 00:08:52
派生クラスでOnClickをオーバーライド、つまり上書きしている。
で、基底クラスではユーザがクリックしたときにOnClickを呼び出す。
基底クラスのOnClickでClickイベントに関連付けられたイベントハンドラを呼び出す。
が、派生クラスでOnClickが上書きされているので、
Clickイベントに関連付けられたイベントハンドラを呼び出す部分が実行されなくなる。

979 :デフォルトの名無しさん:2006/02/02(木) 00:18:25
うお。
こんな時間に優しく教えてくれて感謝します。
ttp://www.atmarkit.co.jp/fdotnet/basics/oop04/oop04_03.html
読みながら、>977・>978読んだら理解できました。
もやもやして寝れないとこだった。
ありがとうございました。
そして俺DQN。
半年、いや一年ROMってきます。

980 :デフォルトの名無しさん:2006/02/02(木) 05:12:11
質問です
C#2003のaxWebBrouserのイベントで
CommandStateChange というのがありますが

C#2005のWebBrouserのイベントでは 何を指定してやれば同じイベントを指定できますか

変な日本語ですみません(´Д`;

981 :デフォルトの名無しさん:2006/02/02(木) 05:20:46
Bro w ser な
何したいのか知らんが、進む/戻るならCanGoForward/BackChangedでいいんじゃね

982 :デフォルトの名無しさん:2006/02/02(木) 05:28:05
>>981
ご親切にどうもです
進んだり戻ったりできますた。

あとスペルミスごめんなさい

983 :デフォルトの名無しさん:2006/02/02(木) 07:47:21
ttp://itpro.nikkeibp.co.jp/article/NEWS/20060201/228399/?ST=win

984 :デフォルトの名無しさん:2006/02/03(金) 01:06:10
コントロールを別スレッドから操作するにはInvokeが必要なのはわかったが

別スレッドで作ったコントロールを追加するのにも必要?

A,Bスレッドがあって
Bのスレッドコントロールを作成(インスタンス生成)

AのコントロールのControl.Controls.Add(Bスレッドで作成したコントロール)
をInvoke経由で呼び出し、Aスレッド上にBスレッド作成コントロールを追加したとして
Bスレッドで作成したコントロールをこの後もずっと
AスレッドではInvoke経由で操作しないんとまずいのか?

985 :デフォルトの名無しさん:2006/02/03(金) 01:10:35
なに無茶なことしようとしてんだよ…
ハンドルできる前なら問題ないのかもしれんが。


986 :デフォルトの名無しさん:2006/02/03(金) 01:14:47
>>984 なんでInvoke必要か考えれ

987 :デフォルトの名無しさん:2006/02/03(金) 01:29:18
Delegateでいくね?

988 :デフォルトの名無しさん:2006/02/03(金) 03:08:01
C# と Visual C# は別物ですか?
知人が言うには、
Basic と Visual Basic が違うように、
また、C++ と Visual C++ が違うように、
C# と Visual C# も違うのだとか
そうなんですか?

989 :デフォルトの名無しさん:2006/02/03(金) 03:09:48
>>988
そりゃ言語と開発環境は別物だろ。

990 :デフォルトの名無しさん:2006/02/03(金) 03:12:11
>>989
レスありがとうございます
では言語的には C# でおkってことですね
分かりました

991 :デフォルトの名無しさん:2006/02/03(金) 03:31:06
>>990
ちなみに、VB の BASIC は例えば日本の高校数学の教科書に載ってる(載ってた?)
奴とは確かに全然違うんで、言語の方も VB と呼ばれる。
BASIC はいろいろ方言があるんで、高校の教科書に載ってる奴も
N88 BASIC と言わないと正確には通じない。
それに、VB 6 以前と VB7 以降でかなり言語仕様が変わったんで、
7 以降のは VB.NET って言って別言語扱いした方がいいかと。

C++ はかなり標準化がしっかりされてて、
どの開発環境使おうと C++ は C++。
VC++ は 6.0 までは標準対応が遅れ気味だったけど、
VC++ .NET (VC++ 7.0)以降は他のどのコンパイラよりも標準対応度合いがしっかりしてる。

C# もちゃんと標準化されてるんで、
VC# 使おうと、mono 使おうと、dot GNU 使おうと、SSCLI 使おうと C# は C#。

992 :デフォルトの名無しさん:2006/02/03(金) 03:34:30
ところで新スレは立てんのか?
// 私は無理だった

993 :デフォルトの名無しさん:2006/02/03(金) 03:37:33
次スレ立てます。

994 :993:2006/02/03(金) 03:42:59
次スレです。
http://pc8.2ch.net/test/read.cgi/tech/1138905522/

995 :デフォルトの名無しさん:2006/02/03(金) 03:46:51
おいこらなに基本的なミスしてんだ

996 :デフォルトの名無しさん:2006/02/03(金) 09:10:42
よくわからんが立てたぞ 漏れC#使いじゃ無いがww
ttp://pc8.2ch.net/test/read.cgi/tech/1138925245/

997 :デフォルトの名無しさん:2006/02/03(金) 09:18:25
>>996


あっちは削除依頼だしとくべさ

998 :デフォルトの名無しさん:2006/02/03(金) 09:57:47
sage

999 :デフォルトの名無しさん:2006/02/03(金) 10:48:07
>>994
クビ

1000 :デフォルトの名無しさん:2006/02/03(金) 11:02:15
the end and a restart.

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

254 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)