ふらっとC#,C♯,C#(初心者用) Part53at TECH
ふらっとC#,C♯,C#(初心者用) Part53 - 暇つぶし2ch2:デフォルトの名無しさん
10/01/10 12:19:54
参考サイト

URLリンク(www.google.co.jp)
URLリンク(msdn.microsoft.com)
URLリンク(homepage3.nifty.com)
URLリンク(www.atmarkit.co.jp)
URLリンク(dobon.net)
URLリンク(jeanne.wankuma.com)
URLリンク(www.labasp.net)

3:デフォルトの名無しさん
10/01/10 12:20:10
終わり

4:デフォルトの名無しさん
10/01/10 12:43:56
スレリンク(tech板:993番)


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

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

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

8:デフォルトの名無しさん
10/01/10 13:11:27
罵りあいに費やした時間:プライスレス

9:デフォルトの名無しさん
10/01/10 13:14:50
人気あるな

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

11:デフォルトの名無しさん
10/01/10 13:22:53
>>10
ない

12:デフォルトの名無しさん
10/01/10 13:26:38
>>10
あるかも

13:デフォルトの名無しさん
10/01/10 13:31:43
>>10
ありますん

14:デフォルトの名無しさん
10/01/10 13:34:59
>>10
ある!

15:デフォルトの名無しさん
10/01/10 13:43:51
>>10
API使え

16:デフォルトの名無しさん
10/01/10 15:49:02
>>10
あるアルヨ

17:デフォルトの名無しさん
10/01/10 16:00:14
お前ら…

18:デフォルトの名無しさん
10/01/10 17:15:00
実は…

19:デフォルトの名無しさん
10/01/10 17:30:24
俺の・・・

20:デフォルトの名無しさん
10/01/10 17:31:10
自演

21:デフォルトの名無しさん
10/01/10 17:31:47
ではなく・・・

22:デフォルトの名無しさん
10/01/10 17:55:54
あたし女だけど・・・

23:デフォルトの名無しさん
10/01/10 18:04:36
明日…

24:デフォルトの名無しさん
10/01/10 18:06:29
あたし成人式…

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

26:デフォルトの名無しさん
10/01/10 18:55:27
Int32.MaxValue個

27:デフォルトの名無しさん
10/01/10 18:56:39
その前にOutOfMemory来ないかしら

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

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

30:デフォルトの名無しさん
10/01/10 19:10:02
LongCount ってのもあるよ。

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

32:デフォルトの名無しさん
10/01/10 20:12:28
ないね

33:デフォルトの名無しさん
10/01/10 20:15:27
ないアルヨ。

34:デフォルトの名無しさん
10/01/10 20:17:29
>>33
もうそういうのいいから
暇ならテレビでも見てなさい

35:デフォルトの名無しさん
10/01/10 20:21:58
>>33
これだから低能はw

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

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

38:デフォルトの名無しさん
10/01/10 21:08:21
俺の目はごまかせないぜ

39:デフォルトの名無しさん
10/01/10 22:09:10
でも>>22はほんとうなの・・・

40:デフォルトの名無しさん
10/01/10 22:27:11
#region ゴミレス

41:デフォルトの名無しさん
10/01/10 22:27:32
このスレにはおっさんしかいません。

42:デフォルトの名無しさん
10/01/10 22:29:13
#endregion

43:デフォルトの名無しさん
10/01/10 22:45:32
#if false

44:デフォルトの名無しさん
10/01/10 22:52:32
#pragma

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

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

47:デフォルトの名無しさん
10/01/10 23:55:18
コンパイル通らねーよw

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

49:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/11 01:36:17
form_loadedとか?

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

52:デフォルトの名無しさん
10/01/11 01:55:48
>>49
Mouse.GetPostion(・・・);

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

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

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

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

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

どうかお教え願います。

54:デフォルトの名無しさん
10/01/11 02:13:01
>>53
URLリンク(www.technoveins.jp)
ここのQRコードの読み込みって参考にならない?

55:デフォルトの名無しさん
10/01/11 02:34:22
>>54

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


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

