[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 05/05 21:54 / Filesize : 69 KB / Number-of Response : 340
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 12:19:35 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

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

前スレ
ふらっとC#,C♯,C#(初心者用) Part52
pc12.2ch.net/test/read.cgi/tech/1261801623/

関連スレ
C#, C♯, C#相談室 Part55(実質56)
pc12.2ch.net/test/read.cgi/tech/1260111240/

WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
pc12.2ch.net/test/read.cgi/tech/1261879110/

2 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 12:19:54 ]
参考サイト

www.google.co.jp/
msdn.microsoft.com/ja-jp/library/default.aspx
homepage3.nifty.com/midori_no_bike/CS/
www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html
dobon.net/vb/dotnet/
jeanne.wankuma.com/tips/
www.labasp.net/CsharpNote/

3 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 12:20:10 ]
終わり

4 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 12:43:56 ]
pc12.2ch.net/test/read.cgi/tech/1261801623/993/


5 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 12:55:45 ]
質問者には丁寧に教えてくれるけど
その後回答者同士が共食いを始めるのですが
どうしたらいいのでしょうか

6 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 12:57:07 ]
諦めましょう
回答が付いたのだから、それでいいじゃないですか
その後で戦争が起きたとしても気を揉む事はありません

7 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 13:03:37 ]
比率としては
質問、捕捉を含めて4レス
回答、重複を含めて3レス
そのあとのいざこざ、だいたい100〜200レス
ってところか。
スレッドを1000まで使い切っても、まともな質問は数個しかない計算だな

8 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 13:11:27 ]
罵りあいに費やした時間:プライスレス

9 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 13:14:50 ]
人気あるな

10 名前:デフォルトの名無しさん [2010/01/10(日) 13:15:37 ]
ノートパソコンでは一般的なFnキーと組み合わせたキーのイベントを
取得する方法はないのでしょうか?



11 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 13:22:53 ]
>>10
ない

12 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 13:26:38 ]
>>10
あるかも

13 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 13:31:43 ]
>>10
ありますん

14 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 13:34:59 ]
>>10
ある!

15 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 13:43:51 ]
>>10
API使え

16 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 15:49:02 ]
>>10
あるアルヨ

17 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 16:00:14 ]
お前ら…

18 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 17:15:00 ]
実は…

19 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 17:30:24 ]
俺の・・・

20 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 17:31:10 ]
自演



21 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 17:31:47 ]
ではなく・・・

22 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 17:55:54 ]
あたし女だけど・・・

23 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 18:04:36 ]
明日…

24 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 18:06:29 ]
あたし成人式…

25 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 18:52:01 ]
List<T>には最大いくつまで登録できますか?

26 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 18:55:27 ]
Int32.MaxValue個

27 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 18:56:39 ]
その前にOutOfMemory来ないかしら

28 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 18:58:50 ]
Int64.MaxValue っぽいけど、その前にメモリ不足になるんじゃね?

29 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 19:08:55 ]
いやList<T>はインデックスがInt32だから

30 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 19:10:02 ]
LongCount ってのもあるよ。



31 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 19:22:35 ]
ないよそんなもん
拡張メソッドでEnumerable.LongCountがあるけど列挙して数えるだけだから絶対にInt32.MaxValueは超えない

32 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 20:12:28 ]
ないね

33 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 20:15:27 ]
ないアルヨ。

34 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 20:17:29 ]
>>33
もうそういうのいいから
暇ならテレビでも見てなさい

35 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 20:21:58 ]
>>33
これだから低能はw

36 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 20:22:35 ]
>>34
間違ったことを書き込んだからって、顔真っ赤にしなくてもいいのに。

37 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 20:37:06 ]
>>36
たしかに>>24でウソつきました
なんでばれちゃったんですか?

38 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 21:08:21 ]
俺の目はごまかせないぜ

39 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 22:09:10 ]
でも>>22はほんとうなの・・・

40 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 22:27:11 ]
#region ゴミレス



41 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 22:27:32 ]
このスレにはおっさんしかいません。

42 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 22:29:13 ]
#endregion

43 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 22:45:32 ]
#if false

44 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 22:52:32 ]
#pragma

45 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 22:57:46 ]
[Obsolete("もうだめぽ")]

46 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 23:52:51 ]
while(true){
kuso = "クソスレ";
printf("このスレは{0}",kuso");
}

47 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 23:55:18 ]
コンパイル通らねーよw

48 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 01:25:56 ]
DataGridViewでデータベースに接続し自動的に内容を表示するようにしたのですが
そこに処理を一つ割り込ませたいのですがどこで挿入の処理がされているのでしょうか?

49 名前:デフォルトの名無しさん [2010/01/11(月) 01:35:03 ]
C#でスクリーンのある位置のpixelの色を取得する方法で、
Bitmap bmp = new Bitmap(_width, _height);
Graphics g = Graphics.FromImage(bmp);
g.CopyFromScreen(new Point(_left, _top), new Point(0, 0), bmp.Size);
_width _height は切り取りたいサイズ
_left _top 画面上の切り取り開始位置
あとはBitmap のGetPixelで指定すればOK?

というのがありました。これで、カーソルの位置の場合は、
g.CopyFromScreen(Cursor.Position.X, Cursor.Position.Y, 0, 0, bmp.Size);
となると思います。
これで、WPFの場合にはどうしたらよいんでしょう?
というのは、Cursor.PositionはFormなので、変更しないとだめなのです。


50 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 01:36:17 ]
form_loadedとか?



51 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 01:43:55 ]
>>49
vbやformsのクラスを呼びたいときには参照を追加する

52 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 01:55:48 ]
>>49
Mouse.GetPostion(・・・);

>>50
ああ、そういうことではなくって
データのチェックをかけてから表示させたいのですが
表示ようにデータの追加を行ってる間にした方がいいだろうと思って
テーブルアダプタなんかを見てみたんですがどこでやってるのかわからずに・・・。

53 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 02:01:11 ]
どうにも困っていまして、先達に教えを請いたいのですがよろしいでしょうか?
XP版VS2005のC#で、スレッドを使用して、USB機器(読み取り機)にアクセスするプログラムを作成しています。

フォームからスレッドを呼び出し、スレッド上でループして、機器にアクセスできたらポートを開けて内容を読み取るということをしています。

機器が差された際にアクセスするのはできました。
ですが、機器を引っこ抜かれると、スレッドが飛んでしまうようなのです。
抜いた後、Debugモードで確認すると、ループ内のブレイクポイントには引っかかりません。
引っこ抜いたときに、exceptやfinallyも通っていないようです。

何度抜き差ししても読み取りに行けるプログラムを作ろうと思っているのですが、
スレッドが終わったことを、フォーム側で知ることはできるのでしょうか?

どうかお教え願います。

54 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 02:13:01 ]
>>53
ttp://www.technoveins.jp/dev/qrmemop/index.htm
ここのQRコードの読み込みって参考にならない?

55 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 02:34:22 ]
>>54

ありがとうございます、読ませていただきました。
残念ながら、機器へのアクセスは、専用のDLLを介してやらなければならず、
通常のシリアルポートコンポーネントは使用できません。
(ポートへのアクセスも専用DLLのメソッドを使用しています)


56 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 02:36:38 ]
根本的な解決にはならないけど
BackgroundWorkerなら死んだ事が
OnRunWorkerCompletedイベントでわかるかなとか思った

57 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 02:56:50 ]
>>56

