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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

どうかお教え願います。

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

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

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


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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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


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

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

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

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

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

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

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

108 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/01/11(月) 20:10:52
ラジオボタンでやるなよ。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

129 :デフォルトの名無しさん: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/01/11(月) 23:54:21
>>130
IDropTargetを実装すればいい

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

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

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

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

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

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

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

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

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

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

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

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

149 :デフォルトの名無しさん: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:2010/01/12(火) 12:38:24
そうですか。俺はいつもmyTextとか書いているけど、そっちの方がいいのかな(´・ω・`)

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

155 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/01/12(火) 14:53:35
俺は先頭にアンダーバー付ける派、理由はそうしてる人が多そうだから

157 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/01/12(火) 15:26:22
スレタイ良く見ろ

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

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

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

166 :164:2010/01/12(火) 17:27:48
>>165
245268 でした。

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

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

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

このスレ参照のこと


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

201 :133:2010/01/12(火) 23:29:12
>>198
やってみました。

IEpgRsv rsv = new IEpgRsv();

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




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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

できました

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

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

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

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

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

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

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

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

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

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

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

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

234 :232:2010/01/13(水) 19:16:46
ネタだよ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

257 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/01/14(木) 07:24:57
>>258
XML+DOM

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

などなど

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

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

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

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

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


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

どうやればできる?

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

よろしくお願いします。




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

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

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

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

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

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

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

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

>>329
はい

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


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

335 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2010/01/15(金) 04:48:49
何のギャグだよ
それインストールすりゃはいってる

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

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

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


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

340 :デフォルトの名無しさん:2010/01/15(金) 11:48:36
treeViewの.SelectedNode.CollapseとSelectedNode.Expandで
クリックのたびに開いたり閉じたりしたいのですが現在どちら
かという情報を取得する方法はありますか?



341 :340:2010/01/15(金) 11:50:55
もう一点
同じくtreeViewのFullRowSelect = trueの際に幅全体をクリック判定が
おきるようにする方法はありますか?

342 :デフォルトの名無しさん:2010/01/15(金) 12:42:12
>>340
ttp://msdn.microsoft.com/ja-jp/library/system.windows.forms.treenode_members.aspx

343 :デフォルトの名無しさん:2010/01/15(金) 15:20:44
・・・・・・

treeViewの.SelectedNode.CollapseとSelectedNode.Expandで
クリックのたびに開いたり閉じたりしたいのですが現在どちら
かという情報を取得する方法はありますか?

344 :デフォルトの名無しさん:2010/01/15(金) 15:22:58
>>343
ttp://msdn.microsoft.com/ja-jp/library/system.windows.forms.treenode_members.aspx

メンバ一覧くらい見ろよ
見る気ないならスレから出てけ

345 :340:2010/01/15(金) 15:27:09
TreeViewのオーナードロー関連もやってて返答遅くなったら変な流れに・・・

>>342
ありがとうございます。

>>344
それは私じゃないです
プログラム板ってIDないから困るw

>>343
Toggleっていう切り替え用があるのを知らなかったので
そういうプロパティなどがあると思っての質問なのでその辺の質問は忘れてください。

346 :デフォルトの名無しさん:2010/01/15(金) 15:29:44
いや、そういうプロパティもあるから

347 :デフォルトの名無しさん:2010/01/15(金) 15:42:32
あるある

348 :デフォルトの名無しさん:2010/01/15(金) 16:16:05
スレから出てけとか何様?
ここはお前のスレじゃないっつーの

349 :デフォルトの名無しさん:2010/01/15(金) 16:41:20
そういうお前のスレか?

350 :デフォルトの名無しさん:2010/01/15(金) 16:45:39
文句があるなら出てけ!

351 :デフォルトの名無しさん:2010/01/15(金) 16:48:51
WebBrowserコントロールのUserAgentを取得する方法は
ないでしょうか?

352 ::2010/01/15(金) 16:58:42
>>348-350
俺が立てたスレだから俺のスレということで一つ。
もう解決してるし、>>345は344が偽者だって言ってるし、目くじら立てる必要性ないじゃない。

353 :デフォルトの名無しさん:2010/01/15(金) 17:02:04
なんか5年前に比べてC#を叩くアホはいないくなったな
C#人口が増えたのかな?

354 :デフォルトの名無しさん:2010/01/15(金) 17:03:43
取得できました。

355 :デフォルトの名無しさん:2010/01/15(金) 17:07:02
C (34243 プロジェクト)
C# (11838 プロジェクト)
C++ (37428 プロジェクト)
Java (46958 プロジェクト)

C#,追いついてきました

356 :デフォルトの名無しさん:2010/01/15(金) 17:10:17
>>354
どうやったのかできれば教えて

357 :デフォルトの名無しさん:2010/01/15(金) 17:11:27
胸が熱くなってくるな

358 :デフォルトの名無しさん:2010/01/15(金) 17:20:04
>>356
ここを見ました。
http://fine.ap.teacup.com/hepo/28.html

359 :デフォルトの名無しさん:2010/01/15(金) 17:22:30
無料のすごい開発環境が手に入るから初心者がふえたんじゃねーの。

Visual C#てに入れたら
Ruby(笑)とかPHP(笑)とかあまりにもゴミすぎて洋梨だわ。

360 :デフォルトの名無しさん:2010/01/15(金) 17:45:00
>>358
ありがとうございます。

そういえばコードを書いてるとどうしてもformにあれこれ増えてしまいますが
どう対処してますか?
クラス分けとか頑張ってますがformに貼り付けたイベントハンドラとかごっそり増えるし

361 :デフォルトの名無しさん:2010/01/15(金) 17:46:26
>そういえばコードを書いてるとどうしてもformにあれこれ増えてしまいますが
>どう対処してますか?
>クラス分けとか頑張ってますがformに貼り付けたイベントハンドラとかごっそり増えるし
あ、この部分はスレのみなさんにという意味です

362 :デフォルトの名無しさん:2010/01/15(金) 18:04:07
イベントハンドらはformが持つべきものなんだからどれだけ増えてもいいよ
中にコードだらだらと書いてないならおkでしょ

363 :デフォルトの名無しさん:2010/01/15(金) 18:13:16
自分で書いたコードのクラス分けは、プログラム作っている時は全部、同じクラスで作って、完成後、じっくりと別クラス化していく( ・ω・)y─┛〜〜

364 :デフォルトの名無しさん:2010/01/15(金) 18:15:50
そうだな

365 :デフォルトの名無しさん:2010/01/15(金) 19:08:13
フォームは機能毎にユーザーコントロール化してクラス分けするな
後はコントロールの数を出来るだけ減らす(無関係な機能の共用は避けるが)ことか

366 :デフォルトの名無しさん:2010/01/15(金) 19:08:54
ですね

367 :デフォルトの名無しさん:2010/01/15(金) 19:21:39
C言語だとカーニハンとリッチーのC本がバイブルみたいになってるけど
C#はそういうバイブルみたいな、これだけは絶対もっとけみたいな本ないの?

368 :デフォルトの名無しさん:2010/01/15(金) 19:24:33
ないんじゃないの
というかいらないでしょ
不便だな〜と思ったらAPIたたけばいいんだし
それこそVB6のころのAPI使うイメージとさほどかわらないし
ネットで十分、この辺のスレもあるし

369 :デフォルトの名無しさん:2010/01/15(金) 19:24:45
K&Rに相当するものだったらmsdn読んどけでいいんじゃないかなぁ。
昔と違って言語仕様なんかは普通にネットで読めるからな。

もっと普遍的な設計方法とかそっちの方の必読本の方が多いんじゃない?



370 :デフォルトの名無しさん:2010/01/15(金) 19:25:41
動物シリーズを枕がわりに買っとけばいいんじゃないの?

371 :デフォルトの名無しさん:2010/01/15(金) 19:31:39
いいかも

372 :デフォルトの名無しさん:2010/01/15(金) 19:37:49
オライリー本は無駄に揃えたくなる

373 :デフォルトの名無しさん:2010/01/15(金) 19:40:58
head なんとか買っちゃった・・・

374 :デフォルトの名無しさん:2010/01/15(金) 20:04:07
客先に配布するWindowsフォームアプリケーション
(.NET Framework3.5 SP1の環境で作成)を作成しています。
Click Once によるWeb上からダウンロードしてもらう予定です。
必須コンポーネントは、
・Windowsインストーラー3.1
・.NET Framework Client Profile
・Visual Basic PowerPack 1.2
の3点です。

事前に、客先で上記コンポーネントをMicrosoft社からダウンロードしてもらうことができたらと思っています。
Microsoft社の頁を見たところ、下記のサイトがありました。
@ Microsoft .NET Framework 3.5
http://www.microsoft.com/downloads/details.aspx?FamilyID=333325fd-ae52-4e35-b531-508d977d32a6&displaylang=ja
AMicrosoft .NET Framework 3.5 Service Pack 1
http://www.microsoft.com/downloads/details.aspx?FamilyId=AB99342F-5D1A-413D-8319-81DA479AB0D7&displaylang=ja
@、Aのサイトを見たのですが、
(1).NET3.5SP1については@またはAの両方のサイトからダウンロードする必要があるのか。
また、@をインストールする際に、@の中にある日本語パックもインストールする必要し、さらにAをインストールする必要があるのか。
それとも、@、Aでは不十分で、他に適したサイトがあるのか。
(2).NET3.5SP1のみ先に入れてもらうだけだと、
Windoesインストーラーと、Visual Basic Power Pack1.2をサイトからダウンロードする必要があるが、
この2点をダウンロードする時間はどれくらいか。

で悩んでいます。
どう対処すればよろしいでしょうか。Microsoft社の各サイトの意味合いが理解できていません。よろしくお願いいたします。


375 :デフォルトの名無しさん:2010/01/15(金) 20:10:59
Visual Basic PowerPackとか・・・

376 :デフォルトの名無しさん:2010/01/15(金) 20:18:54
Click Onceでインストールすれば終わりじゃないのか。

377 :デフォルトの名無しさん:2010/01/15(金) 20:33:58
SP1だけでいいよ〜。
ネットワークインストールの場合、どっち使っても最新になってしまったような記憶が。

378 :デフォルトの名無しさん:2010/01/15(金) 20:51:02
>>374
VirtualPCに素のWindowsを入れて試せばよろし。
MSのサイトからのダウンロード時間なんて回線によっても
時間帯によっても全然変わってくるんだから議論する意味なんて殆どない。

わざわざ人に質問するより自分で実験した方が早いような内容だな。

379 :デフォルトの名無しさん:2010/01/15(金) 21:00:07
>>378
うるさい!

380 :デフォルトの名無しさん:2010/01/15(金) 21:09:17
なんだかんだいってもイイ奴が多いな

381 :デフォルトの名無しさん:2010/01/15(金) 21:11:48
このスレの8割は真人間によって構成されてますから

382 :デフォルトの名無しさん:2010/01/15(金) 21:20:45
残りの2割がスレの8割を書き込んでるからあんまり意味ないけどな。

383 :デフォルトの名無しさん:2010/01/15(金) 21:22:27
フヒヒ

384 :デフォルトの名無しさん:2010/01/15(金) 21:25:59
まあ個人プログラマーの8割が個人らしいからな(´・ω・`)

385 :デフォルトの名無しさん:2010/01/15(金) 21:28:58
>>382
なんという2割8割の法則

386 :デフォルトの名無しさん:2010/01/15(金) 22:07:32
Client Profileならこっちでしょうに。 1.5Mで小さいよ。
http://www.microsoft.com/downloads/details.aspx?FamilyID=c109e400-784c-4904-a719-0c457df65ee9&DisplayLang=ja

387 :デフォルトの名無しさん:2010/01/15(金) 23:46:13
>>386
事前に英語版をインストールしなきゃいけないかもよ。