57:デフォルトの名無しさん
10/01/11 02:56:50
>>56

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


58:デフォルトの名無しさん
10/01/11 05:09:41
>>53
確かにスレッドが死んでることは確認した?


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

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

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

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

63:デフォルトの名無しさん
10/01/11 11:39:04
なんだろうこのキチガイは・・・。

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

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

66:デフォルトの名無しさん
10/01/11 12:00:43
どうしようもないな・・・

67:デフォルトの名無しさん
10/01/11 12:06:24
C#ブリブリ・・・。

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

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

69:デフォルトの名無しさん
10/01/11 13:21:46
ショートカットキー?

ショートカットファイルのなら、
URLリンク(msdn.microsoft.com)(VS.85).aspx
とかかな。

70:デフォルトの名無しさん
10/01/11 13:27:38
DLLをEXEでラップしてexeをwaitすればいいと思う

71:デフォルトの名無しさん
10/01/11 13:33:36
へー。

72:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/11 13:37:20
数回リトライするようにすればいいんじゃね?

74:デフォルトの名無しさん
10/01/11 13:38:38
mutexを使えばいいんじゃないか

75:デフォルトの名無しさん
10/01/11 13:38:52
>>73
自己解決しました笑

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

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

78:デフォルトの名無しさん
10/01/11 13:48:01
log4netってあんまり使われてない?

79:デフォルトの名無しさん
10/01/11 13:49:34
lockじゃ他のプロセスとの排他はできないんじゃ

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

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

82:デフォルトの名無しさん
10/01/11 14:05:09
え?

83:デフォルトの名無しさん
10/01/11 14:05:22
イベントログでも使ったら

84:デフォルトの名無しさん
10/01/11 14:06:54
>>81
FILE_SHARE_READ
FILE_SHARE_WRITE
FILE_SHARE_DELETE

85:デフォルトの名無しさん
10/01/11 14:09:42
>>76みたいな質問を半分しか読まない奴も死んでくれ

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

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

88:デフォルトの名無しさん
10/01/11 15:14:16
ワロタ

89:デフォルトの名無しさん
10/01/11 15:27:51
>>87
普段脳味噌使ってない人なんだろ、たぶん。

90:デフォルトの名無しさん
10/01/11 15:35:12
せめて脊髄にして欲しかったな

91:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/11 16:04:26
クラスにすればおk

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


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

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

95:デフォルトの名無しさん
10/01/11 16:21:47
そもそも、それは配列なのか?

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

97:デフォルトの名無しさん
10/01/11 16:30:42
自分でインデクサ書いてみればわかる

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

99:デフォルトの名無しさん
10/01/11 16:36:48
structは危険だな。


100:デフォルトの名無しさん
10/01/11 16:40:47
structは"ゆきお"とはうまくやっていけないんだよ

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

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

103:デフォルトの名無しさん
10/01/11 16:56:55
>>92
Listとか配列の機能についてこう思ってるのかな

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

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

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

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

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

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

108:デフォルトの名無しさん
10/01/11 17:20:23
>>105
君の脳も間違ってる。

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

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

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

110:デフォルトの名無しさん
10/01/11 20:10:52
ラジオボタンでやるなよ。

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

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

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

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

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

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

116:デフォルトの名無しさん
10/01/11 20:46:39
どのタイミングでAのEnabledをTrueにすんの?

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

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

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

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

120:デフォルトの名無しさん
10/01/11 20:57:47
いや。おかしいだろ。

121:デフォルトの名無しさん
10/01/11 21:01:07
おかしいですね

122:デフォルトの名無しさん
10/01/11 21:02:37
おかしくないアルヨ

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

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

125:デフォルトの名無しさん
10/01/11 21:09:47
>>122
あるのかないのかどっちだ

126:デフォルトの名無しさん
10/01/11 21:39:52
その自演つまんない

127:デフォルトの名無しさん
10/01/11 21:46:40
ラジオボタンをクリックしてもラジオが聞けません

128:デフォルトの名無しさん
10/01/11 21:50:27
>>127
んあ?(-_-メ)