ありがとうございます。
BackgroundWorkerは試していませんでしたので、やってみようと思います。


58 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 05:09:41 ]
>>53
確かにスレッドが死んでることは確認した?


59 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 09:51:27 ]
>>55
そのDLLを使って機器の接続状態を監視するしかないような気がする

60 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 10:02:20 ]
>>55は頭が堅過ぎてこの先も苦労しそうだな



61 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 11:25:48 ]
DLLというのは.NETのアセンブリなのかWin32DLLなのか
COMなのか、そのくらいは書こうよ。
それより例外を捕捉できないというのはどういう状態なんだろう?
気になるな。

62 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 11:35:54 ]
>>59
ついでにお前の行動も監視できたら便利だなw

63 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 11:39:04 ]
なんだろうこのキチガイは・・・。

64 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 11:41:13 ]
別スレッドの例外はAppDomain.UnhandledExceptionで捕まえられる
できれば別のAppDomain作ってDLLはその中でロードして動かすようにしたほうが安全かも

65 名前:デフォルトの名無しさん [2010/01/11(月) 11:54:58 ]
プログラム組むのって楽しいのに時々嫌な気分になるよね
まあ大体はアホな人があほな要求するからなんだけど

66 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 12:00:43 ]
どうしようもないな・・・

67 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 12:06:24 ]
C#ブリブリ・・・。

68 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 13:05:41 ]
ショートカットキーからショートカットマークの無い元のアイコンを
取得したりするにはどうすればいいんでしょうか?

実行ファイルに埋め込まれてる物もあればシステムリソースで
持ってる物もあるようですし

69 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 13:21:46 ]
ショートカットキー?

ショートカットファイルのなら、
msdn.microsoft.com/en-us/library/bb773990(VS.85).aspx
とかかな。

70 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 13:27:38 ]
DLLをEXEでラップしてexeをwaitすればいいと思う



71 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 13:33:36 ]
へー。

72 名前:デフォルトの名無しさん [2010/01/11(月) 13:36:12 ]
プログラムのログを記録するのに、AプログラムとBプログラムの両方に、
File.AppendAllText("log.txt", log内容);
と書いてあります。
AとBが同時に書こうとすると、ロックされていて書けないのですが、その場合、しばらく待って書くのには、どうしたらよいですか?
try{
File.AppendAllText("log.txt", log内容);
}
catch{
Thread.Sleep(2000);
File.AppendAllText("log.txt", log内容);
}
とか?


73 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 13:37:20 ]
数回リトライするようにすればいいんじゃね?

74 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 13:38:38 ]
mutexを使えばいいんじゃないか

75 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 13:38:52 ]
>>73
自己解決しました笑

76 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 13:45:57 ]
lock(lockobject) { } とか書けよ。例外ループしてどうする

77 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 13:46:33 ]
クライアントならTraceSource使うべき
Traceクラスでも自動で排他制御してくれるけど

78 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 13:48:01 ]
log4netってあんまり使われてない?

79 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 13:49:34 ]
lockじゃ他のプロセスとの排他はできないんじゃ

80 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 13:50:37 ]
log4ってマルチスレッドに対応してるの?Javaのは対応してないけど。



81 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 14:03:14 ]
単一プロセスでしかlockできないならどうやって同時アクセスするの?

82 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 14:05:09 ]
え?

83 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 14:05:22 ]
イベントログでも使ったら

84 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 14:06:54 ]
>>81
FILE_SHARE_READ
FILE_SHARE_WRITE
FILE_SHARE_DELETE

85 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 14:09:42 ]
>>76みたいな質問を半分しか読まない奴も死んでくれ

86 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 14:24:04 ]
基本的に1レス前しか見ない。脳髄で反応する。

87 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 15:12:09 ]
脳髄って普通に脳と同義なんだが、おまえは何言ってるんだ?

88 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 15:14:16 ]
ワロタ

89 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 15:27:51 ]
>>87
普段脳味噌使ってない人なんだろ、たぶん。

90 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 15:35:12 ]
せめて脊髄にして欲しかったな



91 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:00:23 ]
最近C#でプログラム始めたばかりなんだけど、動的配列にstructを入れると、
メンバを書き換えられなくなる原理がよくわからない
こんなことしなきゃいいんだろうけど、理屈がわからなくてなんか気持ち悪い
参照型/値型、参照渡し/値渡しが動的配列でどうなってるか理解できないからだと思うけど

public struct Sample1 { public string name; }
static void Main(string[] args){
 List<Sample1> SampList1 = new List<Sample1>();
 Sample1 Samp1 = new Sample1();
 SampList1.Add(Samp1);
 SampList1[0].name = "ゆきお"; }←ここでエラー 変数ではないためList<Sample1>.this[int]の戻り値を変更できません。
──────────────────────────────
public class Sample1 { public string name; }
static void Main(string[] args){
 List<Sample1> SampList1 = new List<Sample1>();
 Sample1 Samp1 = new Sample1();
 SampList1.Add(Samp1);
 SampList1[0].name = "ゆきお"; }← class+コレクションならコンパイル通る
──────────────────────────────
public struct Sample1 { public string name; }
static void Main(string[] args){
 sample1[] SampList1 = new Sample1[1];
 Sample1 Samp1 = new Sample1();
 SampList1[0] = Samp1;
 SampList1[0].name = "ゆきお"; }← struct + 静的配列ならコンパイル通る

あと、動的配列の中身を別の動的配列にコピーしたい場合、
 動的配列2 = 動的配列1; でコピーした場合と、
Addメソッド使って、で要素を一つずつコピーした場合とで、
後でRemoveAtなんかでコピー先の要素を削除した時に
前者はコピー元の要素も削除され、後者はコピー元は影響無しの原理もよくわかってない
今ぐぐって調べてるけど、あまりに基本的過ぎる話のせいか初心者向けの解説無くて

92 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:04:26 ]
クラスにすればおk

93 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:12:50 ]
SampList1[0] = new Sample1() { name = "ゆきお"};


94 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:18:31 ]
>>91
値型と参照型、配列の添え字によるアクセスとインデクサによるアクセスの違い

値型の配列にList<T>のインデクサ使ってアクセスすると
list[0] の段階で実体がコピーされてしまうので、想定されている内部の構造体にアクセスできないのでエラーになる
参照型の場合は実体がコピーされないので問題ない

95 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:21:47 ]
そもそも、それは配列なのか?

96 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:24:00 ]
indexerの場合エラーにしてくれるんだね。
プロパティだとエラーにならないから、
hoge.Size.X = 100; // Size structのSizeプロパティ
で変化しない、なんでってことになる。

97 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:30:42 ]
自分でインデクサ書いてみればわかる

98 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:31:17 ]
hoge.Size = new Size(128,256);
これ地味に嫌

99 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:36:48 ]
structは危険だな。


100 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:40:47 ]
structは"ゆきお"とはうまくやっていけないんだよ



101 名前:デフォルトの名無しさん [2010/01/11(月) 16:53:23 ]
自分で書くクラスの中でstruct使うならいいけど
クラスの外とやり取りする場合は使わない方がいいかもね〜

102 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:54:23 ]
人の名前入れるような型は構造体ではなくクラスにするよな
というか無条件にクラスでおk
構造体を使うのはメモリの仕組みをよく理解した上でパフォーマンスを出したいときだけ

103 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 16:56:55 ]
>>92
Listとか配列の機能についてこう思ってるのかな

int[] x=new int[10];
int age=100;
x[0]=age;
x[0]=500;