388 :デフォルトの名無しさん:2010/01/16(土) 00:26:47
(´・ω・`) ぷぅ〜

389 :デフォルトの名無しさん:2010/01/16(土) 00:36:51
くっせえ

390 :デフォルトの名無しさん:2010/01/16(土) 00:49:53
>>336
遅ればせながらありがとうございました。
そういうものだったとは素で知りませんでした…。

391 :デフォルトの名無しさん:2010/01/16(土) 00:53:54
皆さんは、アプリケーションを作成する際、
システムエラー(Catch時)の情報をどのように表示させてますか?
エラーコードを振って、メッセージボックスに表示させたりしてる?

392 :デフォルトの名無しさん:2010/01/16(土) 01:06:04
メッセージボックス自体には回復方法を載せといて
詳細ボタンを押すとエラーコードと補助情報が出るようにしてる

回復方法っていってもアプリ再起動してくださいとかそんなんぐらいになっちゃうけど・・・




393 :デフォルトの名無しさん:2010/01/16(土) 02:45:46
>>391
http://msdn.microsoft.com/ja-jp/library/aa511267.aspx

394 :デフォルトの名無しさん:2010/01/16(土) 06:49:26
var 変数って使ってますか?
全然慣れないんだけど


395 :デフォルトの名無しさん:2010/01/16(土) 08:10:53
暗黙型付けのvarなのか匿名型のvarなのか

396 :デフォルトの名無しさん:2010/01/16(土) 08:22:57
var x=10;

var n = new { name = "abc"};

上のvarと下のvarは違うvar

397 :デフォルトの名無しさん:2010/01/16(土) 08:35:34
本当は慣れてるのに質問しました。ニッコリ

398 :デフォルトの名無しさん:2010/01/16(土) 09:05:50
まーあんまり関係ないんだろうけどさ

System.Environment.SpecialFolder
とくるのに
System.IO.Directory
とかさ・・・


399 :デフォルトの名無しさん:2010/01/16(土) 09:24:38
10 と new { name = "abc"} が違うのであって、
var の役割は同じだろ。

400 :デフォルトの名無しさん:2010/01/16(土) 09:33:54
>>398
Windowsの世界では フォルダ ⊃ ディレクトリ なので

401 :デフォルトの名無しさん:2010/01/16(土) 09:44:04
>>400
なるほど

Cになれちゃってるとふとあれfreeや後始末は・・・とか
エラーチェック・・・とか

ゲシュタルト崩壊っていうんでしたっけ?

あまりにも楽できるので時々変な感覚になる

402 :デフォルトの名無しさん:2010/01/16(土) 11:38:49
エラーチェックは別になくなったわけじゃないけど
下位で発生したエラーを一々上位に上げなくても勝手にあがってくのはほんと楽でいいよね

403 :デフォルトの名無しさん:2010/01/16(土) 12:53:25
ふーん

404 :デフォルトの名無しさん:2010/01/16(土) 12:57:42
というかエラーを知らせたところで、ほとんどの場合、ユーザーは対処のしようが無いわけだから出さなくても良いんだよ( ・ω・)y─┛〜〜

405 :デフォルトの名無しさん:2010/01/16(土) 13:00:47
> C言語だとカーニハンとリッチーのC本がバイブルみたいになってるけど

さすがに、今は駄目なソースのバイブルですよ


406 :デフォルトの名無しさん:2010/01/16(土) 13:01:07
エラー忘却ですかどこかのシステムみたいですね
俺もいろいろ忘却したいです

と与太話は置いといて

ArrayListに自作classを登録してるんですがキャストを省略できるような
方法ってありますか?

407 :デフォルトの名無しさん:2010/01/16(土) 13:04:57
>>406
List<MyClass>を使う

408 :デフォルトの名無しさん:2010/01/16(土) 13:09:17
> ArrayListに自作classを登録してるんですがキャストを省略できるような
> 方法ってありますか?

2.0以降ならList<>使え。
1.1以前ならCollectionBase継承して自分でカスタムコレクション作れ。

409 :デフォルトの名無しさん:2010/01/16(土) 13:10:53
>>408
作ってあげなさい
( ・ω・)y─┛〜〜

410 :デフォルトの名無しさん:2010/01/16(土) 13:11:31
いまさら2.0以前を使ってる人なんているの?

411 :デフォルトの名無しさん:2010/01/16(土) 13:12:51
古い教科書読んでるとかじゃないのかね

412 :デフォルトの名無しさん:2010/01/16(土) 13:14:23
>>407-410
たぶん2.0以降だと思います。
(VC#2008EEを最近入れて.netのバージョンまで意識してなかった

LIST<>ですか
ArrayListと比べて速度はどうなんでしょ


413 :デフォルトの名無しさん:2010/01/16(土) 13:42:59
早い。

414 :デフォルトの名無しさん:2010/01/16(土) 13:46:20
キャストしなくて済むようになるから速度上るよ。
気になるなら1000個ぐらい何か読み書きするサンプルでも作って時間測ってみるといい。

415 :デフォルトの名無しさん:2010/01/16(土) 14:02:23
時間空いたら速度確認してみます>ListとArray

もし多少遅くてもキャストを書かなくていいのが精神的にいいです


416 :デフォルトの名無しさん:2010/01/16(土) 14:11:51
>>415
なんか誤解してる予感....

417 :デフォルトの名無しさん:2010/01/16(土) 14:12:22
そもそもexpress使ってる奴がそんな速度を気にする
プログラムなんか作ってんのか?10000程度リストに
ぶち込んでも速度なんて体感じゃ変わらんだろ。

418 :デフォルトの名無しさん:2010/01/16(土) 14:13:19
Excelのマクロが.netに対応して
VBだけじゃなくC#にも対応してくれないかなぁ

419 :デフォルトの名無しさん:2010/01/16(土) 14:19:51
つVSTO

420 :デフォルトの名無しさん:2010/01/16(土) 14:29:20
すみません、プロジェクトの組み方の方法論としてまだわかっていない
ことがあるのですが、よろしくお願いします!

コンポーネントやユーザーコントロールなどを作成するプロジェクトで、
それを複数作成してアプリケーションで使う場合、各コンポーネントや
ユーザーコントロールが共通に使っている下位の要素として、
Windows.Forms とか そのほか自分で作成した共通用のクラスとかがある
場合、作成しようとしている複数のコンポーネントやコントロールは
できるだけ一つのプロジェクトにまとめてしまう方が出来上がった全体
でのメモリー使用量は節約されるでしょうか?

現在は各コンポーネントやコントロールがばらばらのプロジェクトで
別々に作成されていましたが、各プロジェクトは共通に使っている下位
のクラスが結構ありました。アドバイスをお願いします。

421 :デフォルトの名無しさん:2010/01/16(土) 14:31:08
一つのプロジェクト内でソリューションでわければいいんじゃ・・・

422 :デフォルトの名無しさん:2010/01/16(土) 14:31:15
>>420
そもそもその質問では開発環境の使用メモリを言ってるのか、
開発したプログラムの使用メモリを言ってるのかの区別がつかないんだが?

423 :デフォルトの名無しさん:2010/01/16(土) 14:32:47
そりゃ重複は少ない方がいいのは当たり前だけど
依存関係を複雑にしすぎるとかえって扱いにくくなるので
しょうもないユーティリティはプロジェクト別にその場で書いたほうがいいよ

424 :デフォルトの名無しさん:2010/01/16(土) 14:42:00
windowsXP で .NetFramework2.0用のソースをビルドしようとすると、

 指定された実行可能タスクの場所 "c:\WINDOWS\Microsoft.NET\Framework\v3.5\Csc.exe" が無効です。 (MSB6004)

というエラーが出ます。実際このフォルダに、「csc.exe」は見つかりませんでした。
.NetFramework2.0 のフォルダには、あります。

一体なぜ、入っていないのでしょうか。どのうような対応をすればよいのでしょうか。

これ以前にも、V2.0のフォルダにも入っていなかったことがあり、インストーラで修復を行ったところ、
csc.exeが現れたことがありました。今回も、v3.5に対して、修復を行いましたが、変化なく、存在しないままです。

425 :デフォルトの名無しさん:2010/01/16(土) 14:42:44
最終的に出来上がるのののこといってるなら誤差じゃないのかね


426 :デフォルトの名無しさん:2010/01/16(土) 14:48:59
>>425
日本語....

427 :デフォルトの名無しさん:2010/01/16(土) 14:50:41
>>424
なんで素直にIDE使わないの?

428 :デフォルトの名無しさん:2010/01/16(土) 14:55:07
Visual Studioなんてクソ環境つかってられるか!

429 :デフォルトの名無しさん:2010/01/16(土) 14:58:57
>>424
Client Profile入れてるとか

430 :デフォルトの名無しさん:2010/01/16(土) 15:29:27
>>428
たしかに

431 :デフォルトの名無しさん:2010/01/16(土) 15:30:59
じゃあなに使うのさ

432 :デフォルトの名無しさん:2010/01/16(土) 15:32:52
メモ帳…かな…

433 :デフォルトの名無しさん:2010/01/16(土) 15:38:50
メモ帳って…あの最強開発ツールか…

434 :デフォルトの名無しさん:2010/01/16(土) 15:45:29
そういう時期ってあるよね。IDEなんて使ってられっかって言いたくなる時期。


435 :デフォルトの名無しさん:2010/01/16(土) 15:47:29
IDEを嫌がる奴って雑魚だよなw

436 :デフォルトの名無しさん:2010/01/16(土) 15:51:50
インテリはインテリセンスなんて使わない(キリッ

437 :デフォルトの名無しさん:2010/01/16(土) 16:21:24
そもそもインテリはプログラマーなんかにならないし( ・ω・)y─┛〜〜

438 :デフォルトの名無しさん:2010/01/16(土) 16:27:14
結局Unixのhacker達だってemacsっていう『IDE』を使ってるわけで。
標準外の開発環境を自分の意志で選んだなら、いちいち人に質問しないで全部自分で解決しろと。

439 :デフォルトの名無しさん:2010/01/16(土) 16:35:19
>>438
emacsはIDEじゃねーよ一緒にすんなタコ
使ったことないなら聞いたような口聞くなボケ

440 :デフォルトの名無しさん:2010/01/16(土) 16:39:31
>>439
そういうところがキモオタ。

441 :デフォルトの名無しさん:2010/01/16(土) 16:46:35
viエディター使えるようになっておかないと、Xウインドウが立ち上がらない時困るぞ、っと上司に言われたこと覚えているよ。

442 :デフォルトの名無しさん:2010/01/16(土) 16:55:14
>>441
% cat > hoge.c


443 :デフォルトの名無しさん:2010/01/16(土) 17:09:06
>>367
C:\Program Files\Microsoft Visual Studio 9.0\VC#\Specifications\1041\CSharp Language Specification.doc

割とマジで

444 :デフォルトの名無しさん:2010/01/16(土) 17:39:00
そんなファイルなかった。
C:\Program Files\Microsoft Visual Studio 9.0\VC#\
ここまであったが
VC#フォルダにCSharpProjectsとSnippetsとVCSPackages
しかなかった!

445 :デフォルトの名無しさん:2010/01/16(土) 17:53:00
うちのには入ってた
VS2008 Pro SP1適用済み


446 :デフォルトの名無しさん:2010/01/16(土) 18:03:43
うちはあったけど、英語のが入ってる。
8.0の方にはC#2.0のが日本語であった。
3.0のはこっち
http://download.microsoft.com/download/B/6/C/B6C2DA74-08F9-4B18-BB10-CF6DB1A5CFE2/csharp_30_specification.doc


447 :デフォルトの名無しさん:2010/01/16(土) 18:17:22
Hello, world紹介してCollectionによるStackクラスを説明したら、
もういきなりコマンドラインでコンパイルしてアセンブリ説明が始まる。
さすがは公式!(褒め言葉)

448 :デフォルトの名無しさん:2010/01/16(土) 18:20:57
言語仕様なんかコンパイラ作る人が理解できればいいだけだから

449 :デフォルトの名無しさん:2010/01/16(土) 18:55:32
共有されるユーティリティ類をまとめて一つのプロジェクト(dll)にすればいいだけ。
メモリ使用量はそりゃ細かく言えば全部一つの方が少なくて済む(事が多い)が
気にするやつがあほなレベル(巨大なアプリならまた話は別だが)。


450 :デフォルトの名無しさん:2010/01/16(土) 18:57:38
大体、今時のGB級のメモリ積んでる環境では誤差レベル


451 :デフォルトの名無しさん:2010/01/16(土) 19:00:05
そんなにメモリとか処理速度のこと気にしたいならTopCoderにでも参加しようぜ


452 :デフォルトの名無しさん:2010/01/16(土) 19:05:12
>>441
vt100(もしくは互換品)使えないときはスクリーンエディットできないし、
/usrがマウントできないときのために、最低限edは使えるようになって
おくのが、管理者としては必須。

453 :デフォルトの名無しさん:2010/01/16(土) 19:07:35
テレタイプやカードパンチャーも
もいっか

454 :デフォルトの名無しさん:2010/01/16(土) 19:26:45
>>453
おじいちゃん、お口臭い( ・ω・)y─┛〜〜

455 :デフォルトの名無しさん:2010/01/16(土) 19:46:13
そうか、じゃあポリデント!

456 :デフォルトの名無しさん:2010/01/16(土) 19:55:30
某社のプロジェクトでは1クラス1DLLなんて凄まじいこと
してたな。理由は最小限の影響でDLL入れ替えるためだと。

457 :デフォルトの名無しさん:2010/01/16(土) 20:03:54
それが決まりならば特筆する事は無い

458 :デフォルトの名無しさん:2010/01/16(土) 20:11:32
相互参照できないな

459 :デフォルトの名無しさん:2010/01/16(土) 20:23:27
そこで .netmodule ですよ。
使ってるところは見たことが無いけど

460 :デフォルトの名無しさん:2010/01/16(土) 20:37:02
マルチモジュールアセンブリって個別にモジュールだけ入れ替えられたっけ?
リンクし直さないといけなかったような

461 :デフォルトの名無しさん:2010/01/16(土) 20:45:03
フォームの表示・非表示で通知領域のアイコンを右クリックしたときに
表示されるコンテキストメニューを変えたいのですが、
Win+Dで見えなくなったフォームの状態を取得することって出来るのでしょうか?

this.Visibleはtrue、this.WindowStateはWindowState.Normalで、
this.Locationを見ても普通に非表示前と同じ位置なんです。

462 :デフォルトの名無しさん:2010/01/16(土) 21:28:16
出来る気がする

463 :デフォルトの名無しさん:2010/01/16(土) 21:49:21
おれの環境で試してみたら、Locationが全然違う値になったけどな。

464 :デフォルトの名無しさん:2010/01/17(日) 00:47:35
stringって参照型だと思ってたんだけど
以下のコードが上手くいかない
どうしてでしょうか

class Test
{

public static void Main()
{
string str = "入ってない";
change(str);
Console.WriteLine(str);
}

static void change(string str)
{
str = "入った";
}
}

465 :デフォルトの名無しさん:2010/01/17(日) 01:04:39
stringクラスの説明読めばいいよ

466 :デフォルトの名無しさん:2010/01/17(日) 01:05:52
stringは使う側から見ると値型みたいに見える参照型

change(str);
の時点では "入ってない"の参照先が渡されてるけど
str = "入った"とした時点で
change()内のstrの参照先が変更されて新たに作られた"入った"を参照するようにされるから
参照元の引数にしたstrの方には影響が無い

467 :デフォルトの名無しさん:2010/01/17(日) 01:09:59
>>464
参照情報を値渡ししてるんだからそういう挙動で当たり前。


468 :デフォルトの名無しさん:2010/01/17(日) 01:10:40
>>466
string だからとか関係なく、すべての参照型で同じ挙動になるよ。

469 :デフォルトの名無しさん:2010/01/17(日) 01:11:43
参照型がコピーされるんじゃなくて
参照型に入ってる参照がコピーされてる

string str = "入ってない";
のstrと
change(string str)
のstrは同じ参照が入った参照型だが、同じ参照型ではない

参照型ゲシュタルト崩壊

470 :デフォルトの名無しさん:2010/01/17(日) 01:13:26
>>463
どうなってます?

471 :デフォルトの名無しさん:2010/01/17(日) 01:14:27
ニホンゴムズカシイネ

472 :デフォルトの名無しさん:2010/01/17(日) 01:18:10
そらそうよ

473 :デフォルトの名無しさん:2010/01/17(日) 01:22:08
Cに置き換えたほうが「ポインタ変数に入ってるアドレスがコピーされてる」となってわかりやすいな(言葉的に)
ちなみに参照型を参照渡ししたいなら以下のようにする

class Test
{
public static void Main()
{
string str = "入ってない";
change(ref str);
Console.WriteLine(str);
}
static void change(ref string str)
{
str = "入った";
}
}

474 :デフォルトの名無しさん:2010/01/17(日) 01:24:48
>>468
Listとか引数で渡しても元Listの要素の削除や追加とかできるぜ

475 :デフォルトの名無しさん:2010/01/17(日) 01:27:22
464のコードだと値とか参照とか関係なく
変わるな。
strのかわりにstructなのをいれようがclassをいれようが・・・

476 :デフォルトの名無しさん:2010/01/17(日) 01:28:05
str = "入った";
   ↑
つまりこれがstringの新しいインスタンス生成になってるってことだよな

477 :デフォルトの名無しさん:2010/01/17(日) 01:32:41
うん。
Person p1=new Person();
Person p2=p1;
p2.name = "ビルゲイツ"
だとp1.nameも変わるけど
p2=new Person();
p2.name = "ビルゲイツ";
だったらかわらんしょ。
.nameとか入ってるから違う話になるけど。

478 :デフォルトの名無しさん:2010/01/17(日) 01:33:26
474には呆れる

479 :デフォルトの名無しさん:2010/01/17(日) 01:35:17
>>91にもあったけど参照関係はしっかり理解してないと混乱するな

480 :デフォルトの名無しさん:2010/01/17(日) 01:38:58
>>474
そんなの参照を渡してんだから当たり前だろ。

>str = "入った";

って、実際は

>str = new String("入った")

なんだよ。
だから>>464のコードをListで書き直すなら

>list = new List();

になる。
これで元リストの要素に追加削除できると思う?
思うんなら思ってても別にいいけど外で喋るなよ。
恥ずかしいから。

481 :デフォルトの名無しさん:2010/01/17(日) 01:41:05
>>480
もうちょっと落ち着いて、自分が書いたことを見直して。

482 :デフォルトの名無しさん:2010/01/17(日) 01:42:06
つまりstringが他の参照型と違う点は、new string()てしなくても
インスタンス生成ができるってことでいいのかな?

483 :デフォルトの名無しさん:2010/01/17(日) 01:43:30
参照型の混乱は変数という概念が出てくるときに必ず言われる
変数は「箱」ですっていうイメージが強すぎるのかね。

int x=10;
xという名前の箱に10が入ってる!?みたいな?

484 :464:2010/01/17(日) 01:44:32
changeの中でstrが指すものを書き換えてると勘違いしてた
strの参照先を変えてるだけだよな、そりゃそうだ
ありがとう

485 :デフォルトの名無しさん:2010/01/17(日) 01:47:45
>>482
ちょっと違うな
string s = "あいうえお";
string t = "あいうえお";
this.Text = Object.ReferenceEquals(s, t).ToString();

通常の参照型だとふつうに考えたら
"あいうえお"はメモリのどっかに確保され
また別の場所に"あいうえお"が確保され(二つの場所に"あいうえお")
があるように見える。
しかしこれはひとつの領域を参照してるのでtrueになる。

486 :デフォルトの名無しさん:2010/01/17(日) 01:49:48
>>485
stringは参照型なのに比較の時は参照比較じゃなくて値比較になると思った

487 :デフォルトの名無しさん:2010/01/17(日) 01:52:17
これかな

>string は参照型ですが、等値演算子 (== および !=) は、string オブジェクトの参照ではなく、
>値を比較するように定義されます。値を比較することで、文字列が等しいかを直感的にテストできます。

ttp://msdn.microsoft.com/ja-jp/library/362314fe(VS.80).aspx

488 :デフォルトの名無しさん:2010/01/17(日) 01:53:10
あと
string s="あいうえお";
string t="あいうえ";
string u="あいうえ"+"お";
これは参照もsとuはおなじ

だがu=t+"お"とやるとuは"あいうえお"という文字列だが参照は異なる

こんな風にややこしいから注意

string u="あいうえ"+"お";
string u=t+"お";//t="あいうえ"

この二つ違うので注意

489 :デフォルトの名無しさん:2010/01/17(日) 01:54:54
stringの仕様はややこしいんだな

490 :デフォルトの名無しさん:2010/01/17(日) 01:57:00
この話題も定期的に出るような気がする

参照型は通常同じ文字列を比較しても参照するアドレスが違うので
falseになるのが使い勝手悪いからという理由でC#は値比較で設計されたはず

491 :486:2010/01/17(日) 01:58:22
>>485は参照元比較の話だったから話が違ったようだ スマン

492 :デフォルトの名無しさん:2010/01/17(日) 01:59:13
あえて文字列を生成したいならこうだね。
string x = new string( new char [] {'a', 'b', 'c'} ); 

文字リテラルの代入はILレベルで専用命令がある。
考え方としては代入時にstringが生成されるというより、
あらかじめ生成済みのオブジェクトがはじめからそこにあると考えたほうが正しいと思う。
ldstr      "abc"


493 :デフォルトの名無しさん:2010/01/17(日) 02:02:53
>>490
最近FC#始めたばかりなのでこうゆう話題は勉強になる。
よく悩むのは参照関係だしね。

494 :デフォルトの名無しさん:2010/01/17(日) 08:17:35
System.Environment.・・・・
というシステムに関する情報を持ってるクラスがありますが
自作プログラムの共通情報を持たせたい場合はどのように記述すればいいのでしょうか?

495 :デフォルトの名無しさん:2010/01/17(日) 08:50:28
自己解決しそうです

496 :デフォルトの名無しさん:2010/01/17(日) 09:03:50
してません
IDほしい・・・

497 :デフォルトの名無しさん:2010/01/17(日) 09:37:44
static classを自分で定義するかアプリケーション設定でもいい

498 :デフォルトの名無しさん:2010/01/17(日) 09:46:36
>>497
Singletonは?

499 :デフォルトの名無しさん:2010/01/17(日) 10:02:12
それ自体が悪いとは言わないけどシングルトンというかグローバル変数だよねそれ

500 :デフォルトの名無しさん:2010/01/17(日) 10:08:04
レジストリに情報書くのはどうよ

501 :デフォルトの名無しさん:2010/01/17(日) 10:11:06
とりあえずdobonくらい見ろよ

502 :デフォルトの名無しさん:2010/01/17(日) 10:42:22
Settingsというのもあるけど

503 :デフォルトの名無しさん:2010/01/17(日) 11:20:02
海外の(英語の)サイトでもいいんでC#の入門用WEBページってない?
マイクロソフトのページは単なるデータ集で入門向けじゃないね。

504 :デフォルトの名無しさん:2010/01/17(日) 11:29:28
C#プログラミングって
net Frame Work SDKっていうのとテキストエディタだけあればとりあえず始められるの?

505 :デフォルトの名無しさん:2010/01/17(日) 11:31:53
Hello world! 止まりなら

506 :デフォルトの名無しさん:2010/01/17(日) 11:32:33
.NETが一切入っていないPCに、
ClickOnceから、
.NET CLIENT PROFILE
をインストールしてもらい、併せてVisual Basic Power Pack 1.2
もインストールしてもらおうとしたら、
Visual Basic Power Pack 1.2は.NET2.0がなきゃだめです。
と言われてしまいました。
ClientProfileは、.NET2.0も含んでいるわけではないのですか?
うまくいかなくて困っています。助けてください。

507 :デフォルトの名無しさん:2010/01/17(日) 11:36:07
>>504
うん。ま、でも、無難にExpress使っとけ。

508 :デフォルトの名無しさん:2010/01/17(日) 11:36:49
>>506
(フルセットでは)含んでません。

509 :デフォルトの名無しさん:2010/01/17(日) 11:47:35
フルセット…ということは、
CilentProfileのコンパクト版インストール要件を満たさない場合は、
フルセットがインストールされることになり、
その3.5SP1フルセットにはVisual Basic Power Packsがないため、
結局、Visual Basic Power Packs を別途インストールする必要があるってことですか?

510 :デフォルトの名無しさん:2010/01/17(日) 11:53:09
>>503
入門っていわれてもなあ・・・
プログラム経験ある?
最新のVC#2008について書かれたサイトすくないからなあ

511 :デフォルトの名無しさん:2010/01/17(日) 12:03:02
IDEを使った簡単なブラウザの作成方法
http://msdn.microsoft.com/ja-jp/library/360kwx3z.aspx

↓VC#2008EEの使い方ビデオ(英語)
http://go.microsoft.com/fwlink/?LinkId=99324

512 :デフォルトの名無しさん:2010/01/17(日) 12:05:27
VB PowerPackがフルセットの.NET 3.5SP1を必要とするなら、
そのとおりだね。

513 :デフォルトの名無しさん:2010/01/17(日) 12:14:49
HelloWorld!がとまらない

514 :デフォルトの名無しさん:2010/01/17(日) 13:47:51
while(true){
MessageBox.Show("こんにちはこんにちは");
}

oh!

515 :デフォルトの名無しさん:2010/01/17(日) 13:49:13
・.net未インストール
・VB PowerPacks1.2 が必要
・インストールするアプリケーションは.net3.5sp1で作成
のとき、どうすれば最も効率よく、web上からインストールしてもらえるでしょう…。

516 :デフォルトの名無しさん:2010/01/17(日) 13:52:55
Web上からも何も普通にインストーラー作成すればいいだけじゃねーのか?

つーか、仕事に関するサポートなんてここでするものじゃないです。
金払ってマイクロソフトに聞け

517 :デフォルトの名無しさん:2010/01/17(日) 13:56:38
孫プロセスが起動されたかどうかを監視し、その標準出力を得る方法はありますか?

携帯動画変換君のようなプログラムを作っています
子プロセスのウインドウを表示したくないので、子プロセスのウインドウを非表示にし
標準出力と標準エラーをProcess.BeginOutputReadLine他を使って横取りして起動しています。
起動したい子プロセスに、さらに子プロセスを起動するものがあり
この孫プロセスに対しても同様の処理をさせたいのですが可能なのでしょうか?
Processクラスには孫プロセスの起動を監視できそうなものがありませんし
親子関係を調べられそうなものもありません。

ちなみに問題の子プロセスは具体的にはTSConverterで
ソースがあるので無理ならば子プロセスの起動部分を書き直そうと思っています

518 :デフォルトの名無しさん:2010/01/17(日) 13:59:28
子プロセスのウィンドウ作らなきゃいいんじゃねーの?とか
子プロセスで動かしてるのは自分で書いたプログラムなら
子プロセスから子プロセスを起動した時にイベント起こして親プロセスにわたせばいいんじゃねーの?
可能なのでしょうか?っていうなら試してみればいいじゃない

519 :デフォルトの名無しさん:2010/01/17(日) 14:07:13
うん。

520 :デフォルトの名無しさん:2010/01/17(日) 14:09:17
プロセスの監視というより、標準入出力のハンドルを伝播するだけの話かな?
コンソール系のアプリなら標準でそうなってると思うが、
Windowアプリは知らないな。

521 :デフォルトの名無しさん:2010/01/17(日) 14:11:52
うん

522 :デフォルトの名無しさん:2010/01/17(日) 14:15:41
ううん

523 :デフォルトの名無しさん:2010/01/17(日) 14:45:47


524 :デフォルトの名無しさん:2010/01/17(日) 14:50:41


525 :デフォルトの名無しさん:2010/01/17(日) 14:53:42
>>507 うん。

526 :デフォルトの名無しさん:2010/01/17(日) 15:00:54
なんでマルチポストするの?

527 :デフォルトの名無しさん:2010/01/17(日) 15:02:58
booooooooooooooooooooleeeeeeeeeeeeeeeeeeeeeeeennnnnnn

528 :デフォルトの名無しさん:2010/01/17(日) 15:09:53
C#で次のクラスを使用してブラウザを起動し、
終了させるにはどうすれば良いでしょか?

※現在は、IEのプロセスを無理Killする事によりIEを無理やり終了させていますが、
Explorerが何か変な挙動をし始めるので
ブラウザの「 × 」ボタンをクリックした時と同じく正常に終了させたいと思います。

SHDocVw.InternetExplorer

かなりショボイ質問かもしれませんが宜しくお願いします。

529 :デフォルトの名無しさん:2010/01/17(日) 15:12:55
Quit

530 :デフォルトの名無しさん:2010/01/17(日) 16:07:30
exit

531 :デフォルトの名無しさん:2010/01/17(日) 16:12:27


532 :デフォルトの名無しさん:2010/01/17(日) 16:57:41
tabキーとかでコードを後ろにやることなんつーんだっけ?

static void Main(){
      int x; //ここにある空白
      for(x=0;;x++){
            Func(); //ここにもっと空白がある←これなに?
      }
}

533 :デフォルトの名無しさん:2010/01/17(日) 16:58:58
>>532
インデント?

534 :デフォルトの名無しさん:2010/01/17(日) 17:03:36
そうだ!インデントだ!ありがとう

535 :デフォルトの名無しさん:2010/01/17(日) 17:09:36
(^ω^;)

536 :デフォルトの名無しさん:2010/01/17(日) 17:22:05
(^o^;)

537 :デフォルトの名無しさん:2010/01/17(日) 17:41:51
まあ年取るとよく物忘れするからなでもひどすぎると脳こうそくの疑いがあるから気をつけろよ

538 :デフォルトの名無しさん:2010/01/17(日) 17:42:24
IMEに頼り切ってて小学校で習う漢字を忘れるみたいな

539 :デフォルトの名無しさん:2010/01/17(日) 17:55:13
(゚Д゚≡゚Д゚)

540 :デフォルトの名無しさん:2010/01/17(日) 19:27:37
おじいちゃんおくちくさーい

541 :デフォルトの名無しさん:2010/01/17(日) 19:40:05
>>529 >>530 >>531
サンクス!!

542 :デフォルトの名無しさん:2010/01/17(日) 19:56:52
>>461
よろしこ

543 :デフォルトの名無しさん:2010/01/17(日) 20:13:51
仮想デスクトップを実現するアプリ入ってるとか

544 :デフォルトの名無しさん:2010/01/17(日) 20:21:14
うん。

545 :デフォルトの名無しさん:2010/01/17(日) 21:06:42
webBrowserコントロールのキャッシュの場所をIEと別に変えられないのかなぁ?

546 :デフォルトの名無しさん:2010/01/17(日) 21:07:44
>>543
461へのレスですか?
環境はWinXPでC#3.5です。
仮想とかそのたぐいのモノは入れていません。

547 :デフォルトの名無しさん:2010/01/17(日) 21:14:29
>>545
どこかで見かけたけどユーザーエージェント関連はレジストリいじらないと駄目みたい


548 :デフォルトの名無しさん:2010/01/17(日) 21:16:01
http://cathval.com/csharp/672
この辺かな?

549 :デフォルトの名無しさん:2010/01/17(日) 21:24:56
System.Text.RegularExpressions.MatchCollection
のmatchArrayに対して↓のようにジェネリックメソッドを使う時

Array.ForEach(matchArray,
delegate(Match matchStr)
{
......
});

この場合に出る、型引数を明示的に指定しろというエラーに対して
どのように書き換えたらよいのでしょうか?よろしくお願いします。



550 :デフォルトの名無しさん:2010/01/17(日) 21:33:10
>>538
インテリセンスに頼り切ってて自分で作ったクラスの構造を忘れる

551 :デフォルトの名無しさん:2010/01/17(日) 21:35:08
http://fine.ap.teacup.com/hepo/28.html

552 :デフォルトの名無しさん:2010/01/17(日) 21:36:49
ユーザーエージェントじゃなくキャッシュの場所を変更したいんですけど・・・

553 :デフォルトの名無しさん:2010/01/17(日) 21:37:18
>>549
型引数を明示的に指定したらいいんじゃね?

554 :デフォルトの名無しさん:2010/01/17(日) 22:11:08
>>549
そもそもArray.ForEachの第一引数はT[]だから、配列じゃないMatchCollectionは渡せないけど

555 :デフォルトの名無しさん:2010/01/17(日) 22:11:16
>>549
引数の型があってないから型引数を指定しても無駄

556 :549:2010/01/17(日) 22:31:12
すみません勘違いしてました。ご指摘ありがとうございました。

557 :デフォルトの名無しさん:2010/01/18(月) 02:31:18
>>556
指摘するのだけは得意なのだよ

558 :デフォルトの名無しさん:2010/01/18(月) 02:35:06
たった6秒…どんな魔法を使った?

559 :デフォルトの名無しさん:2010/01/18(月) 03:01:33
説明書を読んだのよ

560 :デフォルトの名無しさん:2010/01/18(月) 03:02:57
何が6秒?ねぇ何が6秒?

561 :デフォルトの名無しさん:2010/01/18(月) 03:06:01
>>556-557のことだろ

562 :デフォルトの名無しさん:2010/01/18(月) 03:07:52
4時間と6秒じゃなくて?6秒?
何が6秒?

563 :デフォルトの名無しさん:2010/01/18(月) 03:08:21
おじいちゃん眼科行ったほうがいいよ

564 :デフォルトの名無しさん:2010/01/18(月) 03:21:34
www

565 :デフォルトの名無しさん:2010/01/18(月) 07:04:55
C#(.NET Framework 3.5 SP1)にて、
Windowsフォームアプリケーションを作成しました。
知人にはClick Onceよりダウンロードしてもらいました。

インストールサイト上からまとめてインストールしてもらったコンポーネントは、
・Windowsインストーラー3.1
・.NET Framework 3.5 SP1
・Visual Basic Power Packs 1.2
の3点です。

友人のPCはWindowsXPのSP2で、.NET Frameworkは入っていませんでした。

そして、インストールをしてもらったのですが、
アンインストールができないんです。
コントロールパネルで削除のボタンを押しても、1秒ほどウェイトがかかりますが何も起きません。

このような場合、原因として何が考えられるでしょうか。
また、削除する方法としてどのような手段がありますでしょうか。

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

566 :デフォルトの名無しさん:2010/01/18(月) 07:15:54
ClickOnceもVB power packも使わないほうがいい

567 :デフォルトの名無しさん:2010/01/18(月) 07:28:59
友達ならインスコ情報だけ消してもらえばいいだろ。それならぐぐればいくらでも情報あるだろ。

568 :デフォルトの名無しさん:2010/01/18(月) 08:09:13
>>565
>>374
いい加減にしろいw

569 :デフォルトの名無しさん:2010/01/18(月) 08:22:18
ふと、友達のためと思って自作PCを組んだときのトラウマが蘇った・・・
良かれと思ったのにたまたま変なことになって、
しかも友達はそれほど知識がないので対処できない->壊した不良品持ってきた
扱いになって大変だったことがあったなあ(遠い目

ソフトなんかは適当なダミーサイト作って遠まわしに
xxというツールがあるよ〜
と責任をネット経由でうやむやにすればよかったのにね


WebBrowserで開いたページの中身はDocumentで見ればいいんだろうけど
中の細かい要素はどうやれば調べられるんだろ

570 :デフォルトの名無しさん:2010/01/18(月) 09:18:56
>>569
HtmlElementでいろいろと

571 :デフォルトの名無しさん:2010/01/18(月) 10:51:44
MonoDeveloperでイベントハンドラの補完ってdelegateを補完してくれるんだね
おもしろい

572 :デフォルトの名無しさん:2010/01/18(月) 12:58:16
WindowsUpdate で入った.NETFramework3.5 にはcsc.exe は入っていないのでしょうか。
だとしたら、それを入れるためには、
あらためて、.NETFramework3.5 をインストールする必要があるのでしょうか。

教えてください。

573 :デフォルトの名無しさん:2010/01/18(月) 13:12:48
>>572
それはただ.netのプログラムを動かすためのものだから入っていない。
初心者はVisual C# expressをインストールすれば他は何も必要ない。

574 :デフォルトの名無しさん:2010/01/18(月) 13:40:03
既存のソフトによってはウインドウの中のコントロールを分離して
別ウインドウにしたりできる物がありますがあれを実現するのは面倒なんでしょうか?


575 :デフォルトの名無しさん:2010/01/18(月) 13:47:43
例外のエレガントなというか、トレンドを教えてください。
いま、ある処理のなかで例外が発生したら、それをキャッチして、且つ
それがどこで起きたかもしりたいので、こんな風に書いてます。

try{
  処理1
}
catch(Exception ex){
  MessageBox.Show(this, "例外1:" + ex.ToString(), "エラー");
  return;
}
try{
  処理2
}
catch(Exception ex){
  処理1の片付け(Closeとか。。)
  MessageBox.Show(this, "例外2:" + ex.ToString(), "エラー");
  return;
}

この処理を全体を関数にして、別の処理から呼び出すように改造するとします。
すると、呼び出し側でも
try{ foo();} catch(Exception ex) { MessageBox.Show(this,"例外3:"...}って書くのが、ポリシー的に正しいかな?って思ってます。
でもそうするとメッセージボックスが一杯出てウザイじゃないですか?
そこでド単純に、例外を補足する度に、「どこそこのコードでこんな例外を補足したよ」って情報をくっつけながら
再送していって、一番上でメッセージボックスを出したいとか思うわけですよ。

そこで疑問なのですが、
・そもそもこういう例外の雪だるま式の再送ってトレンドとしてどうなの?
・やるとしたら実際どうやって情報をくっつけて再送するの??(サンプルコードくれくれで申し訳ないのですが・・・)

です。よろしくお願いします。m(_ _)m

576 :デフォルトの名無しさん:2010/01/18(月) 13:58:37
何もしなくてもどこのメソッドで発生してどこ辿って補足されたかは
何もせんでも記録されてるから全部のメソッドでキャッチなんてしなくていいよ。

雪だるま式のを使う場合は・・・
内部で発生する例外の粒度が細かすぎる場合によく使われる。

たとえば、複数のWebサイトにアクセスして何か処理する大きめのクラスがあったとして、
HTTPエラー503発生なんて例外をそのまんま上に揚げられても意味不明だから
もうちょっと意味のわかりやすい自作の例外でラップしたりする。
例) ログイン失敗例外 - 理由として内部にHTTPエラーの例外を持っておくとか。

ちなみにラップの仕方は Exception クラスのコンストラクタに例外を引数に取るのがあるから
それ使って new すりゃいい。

Javaだと一般的だけどC#だと今一なやりかたらしいけどね。

577 :デフォルトの名無しさん:2010/01/18(月) 14:00:23
>>575
簡単に実現したいなら、メソッドの最後に
throw new Exception(エラーメッセージの結合文)
みたいなのやればいいんじゃ?

578 :デフォルトの名無しさん:2010/01/18(月) 14:00:37
>>575
通常は受け取った例外は再送しない。
アプリの通常の動作で発送しうるエラーなら通常のエラーとしての対処を行う。
致命的な不具合ならそのままアプリを終了させる。
基本的には例外処理中にMessageBox.Showのようなハードコーディングなコードは書かない。開発中ならいいけど。

579 :デフォルトの名無しさん:2010/01/18(月) 14:03:50
エクセルのセルのようなインターフェースを利用したいのですがそういったコントロールはありますか?
調べてみたところDataGridViewが近いようなのですが
もしもっと良いものがあれば教えて下さい。

580 :デフォルトの名無しさん:2010/01/18(月) 14:05:29
>>575
あとメッセージボックスがいっぱい出るの意味がわからん。
そういうソース書いてるからじゃん。
あと、情報くっつけるもなにも例外オブジェクトをToString()すれば
どこのクラスの何行目で何が起きたか全部表示されるけど?

581 :デフォルトの名無しさん:2010/01/18(月) 14:11:50
>>579
2次元にテキストを並べたいだけなら調べた通り、DataGridView。
ちなみに、マス目の一つ一つをセルっていうのだから
セルに近しいのはテキストボックスであり
シートに近いUIは?ってきくべきかなぁ。

582 :575:2010/01/18(月) 14:16:56
みなさん、たくさんのレスありがとうございます。
なるほど、ディフォルトで雪だるまになってくれている訳ですね。。
でも、なんかの用途では必要そうになるかもしれないので、
再送の方法を教えていただいたみなさんに感謝します。
ありがとうございました。

583 :デフォルトの名無しさん:2010/01/18(月) 14:19:43
>>581
ありがとうございます。
確かにおっしゃるとおり、探していたのはシートにあたるものですね。次から気をつけます。

584 :デフォルトの名無しさん:2010/01/18(月) 14:22:14
エクセルのセルか・・・
DataGridViewはどうか知らんが、昔やってたのは同じようなグリッドコントロールのセルの座標に
あわせてテキストボックス乗っけてそっちにフォーカス移して入力させて終わったらグリッドコントロールに反映とか
やってたなVC#2005EEあたりの話だけど

585 :デフォルトの名無しさん:2010/01/18(月) 14:25:49
DataGridViewって高機能だけど難しいよな( ・ω・)y─┛〜〜

586 :デフォルトの名無しさん:2010/01/18(月) 14:46:34
DataGridViewは入力も可能

587 :デフォルトの名無しさん:2010/01/18(月) 14:52:40
>>586
そうだっけ

.netって難読化してないとほんとにリバースエンジニアリングできるんだなorz
昔作ったツールの実行ファイルしかなかったが復元できちゃったよ

.net2.0のころってDataGridViewってなかったんだっけ?
ListView+TextBoxでエクセルもどきやってたわ

588 :デフォルトの名無しさん:2010/01/18(月) 14:56:33
.net1.1のころは無かった

589 :デフォルトの名無しさん:2010/01/18(月) 15:21:37
マルチスレッドで、あるスレッドから別のスレッドに「スレッドを抜けろ!」って通知したいので
手っ取り早く、int 型の値を共有して、0ならスレッドループを抜けるようにしたいので,次のようにやってみました。

int end_flag = 1;
mThread = new Thread(new StartThread(new MyThreadClass(ref end_flag)));
mThread.Start();
end_flag = 0;
mThread.Join();

class MyThreadClass
{
 int endFlag;
 public MyThreadClass(ref int end_flag_ref)
 {
   endFlag;= end_flag_ref; //ここでこのクラスに、渡されたend_flagのアドレスを保持しているつもり
 }
 public void Run()
 {
   whileendFlag;!= 0){処理} //メインスレッドがend_flagを0にしたら抜けさせてるつもり
 }
}
ってやってみたんですけど、end_flagを0に落としても、MyThreadClassのRunのwhileでのendFlagは1のままでした。

ずばり、
・MyThreadClass.endFlagにend_flagのアドレスを見させるにはどうすればいいの?

ref int endFlag;と宣言してみたのですが、文法上許されないようだし。。

よろしくおねがいします

590 :デフォルトの名無しさん:2010/01/18(月) 15:25:54
volatile

591 :デフォルトの名無しさん:2010/01/18(月) 15:26:48
>>589
 public void Stop()
 {
   //スレッドとめるメンバ関数
 }

mThread.Stop();

とか?

592 :デフォルトの名無しさん:2010/01/18(月) 15:27:53
MyThreadClass.endFlagはただのintだからアドレス保持も糞もない

593 :デフォルトの名無しさん:2010/01/18(月) 15:29:33
>>591
なるほど、それが.NETの思想なのですね。それに従います。
スレッドに関しては。
でもそもそもintの参照を保持する事ってできないのでしょうか?

>>592
するとintの参照を保持する事はできないって事ですか?

594 :デフォルトの名無しさん:2010/01/18(月) 15:35:49
>>589
MyThreadClassの初期化の仕方が間違えてる。
Stopかけたい段階でMyThreadClassのend_flagを書き換えないと。
intは値型なのでrefで渡そうが、endFlag;= end_flag_ref;の行では値をコピーしてるだけ。
って、この代入演算子なんかおかしくね?
>>592
いや、インスタンスのメンバとしてint型の変数を持ってるなら、
それは暗黙的にvolatile変数としてマルチスレッド間で使えるはずだよ。

595 :デフォルトの名無しさん:2010/01/18(月) 15:37:02
参照って、そもそもendFlagは参照じゃないじゃないか。
クラスのvolatileなメンバにしてインスタンスを渡してそれみたらどうよ

596 :デフォルトの名無しさん:2010/01/18(月) 15:45:05
>>594
いろいろ変なソースで済みません。代入演算子に;が入ってしまいました(;_;)

>>595
volatileってC++の奴と同じ動作ですか?
すると単純にアドレスは渡っているけどレジスタに入っているからみれてないとかそう言う意味合いでvolatileをつけるべきという事ですか?

597 :デフォルトの名無しさん:2010/01/18(月) 15:49:01
>>596
http://msdn.microsoft.com/ja-jp/library/x13ttww7%28VS.80%29.aspx

volatile キーワードは、同時に実行中の複数のスレッドによってフィールド
が変更される可能性があることを示します。 volatile と宣言されているフィ
ールドは、シングル スレッドによるアクセスを前提とする、コンパイラの最
適化の対象にはなりません。このため、フィールドには常に最新の値が
含まれます。

598 :デフォルトの名無しさん:2010/01/18(月) 15:53:12
>>572-573
パスが設定されてないだけでcsc.exeはあるはずだけど?
この辺確認してみて
c:\WINDOWS\Microsoft.NET\Framework\v3.5
c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727


599 :デフォルトの名無しさん:2010/01/18(月) 15:55:57
>>598
はず?あいまいだな( ・ω・)y─┛〜〜

600 :デフォルトの名無しさん:2010/01/18(月) 15:59:08
顔文字うぜー

601 :デフォルトの名無しさん:2010/01/18(月) 16:00:42
はずって確定だろ。
後から消してなきゃあるってことだ

602 :デフォルトの名無しさん:2010/01/18(月) 16:03:37
CodeDomやデシリアライズでcsc.exeがウラで動くから、
v2.0***\csc.exeは実行環境化でも必須なのは間違いない。
3.5配下のcsc.exeはちっと自身がなかった。

603 :デフォルトの名無しさん:2010/01/18(月) 16:07:31
>>589
>endFlag = end_flag_ref

end_flag_refが参照経由で書き換わっても、endFlagへの代入は一回きり。


604 :589:2010/01/18(月) 16:08:38
volatileをMyThreadClassのend_flagとかにつけてみましたけどダメのようです。
Mainスレッド側のクラスの(いままで書いてなかったけどForm1です。)実体の側にvolatileをつけてみたけど、
今度はコンパイルエラーになりますた。(refキーワードをつけて渡そうとするとコンパイルエラーになるようですね。)

結局、intのような組み込み型は値型であり、どうやってもアドレスを渡すことはできないよ!ってことでしょうか?
(関数で渡したときは、渡された関数の中で書き込むことはできるけど、
参照として変数に保持できないので、後から本体のほうに値を書き込むような事はできないんですかねぇ。
へんなの。)

ちなみにint をやめてMyRefIntというクラスを作ってこれで置き換えてやってみたらできました。(あたりまえか。。)

まぁ・・クラスを作ればできるんだからいいかな。。

>>603
そうみたいですね。

大変勉強になりました。ありがとうございます。
今後の設計のインプットとしてキモに命じておきます。

605 :デフォルトの名無しさん:2010/01/18(月) 16:19:09
>>604
>MyThreadClassの初期化の仕方が間違えてる。
>Stopかけたい段階でMyThreadClassのend_flagを書き換えないと。
これやったかい?
当然参照越しに書き換えるんじゃなくて直接メンバを書き換えるようなメソッドを用意して、親スレッドから呼び出すんだよ。

606 :デフォルトの名無しさん:2010/01/18(月) 16:19:48
つーか頭悪すぎだろw

607 :デフォルトの名無しさん:2010/01/18(月) 16:21:38
>>604
 public MyThreadClass(ref int end_flag_ref)
 {
   endFlag;= end_flag_ref; //ここでこのクラスに、渡されたend_flagのアドレスを保持しているつもり
 }

参照渡ししてるけどコンストラクタの中は値をコピーしてるんじゃないの?

だからForm1で値を変更しようがかわらないと



608 :デフォルトの名無しさん:2010/01/18(月) 16:21:40
正直おすすめしない裏技。
int hoge = 0; 
TypedReference tref = __makeref(hoge); 
__refvalue(tref, int) = 5; 
Console.WriteLine(hoge); 


609 :デフォルトの名無しさん:2010/01/18(月) 16:22:43
>>606
まあ、スレッドはめんどくさいところなんで

610 :デフォルトの名無しさん:2010/01/18(月) 16:25:07
頭悪いと思った部分はスレッド関係ないけどね

611 :デフォルトの名無しさん:2010/01/18(月) 16:27:54
C#でintの参照を持てるのかどうかしらんけど(Cでいうint形ポインタのようなの)
それができないのなら参照型にしちゃえばいいだけだろ

class State
{
public int endFlag; //本当はpublicじゃない方がいいかも
}

って作って

class MyThreadClass
{
 int endFlag;

ではなく

class MyThreadClass
{
 State st;

とか

612 :デフォルトの名無しさん:2010/01/18(月) 16:30:16
”手っ取り早く値型”の部分がそもそもの問題の始まり
コスト的に参照型使ったって問題ないでしょこれ

613 :デフォルトの名無しさん:2010/01/18(月) 16:32:35
>>612
要するにできないってことじゃん?
言語の能力としてできない。

614 :デフォルトの名無しさん:2010/01/18(月) 16:38:54
いや、だからThreadに渡した環境用クラスのインスタンスのメンバとして
int型の変数を持たせてそれを書き換えれば何も問題ないわけだけど?

615 :デフォルトの名無しさん:2010/01/18(月) 16:39:40
要はオブジェクト指向脳じゃないってことだよ

616 :デフォルトの名無しさん:2010/01/18(月) 16:39:56
ガタガタ言わないでBackgroundWorkerを使ってろよ。
キャンセルの機構もちゃんとあるぞ。

617 :デフォルトの名無しさん:2010/01/18(月) 16:40:59
いずれにしても、そんなOOP無視した糞設計はやめれ

618 :デフォルトの名無しさん:2010/01/18(月) 16:41:02
C++経験者みたいなので結局のところ参照関連の勘違いでしょ

619 :デフォルトの名無しさん:2010/01/18(月) 16:42:58
できないならできないでいいんですよ。
「int型(を含む組み込み型)の参照を保持する事はできない」
ってことだけが知りたい。

620 :デフォルトの名無しさん:2010/01/18(月) 16:43:14
.netの中ではどうしてるかよくわからんが.net以前だとvolatileついた場合レジスタには行かなくて
キャッシュまでは行ってることもあるんかな?
アクセス遅くてもメインメモリ上?

621 :デフォルトの名無しさん:2010/01/18(月) 16:45:23
>>619
というか参照型で渡そうがスレッドとして使うクラスの中では値型で宣言してる
以上は値のコピーが行われただけだと思うよ

622 :デフォルトの名無しさん:2010/01/18(月) 16:46:09
値型と参照型っていろんな所で問題を起こすなあ・・・
unsafeとfixedなんか使っちゃだめだよ

623 :デフォルトの名無しさん:2010/01/18(月) 16:52:04
>>621
そりゃわかるんですけど、それもなんかへんだよな。。
普通に考えたら型があわないってコンパイルエラーになるべきのような。

624 :デフォルトの名無しさん:2010/01/18(月) 16:54:35
>>623
そもそもint*のような物あったっけ?
参照渡しはできても値型の参照保持機能というか

625 :デフォルトの名無しさん:2010/01/18(月) 16:56:46
>>624
それを聞きたかったんですけど、結論としては無いようですね。
(裏技はあるようです。)

626 :デフォルトの名無しさん:2010/01/18(月) 16:58:34
>>623
なんで?
C++だって
class Hoge {
  int x;
public :
  void set(int& i) { this->x = i; }
};
ってできるっしょ
もちろんxはただの値で、呼び出し元でsetに渡したのを後で変更しようがxは変更されない

627 :デフォルトの名無しさん:2010/01/18(月) 17:00:48
ああint[] で 1個だけ確保すれば一応参照型にできるな

628 :デフォルトの名無しさん:2010/01/18(月) 17:09:29
>>626
なるほど。確かにそうだね。

629 :デフォルトの名無しさん:2010/01/18(月) 17:16:42
道具があれこれやってくれるのも良し悪しだな

630 :デフォルトの名無しさん:2010/01/18(月) 17:35:34
System.Runtime.CompilerServices.StrongBox<T>というのもある

631 :デフォルトの名無しさん:2010/01/18(月) 19:42:13
C#ってデリゲートとイベントってなんのためにあるの?
オーバーライドの意味なくなるじゃん。
反オブジェクトしこー?

632 :デフォルトの名無しさん:2010/01/18(月) 19:43:45
いちいちアダプタ実装してリスナに突っ込むのが面倒くさかったからじゃないの
JAヴぁから移動してきた俺は今思えばそう感じる

633 :デフォルトの名無しさん:2010/01/18(月) 19:47:09
Javaのイベント部分は無駄にコード書いてる気がしてならなかったしな。


634 :デフォルトの名無しさん:2010/01/18(月) 19:49:02
だがdynamic、テメーはだめだ

635 :デフォルトの名無しさん:2010/01/18(月) 19:49:47
まだdynamicは未知数だし分からんよ
誰か面白い使い方を考えてくれるかも

636 :デフォルトの名無しさん:2010/01/18(月) 19:58:51
名前の通りOOPの移譲(デリゲーション)をスマートに実装するためにあるんでねえの

637 :デフォルトの名無しさん:2010/01/18(月) 20:15:43
>>635
手軽に試せるところだと、ExpandoObjectと組み合わせると面白いよ

638 :デフォルトの名無しさん:2010/01/18(月) 20:49:45
dynamicの使用例

 static void Main() {
   dynamic o = new ExpandoObject();
   foreach (DictionaryEntry ev in Environment.GetEnvironmentVariables())
        ((IDictionary<string, object>) o).Add((string) ev.Key, ev.Value);
   ((IDictionary<string, object>) o).Add("Hello", (Action) (() => Console.WriteLine("Hello world !")) );
   Test(o);
 }
 static void Test(dynamic o) {
   Console.WriteLine(o.Path);
   Console.WriteLine(o.PROCESSOR_IDENTIFIER);
   Console.WriteLine(o.NUMBER_OF_PROCESSORS);
   o.Hello();
 }


639 :デフォルトの名無しさん:2010/01/18(月) 20:59:02
>>638
うーん実にキモい

640 :デフォルトの名無しさん:2010/01/18(月) 21:18:31
プロパティの自動実装って意味あるの?

public int Hoge { get; set; }

public int Hoge;
より良い点ってなんかある?


641 :デフォルトの名無しさん:2010/01/18(月) 21:22:06
プロパティである事。


642 :デフォルトの名無しさん:2010/01/18(月) 21:22:41
プロパティだと変化に強いらしい

643 :デフォルトの名無しさん:2010/01/18(月) 21:22:55
C#でもポインタつかえるよ。
unsafeなら。
一応はね。


644 :デフォルトの名無しさん:2010/01/18(月) 21:23:14
C#でマルコフ連鎖で人工無脳を作りたいのです。
RubyやPythonのコードはけっこうあるのですが、
C#のコードってありませんか?


645 :デフォルトの名無しさん:2010/01/18(月) 21:24:37
ない

646 :デフォルトの名無しさん:2010/01/18(月) 21:25:07
>>461
よろしこ

647 :デフォルトの名無しさん:2010/01/18(月) 21:25:24
>>640
オブジェクト指向は変数は絶対にpublicにしちゃだめ
いついかなる場合でもゲッター、セッターを使うことが正しいと考えている人と一緒に
プログラムを作ることになった場合に役に立つ。

648 :デフォルトの名無しさん:2010/01/18(月) 21:26:47
変化に強いって具体的にはどういうこっちゃ

フィールドだとインターフェイスに使えないのは分かる

649 :640:2010/01/18(月) 21:30:10
>>642 それはゲッターセッターを真面目に実装してる場合でしょう。
>>647 なるほど、納得w
>>648 ゲッターセッターにデバッグ用のコード埋めとけばアクセスを監視できるからと理解している。

650 :デフォルトの名無しさん:2010/01/18(月) 21:30:16
フィールドにしたけど後で気が変わって処理を加えたくなってプロパティにした場合
そのコードを利用する側にもリコンパイルが必要になる
最初から最後までプロパティなら利用する側にはリコンパイルは必要ない

651 :デフォルトの名無しさん:2010/01/18(月) 21:33:54
たとえばプロパティAに関する内部の処理を別のクラスHogeに移譲したくなったとき,
今までは単に A { get { return a; } } としていたのを A { get { hoge.GetA(); } に変えるだけで済む
クラス外からの見た目は変わらない}

652 :デフォルトの名無しさん:2010/01/18(月) 21:34:48
>>650
public int Hoge;

これを

private int hoge;
public int {get{return hoge;} set{hoge = value;}}

に書き換えるだけじゃないの?
この変更でもリコンパイルいるの?

653 :デフォルトの名無しさん:2010/01/18(月) 21:35:05
たとえソースコードを全く改変しなくてもリコンパイルっていうの?
同じソースなのにコンパイル結果が違うってよくわからん。

654 :デフォルトの名無しさん:2010/01/18(月) 21:36:04
それならはじめから public int Hoge; って書いたら setter と getter が作られるようにすりゃいいのにね。
どうせ普通のフィールド使おうとしたらギャーギャーいわれるんだし。



655 :デフォルトの名無しさん:2010/01/18(月) 21:37:30
自動プロパティ使えよ
フィールドとプロパティは内部的には全く別の種類のもので全く互換性はない
C#ではたまたま字面上同じように見えるだけ

656 :デフォルトの名無しさん:2010/01/18(月) 21:38:18
>>653
呼び出す方は見た目一緒でもやってること変るからしかたない。

int Hoge; を
int Hoge { get; set; } にするってことは

xxxx.Hoge = 1; の代入文を
xxxx.setHoge(1); のメソッド呼び出しに置きかえるわけだから
コンパイル結果が変わる。

657 :デフォルトの名無しさん:2010/01/18(月) 21:39:10
>>652
必要だよ。>>656ってことだ。

658 :デフォルトの名無しさん:2010/01/18(月) 21:39:17
>>656
そういうことか

659 :デフォルトの名無しさん:2010/01/18(月) 21:40:27
プロパティはメソッド呼び出しを代入文と同じように書けるシンタックスシュガーなだけだもんな。

660 :デフォルトの名無しさん:2010/01/18(月) 21:42:19
リリースビルドの時、最適化がかかってるんじゃにの?

661 :デフォルトの名無しさん:2010/01/18(月) 21:42:54
フィールドにはrefやoutが使えるけどプロパティには使えない
a.b.c = 1; でbが値型のフィールドなら,プロパティに変えるとコンパイルエラー
バインディングとかでリフレクションが絡んできたときも問題が出る

662 :デフォルトの名無しさん:2010/01/18(月) 21:42:55
>>645
ないんですか…。
じゃ、作るとして、文章を単語に分けたあと(ここまではできてる)、それを配列にいれるんですか?
Rubyだとこう書くらしいんだけど、これをC#だとどう書けばいいんですかね〜?

# マルコフ連鎖で要約
t1 = data[0]['head']
t2 = data[0]['middle']
new_text = t1 + t2
while true
_a = Array.new
data.each do |hash|
_a.push hash if hash['head'] == t1 && hash['middle'] == t2
end

break if _a.size == 0
num = rand(_a.size) # 乱数で次の文節を決定する
new_text = new_text + _a[num]['end']
break if _a[num]['end'] == "EOS"
t1 = _a[num]['middle']
t2 = _a[num]['end']
end

http://d.hatena.ne.jp/zariganitosh/20090628/1246186477


663 :デフォルトの名無しさん:2010/01/18(月) 21:43:23
プログラム1.cs

ライブラリ1.dll
があったとする。

ライブラリ1でHogeっていうただのint型の変数があって
プログラム1で
Hoge=3;(Hogeは単なる変数)
とかいうコードがあったとする。

これで、あとでライブラリ1.dllのHogeをプロパティになおす必要が生じると
単にDLLを再配布するだけじゃなくプログラム1のほうもコンパイルしなおす必要がある

ちょっとめんどくさくね?
そんだけ。

664 :デフォルトの名無しさん:2010/01/18(月) 21:43:51
get; set; のみのやつってインライン展開されたりすんのかなぁ?
逆アセンブルすりゃわかるんだろうけど面倒。


665 :デフォルトの名無しさん:2010/01/18(月) 21:44:42
>>663
インライン展開されたりしないの?

666 :デフォルトの名無しさん:2010/01/18(月) 21:46:39
されない
NGenやJITコンパイルの段階でインライン展開されることはある

667 :デフォルトの名無しさん:2010/01/18(月) 21:47:45
プリパティは便利に使ってるぞ、めんどくさいから使わないなんて、なんてもったいないことを。

668 :デフォルトの名無しさん:2010/01/18(月) 21:48:42
>>662
ここは翻訳コンニャクじゃないよ。
宿題スレの方が向いてると思う。

あと、コード探すんだったらGoogleソースコード検索とか便利よ。

"markov chain lang:c#"で検索するとそれっぽいのが結構引っかかった。
↓な。
http://www.google.com/codesearch?hl=ja&lr=&q=markov+chain+lang:c%23&sbtn=%E6%A4%9C%E7%B4%A2


669 :デフォルトの名無しさん:2010/01/18(月) 21:49:52
>>666
なるほど、じゃあ使う側がメソッド呼び出しであることは保証されてるわけね。
普通に考えればそれもそうか。そうならないんだったらプロパティの意味ないもんね。

670 :デフォルトの名無しさん:2010/01/18(月) 21:50:49
コンパイル必要云々もあるけどフィールドは実装、プロパティはインターフェースってことだろう(概念的に

publicフィールドは構造体なら許されてもいい気がするんだけど
まあ一貫性がないから駄目なんだろうね

671 :デフォルトの名無しさん:2010/01/18(月) 21:55:24
自動プロパティは変数と同じ位置で宣言するべき?
他のプロパティの位置と揃えるべき?

672 :デフォルトの名無しさん:2010/01/18(月) 21:55:59
FxCopではプロパティ扱い

673 :672:2010/01/18(月) 21:56:43
訂正
StyleCopの間違い

674 :デフォルトの名無しさん:2010/01/18(月) 21:56:44
どうでもいい

func( int x ){
}

とするか
func(int x)
{
}
とするかの違いくらいどうでもいい

675 :デフォルトの名無しさん:2010/01/18(月) 21:58:43
ベテランの人で、使い分けてる人けっこういるよね
どう考えてもゲッター実装する必要ないとこではpublicにしてたり。
俺は怒られるのが嫌だから思考停止して必ずプロパティにするけど
そこでなぜフィールド公開しちゃダメなの?って聞かれても答えられないこと多いな


676 :デフォルトの名無しさん:2010/01/18(月) 22:01:02
「保守性が下がるから」のひとことなんだけどね。
その場限りの安いコード書いてるうちは全部ひーるどでおkなんだけど

677 :デフォルトの名無しさん:2010/01/18(月) 22:02:10
>>670
MS でもパブリックフィールドは Xna Framework あたりで使ってはいる
最適化がへちょいから。

まぁけど普通はそんなもの使う構造体はバインディング対象になりやすい
のでプロパティにしといたほうがいいと思うよ。一貫性ってより


678 :672:2010/01/18(月) 22:04:38
>>677
それは>>661のようにa.b.c = 1ってやりたいからだよ
bがプロパティだと余計なコピーが入る
最適化の余地はないので仕方ない

679 :デフォルトの名無しさん:2010/01/18(月) 22:08:18
お母さんにダメって言われたからフィールドはpublicにしません。

680 :デフォルトの名無しさん:2010/01/18(月) 22:08:37
通常はインスタンスフィールドを公開する理由なんて無いんだから、
何も考えずにプロパティにしておけば問題ないと思うがね
違反する理由が無ければガイドラインに従っておけばいい

681 :デフォルトの名無しさん:2010/01/18(月) 22:09:40
.NET Framework 開発者ガイド フィールドのデザイン
http://msdn.microsoft.com/ja-jp/library/ms229057.aspx

682 :デフォルトの名無しさん:2010/01/18(月) 22:12:19
>>681
それは「クラスライブラリ開発者向けの」ガイドラインだからちょっと話が別だ
クラスライブラリではクラスのインターフェイスを絶対に変えられないからな

683 :デフォルトの名無しさん:2010/01/18(月) 22:13:19
(;^ω^)

684 :デフォルトの名無しさん:2010/01/18(月) 22:23:43
そうだなぁ。
たとえばstringのフィールドがあったとして、使う時には前後の空白をカットして使いたい。
trimして代入して…ってコードを全部に書く手間を考えると、プロパティにしとけば天国だ。

コンパイルしなおすから関係ない? まあそうだね。

685 :デフォルトの名無しさん:2010/01/18(月) 22:26:51
それは良くない使い方だぞ
ループの中で使われたりすると死ねる
クラスを使う側はプロパティの実装は軽いことを期待する
ガイドライン参照

686 :デフォルトの名無しさん:2010/01/18(月) 22:28:08
ちゃんとキャッシュしませう!

687 :デフォルトの名無しさん:2010/01/18(月) 22:31:22
>>685
それが唯一の欠点かもな。
現場じゃ糞プログラマばっかだし。

688 :デフォルトの名無しさん:2010/01/18(月) 22:33:50
いちいち使う側でキャッシュする必要があるようじゃプロパティの意味がないだろ
何のためにフィールドのように見せてるのかわからん
MSのガイドラインでは「クラスの利用者はお客様」が基本です

689 :デフォルトの名無しさん:2010/01/18(月) 22:37:02
処理してから代入するか、代入してから処理するか、量は同じだよ。
「処理済みのデータは再処理するだけ無駄!」はそりゃ理屈だけど
それをチェックするのとバグ要因を考えると意味があるとは思えないなぁ

690 :デフォルトの名無しさん:2010/01/18(月) 22:38:09
しかし、まかない料理ってものもあるわけで

691 :デフォルトの名無しさん:2010/01/18(月) 22:39:01
え?良くない使い方だったのか
ゲッターセッターだけのプロパティなんて意味ないのが多いと思ってたけど
むしろその方が良かったのね

692 :デフォルトの名無しさん:2010/01/18(月) 22:40:17
おいおい

693 :デフォルトの名無しさん:2010/01/18(月) 22:42:15
>>689
処理済みのデータは再処理するだけ無駄なんだから
量は同じでないんじゃないの?

694 :デフォルトの名無しさん:2010/01/18(月) 22:42:35
俺の多くのプロパティーはgetだけが多い。
値設定はクラス内のメソッド処理がほとんどだ。
これだけでも、プロパティの価値は高い。

695 :デフォルトの名無しさん:2010/01/18(月) 22:44:07
public string Name{ get;set; }
このように自動プロパティを記述しても
abstract または extern に指定されていないため、本体を宣言する必要があります。
と表示されてしまい、コンパイルが通りません。サンプルでは問題なく通るはずなのですが…
abstract または externに指定せず利用する方法はないのでしょうか?

696 :デフォルトの名無しさん:2010/01/18(月) 22:44:54
VS2008(C#3.0)を使う

697 :デフォルトの名無しさん:2010/01/18(月) 22:47:41
public string Name{ get;set; }
このように自動プロパティを記述しても
abstract または extern に指定されていないため、本体を宣言する必要があります。
と表示されてしまい、コンパイルが通りません。サンプルでは問題なく通るはずなのですが…
abstract または externに指定せず利用する方法はないのでしょうか?

698 :デフォルトの名無しさん:2010/01/18(月) 22:48:21
>>697
C#のバージョンは?

699 :デフォルトの名無しさん:2010/01/18(月) 22:48:25
>696
なるほど、そういうことですか…ありがとうございます。
2005(製品版)を使わざるを得ない状況なので、自分で設定することにします。

700 :デフォルトの名無しさん:2010/01/18(月) 22:48:43
セッターゲッターは裏でネットとかDBにアクセスしたくなるから困る。


701 :デフォルトの名無しさん:2010/01/18(月) 22:49:44
>>698
VS2005に付属のものです。

多重投稿失礼しました。

702 :デフォルトの名無しさん:2010/01/18(月) 22:51:21
>>700
イミフ

703 :デフォルトの名無しさん:2010/01/18(月) 22:52:32
セッターゲッターの中身でネットアクセスしてサーバーDB参照なんだろ。
信じられんがなw

704 :デフォルトの名無しさん:2010/01/18(月) 22:52:53
DataGridViewの最も左側(カーソル行に*が表示される列)の行にテキストを表示したり、
またはこの列を非表示にするということはできないのでしょうか?

705 :デフォルトの名無しさん:2010/01/18(月) 22:55:24
>>703
ゲットでDBからselect、セットでDBにupdateとかバカならやる

706 :デフォルトの名無しさん:2010/01/18(月) 23:27:29
>>649
むしろさぁ
>ゲッターセッターにデバッグ用のコード埋めとけばアクセスを監視できるからと理解している。
こう言うのってもう、コンパイラの機能にしたほうがよくね?
そもそも変数を誰が使っているか?とか、そういうのって開発ツールの機能でいいんじゃ。。

707 :デフォルトの名無しさん:2010/01/18(月) 23:39:02
>>704ですが、RowHeaderVisible = false; で解決しました。
スレ汚し失礼しました。

708 :デフォルトの名無しさん:2010/01/19(火) 00:01:59
信じられないかもしれないけど
メソッドをなんでもかんでもプロパティにしたがる奴は実在する。
初心者のころはなおさら。


709 :デフォルトの名無しさん:2010/01/19(火) 00:12:56
VB6時代のCrystalReportの印刷開始の命令が
obj.Active = 1 (なんとSet Onlyのプロパティ)
だった。
あれ見て以来、CrystalReportは避けることにしてたな。

710 :デフォルトの名無しさん:2010/01/19(火) 00:48:59
でもMS謹製のコンポーネントもそんな調子だったでしょ。
MSCommとか見てみ

711 :デフォルトの名無しさん:2010/01/19(火) 00:59:29
>>709
WPFとかそんな感じだよ。

712 :デフォルトの名無しさん:2010/01/19(火) 01:09:21
>>711
どこら辺が?

713 :デフォルトの名無しさん:2010/01/19(火) 01:15:25
>>702
http://msdn.microsoft.com/ja-jp/library/ms229054(VS.80).aspx
>特に、初期化時以外にもネットワークやファイル システムにアクセスする操作は、
>多くの場合、プロパティではなく、メソッドにする必要があります。

714 :デフォルトの名無しさん:2010/01/19(火) 01:16:44
>>712
教えないよ。

715 :デフォルトの名無しさん:2010/01/19(火) 01:20:02
>>713
そこから、してはいけないことは読み取れるけど、したくなる理由にはならんな

716 :デフォルトの名無しさん:2010/01/19(火) 01:29:18
WinFormってWPFでいうとこのMVVMのようなガイドラインってあるの?

717 :デフォルトの名無しさん:2010/01/19(火) 02:06:41
>>711
どこの国のWPFだよ。つかいまのライブラリで列挙体使ってないのなんてあるのか?

718 :デフォルトの名無しさん:2010/01/19(火) 02:12:25
>>713
そこの日本語がイマイチよくわからなかったんだけど
配列返す時はメソッドでクローンコピー作ってプロパティで返しなさいって言ってるのですか?

719 :デフォルトの名無しさん:2010/01/19(火) 03:23:36
すいませんDAOパターンについて質問です

DTO、DAOクラスを作って、DAOクラスの中ではセレクト結果をDataTableもしくはDataReader的な
ものに保持しているとします。
この結果をDTOにコピーするロジックはどこに記述するのでしょうか??

↓自分で考えたのは…

1.DTO、DAOを実際に使用しているメインクラス
DAOがDataTableを返してきて、それをDTOにメインクラスが自分でコピーして使う
2.DAOクラスの中
DAOにクエリとDTOを渡すと、DTOに結果をコピーして返してくれる

自分なりに一番良いと思ったのは2.で、ただし条件として、DAOがどんな形のDTOにも
データコピーできるように(ジェネリックか何かで)しておかないと、
DTOのクラスが追加(例えば新しいテーブルが追加されるなど)される度に
DAOの中の処理も新しいDTO用のロジックを追加しないと駄目なので、
せっかくDAOパターンにしてアクセス部分を切り離してるのに、DTOとの
結合が強くなってしまうのではないかという点です。

基礎的な部分かと思いますが、よろしくお願いします。


720 :デフォルトの名無しさん:2010/01/19(火) 06:49:22
Windowsフォームアプリケーションを作成しています。
その中で、ソフトの使用期限をレンタルサーバー(ewinds)内のSQLサーバーで定数で持ち、期限を過ぎたら自動で利用できないようにしたいと思っています。
ただ、現在日付としてDatetime.Todayを使用すると、ユーザーがPCの日付を過去日にしてしまえば、すり抜けられてしまいます。
どのようにして、偽装できない現在日付を取得することができるのでしょうか。
DBへのアクセスは、接続文字列を介して直接C#内でSQL文を発行しています。
よろしくお願いします。


721 :デフォルトの名無しさん:2010/01/19(火) 07:03:02
サーバー側の日付で判定すればいい。

722 :デフォルトの名無しさん:2010/01/19(火) 07:16:42
>>720
NTPサーバーからHTTPで取得するのが簡単

723 :デフォルトの名無しさん:2010/01/19(火) 07:34:01
逆コンパイルされて追跡されるとかDNS書き換えて代理サーバーでうんぬんとか別のユーザーのデータをリクエストするとか
いろいろ考えたほうがいいんじゃないの

724 :デフォルトの名無しさん:2010/01/19(火) 09:45:26
判定をnopで潰されておしまい


725 :デフォルトの名無しさん:2010/01/19(火) 10:28:15
アプリが、自分がインストールされたファルダーの場所を知るにはどうしたらよいのでしょうか?

726 :デフォルトの名無しさん:2010/01/19(火) 10:36:35
ファルダーは判らないんじゃない?ファルダーは。


727 :デフォルトの名無しさん:2010/01/19(火) 10:49:18
インストールフォルダに何か書き込むのは厳禁だよ

728 :デフォルトの名無しさん:2010/01/19(火) 10:53:38
>>726
そうですか。分からないんですか(´・ω・`)