129:デフォルトの名無しさん
10/01/11 21:54:23
(#^ω^)

130:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/11 23:29:43
一番肝心なところを以下省略てw
ふざけてるのかな

132:デフォルトの名無しさん
10/01/11 23:43:29

AddRsv2

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

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

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

よろしくお願いします。

134:デフォルトの名無しさん
10/01/11 23:54:21
>>130
IDropTargetを実装すればいい

135:デフォルトの名無しさん
10/01/12 00:03:24
>>134
詳しい説明をお願いします。

136:デフォルトの名無しさん
10/01/12 00:04:59
なんか態度が気にくわないから教えない

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


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

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

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

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


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

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

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

143:デフォルトの名無しさん
10/01/12 10:57:58
アセンブラ使え

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

145:デフォルトの名無しさん
10/01/12 10:59:55
そういう問題か

146:デフォルトの名無しさん
10/01/12 11:02:18
文字列検索のアルゴリズムが使えるのではないかと

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

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

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

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

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

152:デフォルトの名無しさん
10/01/12 12:38:57
>>142
URLリンク(www2.starcat.ne.jp)

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

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

155:デフォルトの名無しさん
10/01/12 14:52:51
俺はこんな感じのスニペット作ってるので"_Hoge"

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

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

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

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

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

158:デフォルトの名無しさん
10/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++はサッパリちゃんなので、どなたか御教示いただけませんでしょうか。宜しくお願いします
URLリンク(anonymousriver.hp.infoseek.co.jp)

159:デフォルトの名無しさん
10/01/12 15:26:22
スレタイ良く見ろ

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

161:デフォルトの名無しさん
10/01/12 15:29:42
publicに対してルールがあるだけで、privateには好きに命名すればいいと思うよ
URLリンク(msdn.microsoft.com)

162:デフォルトの名無しさん
10/01/12 15:30:23
↓で聞いてきます。失礼しました

【初心者歓迎】C/C++室 Ver.70【環境依存OK】
スレリンク(tech板)

163:デフォルトの名無しさん
10/01/12 15:30:39
らめぇぇぇ

164:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/12 17:23:17
filesizeいくら?

166:164
10/01/12 17:27:48
>>165
245268 でした。

167:デフォルトの名無しさん
10/01/12 17:31:33
>>164
問題は他の部分だろうね

168:164
10/01/12 17:53:14
>>167
他とはnewが原因ではないということでしょうか?

169:デフォルトの名無しさん
10/01/12 17:59:20
new/deleteで異常終了する(Visual C++)
スレリンク(tech板)

このスレ参照のこと


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

171:デフォルトの名無しさん
10/01/12 18:02:42
OutOfMemoryException というのも思い込みじゃない?

172:164
10/01/12 18:19:12
>>169
ありがとうございます。
今から読んでみます。

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

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

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

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

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

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

177:164
10/01/12 18:40:43
>>169,175
メモリ破壊を疑ってみます。
アドバイスありがとうございました。

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

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

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

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

181:133
10/01/12 19:50:28
>>133
ですが、引き続きよろしくお願いします。

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

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

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

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

186:デフォルトの名無しさん
10/01/12 20:04:05
>>184
カス

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

188:デフォルトの名無しさん
10/01/12 20:11:34
>>187
なるほど

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

190:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/12 21:22:01
コピペ君、まで読んだ。

192:デフォルトの名無しさん
10/01/12 21:25:41
int* なんか使っちゃったりすると64bitで動作しなくなったりするの?

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

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


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

196:デフォルトの名無しさん
10/01/12 22:35:12
>>133
tlbimpにRsvData.dll突っ込めばなんとかなりそう?

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

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

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

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

199:デフォルトの名無しさん
10/01/12 23:08:27
えー
つまんね

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

201:133
10/01/12 23:29:12
>>198
やってみました。

IEpgRsv rsv = new IEpgRsv();

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




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

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

204:デフォルトの名無しさん
10/01/12 23:35:39
>>201
ありゃ、CoClassもってなかったのね ごめん

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

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

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

207:デフォルトの名無しさん
10/01/12 23:53:05
インド人 = right;

208:デフォルトの名無しさん
10/01/12 23:55:48
ザンギュラ乙

209:デフォルトの名無しさん
10/01/13 00:07:24
C#のList<T>ってC++の
vector<T>と基本的に同じ?

210:デフォルトの名無しさん
10/01/13 00:15:21
うん

211:デフォルトの名無しさん
10/01/13 06:55:59
うーん

212:デフォルトの名無しさん
10/01/13 07:08:58
ううん。。。

213:デフォルトの名無しさん
10/01/13 10:10:13
う、うん

214:デフォルトの名無しさん
10/01/13 11:35:57
うんうん(´・ω・`)もきゅもきゅ

215:デフォルトの名無しさん
10/01/13 11:43:32
うんじゃなくてハイでしょ!

216:デフォルトの名無しさん
10/01/13 11:51:21
ハッシュテーブルについて語り尽くそうぜ!!

217:デフォルトの名無しさん
10/01/13 11:52:42
C#にはハッシュテーブルは存在しない

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

218:デフォルトの名無しさん
10/01/13 14:11:00
つ System.Collections.Hashtable

219:デフォルトの名無しさん
10/01/13 14:11:59
>>217 大苦笑

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


221:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/13 16:23:36
WebBrowserにフォーカスがあるときに対応しようとすると面倒だな
HTMLDocumentEvents2_Event.onmousewheel辺りになるかね

223:220
10/01/13 16:32:13
>>221
ありがとうございます

できました

224:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/13 18:50:22
C#でそういうメソッドがあれば同じじゃん

226:デフォルトの名無しさん
10/01/13 18:52:48
こんなバカ初めて見た

227:デフォルトの名無しさん
10/01/13 18:56:43
なにこれ・・・

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

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

229:デフォルトの名無しさん
10/01/13 19:06:54
class A{
int x;
}

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

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

230:デフォルトの名無しさん
10/01/13 19:09:43
>>229 ひーぷ

231:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/13 19:11:40
Aの実体がヒープに確保される
xは値型なので実体はヒープに確保されず、直接Aの実体の中に用意される

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

233:デフォルトの名無しさん
10/01/13 19:15:00
>>232
えっと、、、
ネタだよね?

234:232
10/01/13 19:16:46
ネタだよ

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

236:デフォルトの名無しさん
10/01/13 19:52:58
ぶざけ、、、

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

238:デフォルトの名無しさん
10/01/13 20:17:08
イベントを送るってどういう意味なんだw

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

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

240:デフォルトの名無しさん
10/01/13 20:22:07
まだ?(´・ω・`)

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

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

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

244:デフォルトの名無しさん
10/01/13 22:22:35
Effective C# ……、いや、なんでもない。

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

246:デフォルトの名無しさん
10/01/13 22:51:34
Effective C#は初心者向けじゃないわぁ。

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

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

248:デフォルトの名無しさん
10/01/13 22:53:05
つ 金魚

249:デフォルトの名無しさん
10/01/13 22:59:12
イマイチ情報が古い感じが否めない

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

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

251:デフォルトの名無しさん
10/01/13 23:20:16
陳腐化するってのはあるねぇ

252:デフォルトの名無しさん
10/01/13 23:27:13
SICPは長寿だろ

253:デフォルトの名無しさん
10/01/13 23:58:50
EffectiveC#はいちど立ち読みしてみたい
近くの本屋に置かないかな

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

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

256:デフォルトの名無しさん
10/01/14 00:49:32
コンパイル時にチェックしてるだけじゃないの?

257:デフォルトの名無しさん
10/01/14 01:08:45
>>255
MSIL レベルでいうと、専用命令持ってる。

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

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

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

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


259:デフォルトの名無しさん
10/01/14 07:24:57
>>258
XML+DOM

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

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


262:デフォルトの名無しさん
10/01/14 09:58:55
>>258
datatable

263:258
10/01/14 10:35:30
やはりXMLなどを利用することになりますよね

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

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

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

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

265:デフォルトの名無しさん
10/01/14 10:46:32
いいんじゃない?

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

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

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

269:デフォルトの名無しさん
10/01/14 11:31:23
JSONもあり

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

271:デフォルトの名無しさん
10/01/14 11:39:17
言ってみただけ

272:デフォルトの名無しさん
10/01/14 12:19:41
許す

273:デフォルトの名無しさん
10/01/14 15:01:40
許さない

274:デフォルトの名無しさん
10/01/14 15:06:11
ようこそ許さん

275:デフォルトの名無しさん
10/01/14 15:24:57
来る、来ない、帰らない、帰る♪

276:デフォルトの名無しさん
10/01/14 15:40:08
絶対にだ

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

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

278:デフォルトの名無しさん
10/01/14 21:51:57
慣れだと思うけどね。

279:デフォルトの名無しさん
10/01/14 21:56:19
VBはインテリセンスのために生まれてきた言語だし。

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

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

282:デフォルトの名無しさん
10/01/14 22:07:28
エクリプスつかったことないからわからん

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

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

285:デフォルトの名無しさん
10/01/14 22:15:02
難読化できる→モバイル開発できる→テスト環境がうんぬん

286:デフォルトの名無しさん
10/01/14 22:17:14
2010のテストツールは結構面白い

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

などなど

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

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

290:デフォルトの名無しさん
10/01/14 22:30:37
>>283
どもです。

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

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


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

どうやればできる?

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

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

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

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

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

298:デフォルトの名無しさん
10/01/14 23:54:37
Listview内にdouble型の数値ばかりが入った列があります。
これをソートしたいのですが、どうすれば良いでしょうか?
URLリンク(dobon.net)
の下のほうにある部分を参考にしたのですが

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

でエラーが出ます。

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

300:デフォルトの名無しさん
10/01/15 00:01:17
そんな物つかうソフトを誰が使う?

301:デフォルトの名無しさん
10/01/15 00:02:49
>>298
ソートしたいんだったらArray.Sort使ったら?

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

303:デフォルトの名無しさん
10/01/15 00:04:39
>>299
入力文字列の形式が正しくありません

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

304:デフォルトの名無しさん
10/01/15 00:06:27
本当に分からんのか?


305:デフォルトの名無しさん
10/01/15 00:06:29
>>301
ListViewのソートなんだから迂遠だろそれ

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

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

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

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

309:デフォルトの名無しさん
10/01/15 00:14:34
>>306
配列に配列を入れていけばいいんだよ

310:デフォルトの名無しさん
10/01/15 00:15:47
ジャグ配列

311:デフォルトの名無しさん
10/01/15 00:16:20
>>308
そうか!…
>>309
なるほど、そうします。

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

313:デフォルトの名無しさん
10/01/15 00:18:07
>>304
URLリンク(dobon.net)
を見てもらったらわかると思うんですが
resultがint型なんで最終的にどうすればよいか
わからないんです・・・。

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

よろしくお願いします。




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

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

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

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

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

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

332:デフォルトの名無しさん
10/01/15 03:27:19
だね。

333:デフォルトの名無しさん
10/01/15 03:29:23
>>328
>Button.Tagに何か入れとけ

>>329
はい

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


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

335:デフォルトの名無しさん
10/01/15 04:20:50
URLリンク(www.atmarkit.co.jp)
↑で紹介されているPetshop3.0についてなんですが
記事ではコードを読むことを勧めていたので
URLリンク(www.microsoft.com)
記事中の↑のページから、サイト内をいろいろ探してみたのですが
ソースコードの所在がわかりません。
どこを見落としているのか、自分ではとうとう発見できずにいます。
どなたかわかる方いらっしゃいましたらご教授願えないでしょうか。よろしくお願いします。

336:デフォルトの名無しさん
10/01/15 04:48:49
何のギャグだよ
それインストールすりゃはいってる

337:デフォルトの名無しさん
10/01/15 07:15:58
>>326
ILをいじるという方法はあるけどな。

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

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


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


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