ってやったらageが500になっちゃうとか思ってるのかな?

104 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 17:05:55 ]
class の場合は List に参照が、struct の場合は実体が形式上は保存されているということがわかれば、出来ない理由がわかる。
このあたりは、C++なら -> と . で区別されるんだけどね。

105 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 17:06:07 ]
>>96
それ間違ってる。
それがエラーにならないのはXがフィールドじゃなくてプロパティだから。インデクサかプロパティかは関係ない。
Xがフィールドならその代入に意味がないことはコンパイラにとって明らかだけど,
プロパティは実装を変えられるから必ずしも意味がないとは限らない。

106 名前:デフォルトの名無しさん [2010/01/11(月) 17:19:50 ]
構造体の中身がstringじゃなくintとかだとどうなんだろ

107 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 17:19:52 ]
一部だけフィールドを書き換えるようなものはクラスにする
フィールドを一括で書き換えるようなのを構造体にする

108 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 17:20:23 ]
>>105
君の脳も間違ってる。

109 名前:デフォルトの名無しさん [2010/01/11(月) 20:05:06 ]
パネルAにグループボックスBを置き、
Bの上に
 ○男 ○女
という2つのラジオボタンC、Dを配置します。(C、DはともにTabStop = true)
そして、次の手順を行ったとき、
@ AのEnableをfalseにする。
A CのCheckedをfalseにする。
B DのCheckedをfalseにする。
C AのEnableをtrueにする。

ラジオボタンC、Dにタブが遷移しなくなります。
どうしてもC、Dのどちらもチェックがない状態で、AのEnableをtrueに戻したいのです。

どうすれば解決できるでしょうか。
よろしくお願いします。

110 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 20:10:52 ]
ラジオボタンでやるなよ。



111 名前:デフォルトの名無しさん [2010/01/11(月) 20:20:23 ]
>>110 さん
そんなことおっしゃらずに…(>_<)。
全てのラジオボタンのCheckedを外した状態で、
そのコンテナのEnabledをtrueにしたときに、Tabが当たらないようです。
思いがけない個所でつまずいてしまいました。

解決方法を教えてください(>_<)。

112 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 20:24:59 ]
ラジオボタンはどれかにチェックする、ってのが正しい使い方だから、
変な使い方して変な結果になってもしょうがないだろ。

113 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 20:25:35 ]
ラジオボタンはニュートラルな状態を想定したUIじゃないから、
「常に1つだけが選択されている」状態から外れるのは良くない
この場合は未選択、未設定などの選択肢を用意するのが正道

114 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 20:37:30 ]
クリックしたはずのボタンがfalseにされたらフォーカスがいかない仕様かな
一応リストボックスで簡単に代用できるはずだけど、
「仕様書にラジオボタンでって書いてあるから」とかいうケースなんだろうなぁ
俺にはわからんな

115 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 20:45:17 ]
>>109
テストがめんどいからそのサンプルプロジェクトをうpしてくれたら
考えてみるよ

116 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 20:46:39 ]
どのタイミングでAのEnabledをTrueにすんの?

117 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 20:48:14 ]
パネルとか関係なくラジオボタンを全クリアするとその時点で発動するみたいだよ

118 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 20:51:00 ]
どれも選択されてないラジオボタンがおかしいなんて変なこといわないでくれ。

コンテナのEnabledをtrueにしたあと、 falseになってる radioButtonのTabStopを Trueに戻すだけやん。

119 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 20:53:23 ]
ちょっと考えれば当たり前のことではあるが、CheckedとTabStopは連動してる

120 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 20:57:47 ]
いや。おかしいだろ。



121 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 21:01:07 ]
おかしいですね

122 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 21:02:37 ]
おかしくないアルヨ

123 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 21:08:11 ]
つまりチェックされてる唯一のラジオボタンのみがtabstopを得る資格があるということか
なるほどね

124 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 21:09:43 ]
>>123
あなたのバカがうつってしまいました(>_<)。

125 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 21:09:47 ]
>>122
あるのかないのかどっちだ

126 名前:デフォルトの名無しさん [2010/01/11(月) 21:39:52 ]
その自演つまんない

127 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 21:46:40 ]
ラジオボタンをクリックしてもラジオが聞けません

128 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 21:50:27 ]
>>127
んあ?(-_-メ)

129 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 21:54:23 ]
(#^ω^)

130 名前:デフォルトの名無しさん [2010/01/11(月) 23:23:24 ]
IEのアドレスを表示する枠の小さなアイコンをドラッグして
textBoxで受けて、URLを取得したいと思いました。
private void textBox_DragDrop(object sender, DragEventArgs e){
string[] dragArray = (string[])e.Data.GetData(DataFormats.FileDrop, false);
//以下処理。
}
としています。

これで、ショートカットなどのファイルは受けて処理できるのですが、
IEから直接だと、ポインタが禁止状態になってドラッグできません。
一度デスクトップなどにショートカットを作ればいいのですが、
二度手間でなんかスマートでありません。
なにが足りないんでしょう?




131 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 23:29:43 ]
一番肝心なところを以下省略てw
ふざけてるのかな

132 名前:デフォルトの名無しさん [2010/01/11(月) 23:43:29 ]

AddRsv2

133 名前:デフォルトの名無しさん [2010/01/11(月) 23:45:17 ]
↑は間違って書き込むを押してしまいました。
ごめんなさい。

ttp://svl.qp.land.to/rsvdata/rsvdata_sample12.cpp
にサンプルがあるコードなんですが、
このサンプルにあるようにAddRsv2をC#から呼びたいと思っているのですが、
どうすればいいでしょうか?

COMインターフェース等に関しては全くの無知ですがご教示いただければ幸いです。

よろしくお願いします。

134 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 23:54:21 ]
>>130
IDropTargetを実装すればいい

135 名前:デフォルトの名無しさん [2010/01/12(火) 00:03:24 ]
>>134
詳しい説明をお願いします。

136 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 00:04:59 ]
なんか態度が気にくわないから教えない

137 名前:デフォルトの名無しさん [2010/01/12(火) 00:14:47 ]
Form1からForm2を開いたとき、
Form2でForm2のみを閉じるときはClose();
Form2でForm2とForm1を閉じるときはApplication.Exit();
ですが、WPFの場合には、どうしたらよいですか?
WPFには、Application.Exit();がないみたいです。
かといって、Close();だと、Window1が残ってしまうのです。
よろしくアドバイスをお願いします。


138 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 00:24:53 ]
>>130
なんか俺が知らない問題でもあるのかと思って試してみたけど、
普通にUnicodeTextでURL受け取れたけど・・・。
むしろ一体何を悩んでいるの?

139 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 00:26:25 ]
>>137
Application.Current.Shutdown() が使えそうなかんじ。

140 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 00:27:16 ]
>>137
こんなコード書いてたわ
if (this.Owner.IsVisible) this.Owner.Close();



141 名前:デフォルトの名無しさん [2010/01/12(火) 00:48:34 ]
早速ありがとうございます。
>>139
Application.Current.Shutdown();
で解決しました。
ありがとうございました。
>>140
Window1がVisibleでないことがあるので、
if (!this.Owner.IsVisible) this.Owner.Close():
this.Owner.Close():
の両方を試しました。
どちらもエラーが出てだめでした。
でもこれも必要になることもあるかと思うので、感謝します。
ありがとうございました。
みなさんほんとうにありがとうございます。