>>727
設定ファイルとか保存したいんですが(´・ω・`)

729 :デフォルトの名無しさん:2010/01/19(火) 11:10:43
>>728
http://www.atmarkit.co.jp/fdotnet/dotnettips/016exepath/exepath.html

730 :デフォルトの名無しさん:2010/01/19(火) 11:45:04
2010年にもなってUAC怒らせるような時代遅れなアプリケーション作らせないでくれよほんと頼むよ

731 :デフォルトの名無しさん:2010/01/19(火) 11:59:48
UAC切ってない環境でそれやったら、
UACで警告出るうえに、実際に書きこまれる場所はユーザーごとに別になっちゃうよ

732 :デフォルトの名無しさん:2010/01/19(火) 12:23:14
XP使ってりゃ関係ない

733 :デフォルトの名無しさん:2010/01/19(火) 12:27:09
>>728
http://dobon.net/vb/dotnet/programing/storeappsettings.html


734 :デフォルトの名無しさん:2010/01/19(火) 12:31:39
ファイルはマイドキュメントに保存すべき

735 :デフォルトの名無しさん:2010/01/19(火) 13:42:52
だから何?

736 :デフォルトの名無しさん:2010/01/19(火) 13:44:24
何でもありません

737 :デフォルトの名無しさん:2010/01/19(火) 14:01:17
コレクションクラス作成用のCollection<T>とKeyedCollection<T1,T2>はあるけど
HashSetに対応する奴は無いの?

738 :デフォルトの名無しさん:2010/01/19(火) 14:02:47
ごめん勘違いしてた

739 :デフォルトの名無しさん:2010/01/19(火) 14:05:36
質問です!
1+1の答えを教えて下さい!

C#オタには難しい質問をしてしまいごめんなさい(>_<)

740 :デフォルトの名無しさん:2010/01/19(火) 14:08:57
そういえば前から気になってたんだけど

最近の話でいいんだが
WPFとかSilverLightとかXAML系て結構業務アプリに使われてる?

そろそろ事務系だけでもWPFとかに移行してみたいんだが・・・・

741 :デフォルトの名無しさん:2010/01/19(火) 14:10:27
使ってるよin俺の部屋

742 :デフォルトの名無しさん:2010/01/19(火) 14:14:20
>>741
キモい

743 :デフォルトの名無しさん:2010/01/19(火) 14:17:21
>>741
かっこいい

744 :デフォルトの名無しさん:2010/01/19(火) 14:18:16
WPFまでくるとHTMLでアプリ書いてるのとかわらないよね・・・

745 :デフォルトの名無しさん:2010/01/19(火) 14:29:16
>>743
自演乙

746 :デフォルトの名無しさん:2010/01/19(火) 14:31:42
インタラクティブなWPFプログラムでデキるオトコを演出!
みたいな

女性誌っぽいコピー

747 :デフォルトの名無しさん:2010/01/19(火) 14:34:45
WPF・・・向かった先は紙芝居エロゲ用スクリプトと同等か・・・

748 :デフォルトの名無しさん:2010/01/19(火) 14:44:51
呼んだ?

WPFは今のところゲームで使う予定はないな。Formsで十分。
ウィンドウの内側を自由に使えれば、ウィンドウの外側についてはあまり奇をてらう必要がないから。
WPFの描画機能とDirect3Dの組み合わせの可能性は研究しておいた方がいいとは思ってる。

WPFは現状それ自体が重いので、わざわざ利用する利点が感じられない。

749 :デフォルトの名無しさん:2010/01/19(火) 14:55:04
c#で多重継承ぽいことをやるにはどうすればいいのでしょうか?
たとえばTabcontrolにTabPageとListViewを継承したクラスを追加とか



750 :デフォルトの名無しさん:2010/01/19(火) 14:59:10
自己解決しました

751 :デフォルトの名無しさん:2010/01/19(火) 15:02:51
シャーロックForms

752 :デフォルトの名無しさん:2010/01/19(火) 15:03:09
自作クラスのプロパティと別クラスのインスタンスを結びつけて辞書的に運用するにはどうすればいいでしょうか?

いくつかのプロパティを持たせたデータ保持用のクラスのプロパティを変更すると
予め登録したイベントハンドラが呼び出され、プロパティごとに結びつけたToolStripMenuItemのEnabledやCheckedを変更するような仕組みです。
それぞれの変更を結びつけるコードを記述するしかないんでしょうか?

753 :デフォルトの名無しさん:2010/01/19(火) 15:06:59
そりゃあそうだろう

754 :デフォルトの名無しさん:2010/01/19(火) 15:10:12
>>752
デザインパターンの
ブリッジ、アダプタ、ストラテジ、テンプレートメソッド
あたりを読めば、おのずと実装方法見えてくると思う。

755 :デフォルトの名無しさん:2010/01/19(火) 15:13:02
MenuとToolStrip系はバインディングが省略されてるからねー

756 :デフォルトの名無しさん:2010/01/19(火) 15:22:31
>>750
勝手に解決しないでください

>>751
座布団全部没収

757 :デフォルトの名無しさん:2010/01/19(火) 15:24:13
>>754
具体的にはどんな感じの設計になるでしょうか。
>>755
どちらかというと問題はそちら側ではなく、データクラスがイベントハンドラを呼び出す際に
プロパティ同士を区別してデータのセットとして保持しておく方法がC#にはないような気がするんです。
(C++におけるメンバ変数のポインタがない)

758 :デフォルトの名無しさん:2010/01/19(火) 15:24:58
どうでもいいけど749が言ってるのは多重継承とは言わないと思うんだよ

TabControl(TabPageのコレクションを持つ)にTabPage追加して、
TabPage(Controlのコンテナを持つ)にListView追加してるだけじゃね

759 :デフォルトの名無しさん:2010/01/19(火) 15:28:40
>>758
今やっているのがTabPageを継承したクラスのコンストラクタの中で
ListViewをnewして設定を行った後TabPageに追加してます。


760 :デフォルトの名無しさん:2010/01/19(火) 15:31:36
>>759
それで何か問題があるのか(´Д`;)

761 :デフォルトの名無しさん:2010/01/19(火) 15:33:46
>>760
追加するだけだとこれでもいいのですが
ListViewのイベントハンドラ関連の処理を
ベースになってFormで行いたい場合が
イマイチよくわからないので・・・・

できれば自前クラスでいきなりTabPage+ListView
として動いてくれればいいなあと思いまして

762 :デフォルトの名無しさん:2010/01/19(火) 15:40:26
TabPage継承したクラスにListViewのイベントハンドラ弄るeventアクセサ用意しておけばいいのでは。

正直TabPage継承する構造って好かないけど。

763 :デフォルトの名無しさん:2010/01/19(火) 15:43:52
カスタムコントロール作るとか

764 :デフォルトの名無しさん:2010/01/19(火) 15:45:26
好き嫌いの激しい子達だね君らは…。

765 :デフォルトの名無しさん:2010/01/19(火) 15:49:05
>>762
なるほど

>正直TabPage継承する構造って好かないけど。
問題になりますかね・・・勉強中なのでどういうのがいいのかさっぱりなんです
TabControlを継承するクラス内部で・・・というパターンも考えたのですが
どういうのが一番いいのか・・・


766 :デフォルトの名無しさん:2010/01/19(火) 16:22:15
>>734
やめて。txtとかpdfとか文書関係のだけ入れときたいのに
勝手に設定用フォルダ作られると迷惑だ。
VSは入れたら即刻保存場所変える