142 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 10:54:58 ]
プロセスメモリスキャンを行いたいと思っています。
比較回数が60万回ぐらいあるので高速でないとだめなのですが、
現状はかなり低速です。

作りこみ方なのですが、まずReadProcessMemoryを行って、byte配列でメモリ情報を取得した後、
検索文字列をstring配列で分解し、Convert.ToInt32で文字列を10進数に直した後、
メモリ情報とこの10進数変換した値とを比較して、一つずつデータを比較しています。

高速化の方法が何かあれば教えてください。

143 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 10:57:58 ]
アセンブラ使え

144 名前:デフォルトの名無しさん [2010/01/12(火) 10:59:50 ]
>>142
負荷のかかりそうなところだけVC++で書くとか

145 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 10:59:55 ]
そういう問題か

146 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 11:02:18 ]
文字列検索のアルゴリズムが使えるのではないかと

147 名前:デフォルトの名無しさん [2010/01/12(火) 11:02:21 ]
.netでやってる人にいきなりアセンブラはあれかと

148 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 12:00:06 ]
string _text とか、変数の先頭にアンダーバーを付けている場合があるけど、なにか決まりでもあるのですか?

149 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 12:30:03 ]
決まりというわけではないと思うが、プライベート変数に対してアンダーバーを先頭につけてると思う。
パブリックメンバ(プロパティ)を内部変数で保持する時に、この内部変数にアンダーバーを先頭につけて内部変数名にする
といった感じかと思われる。
string _text;
public string Text
{
get{return _text;}
set{_text = value;}
}

150 名前:デフォルトの名無しさん [2010/01/12(火) 12:32:53 ]
「バッキングフィールド」というやつだな
人によって
・フィールドはcamelCaseに、プロパティはPascalCaseにする
・フィールドのプレフィックスに"_"を付ける
・フィールドのプレフィックスに"m_"を付ける
とかいろんな作法があるらしいよ