767 :デフォルトの名無しさん:2010/01/19(火) 16:30:53
AppDataでいいじゃない

768 :デフォルトの名無しさん:2010/01/19(火) 16:34:50
でも最近のソフトはマイドキュメントに自分のフォルダ作って
そこに保存するようになってるよね

769 :デフォルトの名無しさん:2010/01/19(火) 16:37:29
>>766
マイドキュメントはシステムの復元による復元対象外

770 :デフォルトの名無しさん:2010/01/19(火) 16:37:41
>>763
こういうのもあるんですね
ちょっといろいろいじっててコメント遅くなりました

771 :デフォルトの名無しさん:2010/01/19(火) 16:41:42
何でUACは実行パスにファイル作るの嫌がるの?

772 :デフォルトの名無しさん:2010/01/19(火) 16:46:48
実行パスってかProgram Filesみたいな管理フォルダに、だろ
マルチユーザ環境にあたって不都合だったりいろいろ

773 :デフォルトの名無しさん:2010/01/19(火) 16:50:53
そりゃーセキュリティ的にはあっちゃこっちゃアクセス出来るのはよろしくないが
UACはそれでもなんかうざいよね

774 :デフォルトの名無しさん:2010/01/19(火) 16:52:21
> UACはそれでもなんかうざいよね
いや全然?

775 :デフォルトの名無しさん:2010/01/19(火) 17:01:38
>>769
ユーザーデータを入れるんだから当然でないの?
設定はAppData内に入れてほしい。

776 :デフォルトの名無しさん:2010/01/19(火) 17:06:22
asp.netで公開されているURLを叩くと
サーバー側のローカルネットワークの
LinuxのApacheで公開されているPHPが実行されて
結果をクライアントに返すみたいなことってできますか?
iisがプロキシになるみたいな。

777 :デフォルトの名無しさん:2010/01/19(火) 17:09:33
>>776
実際出来るかどうかわからんが、ASP.NETでページを作成し、
内部ではWebClientなどでPHPのURLを叩いて結果を取得し、
それをResponseに書き出すとか?

778 :デフォルトの名無しさん:2010/01/19(火) 21:13:32
>>776
基本無理。

779 :デフォルトの名無しさん:2010/01/19(火) 21:35:57
普通にできるだろ

780 :デフォルトの名無しさん:2010/01/19(火) 21:37:01
でっきるっかなでっきるっかなはてはてほほー

781 :デフォルトの名無しさん:2010/01/19(火) 21:41:17
はてはてふふーだと思ってた。

782 :デフォルトの名無しさん:2010/01/19(火) 21:57:01
さてさて、だろw
スキャットの部分はフフーもホホーも両方ある

783 :デフォルトの名無しさん:2010/01/19(火) 21:59:55
アホばっかだな
お前らみたいなのがルパンザサーンだと思い込んでるクチだな

784 :デフォルトの名無しさん:2010/01/19(火) 22:11:04
ルパンドフード だろ

785 :デフォルトの名無しさん:2010/01/20(水) 03:32:43
ゆとりのネタにマジレスするのもあれだけど
ルパンルパーンだから

786 :デフォルトの名無しさん:2010/01/20(水) 04:15:41
wwwwwwwwwwwww


787 :デフォルトの名無しさん:2010/01/20(水) 04:26:42

/|
\_WW/ |WWWWWW/
≫             ≪
≫  何が可笑しい!! ≪
≫              ≪
 /MMMMMMMMM、\

788 :デフォルトの名無しさん:2010/01/20(水) 12:40:37
ボタンやメニューとかのコントロールのNameが分かっている時、これからそのコントロールについているイベントハンドラの関数名は取得できないでしょうか?

789 :デフォルトの名無しさん:2010/01/20(水) 12:49:49
>>788
http://yas-hummingbird.blogspot.com/2008/12/c.html

790 :デフォルトの名無しさん:2010/01/20(水) 14:51:51
form

formEx->formExA

formExB

formExのコンストラクタに対して何か渡したいときどうすればいいのでしょうか?

791 :デフォルトの名無しさん:2010/01/20(水) 14:53:09
base(なにか)のこと?

792 :デフォルトの名無しさん:2010/01/20(水) 14:59:07
formEx(HOGE hoge)
{
}

これの解決ですね・・・

793 :デフォルトの名無しさん:2010/01/20(水) 15:00:43
C#でメモリブロックをコピーするにはどうしたらよいですか?

例えば、独自のプロトコルをしゃべろうと思っていて、
受信したストリームのデータを解析して、ペイロードを取り出し、
ペイロードをバイト配列に保持する作業を担当するスレッドがある。
そのスレッドがため込んだデータを、取り出したい。

すると呼び出し側は自分でバイト配列を用意して、ここにコピーしてね?っていうメソッドを呼び出す
てシナリオを考えてますたとえば↓こんなメソッドがあるので、それを呼ぶ。
GiveMeTheRecvData(int giveMeThisSize, byte[] copyHere)

で、実際コピーするのはどうやんの?
どたんじゅんに言えばC++のmemmove

794 :デフォルトの名無しさん:2010/01/20(水) 15:03:49
Marshal.Copyじゃね

795 :デフォルトの名無しさん:2010/01/20(水) 15:04:54
return resultbyte.Clone();

796 :デフォルトの名無しさん:2010/01/20(水) 15:05:14
ごめん、アンマネージは関係ないのか
Buffer.BlockCopy

797 :デフォルトの名無しさん:2010/01/20(水) 15:08:41
>>794-795
みなさん、ありがとうございます。
助かりました。

798 :デフォルトの名無しさん:2010/01/20(水) 15:19:17
ttp://browsershots.org/
俺的にはちょっと感動もん

799 :デフォルトの名無しさん:2010/01/20(水) 15:37:13
こわくて踏めない

800 :デフォルトの名無しさん:2010/01/20(水) 15:46:44
PrimeにてMVVMを勉強中です。
Modelの初期化部に以下のようなコードがありました。

this.container.RegisterType<IDiggService, DiggService>(new ContainerControlledLifetimeManager());

これはどういう意味なのでしょうか?

801 :デフォルトの名無しさん:2010/01/20(水) 15:50:34
>>798
結構面白いな。
>>799
URLを指定すると
選択したブラウザのスクリーンショットが表示されるというものだった。

802 :デフォルトの名無しさん:2010/01/20(水) 15:53:50
>>799
ただの表示テストだよ
http://www.dotup.org/uploda/www.dotup.org577761.png

803 :デフォルトの名無しさん:2010/01/20(水) 15:57:15
BrowserShotsとC#に何の関係があるんだ

804 :デフォルトの名無しさん:2010/01/20(水) 15:59:11
さあね

805 :デフォルトの名無しさん:2010/01/20(水) 20:53:26
>>800
DIコンテナってやつでしょ
MVVMなんかに手を出すんだったらそれくらい自分でわからないレベルでは厳しいよ

806 :デフォルトの名無しさん:2010/01/20(水) 21:34:33
>>805
DIコンテナはわかるがそれぞれのクラスの振る舞いがよくわからん。
調べてもわからん。
日本人でうまく説明してる人もいないしお手上げじゃ!

807 :デフォルトの名無しさん:2010/01/20(水) 21:36:03
そこでNOVAですよ

808 :デフォルトの名無しさん:2010/01/20(水) 21:41:52
>>807
今から駅前留学してくる!

809 :デフォルトの名無しさん:2010/01/20(水) 22:17:08
MVVMって何か楽になってるんだか苦しんでるんだかよくわからんところがあるよな。


810 :デフォルトの名無しさん:2010/01/20(水) 22:23:53
初心者にわかりやすくMVVMを解説してください

811 :デフォルトの名無しさん:2010/01/20(水) 22:51:25
初心者にはわかりにくいのがMVVM


812 :デフォルトの名無しさん:2010/01/20(水) 23:01:23
文字が読みにくいよ。

813 :デフォルトの名無しさん:2010/01/20(水) 23:01:43
WPF向けに特化したMVC
片っぱしからバインドしまくる

814 :デフォルトの名無しさん:2010/01/20(水) 23:39:53
やさしい人がキター!
でもわからない専門用語が一緒にキター!

MVCって何ですか?

815 :デフォルトの名無しさん:2010/01/20(水) 23:48:26
>>814
MVC知らないのも終わってるけど
分からない単語が出てきて脊椎反射で聞き返すのはもっと終わってる
せめてググって1日くらい調べてからこいよ

816 :デフォルトの名無しさん:2010/01/21(木) 00:08:20
残念なことにそれが許されてるスレだから
気持ちはわかるが、スルーするしかない。