151 名前:148 mailto:sage [2010/01/12(火) 12:38:24 ]
そうですか。俺はいつもmyTextとか書いているけど、そっちの方がいいのかな(´・ω・`)

152 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 12:38:57 ]
>>142
ttp://www2.starcat.ne.jp/~fussy/algo/algo7-4.htm

153 名前:デフォルトの名無しさん [2010/01/12(火) 12:52:03 ]
>>151
人にもよるし仕事でやるなら命名ルールとかあるから
個人で書いてるなら自分の好みでいいんじゃない?

154 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 14:18:36 ]
>>148
付けてる人曰く、フィールドに直接アクセスせず
必ずプロパティ経由でアクセスしていることを明示的にする為だそうな。
変数名の後ろにアンダースコア付ける人もまれにいるし
嗜好の問題だと思う。

155 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 14:52:51 ]
俺はこんな感じのスニペット作ってるので"_Hoge"

public $type$ $property$ {
  get { return _$property$; }
  set {
    if(value == _$property$) return;
    _$property$ = value;
    $end$
  }
}
private $type$ _$property$;

あと、使っているアドインのリファクタリングで自動実装のプロパティに
バッキングフィールドを作成するとプレフィックスに"_"が付いたような

156 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 14:53:35 ]
俺は先頭にアンダーバー付ける派、理由はそうしてる人が多そうだから

157 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 15:06:52 ]
プロパティ RegionSize、フィールド regionSizeはVBで同じコードを書いたときに区別がつかない。
_regionSize はC++(C++/CLI)で不都合があると思われている。
 (正確にはメンバーなので _xxxでも問題ないらしい)
m_regionSizeは ハンガリアン記法が一時期過剰に嫌われていたあおりで排除された。
regionSize_ はなんか気持ち悪い

などなど、結局好きにしろってことだな。
MSDNのネーミング規約をみてもprivateメンバのネーミングについては特に記述は無い。

158 名前:デフォルトの名無しさん [2010/01/12(火) 15:24:51 ]
最下段のソースを改変して、自分の環境に合わせてlame.exeのパスを
C:\Program Files\mp3\LAME\lame.exeに。コマンドラインのオプションを
lame.exe -t -q 0 -b 80 --resample 44100にしたいと思っています。そこで1行目を

#define LAME_EXE "C:\\Program Files\\mp3\\LAME\\lame.exe"

に。8行目を

strcat(cmd, " -t -q 0 -b 80 --resample 44100");

に替えてみたのですが、「音声の変換に失敗しました」とエラーが出て失敗してしまいます
C++はサッパリちゃんなので、どなたか御教示いただけませんでしょうか。宜しくお願いします
ttp://anonymousriver.hp.infoseek.co.jp/lame_wrapper/lame_wrapper.c

159 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 15:26:22 ]
スレタイ良く見ろ

160 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 15:27:17 ]
フィールドメンバはmyText
メソッド内で使うときは必ずthis.をつけてます



161 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 15:29:42 ]
publicに対してルールがあるだけで、privateには好きに命名すればいいと思うよ
msdn.microsoft.com/ja-jp/library/ms229002.aspx

162 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 15:30:23 ]
↓で聞いてきます。失礼しました

【初心者歓迎】C/C++室 Ver.70【環境依存OK】
ttp://pc12.2ch.net/test/read.cgi/tech/1258873470/

163 名前:デフォルトの名無しさん [2010/01/12(火) 15:30:39 ]
らめぇぇぇ

164 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 17:17:05 ]
以下のコードでフォームがタイトルバー(?)以外応答しなくなりました。
メモリ関連かと思いましたが、OutOfMemoryException が投げられていないようで、catch() できていません。
VSで追おうにもフォームを強制終了させなければVSごと応答しなくなってしまいます。
filesizeには正しい値が入っていることを確認済みです。
原因として何が考えられるのでしょうか?

try{
Data = new byte[ filesize ];
}catch( Exception e ){
System.Windows.Forms.MessageBox.Show( e.Message );
}

165 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 17:23:17 ]
filesizeいくら?

166 名前:164 mailto:sage [2010/01/12(火) 17:27:48 ]
>>165
245268 でした。

167 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 17:31:33 ]
>>164
問題は他の部分だろうね

168 名前:164 mailto:sage [2010/01/12(火) 17:53:14 ]
>>167
他とはnewが原因ではないということでしょうか?

169 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 17:59:20 ]
new/deleteで異常終了する(Visual C++)
pc12.2ch.net/test/read.cgi/tech/1262777752/

このスレ参照のこと


170 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 18:01:10 ]
new の所にブレークポイント貼って止まったらステップ実行して戻ってこないのを確認したようには見えないな



171 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 18:02:42 ]
OutOfMemoryException というのも思い込みじゃない?

172 名前:164 mailto:sage [2010/01/12(火) 18:19:12 ]
>>169
ありがとうございます。
今から読んでみます。

>>170
System.Diagnostics.Debug.WriteLine() を1行毎に置いてみるだけでは不足でしょうか?
ブレークポイントは使用してもしなくても同じ動作でした。

>>171
msdnのページにはメモリが不足している場合は
OutOfMemoryException が投げられると書かれているように思えたのですが・・・。
念のため catch( OutOfMemoryException e ) にしても同じでした。

173 名前:デフォルトの名無しさん [2010/01/12(火) 18:20:48 ]
デバックモードで牛歩チェックすればいいんでないの?

174 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 18:25:16 ]
>>173
最終的にはそうするほうが質問するより早いよね。
まあデバッグのやりかたがよくわかってないみたいだからしょうがないけど。

175 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 18:25:49 ]
new byte[]自体に問題があると思ってるならむいてないからやめちゃいなよ、本気で。
コードのどの部分にどれくらい信用性があるか見切れないとずっと初心者だよ

176 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 18:28:20 ]
>>172
そりゃステップ実行しなきゃ
new しているメソッドを呼ぶ所で無限ループしている可能性が一番高いんだし

177 名前:164 mailto:sage [2010/01/12(火) 18:40:43 ]
>>169,175
メモリ破壊を疑ってみます。
アドバイスありがとうございました。

>>173,174,176
蛇足ですが、ステップ実行でのデバッグは既にやっています。

178 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 19:30:45 ]
なぜそこがおかしいと考えているのかも書いてくれないと
コード断片だけじゃわからんよ

179 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 19:42:40 ]
こういうのは本人ががんばるしかないよ
コードまるまるうpでもしないかぎり

180 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 19:45:47 ]
情報小出しにするし、問題なさそうな部分しか晒さないし、
本人もどこが問題なのかまるでわかってないからそうなるんだろうね。



181 名前:133 mailto:sage [2010/01/12(火) 19:50:28 ]
>>133
ですが、引き続きよろしくお願いします。

182 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 19:50:44 ]
でもC#って普通にマネージドコード書いてるだけなら
メモリ破壊なんてしないよね?
俺はC#よくしらないけど。

183 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 19:50:49 ]
こういうタイプは愚痴を聞いてもらいたいだけで解決したいとは思ってない。

184 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 19:56:41 ]
女々しい性格w
でも男でもたしかに時々いるんだよねそういう奴。
潜在的なカマなんじゃなかろうか

185 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 20:00:21 ]
>>133
俺ならそのソースをそのまま使いたいからVC++でOCXでラップして
C#のフォームに貼り付けて使う。

186 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 20:04:05 ]
>>184
カス

187 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 20:10:10 ]
>>182
無反応状態ならへんなループ書けば簡単に起こるよ。イベントを相互で呼び出したり。

188 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 20:11:34 ]
>>187
なるほど

189 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 20:46:03 ]
ろすあいめよむつこいそえひわやよみあぬすくうたさゆきつぬりわのけつちそへまのゆみかめさためねわあへこうなくひぬやえいやうをわらなたすわほれおしひまきつはゆし
ほへかせもゆらあてみいももやせれあかなそてまうえしちみきるねんすれぬはわええろみひよのみゆけふてわをすはゆんかりなていたんまむいなのきやむあへてうやけのもせ
よこひえるへゆさてこれれもつこわしくためををけたきふをせきうしうつへとひはらうかまんそらまてしわやはくちねるろせつふねれたおねえめこさふやほもふなしひこくへ
ひちのみせみえくせちんなりむわをそむさゆゆとぬけたきりにたぬちせりねしそそふゆろききまみめはわをししさむしりはけめたせえきにけわんすわけわもめすぬほへふもそ
ささすぬつくちんにえはむもしひえきゆくそゆけんらきいなみとはねはひむとぬくうせをにちまもおわみむんてしそつまほおけよつはをまはてしのゆのれりなたへこえたやけ
よむらほとむくいいけやかてうむみもふのふりてふれへちててろさむはねえなりうふくみいきほんうほすさるりやたろあぬゆぬまなとるれてんゆなやそりゆるるさめやましら
くえねはぬゆわをねけけせにもまみつよのそもるこすへちそろわふなうらろえぬらりともかましまはほゆをよいせはてをりやらまぬゆまめうてれここんさんやりといゆけほよ
ゆわちゆさきえみやもるくたぬしれしあますてつたりゆなはもれらさもにしにせそうんたこなんかるねくやよつわらやなけねたわかまそえとろたこひまるほきあけせとろやち
まふたくえふさとむほにこけれせいきねみんろたしあさへうはんよわくみまみいおえやをこきふましさゆをひさとつせのややいいなさもまするろほみわつるくへはろいれふて
ろよんにぬつたえああわにせこれんめねくにえへつえまつきんむてわりふしまほにねやとしひめすせはおぬふほをさまおひゆさのてめしはこりたやきらそわけりこのみやはせ
ゆとあそはにられらきよよぬぬくれふなふく

190 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 20:47:27 ]
764281988531068976109496233791003419912346483347694415701297353114808192171311
417270647911119398265877604356756653123239986604218419768938626949738275501606
250320279301219198504796337841703744565641089982079039822177715017280875762921
057416400473083550075370509783174000446911225548032194128521645465162060951565
465539130164284060857508075643775901923995506341285317135921431113613959430498
401092565883457642005006729253822255363882264271281485272488386576889292587462
034663116263550263907540695891208175920042901182186966988109777962571572279088
098824838689381074918874626395429671349459675554401020594390741055133327652177
916107370918077618827263534853795819183817031310666404692558655752953871909739
922308545867381013839042726659736597888333618343364296802843665358183095852232
524792904298334494082199910777728527604800325044053124189211216769583009939665
382415272620598635193623786056286678336830450451457798866769513975698838956157
500859844509114898746975909367002410509598251731996664710909939208235501175358
533359286168541726824048105222941777016070857553763714208138350176891267309534
126422704270860505796207867552357491802427279788547040757837112344669692603954
613568171977230441868555998330410833172587146793247145430301387348954641737295
442451669467358278339882174689974936849305680534733392815526848883783849336795
502986777750956369827069343593144744177219535459187655066510571129154921408484
240871393287000887611974516472461568354937796545942896362781471627759900733947
887663189980838964697636103389678358036579247197495243642929621467962130722651
890212762790675915951219992004860515531718599196876803531499929279908178725031
149996634085896860472469559106037201700690844166080101523052967409237991968529
522987224293105273761742101630321548376319086339334250810372161485643630138856
956965948525898718857542924106686361050970380091893179616277234488708165914328



191 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 21:22:01 ]
コピペ君、まで読んだ。

192 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 21:25:41 ]
int* なんか使っちゃったりすると64bitで動作しなくなったりするの?

193 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 21:31:02 ]
そんなことはない
逆に,P/Invokeでポインタ(またはIntPtr)として宣言するべきところにint使っちゃうと動作しなくなる

194 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 21:55:06 ]
>>133
VC2008EEで.hと.cppをプロジェクトに入れただけでコンパイルできたよ。


195 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 22:27:46 ]
>>130
カーソルアイコンが禁止状態のままの場合、
DragEnterやDragOverでe.Effectを設定してないのが原因だろう
DataFormats.FileDropを含まないデータが来てるんじゃないか
DragEnterのe.Data.GetFormatsでどんな形式のデータが来てるか確認すれ

196 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 22:35:12 ]
>>133
tlbimpにRsvData.dll突っ込めばなんとかなりそう?

197 名前:133 mailto:sage [2010/01/12(火) 23:00:09 ]
凄い無理やりなんですが、
IEpgRsv rsv = (IEpgRsv)(new EpgRsvClass());
なんてことができちゃいました。

サンプルコードとは違う感じですが、とりあえず動作も確認できたので
よしということにしちゃいます。

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

198 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 23:08:15 ]
無理矢理というか、.NETでCOMラッパを扱うのならごく普通
ついでに言うとnew IEpgRsv()だけでもいいはず

199 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 23:08:27 ]
えー
つまんね

200 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 23:13:34 ]
その時教えないで後から知ってたと言うのなら俺にでもできるがな



201 名前:133 mailto:sage [2010/01/12(火) 23:29:12 ]
>>198
やってみました。

IEpgRsv rsv = new IEpgRsv();

抽象クラスまたはインターフェイス 'RsvDataLib.IEpgRsv' のインスタンスを作成できません。




202 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 23:31:23 ]
bool型ってintにキャストできないの?
trueを1に、falseを0と同値にしたいんだけど。

203 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 23:35:17 ]
そういう真似を出来ないようにわざわざキャストできなくしてあります

204 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 23:35:39 ]
>>201
ありゃ、CoClassもってなかったのね ごめん

>>202
うんキャストは無理
Convert.ToInt32でも使えば

205 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 23:39:03 ]
trueは1じゃなくて0以外と定義するのが普通だよ
CLRの内部表現もそうなってる

206 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 23:43:51 ]
ゼロが発見されてなかったら大変な事になっていたな。インド人に感謝するよ(´・ω・`)