817 :デフォルトの名無しさん:2010/01/21(木) 00:15:43
UI(View)とデータ(Model)は分離したい。できればお互いを意識しないようにしたい。
でもViewとModelだけで互いに依存しないように作るのは非常に難しいというか無理。
だから間にControllerを挟んで仲介させる。
さらに,WPFの持つ強力なバインディング機能を利用してControllerとViewの間を徹底的に切り離したのが
Model-View-ViewModel。

818 :817:2010/01/21(木) 00:19:27
すまんControllerとViewを切り離したというのは不適切だな
ControllerのViewへの依存を取り除いた

819 :デフォルトの名無しさん:2010/01/21(木) 00:30:30
ViewはControllerを意識するけど逆はない。
ControllerはModelを意識するけど逆はない。
なのでView(Controller)の実装はController(Model)に依存するってな感じでおk?

820 :デフォルトの名無しさん:2010/01/21(木) 00:40:58
たぶんググった方が良いと思う(うざいからとかじゃなく)
丁寧に纏めてあるとこ読んだ方がいいよ。
1レス程度でわかったつもりになっちゃうのはあかんて。

821 :デフォルトの名無しさん:2010/01/21(木) 00:41:27
C#ウホッ

822 :デフォルトの名無しさん:2010/01/21(木) 00:53:53
817さんありがとう
よくわかりました

823 :デフォルトの名無しさん:2010/01/21(木) 01:14:23

【二次元】日本のクリスマスに絶望する動画【2009】
ttp://www.nicovideo.jp/watch/sm9447250

824 :デフォルトの名無しさん:2010/01/21(木) 01:47:36
815は出入り禁止な

825 :デフォルトの名無しさん:2010/01/21(木) 02:09:48
この手のプログラム書くときには知ってなきゃならないことがたくさんあると思うんだが
完成するまでそれ全部教えてやるのか? 824は2ちゃんに命かけてるんだな。えらい。

826 :デフォルトの名無しさん:2010/01/21(木) 02:11:19
キタ━━━━(Д゚(○=(゚∀゚)=○)Д゚)━━━━━!!!

827 :デフォルトの名無しさん:2010/01/21(木) 02:11:53
偉いも何もそういうスレだし。
場違いなんだよお前さんが。

828 :デフォルトの名無しさん:2010/01/21(木) 03:11:54
>>827

829 :デフォルトの名無しさん:2010/01/21(木) 03:12:29
>>828

830 :デフォルトの名無しさん:2010/01/21(木) 03:12:39
>>829

831 :デフォルトの名無しさん:2010/01/21(木) 03:13:06
>>830

832 :デフォルトの名無しさん:2010/01/21(木) 08:33:08
>>831

833 :デフォルトの名無しさん:2010/01/21(木) 08:48:04
また相談スレの連中が荒らしてるのか?

834 :デフォルトの名無しさん:2010/01/21(木) 09:15:16
ばれた?w

835 :デフォルトの名無しさん:2010/01/21(木) 15:21:39
GPLv2って無料配布だとOKだっけ?

836 :デフォルトの名無しさん:2010/01/21(木) 15:25:05
C#と何の関係があるんだよ!!!!!!!!!!!!!!11111111111111

837 :デフォルトの名無しさん:2010/01/21(木) 15:36:09
いや他所で公開されてたソースをちょっと改造して公開しようかと

838 :デフォルトの名無しさん:2010/01/21(木) 15:41:19
GPLスレでやれ

839 :デフォルトの名無しさん:2010/01/21(木) 15:43:10
ごめんね835-839は俺の自演なんだ

840 :デフォルトの名無しさん:2010/01/21(木) 16:49:06
自分のレスにあえて批判的なレスをつけて
同情して教えてくれる人を誘うパターンねw
オレもよくやるわ。だいたい失敗するけど。

841 :デフォルトの名無しさん:2010/01/21(木) 16:54:19
下手糞め

842 :デフォルトの名無しさん:2010/01/21(木) 16:54:47
MatchPumpデザインパターンですね。

843 :デフォルトの名無しさん:2010/01/21(木) 16:55:11
>>840
知ったか風に書いて書き込みを煽るのが一番効果的

844 :デフォルトの名無しさん:2010/01/21(木) 17:01:08
自演で批判した方のレスが
むしろ皆の心を掴んじゃった時は目も当てれない。

845 :デフォルトの名無しさん:2010/01/21(木) 17:47:40
>>817
ViewModelって、
public xxx AAA{ get{ return .....; } }
みたいなのだけが大量にあるクラスっていう認識でいいの?

846 :デフォルトの名無しさん:2010/01/21(木) 17:52:11
考えるんじゃない
感じるんだ

847 :デフォルトの名無しさん:2010/01/21(木) 17:54:19
C++みたく関数定義と実装を別に場所に書けないの?
class xxx
{
public xxx()
public yyy()
}

xxx::xxx()
{
}
xxx::yyy()
{
}
みたいな。

関数定義と実装が一緒だと見づらい。

848 :デフォルトの名無しさん:2010/01/21(木) 17:54:58
>>845
Javaサーブレットの登場の時はMVCモデルってのはよく聞いたな

表示とちょっとした入力は受け付ける、でもメインの処理は鯖側にやらせる

849 :デフォルトの名無しさん:2010/01/21(木) 18:01:29
>>847
partial

850 :デフォルトの名無しさん:2010/01/21(木) 18:03:40
親Formx1と子Formx数個で情報のやり取りをする場合は
どうすればいいでしょうか?

851 :デフォルトの名無しさん:2010/01/21(木) 18:06:48
インスタンスさえ最初に渡してしまえばどうにでもなるべ

852 :デフォルトの名無しさん:2010/01/21(木) 18:12:05
>849
(*^^*)ありがとん♪

853 :デフォルトの名無しさん:2010/01/21(木) 18:41:36
めんどくさかったらシングルトンでも書いてそこにデータ全部押し込めばいい

854 :デフォルトの名無しさん:2010/01/21(木) 18:42:44
staticでいいよ

855 :デフォルトの名無しさん:2010/01/21(木) 18:47:14
staticは簡単だがコンストラクタが書けん

856 :デフォルトの名無しさん:2010/01/21(木) 18:56:45
>>845
MVCとMVVMについて詳しく知りたいならどっか適当なサイト見た方がいいよ。

↓なんか英語だけど図見るだけである程度把握出来る。
http://nirajrules.wordpress.com/2009/07/18/mvc-vs-mvp-vs-mvvm/

857 :デフォルトの名無しさん:2010/01/21(木) 19:20:28
>>856
大きなお世話です

858 :デフォルトの名無しさん:2010/01/21(木) 19:23:18
またはじまったか。


859 :デフォルトの名無しさん:2010/01/21(木) 19:50:14
FormのLoadの際にSystem.Diagnostics.Process.GetProcessesByNameで
自分が立ち上がる際に自分を含めて何個いるか確認してるんですが
Idをみると問題ないのですがHandleでみると自分が起動した時と
その後で起動した別のやつでは数字がかわることがあります。
Formが起動しきるまではHandle固定されない物なんでしょうか?


860 :デフォルトの名無しさん:2010/01/21(木) 20:16:20
こんな感じです
http://uproda.2ch-library.com/207077QAd/lib207077.png

861 :デフォルトの名無しさん:2010/01/21(木) 20:41:30
至って正常な動作に見える
とりえあず、MSDNでProcess.Handleのところ全部読め

862 :デフォルトの名無しさん:2010/01/21(木) 21:13:44
>>859
コンソールアプリでなくWindowsアプリを選択しLoadではなくShownで確認してみ

863 :デフォルトの名無しさん:2010/01/21(木) 21:18:43
自己解決しましたと言うのが遅くなってゴメンナサイです

864 :デフォルトの名無しさん:2010/01/21(木) 21:24:34
許さんよ

865 :デフォルトの名無しさん:2010/01/21(木) 21:26:20
許す

866 :デフォルトの名無しさん:2010/01/21(木) 21:46:47
お礼言ってるだけいいだろ
ほとんどの奴は聞きっ放しなんだから

867 :デフォルトの名無しさん:2010/01/21(木) 21:50:38
よくねえよ?

868 :デフォルトの名無しさん:2010/01/21(木) 22:14:28
適当に言ってるだけだからほっとけよ

869 :デフォルトの名無しさん:2010/01/21(木) 23:46:57
型変換やメッセージの出し方など、基本的なものから載っているサイトや本ってありますか?
できれば逆引き的な感じがいいです。

「C#逆引きハンドブック」っていうのを買ったのですが、基本的なことがあまり載ってなくて困っています。
Delphiを多少かじっていたのでいけるかと思っていましたが無謀でした

よろしくお願いします

870 :デフォルトの名無しさん:2010/01/21(木) 23:51:54
バカですね。

871 :デフォルトの名無しさん:2010/01/21(木) 23:59:24
>>869
ttp://www.google.co.jp/

872 :デフォルトの名無しさん:2010/01/22(金) 00:03:01
>>869の望むようにすると……

3. クラス
  3.1 クラスを作成する
  3.2. クラスを継承する
  3.3. インターフェイスを実装する

普通に章立てした教科書じゃんw

873 :デフォルトの名無しさん:2010/01/22(金) 00:12:38
そろそろ自己解決しましたといってもいですかぁ?

874 :デフォルトの名無しさん:2010/01/22(金) 00:20:41
msdnは結構優秀だからもっと使ったらいいと思うんだが・・・


875 :デフォルトの名無しさん:2010/01/22(金) 00:23:07
ボランティアが書いてるのもあるんだからプログラミングガイド読んでやれよな

876 :デフォルトの名無しさん:2010/01/22(金) 00:56:47
C#のSocketってひでーな

877 :デフォルトの名無しさん:2010/01/22(金) 01:48:32
例えばどこら辺?

878 :デフォルトの名無しさん:2010/01/22(金) 02:10:39
教えねーよ

879 :デフォルトの名無しさん:2010/01/22(金) 02:16:24
ピッチャービビってる、ヘイヘイヘイww

880 :デフォルトの名無しさん:2010/01/22(金) 02:16:57
ビビってる、ヘイw

881 :デフォルトの名無しさん:2010/01/22(金) 02:18:48
>>877
受信してコールバックされる度にまた次のコールバック仕掛けなきゃいけないとか

882 :デフォルトの名無しさん:2010/01/22(金) 02:26:27
なるほど

883 :デフォルトの名無しさん:2010/01/22(金) 02:36:34
>>881
それでなにか問題あるのか?

884 :デフォルトの名無しさん:2010/01/22(金) 02:57:39
AsyncCallback使わないから気にしたことなかったな

885 :デフォルトの名無しさん:2010/01/22(金) 03:02:32
>>883
いやぁ、なんの問題もありません。動けば問題なしです。

886 :デフォルトの名無しさん:2010/01/22(金) 03:04:26
>>885
喧嘩売ってるのか?

887 :デフォルトの名無しさん:2010/01/22(金) 03:13:35
>>884
C#のソケットもいろいろライブラリがあるようですね。
今は、どれを使うのがトレンドなんですか?

888 :デフォルトの名無しさん:2010/01/22(金) 03:55:50
変数は全部、publicでいいよね?(´・ω・`)

889 :デフォルトの名無しさん:2010/01/22(金) 03:56:58
いいよ、好きにしな(´・ω・`)

890 :デフォルトの名無しさん:2010/01/22(金) 04:05:37
だめ、だめだめお(´・ω・`)

891 :デフォルトの名無しさん:2010/01/22(金) 04:07:14
>>883
ですよね。と軽く聞き流しときゃいいんだよ。
バカやボケ老人は適応しようという気すらないんだから。

892 :デフォルトの名無しさん:2010/01/22(金) 04:28:45
>>891
ですよね。

893 :デフォルトの名無しさん:2010/01/22(金) 04:51:01
過去のレス見ていると質問するのがこわい

894 :デフォルトの名無しさん:2010/01/22(金) 06:10:30
>>893
ですよね。

895 :デフォルトの名無しさん:2010/01/22(金) 06:31:19
ですよね。 をNGワード登録っと

896 :デフォルトの名無しさん:2010/01/22(金) 06:32:00
>>895
ですよね。

897 :デフォルトの名無しさん:2010/01/22(金) 08:10:04
で す よ ね 。

898 :デフォルトの名無しさん:2010/01/22(金) 08:22:26
ですよ。

899 :デフォルトの名無しさん:2010/01/22(金) 09:21:28
でよすね。

900 :デフォルトの名無しさん:2010/01/22(金) 09:29:12
ならば正規表現NGEx

901 :デフォルトの名無しさん:2010/01/22(金) 09:30:47
でしたよね。

902 :デフォルトの名無しさん:2010/01/22(金) 09:49:11
desuyone.

903 :デフォルトの名無しさん:2010/01/22(金) 10:03:27
次のように文字列の中に数字が2つ、タブで区切られて入っていて、それを2つのバッファに別々に代入したい場合、
一番簡単な方法はなんでしょうか?

string line = "123\0.555"

904 :デフォルトの名無しさん:2010/01/22(金) 10:07:15
Split

905 :デフォルトの名無しさん:2010/01/22(金) 10:11:25
無理

906 :デフォルトの名無しさん:2010/01/22(金) 10:19:56
やっぱりSplitですか。やってみます

907 :デフォルトの名無しさん:2010/01/22(金) 10:45:08
List<RecFile> recFilesで、
クラスRecFileにFullNameというstringのプロパティであるとき、
recFilesに含まれている全てのオブジェクトのFullNameの文字列配列を作りたい場合
.NET3.5で一番簡潔に変換するには↓で合っていますか?

recFiles.ConvertAll<string>(item => item.FullName).ToArray()



908 :デフォルトの名無しさん:2010/01/22(金) 10:51:24
うん

909 :デフォルトの名無しさん:2010/01/22(金) 13:41:22
ConvertAllじゃなくてSelectでよくね

910 :デフォルトの名無しさん:2010/01/22(金) 13:46:50
3.5だしなぁ。

911 :デフォルトの名無しさん:2010/01/22(金) 14:52:35
recFiles.Select(item => item.FullName).ToArray()
ありがとうございます。こうですね


912 :デフォルトの名無しさん:2010/01/22(金) 15:01:52
プログラムがおかしいんです。何でしょう?(´・ω・`)

913 :デフォルトの名無しさん:2010/01/22(金) 15:07:35
正しく書いていないからです。

914 :デフォルトの名無しさん:2010/01/22(金) 15:16:25
何ででしょうね。書き手を交換すれば改善するかもしれません