207 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 23:53:05 ]
インド人 = right;

208 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 23:55:48 ]
ザンギュラ乙

209 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 00:07:24 ]
C#のList<T>ってC++の
vector<T>と基本的に同じ?

210 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 00:15:21 ]
うん



211 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 06:55:59 ]
うーん

212 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 07:08:58 ]
ううん。。。

213 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 10:10:13 ]
う、うん

214 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 11:35:57 ]
うんうん(´・ω・`)もきゅもきゅ

215 名前:デフォルトの名無しさん [2010/01/13(水) 11:43:32 ]
うんじゃなくてハイでしょ!

216 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 11:51:21 ]
ハッシュテーブルについて語り尽くそうぜ!!

217 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 11:52:42 ]
C#にはハッシュテーブルは存在しない

でもDictionaryならあるから別に困らない。

218 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 14:11:00 ]
つ System.Collections.Hashtable

219 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 14:11:59 ]
>>217 大苦笑

220 名前:デフォルトの名無しさん [2010/01/13(水) 14:41:54 ]
AxWebBrowser もしくは WebBrowserを使ってHTML表示をさせているのですが
ブラウザによくあるCTRL+ホイールでページサイズを切り替えるには
どうすればいいのでしょうか?




221 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 16:04:09 ]
>>220
Microsoft.ShDocVw.dllを参照追加。
フォームのコンストラクタに以下のコードを追加。
int r = 100;
const int OLECMDID_OPTICAL_ZOOM = 63;
this.MouseWheel += new MouseEventHandler((s, e) =>
{
if (this.webBrowser1.Document == null) return;
r += e.Delta / 120 * 25;
object or = r;
object z = Type.Missing;
((IWebBrowser2)this.webBrowser1.ActiveXInstance).ExecWB((OLECMDID)OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT, ref or, ref z);
});
CTLキー押しながらではないが、ホイールを押しながらで拡大縮小する。

222 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 16:23:36 ]
WebBrowserにフォーカスがあるときに対応しようとすると面倒だな
HTMLDocumentEvents2_Event.onmousewheel辺りになるかね

223 名前:220 mailto:sage [2010/01/13(水) 16:32:13 ]
>>221
ありがとうございます

できました

224 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 18:40:31 ]
オブジェクト指向ってめんどくさいね

C言語だったらたとえばスクリーンの任意の座標に文字を表示するのは
最初からそういうメソッドがあるDLLなりヘッダファイルなりがあれば
write("Hello",30,50);
一行でできるのに

C#だったら
String s="Hello";
Label l =new Label();
l.Text=s;
l.Positon=new Position(30,50);
l.Show();

こんな五行もかかないといけない
生産性を犠牲にしてわかりやすくしてるのかね?

225 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 18:50:22 ]
C#でそういうメソッドがあれば同じじゃん

226 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 18:52:48 ]
こんなバカ初めて見た

227 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 18:56:43 ]
なにこれ・・・

C言語だとTalk(Taro);
だったのが
C#だと
Taro.Talk();になってるだけじゃねーか!
()の中に書くか.の前に書くかの違いってそんなに重要なのかねぇ

228 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 19:01:51 ]
>>224
C#からでもDLLでも呼べるだろ。
C言語で作ったDLLであってもね。

229 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 19:06:54 ]
class A{
int x;
}

なクラスがあったとして
Mainの中で
A a=new A();
ってやったら

aはヒープにあるの?
xはint型だからスタックにあるの?
どっち?

230 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 19:09:43 ]
>>229 ひーぷ



231 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 19:10:35 ]
>>227
String s="Hello";
Label l =new Label();
l.Text=s;
l.Positon=new Position(30,50);
l.Show();

これをC#でも一つのメソッドにまとめてクラスなりDLLから
呼び出せるってのを理解していないと思われ。プログラムの
基本すら怪しい。

232 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 19:11:40 ]
Aの実体がヒープに確保される
xは値型なので実体はヒープに確保されず、直接Aの実体の中に用意される

で、Aの実体への参照がローカル変数aで、これはスタックに確保される

233 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 19:15:00 ]
>>232
えっと、、、
ネタだよね?

234 名前:232 mailto:sage [2010/01/13(水) 19:16:46 ]
ネタだよ

235 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 19:44:08 ]
>>227
ポリモーフィズムを理解すればなぜそう書くかわかる

236 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 19:52:58 ]
ぶざけ、、、

237 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 20:09:41 ]
自分で作ったユーザーコントロールにイベントを送りたいんだけど、どうすればいいでしょう(´・ω・`)

238 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 20:17:08 ]
イベントを送るってどういう意味なんだw

239 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 20:20:16 ]
イベントの実装方法が分からない。
イベントハンドラーの追加の方法が分からない。
IDEのプロパティタブからイベントハンドラーを追加できるようにしたい。

こんなところか、どれだろうね〜

240 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 20:22:07 ]
まだ?(´・ω・`)



241 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 20:37:41 ]
>>237
呼び出し側なら、他の既存コントロールと同じやり方でいいだろ。

242 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 20:54:32 ]
イベントのインターフェースを実装してやればいいだけだけどデリゲートがわからないなら諦めたほうが早い

243 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 22:11:35 ]
C#初心者用の鉄板参考書は何でしょう
動物の表紙?

244 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 22:22:35 ]
Effective C# ……、いや、なんでもない。

245 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 22:29:12 ]
初心者っていってもいろいろあるだろ
プログラミング経験の有無
プログラミング自体に興味があるのか,それとも作りたいモノがあって手段として覚えるのか

246 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 22:51:34 ]
Effective C#は初心者向けじゃないわぁ。

プログラミング経験があってWebで読むのが苦じゃないなら
@ITのC#入門とかわりと良いと思う。無料だし。
www.atmarkit.co.jp/fdotnet/csharp_abc2/index/index.html

247 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 22:52:05 ]
立ち読みすればわかるけどクックブックは初心者向けの章がごっそり削られてるから初心者は買わないほうがいい

248 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 22:53:05 ]
つ 金魚

249 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 22:59:12 ]
イマイチ情報が古い感じが否めない

250 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 23:13:24 ]
プログラミング言語に古くならない教科書なんてあったっけ?

そういえば、プログラミング言語に死語という概念はあるのかな…
(スレ違いすまん)



251 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 23:20:16 ]
陳腐化するってのはあるねぇ

252 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 23:27:13 ]
SICPは長寿だろ

253 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 23:58:50 ]
EffectiveC#はいちど立ち読みしてみたい
近くの本屋に置かないかな

254 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 00:30:36 ]
EffectiveC#は目次みる限りじゃ読んでみたくなるような内容ではあるよね。
たださすがに今更感がただよう感じも。1.0時代の話だし。

255 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 00:37:10 ]
ジェネリックって内部はどういう仕組みになってるの?

256 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 00:49:32 ]
コンパイル時にチェックしてるだけじゃないの?

257 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 01:08:45 ]
>>255
MSIL レベルでいうと、専用命令持ってる。

JIT レベルでいうと、参照型は全部コード共有。
要するに、GenericType<object> と同じコードになる。
キャストが不要な分効率がいい。
値型の場合はそれぞれ専用コードが作られるらしい。

258 名前:デフォルトの名無しさん [2010/01/14(木) 06:59:11 ]
こういうデータを管理するのに適したクラスとかありますか?

大見出し1
  小見出し1-1
  小見出し1-2
大見出し2
  小見出し2-1
  小見出し2-2
・・・・
  小見出し2-9

大見出し、小見出しともに最大項目数は可変です
できれば小見出しに関連した文字列などを管理できるともっとうれしいです


259 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 07:24:57 ]
>>258
XML+DOM

260 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 07:55:05 ]
規格名は忘れたが、MS WordとかOOoで使われているやつとか>XML



261 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 09:41:20 ]
ListだのDictionaryだの自作のクラスだの組み合わせて普通に作っちゃってもいいと思うけどね。
DOMやXMLは汎用的だけど本当にそれだけのデータ保持するんだとしたら巨大すぎる。


262 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 09:58:55 ]
>>258
datatable

263 名前:258 [2010/01/14(木) 10:35:30 ]
やはりXMLなどを利用することになりますよね

内部的な管理だけならArrayListでやったほうがいいのでしょうか?

264 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 10:45:03 ]
提示されたデータ構造だけ考えるとわりとシンプルだし、
どう使うかによるけどメソッド含めて自作でも大した手間にはならないと思う。

ただ、XMLだと構造拡張したりテキストに落しこんだり検索したりってのに
標準化された多彩な方法が使えるってメリットは大きいよね。

まあどのみち一番外側は自作のクラスでラップするんだろうし
どっちもためしてみるってのがいいんじゃない?

265 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 10:46:32 ]
いいんじゃない?

266 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 10:47:21 ]
>>258
いいんじゃね?
ArrayListは配列要素はobject型なんで、
それよListなどの型指定できるヤツのほうがプログラミングしやすい(インテリセンスでるから)

267 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 10:53:15 ]
今はジェネリックを使わない積極的な理由はないもんな。

268 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 11:29:09 ]
むしろ、非ジェネリック版使うのは非推奨だからなぁ。
あれはあくまで互換性のためだけに残ってる。

269 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 11:31:23 ]
JSONもあり

270 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 11:36:38 ]
JSONってどっちかっていうとメッセージ交換用のプロトコルみたいなもんで
内部で積極的に使用する必要って無い気がするんだけど



271 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 11:39:17 ]
言ってみただけ

272 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 12:19:41 ]
許す

273 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 15:01:40 ]
許さない

274 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 15:06:11 ]
ようこそ許さん

275 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 15:24:57 ]
来る、来ない、帰らない、帰る♪

276 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 15:40:08 ]
絶対にだ

277 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 21:51:10 ]
VC#はVisual Basic.netよりインテリセンスがやや使いづらいな。
Visual C++に比べればはるかにマシだけど。

インテリセンスをVB.netみたいに細かく調整できないのかな?

278 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 21:51:57 ]
慣れだと思うけどね。

279 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 21:56:19 ]
VBはインテリセンスのために生まれてきた言語だし。

280 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 21:56:34 ]
>VB.netみたいに細かく調整
???
なんか勘違いしてるんじゃないの



281 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 21:57:39 ]
VSってエクスプレスエディションしか使ったことがないんですが
有料のバージョンにすれば、エクリプスのようにリファクタリングの機能が増えますか?

282 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:07:28 ]
エクリプスつかったことないからわからん

283 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:10:32 ]
リファクタリングできるけど Eclipse 程多機能ではない。
名前の変更とかメソッドシグネチャの変更とかインターフェイスの抽出とかは余裕でできる。

284 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:12:46 ]
有料のバージョンだと何か良いことあるの?(´・ω・`)

285 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:15:02 ]
難読化できる→モバイル開発できる→テスト環境がうんぬん

286 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:17:14 ]
2010のテストツールは結構面白い

287 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:17:34 ]
有料版はプラグインが使用できる
リファクタリングできる
モバイル開発ができる
Office 開発ができる
統合された単体テストができる

などなど

288 名前:デフォルトの名無しさん [2010/01/14(木) 22:24:50 ]
オレの場合、standerdだとプラグインでankSVNが使えるのが大きい
やっちまったときに戻せるからね
Blend 2の付録として手に入れたけど、合計15000円程度と安かったし

289 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:29:39 ]
>>281
C#はそれなり。VBは名前の変更くらい。

290 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:30:37 ]
>>283
どもです。



291 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:43:23 ]
Eclipseは機能試してるだけで2日くらい経過した記憶がある

292 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 22:47:59 ]
>>288
そうなんだよな。
EEだとIDEからバージョン管理出来ないから結構さぼりがちになっちゃう。


293 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:19:52 ]
ロジクールの10ボタンマウスとかあるが
Formのマウスクリックイベントとかで特殊ボタンの検出ってできるの?

どうやればできる?

294 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:28:52 ]
>>293
MouseEventArgsだと5ボタンまでだもんなぁ。
.NETじゃ無理なんじゃない?

295 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:39:04 ]
>>293
どうせマウスのユーリティーでホットキーや特定のプログラムをショートカットで起動するのに割り当てたりするから、
純粋なマウス入力として使う事自体があまりないよ。

マウスホイールを回した時と、ホイールクリックに反応できれば十分。

296 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:45:16 ]
そもそもマウスドライバレベルで他の動作に置き換えられるんじゃないかなぁ…
可能性があるとしたらDirectInput?

297 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:51:40 ]
俺がマウスの設計者なら、単純にキーボードとマウスの複合デバイスにするけどね。
そうなら余分なキーは、キーイベントで拾えるんじゃないのか。

298 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:54:37 ]
Listview内にdouble型の数値ばかりが入った列があります。
これをソートしたいのですが、どうすれば良いでしょうか?
ttp://dobon.net/vb/dotnet/control/lvitemsort.html
の下のほうにある部分を参考にしたのですが

case ComparerMode.Integer:
result = int.Parse(itemx.SubItems[_column].Text) -
int.Parse(itemy.SubItems[_column].Text);
break;

でエラーが出ます。

299 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:57:53 ]
エラーが出ます、で思考停止せずにエラーの内容ぐらい読もうぜ
取り敢えずなんでdoubleが入ってるのにintでParseしてるんだ?

300 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:01:17 ]
そんな物つかうソフトを誰が使う?



301 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:02:49 ]
>>298
ソートしたいんだったらArray.Sort使ったら?

302 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:03:49 ]
C#で、フォームでクリックしたらとかフォームでEnterキーが押されたら
とかあるけど
ディスプレイのフォーム以外の場所でもクリックしたら〜とかってUse32.dll使用なしでできる?

303 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:04:39 ]
>>299
入力文字列の形式が正しくありません

ってエラーでで当然なんですが、とりあえず
Doubleで比較したい場合はどういう記述をすればよいでしょうか?

304 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:06:27 ]
本当に分からんのか?