915 :デフォルトの名無しさん:2010/01/22(金) 15:51:38
>>913>>914
ばーか(´・ω・`)

916 :デフォルトの名無しさん:2010/01/22(金) 15:55:28
>>911
うん

917 :デフォルトの名無しさん:2010/01/22(金) 16:34:21


918 :デフォルトの名無しさん:2010/01/22(金) 17:19:14
プログラムは作った様に動くが、思った通りに動くとは限らない

919 :デフォルトの名無しさん:2010/01/22(金) 17:47:29
恋愛と一緒だな。
俺童貞だけど。

920 :デフォルトの名無しさん:2010/01/22(金) 18:03:33
全然違うし別にうまいことも言えてない

921 :デフォルトの名無しさん:2010/01/22(金) 18:38:27
なんかレベルの低いスレだな。。
C#って小学校でも教えるようになったのか?

922 :デフォルトの名無しさん:2010/01/22(金) 18:38:55
ファイルからデータ取り出してコレクションに入れて整理するプログラム書いてたら、
最終的にList<List<List<Data>>>なListができてウゲェってなったけど、
コレクションの多重ネストってあり?

923 :デフォルトの名無しさん:2010/01/22(金) 18:45:13
>>922
それが気にいらないならDATAが何か知らんけど
テキストデータにできるならXMLにやらせるとかで
もいいんじゃね?

924 :デフォルトの名無しさん:2010/01/22(金) 18:53:03
>>923
CSVファイルって書くつもりがファイルにしてしまった。
Dataはstringやintのプロパティが入ったシンプルなクラスで、
種類ごとにリストに分けて、そのリストをさらにリストでまとめてってな感じで、
比較などを順番に行う。

とりあえず動くからこのままでもいいかな。
コレクションの多重ネストはまずい方法なのかなーと少し不安になったので聞いてみた。

925 :デフォルトの名無しさん:2010/01/22(金) 18:53:33
ブラウザコントロールでJavaScriptのオブジェクトにアクセスするにはどうしたらいいでしょうか?
JavaScriptの値をForm要素にコピーしてSubmitのイベントをブラウザコントロールでフックして
Document要素から読み出す・・・
これで正しいでしょうか?

926 :デフォルトの名無しさん:2010/01/22(金) 19:00:59
そもそも、JavaScriptのオブジェクトって何を想定してるの?

var hoge; ←こういうやつ?

927 :デフォルトの名無しさん:2010/01/22(金) 19:04:04
>>926
スレタイを大きな声を出してよんでみよう!

928 :デフォルトの名無しさん:2010/01/22(金) 19:07:15
どうやら頭のおかしい人が住み着いてるみたい。

929 :デフォルトの名無しさん:2010/01/22(金) 19:08:04
>>924
Listを内包するクラスでラップするってのも読みやすくする上ではありかなとは思う。
種類ごとのリスト、みたいに何のリストかは決ってるわけだし。


930 :デフォルトの名無しさん:2010/01/22(金) 19:08:17
>>927
おまえは>>925を読んでみようなw

931 :デフォルトの名無しさん:2010/01/22(金) 19:12:21
>>927は直前しか読んでなかったってわけかwww

どういう風にマップされるんだろね。
たしかSerializerはJSONに対応してたからデシリアライズしろってことなのかね。

932 :デフォルトの名無しさん:2010/01/22(金) 19:16:05
>>926
それは、ただの変数宣言。

933 :デフォルトの名無しさん:2010/01/22(金) 19:17:52
>>932

934 :デフォルトの名無しさん:2010/01/22(金) 19:21:16
>>929
なるほど。やってみる

935 :デフォルトの名無しさん:2010/01/22(金) 20:06:25
>>927
恥ずかしいでしょ?

936 :デフォルトの名無しさん:2010/01/22(金) 22:35:29
>>922
FxCopでは違反
http://msdn.microsoft.com/ja-jp/library/ms182144.aspx

937 :デフォルトの名無しさん:2010/01/22(金) 23:01:09
なんという手軽さ・・・
メインメソッドの中に
Application.Run(new Form());
とやるだけでWindowsのGUIアプリケーションができてしまった。
未完成である「Formクラス」に、ボタンクリックイベントとかちょっとした改良を加えるだけで
すばらしいプログラムができあがる。

         チカラ
これがOOPの「力」か・・・

938 :デフォルトの名無しさん:2010/01/22(金) 23:01:47
>この規則による警告は抑制しないでください。
>理解しやすく使いやすい構文でジェネリック型を指定することで、
>習得に必要な時間が短縮され、新しいライブラリの採用率が向上します。

ってことは自分で使うぶんにはいいような気がする
採用って…

939 :デフォルトの名無しさん:2010/01/22(金) 23:02:09
OOP関係ねえよ

940 :デフォルトの名無しさん:2010/01/22(金) 23:03:32
そりゃクラスライブラリのプロパティでList<List<List<Data>>>とか出てきたら即刻ゴミ箱行きだ

941 :デフォルトの名無しさん:2010/01/22(金) 23:25:41
それは確かに作った方もおとなしく使う方もノイローゼだな

942 :デフォルトの名無しさん:2010/01/22(金) 23:34:14
>>941
で.す.よ.ね.。

943 :デフォルトの名無しさん:2010/01/23(土) 00:29:34
C#の切り上げ処理でつまづいています。
1047619.014
という数字の小数を切り上げても1047619のままになるはずですが、

切り捨てたい桁の数字が0の場合にCellingをしたら、1047620になります。
このように端数処理したい桁が0の場合を含め、切り上げ処理はどのようにするのが良いのでしょうか

944 :デフォルトの名無しさん:2010/01/23(土) 00:32:43
Ceiling(Floor(x*10)/10)

945 :デフォルトの名無しさん:2010/01/23(土) 00:33:36
>1047619.014
>という数字の小数を切り上げても1047619のままになるはず

おいギャグで言ってるのか?
”切り上げ”で辞書引けよ

946 :デフォルトの名無しさん:2010/01/23(土) 00:34:50
>>943
切り上げたいのか切り捨てたいのかどっちだよ

947 :デフォルトの名無しさん:2010/01/23(土) 00:36:52
質問とは直接関係ないけど,桁を意識するならfloatやdoubleじゃなくてdecimal使った方がいいよ
浮動小数点じゃダメだとは言わないけどちゃんとした知識がないと結構難しい

948 :デフォルトの名無しさん:2010/01/23(土) 00:45:12
>>943 がやりたいことは
小数点1位を切上げ
じゃないかな

949 :デフォルトの名無しさん:2010/01/23(土) 00:48:18
>>943です。
1047619.014の、小数第一位を切り上げたいんです。
言葉不足で申し訳ありませんでした。
単純にcellingすると、1047620になってしまいます。
どうすればよいでしょうか。

950 :デフォルトの名無しさん:2010/01/23(土) 00:50:30
10倍してceilingして10分の1すりゃいいじゃん。

951 :デフォルトの名無しさん:2010/01/23(土) 00:50:49
小数点第二位以下を切り捨てた値を小数点第一位で切り上げ、だろ
単に小数点第一位を切り上げなら>>943が数学的に正しい動作

http://www.suriken.com/knowledge/glossary/round-up.html
>切り上げ
>概数にする方法の1つで、必要な位より下の数がすべて0でないかぎり、求める位の数を1大きくすることを切り上げという。
>例:切り上げによって小数第1位までの概数を求める。
>25.38→25.4
>301.049→301.1

952 :デフォルトの名無しさん:2010/01/23(土) 00:55:20
>>944 で良いんじゃないの?それか、0.9を足して整数化するとか

953 :デフォルトの名無しさん:2010/01/23(土) 01:16:55
>>952
ですよね。

954 :デフォルトの名無しさん:2010/01/23(土) 02:17:42
あるソース(プロジェクト)を解読しているのですが分からないことがあります。

Hogeっていうクラスがあります。
HogeクラスはSageというメソッドは持っていないはずですが、
int[] i = hoge.Sage();
というように、持ってないはずのメソッドを呼んでいます。

で、このメソッドの定義をみてみると、
public static partial class Utility
{
  public static unsafe int[] Sage(this Hoge hoge)
  {
   〜略
  }
}

というように静的クラスでなにやら定義されています。
引数にthisがあったりして、はじめて見た謎の書き方です。
こんな感じで、継承なしで元のクラスを拡張してるってことなんでしょうか?
調べたいのですが、こういう方法に名前とかついてますでしょうか?

955 :デフォルトの名無しさん:2010/01/23(土) 02:34:03
拡張メソッド

956 :デフォルトの名無しさん:2010/01/23(土) 02:52:53
教えて下さってどうもありがとうございました。

957 :デフォルトの名無しさん:2010/01/23(土) 03:03:43
いやいや( ^ω^)おっお

958 :デフォルトの名無しさん:2010/01/23(土) 03:08:13
おはいよーございます

959 :デフォルトの名無しさん:2010/01/23(土) 04:27:34
>>943が求めているのは、さしずめ零捨一入と言ったところか

>>944>>952
負の数を考慮するなら切り上げ/切り捨て/四捨五入は、
特に断りが無ければ、絶対値に対して行われる

因みに、Ceiling/Floorは天井関数/床関数なので注意

960 :デフォルトの名無しさん:2010/01/23(土) 09:36:53
【C# 、.NET Framework,Windowsインストーラー】
.NET Framework3.5 SP1 がインストールできない事象について

PCに.NET Framework 3.5 SP1などを、ClickOnceからインストールしようとしたときにエラーが出ました。

<インストールしようとしたコンポーネント>
・Windowsインストーラー3.1
・.NET Framework 3.5 SP1
・Windowsフォームアプリケーション(C#)

<パソコンの概要>
・OS:Windows XP SP3
・既にあった.NET Framework 1.1

<エラー内容>
「Windowsインストーラーサービスにアクセスできませんでした。これは、Windowsをセーフモードで実行している場合、またはWindowsインストーラーが正しくインストールされていない場合に発生することがあります。サポートの担当者に問い合わせてください。」

Windowsインストーラーに問題があるのか、.NET側に問題があるのか分かりません。
解決策を教えていただけないでしょうか。
よろしくお願いいたします。


961 :デフォルトの名無しさん:2010/01/23(土) 09:47:32
「Windowsインストーラーサービスにアクセスできませんでした」でぐぐるくらいの知恵はつけようよ

962 :デフォルトの名無しさん:2010/01/23(土) 15:19:13
マインスイーパーのような、スコア表示を読み取ってテキストとして表示させたいのですが、
どのようにすればいいでしょう・・・

963 :デフォルトの名無しさん:2010/01/23(土) 15:32:51
そのくらいなら、GetPixelみたいので色を取得して判断できそうだな。

964 :デフォルトの名無しさん:2010/01/23(土) 15:42:34
マインスイーパーだとそれで出来るんですが、実現したいゲームでは
ttp://www.dotup.org/uploda/www.dotup.org586117.jpg
こんな感じの表記なのでGetPixelで実現できるようなものなのかと・・・

965 :デフォルトの名無しさん:2010/01/23(土) 15:44:43
できるだろ。あらかじめ、0〜9のそのサイズの画像を用意しておいて、
比較してもいいし。

ただ、汎用的に、ってことだと、画像認識技術が必要だろうね。

966 :デフォルトの名無しさん:2010/01/23(土) 15:48:05
なるほど、書体とかは統一されているので、画像用意して比較っての試してみようと思います。
比較ってのは1pxずつずらしていくしかないんですかね・・・

967 :デフォルトの名無しさん:2010/01/23(土) 15:54:56
そんな簡単にできると思えんけどw
普通に考えて個人の手に負える仕事じゃない

968 :デフォルトの名無しさん:2010/01/23(土) 15:59:36
この間画像が同じかどうかの比較をするために作った拡張メソッド
文字ならこんな大袈裟なことしなくてもいいと思うけど

/// <summary>
/// 違うBitmapが同じかどうか瞬時に判断できるようにBitmapのMD5ハッシュを計算する
/// 16進32桁(128ビット=16バイト)の文字列を返す
/// </summary>
/// <param name="bmp"></param>
/// <returns></returns>
public static string GetMD5Hash(this Bitmap bmp) {
BitmapData bitmapData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height),
ImageLockMode.ReadWrite, bmp.PixelFormat);
int bytes = bitmapData.Stride * bmp.Height;
byte[] bmpData = new byte[bytes];
Marshal.Copy(bitmapData.Scan0, bmpData, 0, bytes);
bmp.UnlockBits(bitmapData);

MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
byte[] md5Data = md5Hasher.ComputeHash(bmpData);

StringBuilder sb = new StringBuilder();
for (int i = 0; i < md5Data.Length; i++) {
sb.Append(md5Data[i].ToString("x2"));
}
return sb.ToString();
}


969 :デフォルトの名無しさん:2010/01/23(土) 16:00:49
書体は決まってるんだから簡単な画像認識じゃん。

970 :デフォルトの名無しさん:2010/01/23(土) 16:01:46
>>967
OCR処理しようってんじゃなくて、
あらかじめ表示されるであろうパターンを用意しておいて比べるだけだよ
どんなフォントで表示されるのか決まっていないんであれば無理だけど

971 :デフォルトの名無しさん:2010/01/23(土) 16:03:17
なるほど、ハッシュですか・・・
同じ大きさで数字単位に切り取り、
景色統一してそのメソッドに放り込んでみます!

972 :デフォルトの名無しさん:2010/01/23(土) 16:13:13
半透明で単純に比較できないんなら
輝度がある一定値を越えるかどうかでON/OFFを判断するって手もある
それを全ての文字パターンに対して同じかどうかピクセル毎に比較して、
違うピクセルの数が一番少ないのがそこの文字と解釈するとか

973 :デフォルトの名無しさん:2010/01/23(土) 16:14:32
いろいろ考えるのがプログラミングの楽しみだと思うんだけどな。

974 :デフォルトの名無しさん:2010/01/23(土) 16:21:21
ニューラルネットワーク使えばいける
Captcha 解析 か何かでググれ


975 :デフォルトの名無しさん:2010/01/23(土) 16:22:30
すぐ下にこんなのもあった
/// <summary>
/// Bitmap内で指定された色だけ抜き出す。
/// 指定された色の場所とそれ以外の色の場所で2色だけに書き換える
/// </summary>
/// <param name="bmp"></param>
/// <param name="extractColor">判定する色</param>
/// <param name="hitColor">extractColorだった場合に設定する色</param>
/// <param name="blankColor">extractColorでなかった場合に設定する色</param>
public static void ExtractColor(this Bitmap bmp, int extractColor, int hitColor, int blankColor) {
BitmapData bitmapData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height),
ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
int intcnt = bitmapData.Stride / 4 * bmp.Height;
int[] colorData = new int[intcnt];
Marshal.Copy(bitmapData.Scan0, colorData, 0, intcnt);
for (int i = 0; i < intcnt; i++) {
if (colorData[i] == extractColor)
colorData[i] = hitColor;
else
colorData[i] = blankColor;
}
Marshal.Copy(colorData, 0, bitmapData.Scan0, intcnt);
bmp.UnlockBits(bitmapData);
}


976 :デフォルトの名無しさん:2010/01/23(土) 16:54:54
>>964
プロテクト甘いならねこまんま等でアドレス調べて
メモリを直接読んじゃうのが一番簡単だと思う

977 :デフォルトの名無しさん:2010/01/23(土) 16:57:25
>>976
だねえ
キャプチャ負荷だなんだかんだで画像解析してたら大変なことになる


978 :デフォルトの名無しさん:2010/01/23(土) 17:26:55
ただメモリ直接読むのはバージョン変わったりしたときに動かなくなる可能性あるからなぁ。
画面読み取りも似たようなもんではあるけど。

979 :デフォルトの名無しさん:2010/01/23(土) 17:27:42
ネットゲームなのでそれは出来ないです、マインスイーパーだと以前やったのですが・・・


980 :デフォルトの名無しさん:2010/01/23(土) 17:32:22
ネトゲならその情報もパケットで送られてくるなら
パケットキャプチャでごにょごにょって手もあるな

981 :デフォルトの名無しさん:2010/01/23(土) 17:37:26
>>979
出来ないと思ってるだけでは?
そのネトゲの名前は何?

982 :デフォルトの名無しさん:2010/01/23(土) 17:45:36
次スレ
http://pc12.2ch.net/test/read.cgi/tech/1264236247/

983 :デフォルトの名無しさん:2010/01/23(土) 18:14:37
nProtect導入済みのゲームでもメモリ値って閲覧出来ますか?
パケット系も出来そうですが、とりあえずbmpの画像処理のほうやってます;

984 :デフォルトの名無しさん:2010/01/23(土) 18:36:11
nProtectだろうがなんだろうが
どんな方法を使ってもメモリ閲覧を絶対に不可能にするなんてことは不可能。

985 :デフォルトの名無しさん:2010/01/23(土) 18:46:41
OSによるメモリ保護で読めなくするって方法はあるけど?
Windowsではどうなってるのかはしらんけど。

986 :デフォルトの名無しさん:2010/01/23(土) 19:15:00
極論だけど、その気になればH/Wレベルで直接ビットパターンを読み取ることもできるわけだ

987 :デフォルトの名無しさん:2010/01/23(土) 19:17:37
極論すぎて話にならんがな

988 :デフォルトの名無しさん:2010/01/23(土) 19:22:11
オライリーの本かったが何これ!糞本じゃん!
もう買わん!プンスカ

989 :デフォルトの名無しさん:2010/01/23(土) 19:35:48
オライリーの本は人を選ぶ
お前は選ばれなかっただけだ

990 :デフォルトの名無しさん:2010/01/23(土) 19:36:30
正確に言うと
オライリーの本は日本語バージョンは糞本
amazonとかで洋書買え

991 :デフォルトの名無しさん:2010/01/23(土) 19:36:51
アマゾンの★くらい見てから買えよ

992 :デフォルトの名無しさん:2010/01/23(土) 19:43:38
アマゾンの★はまったく役に立たない。
★が多くてもゴミな本もあるし
★が少なくても良い本もある。

ちゃんと用語の解説してるにもかかわらず、適当に読んでいる人が
「説明もなしにいきなり知らない用語がでてきた!意味不明でわかりにくい本だ!★2つ!」
なんつーレヴューも珍しくない。

993 :デフォルトの名無しさん:2010/01/23(土) 21:10:14
人によって評価が違うのは当たり前なのだが。

994 :デフォルトの名無しさん:2010/01/23(土) 21:20:27
それは変だろう。文芸作品じゃないんだから。
というか、>>992の言ってることが読めてないんじゃないの?w

確かに多いよ。読み手側の問題を本(著者)の著者のせいにしてるだけの批評。
正反対になんでも誉めればいいと思ってるとしか思えない奴の書いたレビューも多い。

版が違うだけで評価が全然違うとか多すぎて笑える。
とにかく、アマゾンのレビューは明らかな糞本をふるい落とすぐらいの効用しかないね。

995 :デフォルトの名無しさん:2010/01/23(土) 21:26:31
当たり前の事を長々とまぁ・・・

996 :デフォルトの名無しさん:2010/01/23(土) 21:28:39
まあ、埋め草だろ
ふらっとC#,C♯,C#(初心者用) Part54
ttp://pc12.2ch.net/test/read.cgi/tech/1264236247/

997 :デフォルトの名無しさん:2010/01/23(土) 21:35:59
先にこっちを埋めようぜ。

998 :デフォルトの名無しさん:2010/01/23(土) 21:46:25
998

999 :デフォルトの名無しさん:2010/01/23(土) 21:47:03
秋はエホエホ、ああこりゃこりゃ梅

1000 :デフォルトの名無しさん:2010/01/23(土) 21:48:30
1000

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

202 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)