305 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:06:29 ]
>>301
ListViewのソートなんだから迂遠だろそれ

>>302
無関係なところのクリックとなるとマネージじゃ無理だな
WH_MOUSE_LLとかRawInputとかDirectInput使う必要がある

306 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:08:46 ]
変数名を動的につけることはできますか?
例えば1_1.csv 1_2.csv … n_n.csv内のデータを読み込み、それぞれ配列に収めたいとき、
配列名をarray1_1 array1_2 …といったふうに付けていきたい。という要望です

307 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:11:29 ]
//文字列をdouble型に変換
double d = double.Parse("100.1");

308 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:11:58 ]
>>306
その動的につけた変数名の変数、
いったいどうやって使うおつもり?w

309 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:14:34 ]
>>306
配列に配列を入れていけばいいんだよ

310 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:15:47 ]
ジャグ配列



311 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:16:20 ]
>>308
そうか!…
>>309
なるほど、そうします。

312 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:17:46 ]
>>306
そんなことする必要全く無いじゃないか。
ファイル名と付属データをペアリングしたstructを用意して、DirectoryかListに放りこめば十分。

313 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:18:07 ]
>>304
ttp://dobon.net/vb/dotnet/control/lvitemsort.html
を見てもらったらわかると思うんですが
resultがint型なんで最終的にどうすればよいか
わからないんです・・・。

314 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:19:55 ]
>>313
なんでやねん
if double.parse(x) > double.parse(y) {
result 1;
} else if () {
resule -1;
}
とかしていけばええやん

315 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:23:02 ]
>>313,314
>ListViewのListViewItemSorterプロパティに、並べ方を定義したIComparerインターフェイスを実装したクラスのインスタンスを設定します。
なお、IComparerによる並び替えについては、「コレクション(または配列)内の要素を方法を指定して並び替える(または検索する)」でも説明しています。

って書いてるじゃねーか。

316 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:29:41 ]
やめろ
初心者なんだからお前らが想像も付かない所で躓いてるもんなんだよ

マウスを動かすと机から落ちてしまいます
みたいな

317 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 00:36:10 ]
Double.CompareTo()でいいだろ。

318 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 01:15:41 ]
全部教えるとそいつはそれ以上育たなくなる、自分で考えないとってテレビで農家のおじさんが言ってたよ

319 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 01:17:15 ]
農業界なんて先細り真っ只中だから
そういう考え方はハズレだったのだろうな

320 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 02:11:03 ]
C#でDLLの作成をしようと試みています。
DLLはアプリケーションのプラグインで、プラグインは本体から登録された各dllに対し、
グローバル関数が呼ばれるような仕様になっているのですが、
(例えばplugin.dllのInit()を呼び出す、といったような形になっている)
C#はグローバル関数をサポートしていないため、どのように受ければよいのかが分かりません。
C#のみでこのような呼び出しに対応する方法はあるでしょうか。それともラッパーをC++等の他の言語で書いて、
経由するしかないでしょうか。




321 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 02:16:59 ]
後者YES
C++/CLIでも使った方が楽じゃねえかと思う

322 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 02:17:51 ]
>>320
リフレクションで呼び出すか、プラグインinterfaceのDLLを準備する。

323 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 02:19:41 ]
プラグイン側がC#で呼び出すほうは違うのかな?
なら>>322はなしで。

324 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 02:24:00 ]
グローバル関数って言ってるからLoadLibrary+GetProcAddressだろう
注意しておくとグローバル関数にするだけじゃ駄目な
エクスポートしないと

325 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 02:27:46 ]
>>321
ありがとうございます。C#の勉強も兼ねているので、ちょっと泥臭いことも含めて色々試して見ます。

>>322-333
リフレクション云々が分からずぐぐってみてましたが、DLL側で属性の定義をしておくと
C#のDLLを呼び出す場合にアセンブリ情報を使って条件分岐等出来るということなのでしょうか。
また別で調べてみます。どうもありがとうございました。

326 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 02:32:49 ]
泥臭いも何も、ネイティブからLoadLibraryで呼び出される類のプラグインはC#のみだと作成できないぞ

327 名前:デフォルトの名無しさん [2010/01/15(金) 03:04:54 ]
コンテナをいくつか配置して、その中に動的にボタンなどを入れ込む場合
プログラム全体としてうまく管理する方法はないでしょうか?

クリックイベントはコンテナ単位で共通にした上で
ボタンなどを動的に作る際の名前(Name)に
記号+識別番号A+識別番号Bを文字列化しています。
ただこの方式だとクリックイベントを処理する際にNameから
元の番号を切り出して・・とあまりスマートではないので

よろしくお願いします。




328 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 03:08:12 ]
もう少し目的を具体的に書けよ
うまく管理したいって何を

ボタンごとに情報を持たせたいとかそれだけならButton.Tagに何か入れとけ

329 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 03:19:08 ]
共通のイベントハンドラから、どのボタンが押されたのかを識別する為に
名前から特定の文字列を抜き出して識別する現状の方法以上にいい方法があるか
…ってこと?

330 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 03:19:17 ]
>>325
ちょっとひねればプラグインのサポートはそんなに難しくないよ。
まず、プラグインの雛形となるinterfaceやenumを定義した基本となる情報を入れたDLL(A)を作成する。
それを元にプラグインのDLL(B)を作成する。
アプリ本体は(A)に参照設定を持っておいて、(B)をリフレクションで読み込む。
(B)のコードはinterface越しに扱えばいい。



331 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 03:25:43 ]
派生コントロール作ってsenderから独自プロパティ参照して云々するのが
オブジェクト指向的にはあってるんじゃないの

「コード書くのがめんどくせぇ」っていうなら今の方法がいちばんだからそのままにしとけ

332 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 03:27:19 ]
だね。

333 名前:デフォルトの名無しさん [2010/01/15(金) 03:29:23 ]
>>328
>Button.Tagに何か入れとけ

>>329
はい

>>331
つまりボタンなりを継承したクラス作ってそこに・・・ということですか


334 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 03:30:19 ]
ああ・・中途半端な状態で・・・orz
>>328
>Button.Tagに何か入れとけ
確かにこれもいいですね

335 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 04:20:50 ]
ttp://www.atmarkit.co.jp/fdotnet/architecture/petshop/petshop_01.html
↑で紹介されているPetshop3.0についてなんですが
記事ではコードを読むことを勧めていたので
ttp://www.microsoft.com/downloads/details.aspx?FamilyId=E2930625-3C7A-49DC-8655-A8205813D6DB&displaylang=en
記事中の↑のページから、サイト内をいろいろ探してみたのですが
ソースコードの所在がわかりません。
どこを見落としているのか、自分ではとうとう発見できずにいます。
どなたかわかる方いらっしゃいましたらご教授願えないでしょうか。よろしくお願いします。

336 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 04:48:49 ]
何のギャグだよ
それインストールすりゃはいってる

337 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 07:15:58 ]
>>326
ILをいじるという方法はあるけどな。

338 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 07:29:59 ]
formにlistboxをFillで貼り付けてウインドウサイズを変更すると
きっちり張り付くわけじゃないんですね

たぶんlistboxのアイテムの高さの関係で制御してるんでしょうけど・・


339 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 10:02:47 ]
逆P/Invokeっていう冗談みたいなものがあったな
ildasmで逆コンパイルしてILを直接編集しろとか
MS公式のドキュメントに普通に書いてあって目を疑った






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<69KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef