C#, C♯, C#相談室 Part60at TECH
C#, C♯, C#相談室 Part60 - 暇つぶし2ch1:デフォルトの名無しさん
10/06/27 03:17:20
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C#, C♯, C#相談室 Part59
スレリンク(tech板)

Visual C# 2010 Express Edition 日本語版
URLリンク(www.microsoft.com)

その他テンプレ>>1-5くらい


2:デフォルトの名無しさん
10/06/27 03:35:51
すみません。
テキストボックスの入力に対して、例えば、半角英数字だけしか入力できないようにするとか、
そう言う事ってできないのでしょうか?
一応IMEモードプロパティを設定すれば、最初のモードを設定できるのは知ってますが、
ユーザーにより勝手に変えられないようにするとかってできないのでしょうか?
知ってる方いらしましたらお願いします。
それと、テキストボックスって高さは変えられないのでしょうか?
これもお願いします。


3:デフォルトの名無しさん
10/06/27 06:57:57
わかりません
他の人に聞いてください

4:デフォルトの名無しさん
10/06/27 08:10:28
>>2
keypressイベントで英数半角以外ははじけばいい

5:デフォルトの名無しさん
10/06/27 09:47:50
>>2
TextBoxに数字しか入力できないようにする: .NET Tips: C#, VB.NET, Visual Studio
URLリンク(dobon.net)

6:デフォルトの名無しさん
10/06/27 11:14:38
fold機能とかいつの間にか勝手に展開されるんだけど
使ってる奴どうしてんの?

7:デフォルトの名無しさん
10/06/27 11:17:55
Ctrl+M, Ctrl+Oとか

8:デフォルトの名無しさん
10/06/27 13:04:53
畳みたいだけなら、region使わずに、
普通に{ ~ }とコメントで十分だと思うんだが、どうかな?

9:デフォルトの名無しさん
10/06/27 13:12:42
regionはIDEが生成するコードを人間にとってわかりやすくするためのものだからな

10:デフォルトの名無しさん
10/06/27 13:55:36
キリッ

11:デフォルトの名無しさん
10/06/27 16:23:24
やだねぇヲヤヂは。
自分が気に入らなけりゃ理屈も無しに「ためのもの」とか勝手に決めつけ。
ソースを出せ。ソースを。

12:デフォルトの名無しさん
10/06/27 16:27:02
オヤジかどうかは別として
>>8の方法だとソースの検索かけるにしてもちょっと使いにくいかなあ
こまめにたたみたい場合はregionはかなりいいよ

13:デフォルトの名無しさん
10/06/27 17:42:04
2005以降はpartialクラスが使えるようになったから、
その時点で少なくとも>>9はありえない。(だから既に#regionの意義は無くなったのだ、
というのなら一応筋は通るけど)

まあこういうのは「プリンの味」みたいなものだから自分で試してない奴を
言葉で納得させるのは難しいものはある。

俺はいろいろregionの使い方を試してみたほうだと思うけど、
その上でメソッド内のregionだけは絶対にありえないと思うわw
まあそもそもそんな誘惑に駆られるようなメソッドが存在すること自体が間違いなんだけど。

14:デフォルトの名無しさん
10/06/27 17:47:37
ですね

15:デフォルトの名無しさん
10/06/27 18:01:44
まあね。(ちょっと大きめのブロックだと飛ばして追うのに便利なんで悪用してたり…)

ところで、もうしませんと言いつつ、未練たらしく改造していたんで投稿。

Wmiユーティリティ。(ちょっとメンバ名とか変えちゃった)
URLリンク(ideone.com)

DiskDrive と LogicalDisk の関連を列挙。(そのPNPDeviceIDを一覧)
URLリンク(ideone.com)

NetworkAdapterと NetworkAdapterConfiguration の関連を列挙。(そのIPAddressを一覧)
URLリンク(ideone.com)


16:デフォルトの名無しさん
10/06/27 18:24:36
>>13
regionはいろいろ試した結果、regionを畳んで選択して削除が一番便利だった。
バグってるいらないコードが一気に消せて便利だよ。

regionってうじゃうじゃ出てくるとバグってるソースを書き直していらないソースを削ってると
endregionと対応してないってエラーになるから修正するときに邪魔で仕方がない。
バグってるようなソースに限って恐ろしい勢いでregionがネストしてるんだよなぁ。

17:デフォルトの名無しさん
10/06/27 21:38:34
>>16
regionのネストに捕まると腹が立つよなw

18:デフォルトの名無しさん
10/06/27 22:12:58
モバイル関係の開発多いんだけどメーカのSDKサンプルとかregion地獄だぜ
書いてる奴等もわからねーだろと思うんだけど.netでハンガリアン全開なんでなんともかんとも

19:デフォルトの名無しさん
10/06/27 22:54:04
ハンガリアンの誤用はExcel開発者も嘆いているよな。
URLリンク(local.joelonsoftware.com)
これを読んで、『正しく使うならば』超便利と知ったよ。

20:デフォルトの名無しさん
10/06/27 23:13:18
システムハンガリアンを正しく使われたとしても便利じゃないよ。
揚げ足取りみたいですまんが、アプリケーションハンガリアンを否定する人にはあまり出会ったことがない。
いなくはないけど。

21:デフォルトの名無しさん
10/06/28 00:02:16
いなくはないな。

22:デフォルトの名無しさん
10/06/28 00:13:48
変数名でとかだと、意味を間違えて付けちゃった時にノーチェックで見逃して、
間違っているのに正しく見えるとかいう状況になるから頼りたくないという人は
いた。
一理ある気もするし、まあ強制したりされたりしなけりゃいいんじゃないかな。

23:デフォルトの名無しさん
10/06/28 03:25:33
ポインタ変数にはpを付けたいけどだめなんお?

24:デフォルトの名無しさん
10/06/28 03:44:25
変数の型を探すのが遠いコードを書くのが悪い

25:デフォルトの名無しさん
10/06/28 06:24:06
悪いなw

26:デフォルトの名無しさん
10/06/28 08:18:15
>>23
int に i、double に x とかと同じノリなら、付けるけども。
あんまり深い意味ないから p。

まあ、ポインターって、「x のポインター」以上の意味を持たない変数になること多いし、
「深い意味なく p」にならざる負えないこと多い気もする。

27:デフォルトの名無しさん
10/06/28 09:12:27
俺はそのときの気分でつけてる。ルールなんてないw

28:デフォルトの名無しさん
10/06/28 11:07:14
C#初心者で、質問なんですが~。

class A がありまして、
AはSetStat(string s) というメソッドを持って居るとして
このAのインスタンスを複数作るメソッドを別に持ちたいのですが、
どうしたらいいのか迷っています。
ちなみにAのインスタンスはins_a[] としてグローバルに宣言されている形にしたいです。

まとめると

class A
{
string str;

SetStat(string s)
{
str = s;
}

}

class B
{
A[] ins_a;

private A[] MakeSomeA(string s)

}

29:デフォルトの名無しさん
10/06/28 11:10:02
class A
{
string str;

public A(string s)
{
SetStat(s);
}

SetStat(string s)
{
str = s;
}

}

class B
{
A[] ins_a;

private A[] MakeSomeA(string s)
{
for(int i =0;i<100;i++)
{
ins_a[i] = new A(s);
}
return ins_a;
}
}

みたいな^^;わかりにくくてすみません。およろしくお願いします。
あと連投すみませんでした、ミスです><;

30:デフォルトの名無しさん
10/06/28 11:23:12
コンストラクタ

31:デフォルトの名無しさん
10/06/28 11:39:27
using System;
namespace ConsoleApplication1
{
class Program {
static void Main(string[] args) {
B b = new B(10);
A[] a = b.MakeSomeA("TEST");
foreach(A it in a)
Console.WriteLine(it.str);
}
}
class A {
public string str;
public A(string s) {
str = s;
}
}
class B {
public A[] ins_a;
public int num;
public B(int x) {
num = x;
ins_a = new A[num];
}
public A[] MakeSomeA(string s) {
for (int i = 0; i < num; i++)
ins_a[i] = new A(s);
return ins_a;
}
}
}


32:デフォルトの名無しさん
10/06/28 11:50:41
>>30さん、>>31さん
同一人物でしょうか?

>>31さんおかげ様で解決しました!
なるほどコンストラクタでインスタンスの必要個数を設定するんですね!
わかりやすい例をありがとうございました~

33:デフォルトの名無しさん
10/06/28 14:00:36
>>26
単品のpじゃなくて接頭語としてのpでしょ
int Hoge;にたいしてのint* pHoge;

>>24
変数の型がすぐわかる位置で宣言されてようがIDEの機能でポップアップしてすぐにわかるようになってようが
pがあることによって読み易くなるならそれに越したことないんじゃないか?
int型変数にintHogeと書くことと別次元だと思うが

34:デフォルトの名無しさん
10/06/28 14:57:49
>>33
うん。そうだよ。

35:デフォルトの名無しさん
10/06/28 15:02:24
pHogeと書いたからといってint*が保証されているわけではないし。
予断が入るだけで決して読みやすくはないと個人的には思っている。
趣味の問題だな。

36:デフォルトの名無しさん
10/06/28 15:53:44
ちょっと質問というか疑問
ヘルプとかに「コントロールは所有するスレッドでのみ実行出来る」とあるけど、
これってバックグランドで予めコントロール生成して置けないってこと?

37:デフォルトの名無しさん
10/06/28 16:05:01
コントロール生成自体はコストの掛かる処理じゃないから
バックグラウンドであらかじめとか考える必要はない、普通は
ちなみにこの場合new自体はコントロールの生成とは言わない

38:デフォルトの名無しさん
10/06/28 16:11:37
strHogeというint型に出会った恐怖は今でも忘れられない。

39:デフォルトの名無しさん
10/06/28 16:11:52


40:デフォルトの名無しさん
10/06/28 16:17:01
>>37
最後の行が良く解らんのだけども
newするのはどのスレッドでも良くて、ルートFormに所有させる時だけはUIスレッドでなきゃダメとか、そう言う意味?

41:デフォルトの名無しさん
10/06/28 16:27:58
ハンドルが作られたときがWindowsから見たコントロール生成のタイミング。
ハンドルが作られたときのスレッドがそのコントロールが属するスレッド。
newやだけでもControls.Addやだけではハンドルは作られない。

でもハンドルがいつ作られるのかなんて制御は極めて困難(あるいは不可能)なので初めからUIスレッドで扱え。

42:デフォルトの名無しさん
10/06/28 16:41:02
>>41
つまりハンドルが何時作られるかは誰も知らない知られちゃいけないと
逆に言うと、ハンドルを持たないListViewItemみたいなのは別スレッドで作っておk
そう言う話?

43:デフォルトの名無しさん
10/06/28 17:06:14
メインスレッドで作ったら問題があるようなのはVirtualModeとか使えって話

44:デフォルトの名無しさん
10/06/28 19:49:32
>>42
確かにそれは正しい。実際、Controlのメンバであっても、ウィンドウハンドルの絡まないもの
(Tagとか)は別スレッドからアクセスしても問題ない。
でもその区別は難しいし面倒なので、UI関係は全部メインスレッドでやる、と決めといた方がいい。

45:デフォルトの名無しさん
10/06/28 22:21:51
>前スレ456
スレリンク(tech板:456番)

URLリンク(techbank.jp)
ここまで完全に他人のせいにしてるのを見るといっそ清々しいぜw


46:デフォルトの名無しさん
10/06/28 22:34:36
>>33
ポインター型の変数が、「xx のポインター」以上の意味を持たない場合が多いなら、
ponterOfXx、略して pxx というのはあながち悪い命名じゃないかもしれない。

システムハンガリアン的に、型名プレフィックスなんじゃなくて、
ちゃんと意味考えようとしたけど意味ねーや的意味での p。


47:デフォルトの名無しさん
10/06/28 22:53:55
C++/CLIでこうやってた
ポインタ…pXX
マネージオブジェクトのハンドル…gcXX

48:デフォルトの名無しさん
10/06/28 23:04:16
>>45
要は、都合のいいコメント以外は削除するから投稿すんな!ってことだよな。
でも「著名人ならOK」とかわざわざ書いてあるところはさすがw。

49:デフォルトの名無しさん
10/06/28 23:17:17
周りの人も友達ならこっそりメールで間違いを教えてあげればよかったのに
あの記事を放置するのは公開レイプだろ

50:デフォルトの名無しさん
10/06/28 23:50:07
ディスカッションは○、論争は×、私が客観的なフィーリングでジャッジします!
って結局何が言いたいのやら。

51:デフォルトの名無しさん
10/06/28 23:57:38
俺が神

それはともかくそろそろ板違いだ

52:デフォルトの名無しさん
10/06/29 00:08:59
へえ

53:デフォルトの名無しさん
10/06/29 00:13:23
class nor {
static public nor StaticFuctory() { return new nor(); }
}
class gen<T> where T : new() {
static public T StaticFuctory() { return new T(); }
}
class gen2<T, U, V> where T : new() where U : gen<T> where V : nor {
public gen2() {
nor n = V.StaticFactory();
var t = U.StaticFuctory();
}
}

とすると、E ならびに U の StaticFuctory() 呼び出しは
「'xx' は '型パラメーター' ですが、指定されたコンテキストでは有効ではありません」
となってしまいます。
ファクトリオブジェクトにしてしまえば解決するとは思いますが、型パラメータで指定
したクラスのstaticメソッドは呼び出せないという理解で正しいでしょうか?

54:デフォルトの名無しさん
10/06/29 00:20:41
正しいです

55:デフォルトの名無しさん
10/06/29 00:41:52
残念です・・・ありがとうございました。

class nor_ih : nor {
static new public nor StaticFuctory() { return new nor_ih(); }
}
class gen_ih : gen<nor> {
static new public nor StaticFuctory() { return new nor_ih(); }
}
とか上書きして、
var n = nor.StaticFuctory();
var n_ih = nor_ih.StaticFuctory();
var g = gen<nor>.StaticFuctory();
var g_ih = gen_ih.StaticFuctory();
と呼び出したかった・・・
でも継承クラスを指定しても基底クラスのstaticメソッドが呼ばれますよね。
class nor {
static public nor StaticFuctory0() { return new nor(); }
static public nor StaticFuctory() { return new nor(); }
}
として StaticFuctory0 は上書きしないで、
var n_ih0 = nor_ih.StaticFuctory0();
とすると動きますから。
なんでダメなんだろう?素朴な疑問。

56:デフォルトの名無しさん
10/06/29 00:44:53
あ、ちなみに動かしているのは 4.0 です。書き忘れていた。

57:デフォルトの名無しさん
10/06/29 01:20:09
>>55
C++のtemplateはあれ、マクロみたいなもん(コンパイル時に全部展開される)だからできるだけ。
それやると、実行ファイルサイズが肥大化するのよね。

C#のジェネリクスは、実行時にメソッド呼び出し解決するから、static なものは無理。

58:デフォルトの名無しさん
10/06/29 01:43:40
>>57
4.0 ですよ。

59:デフォルトの名無しさん
10/06/29 01:53:25
そう何度もアピールされても困る

60:デフォルトの名無しさん
10/06/29 06:13:10
>>45
これは・・・ ここまでのキチガイは久しぶりに見た。

61:デフォルトの名無しさん
10/06/29 08:40:58
>>58
4.0 の dynamic、別に何でもかんでも動的になったわけじゃないよ。


62:デフォルトの名無しさん
10/06/29 14:27:03
>>60
MVP認定するとこに連絡してみたらどうなるんだろね

63:デフォルトの名無しさん
10/06/29 15:50:12
>>53
DynamicMetaObjectを実装すれば
((dynamic)new TypeWrapper(typeof(T))).StaticFactory()
のようなことは可能
実行時のコード生成のルールを定義しないといけないから面倒だけど
静的呼び出しとそれほど変わらない速度が出る
DynamicObjectを継承すれば簡単だけど
このケースでは毎回リフレクションを使うことになるから遅い

64:デフォルトの名無しさん
10/06/29 17:31:15
C#初心者です。
ニコニコ動画のように取得した時間に対して、
動画を再生するにはどのようにすればよいでしょうか?m(__)m

65:デフォルトの名無しさん
10/06/29 17:35:24
質問の仕方を勉強してから来てください
状況がまったく伝わってきません

66:デフォルトの名無しさん
10/06/29 17:39:25
日本語の初心者か…。
要は動画をシークしたいって話じゃないのか…?

67:デフォルトの名無しさん
10/06/29 17:41:12
英語でおk

68:デフォルトの名無しさん
10/06/29 17:58:01
>>64
MediaPlayer使うなら
axWindowsMediaPlayer1.Ctlcontrols.currentPosition

69:デフォルトの名無しさん
10/06/29 17:59:45
ニコニコとツベは(他のエロサイトとかは知らん)擬似スとリーミングだからレンジ指定して
ダウンロードすればいいんだろうけどシークバーの単位は時間だからなあ

頭から順次再生だとそれほど問題にはならないだろうけど
シークバーを動かして途中から再生の場合は指定した時間が

動画データのどの辺から始まるのかという情報を持ってないと厳しいかもね
あれってどうやってるんだろう

70:デフォルトの名無しさん
10/06/29 18:09:39
誤爆乙

71:デフォルトの名無しさん
10/06/29 18:10:05
>>68
言葉足らずですみません。
ありがとうございます!!

72:デフォルトの名無しさん
10/06/29 18:57:20
シークバー「30/100の位置で再生したいです。よろしくお願いします。」
サーバ「近くにキーフレームないから0から再生するしかないわ。」
シークバー「80/100の位置で再生したいです。よろしくお願いします。」
サーバ「0から(略」
こうですか。わかりません。

73:69
10/06/29 19:03:18
>>72
>>68があるみたいなので勝手にやってくれそうだけどなw

74:デフォルトの名無しさん
10/06/29 19:24:23
そもそもそういうキーフレームを揃えてるのがFLVじゃまいのか?

75:デフォルトの名無しさん
10/06/29 19:26:16
>>74
そうなの?
こういうアプリは書いたことないのでわからん

76:デフォルトの名無しさん
10/06/29 19:30:41
>>64
Microsoft.DirectX.AudioVideoPlaybackで字幕編集ソフトを作ってみたけど
そういう目的ならこれが一番楽かも
もちろんスクロールとかも自由自在
コーデックも勝手に読み込んでくれるし
単位はフレームで管理してるけど1秒あたり何フレームか計算すれば時間も分かる
計算式はソース見ないと忘れたので書かないから自分で調べてw

77:デフォルトの名無しさん
10/06/29 19:41:47
>>62
URLリンク(www.microsoft.com)
の最後に連絡先があるな。

78:デフォルトの名無しさん
10/06/29 19:51:26
遅ながら>>1おつ!

そして質問なのですが、現在HTTPのやりとりをするソフトをつくろうと思い、とりあえず普通のHPサーバからデータを受信しようと下記のコードを書きました。
しかしうまく動いてくれません。お力添えをお願いいたします。

System.Net.Sockets.TcpClient tcp = new System.Net.Sockets.TcpClient("192.168.24.86",80);

textBox1.Text = tcp.Connected.ToString() + "\n\n";

Byte[] data = ASCIIEncoding.ASCII.GetBytes("GET / HTTP/1.0");

System.Net.Sockets.NetworkStream nsr = tcp.GetStream();

nsr.Write(data, 0, data.Length);

data = new byte[512];

int datas = nsr.Read(data, 0, data.Length);

textBox1.Text += ASCIIEncoding.ASCII.GetString(data,0,datas);

をフォームロード時のイベントに書いているのですがnsr.Readの行で処理が止まってしまい先へ進みません。
接続はちゃんと出来ているようです。
サーバ192.168.24.84はブラウザからもアクセスできる普通のHPサーバです。

どこかおかしなところがございましたらよろしくお願い致します。

79:デフォルトの名無しさん
10/06/29 19:58:14
改行がないけどいいの? つか、HttpWebRequest使えばいいじゃん。

80:デフォルトの名無しさん
10/06/29 19:59:32
HTTPのリクエストヘッダは\r\n\r\nで終わらないといけない
サーバはリクエストの続きを待ってんじゃね?

81:デフォルトの名無しさん
10/06/29 20:06:41
>>77
今って立候補できるようになったんだねぇ

82:デフォルトの名無しさん
10/06/29 20:12:14
このケースでHttpWebRequestを使わない意味がわからない
俺様コードはやめた方がいいよ

83:78
10/06/29 20:14:04
レスありがとうございます。
>>79
趣味ですので単に興味ですw

>>79,80
なるほど、リクエストは改行で閉じなければならないんですね。とても勉強になりました。
もう少しネットワーク勉強しないとダメですね。

しかし未だReadで止まってしまいます。接続するサーバもgoogleに変えてみたりしたのですがだめでした。
引き続きなにかあればよろしくお願い致します。

84:デフォルトの名無しさん
10/06/29 20:14:04
WebClientをすすめないのはなんで?

85:デフォルトの名無しさん
10/06/29 20:15:51
>>83
なんでWeb鯖のログを見ないんだ?あとパケットモニタ。
んで、なんでそんな怪しい道具を外部公開サーバに対して使っちゃうの?

86:デフォルトの名無しさん
10/06/29 20:18:26
使いこなされているやつ使え。
使いこなされているやつは方言や最初の規格に合わないやつにも対応出来る。


87:デフォルトの名無しさん
10/06/29 20:26:45
>>78
HTTPサーバはクライアントが切断するまで切断しないのが仕様だから
ちゃんとContent-Lengthヘッダを読んで正確に指定されたバイト数を受信したら
切断しないといけません

88:デフォルトの名無しさん
10/06/29 20:29:31
MVP界隈は正直変なのも沢山生息してるよねえ。

89:デフォルトの名無しさん
10/06/29 20:30:51
>>84
細かい制御が出来ないから

90:デフォルトの名無しさん
10/06/29 20:31:12
>>78
それかサーバにConnection: Closeヘッダを渡して閉じさせるかしかないです
デフォルトでConnection: KeepAliveなわけです
本気でまともに動くクライアントを作るにはそこまで考えないといけません

91:デフォルトの名無しさん
10/06/29 20:31:14
>>83
趣味で興味もかまわんが他所様のhttpdで実験するなよな
そういうのは言語、技術、規格などなどを熟知した人間が手を出すもんだ

92:デフォルトの名無しさん
10/06/29 20:32:36
1.0ならKeep-Aliveはデフォルトじゃないでしょ。

93:78
10/06/29 20:32:55
byte型にしたリクエストをもう一度stringに直すと改行が文字化けしておりました。
エンコードをASCIIではなくUTF8にすることによって解決いたしました。

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

HttpWebRequestというのも初めて知ったんですが普段使うにはこちらのほうが便利ですね。そうすることにします。

94:デフォルトの名無しさん
10/06/29 20:35:24
URLリンク(okwave.jp)

こんなんあった。DataArrived とかチェックしないといけないんかね。

95:デフォルトの名無しさん
10/06/29 22:38:22
>>53,63を実際にやってみた
あくまでサンプルとして
URLリンク(ideone.com)

96:デフォルトの名無しさん
10/06/29 23:09:50
まあ普通はEqualityComparer<T>.Defaultみたいな実装するよね

97:デフォルトの名無しさん
10/06/30 01:07:09
>>95
よくわからないんだが、結局何がしたいコードなの?

98:デフォルトの名無しさん
10/06/30 01:27:30
目的なんてなんでもいいんだよ。
手段のために目的があるんだ。


99:デフォルトの名無しさん
10/06/30 02:30:27
現在フォームがフォーカスを失うと
フォームが最小化するプログラムを書こうとしています。
Form.Deactivateイベントを使うと簡単に行えるのですが、
propertyGridのドラッグダウンメニュー等
フォームから出来たコントロールでフォーカスを失った場合でさえ最小化してしまいます。
何か良いアイディアがありましたらご教授ください。よろしくおねがいします。

100:デフォルトの名無しさん
10/06/30 02:59:45
条件が曖昧だが取り敢えずForm.ActiveFormでも確認してれば

101:デフォルトの名無しさん
10/06/30 03:13:41
失礼しました。
条件としては、メインのフォームから作成される、
どのフォームにでもフォーカスがある限り最小化したくないと言う条件です。
デスクトップをクリックする、他のアプリケーションを開く等、
このプログラムに関係の無い場所にフォーカスが移った場合のみ最小化して欲しいのです。

102:デフォルトの名無しさん
10/06/30 03:34:37
Form.ActiveFormも使用してみました。
ただ、Form.Deactivateがイベントとして発動した時点で、
Activeなフォームが無いのでnullが返されてしまいます。

103:デフォルトの名無しさん
10/06/30 11:09:02
へえ

104:デフォルトの名無しさん
10/06/30 21:46:48
>>95
ありがとうございます。
DynamicMetaObject って MethodInfo の Invoke() の発展形というか、ものすごく
なんでもアリな技術っぽいですね。
動的にメタ情報を扱うから、リフレクションと同じで当然ですが、nor から StaticFactory
の定義をコメントアウトしてもコンパイルは通っちゃうという。

System.Dynamic を使う場合、単体テストの重要性が極めて大きくなってきますね。

105:デフォルトの名無しさん
10/06/30 22:16:36
dynamic=DynamicMetaObjectじゃないよ。
DynamicMetaObjectっていうのはdynamicなオブジェクトに対する「操作」を実行時に解釈して
具体的なILを生成するルールを定義する型。いわば小さいコンパイラみたいなもん。

106:デフォルトの名無しさん
10/06/30 23:04:51
質問です。
競走馬X頭分のタイムの平均を求めたいのですが、どうすればいいのでしょうか?
わからないのは、時間の足し算と割り算です。

x頭ではわかりにくいので、仮に3頭がこのタイムで走ったという設定にしておきます。
馬A 1:33:6(1分33秒6)
馬B 1:35:2
馬C 1:36:9
なおタイムのミリ秒のところは1ケタです。つまり1分33秒6の次に大きいのは1分33秒7になります。

一応1万頭のような大量の頭数にも対応できるようにお願いします。

107:デフォルトの名無しさん
10/06/30 23:07:10
ミリ秒の定義がおかしい
お前さんがやるには時間を0.1秒単位に変換して平均出すのがいいんじゃね

108:デフォルトの名無しさん
10/06/30 23:11:39
(分*60 + 秒)*10+秒より小さいその一桁のやつ
を足して、割って後で戻す

109:デフォルトの名無しさん
10/06/30 23:19:57
00を付加してParseしちゃえばよいのでは、とか。

110:デフォルトの名無しさん
10/06/30 23:36:56
DateTime.Parseを使った場合、Addで足していったとして、
最後に平均を求めるのに割り算が必要になりますが・・・

111:デフォルトの名無しさん
10/06/30 23:39:59
DateTime.Ticksの値を割ってDateTime(long)のコンストラクタに渡す

112:デフォルトの名無しさん
10/07/01 00:17:24
ひょっとして、タイムを普通の数字に変換してそれで10進数で計算して、最後に出た数字を10進数からタイムに変換しなおせば同じ?

たとえば
1 1分33秒6は1336とみなす
2 計算する(どんどん足して、最後に割る)
3 出た数字が1655なら、1分65秒5とみなし、さらに2分5秒5に修正

113:デフォルトの名無しさん
10/07/01 00:19:39
しかし、msが1/1000秒だってことを知らない人がプログラミングに手を出しても仕方がない気がする

114:デフォルトの名無しさん
10/07/01 00:22:11
Excelすら使えてなさそうだな

115:デフォルトの名無しさん
10/07/01 00:26:28
>なおタイムのミリ秒のところは1ケタです。つまり1分33秒6の次に大きいのは1分33秒7になります

これは競馬での表記の話ね

116:デフォルトの名無しさん
10/07/01 00:27:38
>>112
マジで小学校からやり直せ。

117:デフォルトの名無しさん
10/07/01 00:35:47
国際単位に「競馬での表記」も糞もあるかよ....

118:デフォルトの名無しさん
10/07/01 00:39:18
>>112
つまりこういうことだね
(1分+30秒+30秒)/3=(1000+300+300)/3=1600/3=53.3秒
あってるかな? とけいをみてかんがえてみようね

119:デフォルトの名無しさん
10/07/01 00:56:38
全部秒にすればいいと

120:デフォルトの名無しさん
10/07/01 01:02:06
>>117
108の*10はそういう意味でしょ

121:デフォルトの名無しさん
10/07/01 01:02:12
まあ競馬の表記だろうがなんだろうが、物理量なんて単位さえ統一できていれば問題ないんだが、
1分が60秒ってことを知らないレベルじゃどうしようもない。

122:デフォルトの名無しさん
10/07/01 01:05:24
TimeSpan使ったれよあほども


123:デフォルトの名無しさん
10/07/01 01:09:14
つかそもそも競馬のタイムとかは相対時間だから
DateTime じゃなくて TimeSpan だろ

そしてこいつの Parse を見てみれ
URLリンク(msdn.microsoft.com)(v=VS.80).aspx
これがまぁ普通の書き方。

んで競馬はちょっと知らないのでぐぐって見た
URLリンク(www.jra.go.jp)

…やっぱり秒/ミリ秒区切りの記号間違ってねぇ? >>106

まぁ TimeSpan 使っても Ticks 足して割るのは一緒なので
横道だが

124:デフォルトの名無しさん
10/07/01 01:16:28
ああごめん。
: じゃなくて . だろってことか。

125:デフォルトの名無しさん
10/07/01 02:01:01
というかミリ秒じゃないし
デシ秒 or 秒の小数部

126:108
10/07/01 02:39:01
>>120
見てくれてありがとう。
けれど、>>112には伝わらなかったようで、残念です。
*60って書いてるのにorz

127:デフォルトの名無しさん
10/07/01 07:02:39
>>126
うざい書き込みはいらないから

128:デフォルトの名無しさん
10/07/01 07:56:41
今って小学生でも馬券買えるんだっけ

129:デフォルトの名無しさん
10/07/01 10:26:19
おはようございまーす。

TextBoxクラスに入力した文字を7色に変える
メソッドRainbow()を作りたいなーと思った時に
TextBoxクラスを継承したMyTextBoxクラスを作って
そこにRainbow()を作ろう思ったのですが
それをフォーム上のTextBoxに適用するにはどうすればいいんですかね?
というかそもそもこういう考え方で問題ないんでしょうか?

ちなみにC#2008なんですけど、教えてもらえないですかー?

130:デフォルトの名無しさん
10/07/01 10:40:49
済みません、>>129なんですけど
加えて教えていただきたい事がありまして

private void A( str hoge, int hage){

AA(str);
BB(int);
CC(str,int);
DD();
}
っていう処理があったとして
ここでは省略しますが、この中身がSelectで分けられて微妙に処理が変わると言った場合
メソッドAと同じ引数を持つ
private void B(str hoge,int hage){
AA(str);
BB(int);
CC(str,int);
DD();
}

を作って


次レスに続く


131:デフォルトの名無しさん
10/07/01 10:43:47
private void A( str hoge, int hage){

switch int{
case 1:
hoge = "xxx";
B(hoge,hage)

case2:
hage = 5
B(hoge,hage);
}

とか言う記述にする事について皆さんどう思われますでしょうか。
ご意見お願いします。

132:デフォルトの名無しさん
10/07/01 11:07:08
質問の意味がわからん

133:デフォルトの名無しさん
10/07/01 11:17:23
どう思うかっていわれても

そんなの好きにすればいいじゃん

134:デフォルトの名無しさん
10/07/01 11:19:18
>>129
MyTextBoxをフォームに貼ればいいだろ

135:デフォルトの名無しさん
10/07/01 11:22:45
秒を浮動少数でまとめて計算して、分秒に直せば良いんじゃねーの?
A:93.6
B:95.2
C:96.9
(A + B + C) / 3 = 285.7 / 3
=95.2
=1分35秒2

136:>>129
10/07/01 11:34:42
あ、すみません。
好きにしたらいいんですよね(^ω^;
ああいう書き方は設計上好ましくなかったりするのかなーと。
それと>>129のしつもんなんですけど
>>134さんの言うようにフォームに貼りたいんですけど
その方法がわからなくて・・・。
試しにTextBoxを継承した奴をコードに書き加えたら
継承したフォームがツールボックスに出てくるのかなーとかも思ったんですけど
そうでもなさそうですし・・・。

教えていただけないですか><;

137:デフォルトの名無しさん
10/07/01 12:52:10
でかいのでた
すっきりした

138:デフォルトの名無しさん
10/07/01 13:04:05
>>136
googleでユーザコントロールとかカスタムコントロールとかで検索すれば・・・

139:デフォルトの名無しさん
10/07/01 13:07:29
自演?

140:デフォルトの名無しさん
10/07/01 13:21:25
>>138
ありがとうございます。

さっそくやってみます。

141:デフォルトの名無しさん
10/07/01 13:38:23
>>140
うむ

142:140
10/07/01 13:59:23
自決しました

143:140
10/07/01 14:03:27
自戒しました

144:デフォルトの名無しさん
10/07/01 14:06:27
>>142>>143
なんでそこを自演する必要がw

145:140
10/07/01 14:28:13
>>144
自慰だからです

146:デフォルトの名無しさん
10/07/01 18:48:09
>>126
120も112も自分です。>>108のやり方を参考にさせてもらいます。どうもありがとう。
あと途中レベルが低すぎて申しわけない

147:デフォルトの名無しさん
10/07/01 20:23:30
>>130
状況によってパラメータを変更したいってこと?
もともとのAを読んでいる部分にそのswitchを置けばいいと思うけど、
その処理自体が多くでてくるのかな。

なんか変なにおいがするのでもっと引いた視点で見直してみるといいかも。

148:デフォルトの名無しさん
10/07/02 10:09:08
いいかもね

149:デフォルトの名無しさん
10/07/02 14:45:42
Microsoft .NET vs Java - trailer
URLリンク(www.youtube.com)
あほすぎw

150:デフォルトの名無しさん
10/07/02 17:34:45
50音順配列の子供向けソフトキーボード「らくだ こどもキーボード」
動作には.NET Framework 2.0以降が必要。
URLリンク(www.forest.impress.co.jp)

上記ソフトはこの人の作品か?
スレリンク(tech板:284番)

151:デフォルトの名無しさん
10/07/02 18:52:32
質問者のレベルからすると
デザイナでボタンを一個ずつ配置して
それぞれにイベントハンドラしかけてそう

152:デフォルトの名無しさん
10/07/02 19:11:50
まあどんなコードでも挙動が同じならいいんじゃね?
フリーウェアか……作ろうとしたこともあったがアイデアがないな

153:デフォルトの名無しさん
10/07/02 19:37:55
俺も個人でやるなら何しようがいいと思うけどね

だーけーど仕事で複数人で作業してる時、
不変クラス作れつったのに要求を満たしてなかったり
コンストラクタに10個以上も引数を連ねる奴は解雇されればいいと思うの

154:デフォルトの名無しさん
10/07/02 19:41:41
>>150
普通、書店とかである在庫検索なんかはひらがなの並びは左から右だけど・・・。

155:デフォルトの名無しさん
10/07/02 20:25:39
>>154
ん?そうかな。あ行で始まり右から左に並んでると思ったけどなー

156:デフォルトの名無しさん
10/07/02 20:44:19
50音表は縦書きだから右から左でおk

157:デフォルトの名無しさん
10/07/02 21:18:13
>>153
見てみたいなそのソース
自分の仕事では勘弁願いたいがw

158:デフォルトの名無しさん
10/07/02 22:29:35
>>152
趣味ならそれでOK。
仕事なら限られた時艱の中で最高の答えを探すべき。

159:デフォルトの名無しさん
10/07/02 22:42:33
時艱
その時代の直面している艱難。当面する難題。

難しい言葉知ってるな

160:デフォルトの名無しさん
10/07/02 23:44:38
まあ、十中九十は分析が足りてないんだろうけど DateTime とか Binding コンストラクタ
みたいな例も無くもない。

161:デフォルトの名無しさん
10/07/02 23:58:04
MVVMフレームワーク使うと凍結クラスつーかイミュータブルなクラスを作る事が殆ど無くなったな


162:デフォルトの名無しさん
10/07/03 00:11:04
GUI はimmutableと相性悪い気がする。


163:デフォルトの名無しさん
10/07/03 01:30:11
>>45
おいおいおいまたこのページのコメントも全部消えたぞ。
まあ他人のコメントに対しての本人の回答コメントが消えたんだが。

こいつはいったい他人とのコミュニケーションをなんだと思ってんだよ…


164:デフォルトの名無しさん
10/07/03 01:38:01
まああれだな、貴方の正体が不明なので公開しませんみたいなこと書いてたから、
またその辺におそらく何様だとかどういう態度だとかそういう突っ込みコメントされて逃げたのかな。
コメント非承認で書き込まれたのが表示されない分、逆に殺到した可能性もあるかもな。


165:デフォルトの名無しさん
10/07/03 09:55:29
コメントへの回答を消されてしまった本人だが…
さすがにちょっとイラっときた…


166:デフォルトの名無しさん
10/07/03 10:01:07
元々のコメントも、技術的質問ではなくて正体不明だから公開は不適切と判断されたが、
「当Blogのコメント投稿について」のルールで不明なところの確認の質問だったんだぜ。
もうこの人はまともにコミュニケーションをとるつもりなどないとあきらめたわ。

スレ違いすまん、ちょっと書きたくなった。


167:デフォルトの名無しさん
10/07/03 12:02:40
謝るくらいなら書くなよw

168:デフォルトの名無しさん
10/07/03 13:21:10
お節介かもしれんが一応一言。
君たち、その批判的視線を少しは自分にも向けたらどうなの。
端的にいってそうとう「気色の悪い」人間だと思うぞ君らはw
いつも不思議なんだが、こういう奴らってよくそういう薄気味悪い自分に耐えられるよな。

169:デフォルトの名無しさん
10/07/03 13:31:01
鏡で見慣れてるからな

170:デフォルトの名無しさん
10/07/03 14:20:27
WPFのTextBoxのマスク処理ってどうやるの?
PasswordBoxがバインド出来ないから凄くめんどくさい…

171:デフォルトの名無しさん
10/07/03 15:20:35
できない

172:デフォルトの名無しさん
10/07/03 15:26:27
えええええええ
ならこれどーすんの?
バインド出来なければMVVMにならないじゃん…

173:デフォルトの名無しさん
10/07/03 16:00:40
まだまだ発展途上だからね

174:デフォルトの名無しさん
10/07/03 17:40:06
C#でプロセスの隠蔽をしたいんだが、誰か詳しい人説明を頼む。
DLLインジェクションを使えばいけそうなのはわかったんだが…

175:デフォルトの名無しさん
10/07/03 17:43:27
詳しい人だけど時間がないので説明しない

176:デフォルトの名無しさん
10/07/03 18:08:15
>>174
なんだこの厨房丸出しの質問は

C#で作られたDLLってネイティブコードで動いているプロセスにそのまま注入できるのか?それなら普通のセオリー通りにやればいいんじゃね。


177:デフォルトの名無しさん
10/07/03 19:07:20
>>175
時間がないなら2chみてんじゃねーw

>>176
具体的な手順頼む。
ネットで調べたらDLLインジェクション自体はサンプルが落ちててできそうなんだ
だが、exeのプロセス隠蔽とDLLインジェクションが自分の中でうまく繋がらなくて

178:デフォルトの名無しさん
10/07/03 19:27:10
>>177
DLLインジェクションというのは、他のプロセスにDLLをインジェクション(注入)して、そのDLLを実行させるというだけの技術。
実行されているDLLはWindows標準のタスクマネージャーには表れないから、DLLを注入して他のプロセスに実行させることで、結果的にプロセスを隠蔽しているようになるというだけの話。


179:デフォルトの名無しさん
10/07/03 19:28:13
>>172
バインドはMVVMには必須じゃない。普通にイベントハンドラで書け。
MVVMのキモはViewModelがViewに依存しないことであって
それさえ守られてればViewのコードビハインド書いても問題はない。

180:デフォルトの名無しさん
10/07/03 19:30:56
>>178
レスサンクス

explorer.exeにAというDLLを注入した場合、A.dllで何か処理を書かないといけないと思うんだが
普通のexeみたいに何か処理をするdllを作成するのってできるの?


181:デフォルトの名無しさん
10/07/03 19:35:00
>>179
依存しないからこそViewModelの差し替えでViewの挙動を容易に変える事ができるんだよね?
イベントハンドラでデータを操作する内容をViewに書いたらMVVMの形式が崩れてしまうし
ViewのハンドラからViewModelに橋渡しするとなるとDataContextの差し替えだけではすまなくなり容易性が失われる(Viewの内容を知っていないといけない)
イベントハンドラ書いたらMVVMじゃ無くなりまするですよ…

182:デフォルトの名無しさん
10/07/03 19:36:32
>>180
> 普通のexeみたいに何か処理をするdllを作成するのってできるの?
でなきゃDLLが存在する意味がないだろ。

183:デフォルトの名無しさん
10/07/03 19:38:48
>>182
C#でクラスライブラリを作ったりするとdllで出力されるのはわかるんだが
dll単体で処理を行うのは無理じゃ?

184:デフォルトの名無しさん
10/07/03 19:42:32
わかんないならあきらめろよ・・・。

185:デフォルトの名無しさん
10/07/03 19:43:14
やってることはこっちだが、理解がふらっとの方に行ったほうがいいレベルだな

186:デフォルトの名無しさん
10/07/03 19:45:39
>>181
いやそもそもViewModelの差し替えなんか不可能。
ViewModelはViewの抽象化だから、
ViewModelを差し替えるのは例えればクラスの基底クラスを差し替えるようなもの。
差し替えられるのはViewの方。Viewのテストが面倒だからViewModelで抽象化して
ViewModelを単体テストできるようにしましょうっていうアイデア。

187:デフォルトの名無しさん
10/07/03 19:55:02
>>186
うそーん!
共通のWindowで共通のコントロール
ただしデータが微妙に違ってそれによる制約や検証が微妙に違うものが複数ある
そしてModelは同一又はプロパティ数が同一
こう言う事って結構あるよね?
んで
View(共通のコントロール)
ViewModel(検証とCommandによる操作、及びレガシーModelの包括)
で分けてViewModelを差し替える事で使い回ししてるよ

でもここで出てきたのがView配置のPasswordBoxちゃん
こいつがDependencyObjectじゃないとBindさせねぇ~とか言っちゃう
んで、これをどうViewModeで吸収?してModelに渡すのかがググってもさっぱりわかんない
お手上げちゃーんなのです

188:デフォルトの名無しさん
10/07/03 19:56:41
>>184>>185
回答出来ないなら黙ってていいよ

189:デフォルトの名無しさん
10/07/03 19:58:49
バインドしてOKみたいなもんはTextBoxでいいよ

190:デフォルトの名無しさん
10/07/03 20:03:59
誕生日になるとメッセージを表示するプログラムを本人に築かれないように
仕込みたいんだが、どうすればいい?
プロセス隠蔽ができないとタスクマネージャ開いてばれるかもしれんし。

191:デフォルトの名無しさん
10/07/03 20:08:04
>>190
そんな方法はない。
仮にあったとして、そんなセキュリティーホールが放置されてると思うか?

192:デフォルトの名無しさん
10/07/03 20:09:30
>>191
仕込むの自体は手動でやるからいいんだが、
プロセスの隠蔽は普通にできるだろ?

193:デフォルトの名無しさん
10/07/03 20:11:03
隠蔽はあるだろ…
タスクマネージャのタスク一覧を直接弄って消すのは10年前のウィルスですらやってる事
今はサービス、他社のタスク一覧まで消す奴もある

194:デフォルトの名無しさん
10/07/03 20:11:45
常駐させずにタスクスケジューラに登録しとけ

195:デフォルトの名無しさん
10/07/03 20:17:16
>>194
おまい、天才だな・・
サンクス

196:デフォルトの名無しさん
10/07/03 20:18:25
>>190
そいつの心臓が弱くていきなり出たメッセージに驚いてポックリ逝ったら責任とれるのか?あ?

197:デフォルトの名無しさん
10/07/03 20:18:51
>>190
本人に直接言え。

198:デフォルトの名無しさん
10/07/03 20:19:09
>>196
スキルのねぇカスはひっこんでろ

199:デフォルトの名無しさん
10/07/03 20:20:33
それはキモいというか、普通にそんなことされたら嫌だろよ。

200:196
10/07/03 20:22:38
>>198
176も178も私ですけどスキルがなくてすいませんねえ

201:デフォルトの名無しさん
10/07/03 20:23:20
タスクマネージャの心配はするのにタスクスケジューラはOKってどういうことだよw
確かにタスクスケジューラなんてまず使わないけどな。

俺に言えるのは、100%確実な方法はないってことだな。
パソコンの操作を全部記録するようなソフトを入れてないとも限らないし。

202:デフォルトの名無しさん
10/07/03 20:25:29
>>201
普通、タスクスケジューラなんて使わないよな?
ちょっと不安になってきたw
操作を記録するソフト入ってたら無理だなw

203:デフォルトの名無しさん
10/07/03 20:28:44
勝手にアプリを入れさせるようなレベルなんだし、
スタートアップに置いといてもばれないんじゃね?

204:デフォルトの名無しさん
10/07/03 20:31:04
スタートアップに入れておけ。
誕生日に起動した時だけダイアログを出して他のタイミングは即座に終了して消えるようにする。

205:デフォルトの名無しさん
10/07/03 20:33:25
スタートアップはたまに覗いたりしないか?

206:デフォルトの名無しさん
10/07/03 20:34:35
svchost.exeって名前にしとけ

207:デフォルトの名無しさん
10/07/03 20:35:44
>>200
事実は事実

208:デフォルトの名無しさん
10/07/03 20:43:33
>>190
誕生日はお前以外の相手と一日中デートしててPCを起動しない可能性は?
カーチャンとかだったらごめん

209:デフォルトの名無しさん
10/07/03 20:51:35
>>187
そりゃMVVMじゃなくて君が開発した別のパターンだ。
MVVMに関するMSの記事のどこを見てもそんなことは書いてない。
もちろんWPFはそのパターンを公式にはサポートしてない。頑張るのは君だ。

210:デフォルトの名無しさん
10/07/03 21:00:56
>>209
えー
だってMVVMのパターンの概要を見るとViewとViewModelの分離の事は書かれてるよね
この疎結合の副作用を利用して差し替えをしてるだけであって完全マイルールってわけじゃないよー
それにイベントハンドラを書くのは結合度の観点からも勧められないと著名人達は口を揃えて言ってるよん

誰かAdorner何かを使ってTextBoxをマスク処理してるコードを格好良くみせてくれないかなーとか期待してたんだけど無理かなぁ


211:デフォルトの名無しさん
10/07/03 23:16:45
WPFしらんのでテキトーだけど、UserControlをアダプタとしてPasswordBoxのせて、
仲介してもらうとかできない?

212:デフォルトの名無しさん
10/07/03 23:20:00
>>211
ググるとそのやり方をやってる風なコメントがあるよねー
んー、やっぱりその方法がいいのかな
と言う前に、やってみるか!

213:デフォルトの名無しさん
10/07/03 23:45:58
>>212
うむ。そうするのじゃ

214:デフォルトの名無しさん
10/07/04 00:08:00
MVVMにこだわるんだったらそのUserControlのためにまた別のViewModelが必要だから
UserControl作ったって同じことでしょ

215:デフォルトの名無しさん
10/07/04 00:09:26
おぬし、ViewModelを勘違いしとるぞい

216:デフォルトの名無しさん
10/07/04 00:10:07
というと?

217:デフォルトの名無しさん
10/07/04 00:13:29
なんで別のViewModelが必要と思ったの?

218:デフォルトの名無しさん
10/07/04 00:54:11
ViewModelを差し替えたいならせめてインターフェイス通すべきだろ
実際のバインディングの動作には全く関係ないけどね
公式サンプルのPrismはViewがViewModelをインターフェイス経由で露に参照してる
差し替えたりしてはいないけど、バインドするVMのメンバは基本的にインターフェイスに宣言されてる

219:デフォルトの名無しさん
10/07/04 01:04:25
Prismをかなり使い倒してるんだがそんなインターフェイスでViewとViewModelを繋いでるサンプルなんてあるか?
RegisterTypeでIDataService何かのサービスをレジストしたりするのはよくやるが



220:デフォルトの名無しさん
10/07/04 01:44:52
素人としては、ViewModel をストラテジパターンの要領で差し替えて使ってると
認識してて、そうなるとインタフェース必須だと思ってるんだけど違うの?

221:デフォルトの名無しさん
10/07/04 02:07:06
Prismにしろ何にしろViewModelにインターフェイスは使えないだろjk
RoutedUICommand一つとってもViewModel側にstaticで定義しないと駄目なんだぞ?

222:デフォルトの名無しさん
10/07/04 02:08:56
あ、インタフェースって言ってもViewModelから呼ばれるストラテジのインタフェース
って意味で。
そういう感じで作ればXAML共通で、VMの実処理だけ差し替えられるよな?と。

223:デフォルトの名無しさん
10/07/04 02:10:11
つまりどういう事だってばよ!?

224:デフォルトの名無しさん
10/07/04 02:22:57
つまり、固定のViewModel と、固定の Model の間で検証したりするロジックが
いくつかパターンがあるんで、それをアダプタ化して差し替え可能にしてるって
ことじゃね?>>187 は。

225:デフォルトの名無しさん
10/07/04 02:25:42
とか思ったら PasswordBox 悩む必要無さそうだな、それじゃw

226:デフォルトの名無しさん
10/07/04 02:48:34
BというクラスがあったとしてAクラスで A hoge = new A(); というように実体が作られたとします。
そこでBクラスがAクラスで実体が作られたという事を知ることはできないでしょうか?

Bクラスのコンストラクタで作られたクラスを取得したいです。
引数にでもして入力すればいいとも思うのですが自動でとれたら便利だと思いました。お願いいたします。

227:デフォルトの名無しさん
10/07/04 02:49:20
A hoge = new A(); は B hoge = new B(); です、失礼しました

228:デフォルトの名無しさん
10/07/04 02:54:04
URLリンク(msdn.microsoft.com)
これ使ってObserverを使う

229:デフォルトの名無しさん
10/07/04 07:17:08
どうもどうも~

230:デフォルトの名無しさん
10/07/04 11:07:45
Rxってイベントベースじゃなかったっけ?
A側にもB側にも特別なコードを追加せずにnewを検知しようと思ったら
ILのリライトしかないと思うけどそんなことやってくれるの?

231:デフォルトの名無しさん
10/07/04 12:07:23
>>230
Rx 進めてる時点で、>>229 はそういうイベントコード書けって事だと思うけど。
ぶっちゃけ、それなら、class B に static な NewInstance イベントでも足して、
B のコンストラクターでイベント起こせせばいい気はする。

特別なコード足したくないならそれは無理。

232:デフォルトの名無しさん
10/07/04 12:46:38
IEnumerable,yield,ToObservableで簡単に実装出来るけどな
ただRx強力かつ難解なんで上級者でも中々手がない代物
複数人の開発じゃ手が出しにくい

233:デフォルトの名無しさん
10/07/04 12:47:31
×ただRx強力かつ難解なんで上級者でも中々手がない代物
○ただRxは強力かつ難解なんで上級者でも中々手が出せない代物

234:デフォルトの名無しさん
10/07/04 12:58:47
イベントベースの非同期プログラミングが面倒だから
LINQ使ってDSLっぽくイベントハンドラを作ろうというやつだよね
そんなに難しいの?

235:デフォルトの名無しさん
10/07/04 13:10:36
うーんどうだろ。
Rx が難しいっていうよりは、C# のイベント機能が簡単すぎる気もする。
あとは、やっぱドキュメント少ない。

236:デフォルトの名無しさん
10/07/04 13:22:00
using System;
using System.Diagnostics;

namespace OnCreate {
class B {
static event Action<Object, EventArgs> Created;
public B() {
OnCreated(new EventArgs());
}
void OnCreated(EventArgs arg) {
if (Created!=null) {
Created(this, arg);
}
}

static void Main(string[] args) {
Created += CreateEventHandler;
B b = new B();
}
static void CreateEventHandler(Object obj, EventArgs arg) {
Console.Out.WriteLine(new StackTrace().ToString());
}
}
}
とか言ってみるテスト。スレッドセーフじゃないよなぁこれは。

237:デフォルトの名無しさん
10/07/04 13:24:37
Rxはおもしろ事が出来そうなんだけどドキュメント少ないし
やっぱり非同期系は難しい
Rxよりはいるけど.Net4の並列系も使いこなしてる人がすくないよね

238:デフォルトの名無しさん
10/07/04 13:26:15
URLリンク(sazameki.jp)
C#じゃないけど、それとなく当てはめてみて
おまいらはどのレベルなの?

239:デフォルトの名無しさん
10/07/04 13:29:53
それ微妙に納得いかないのよねぇ。

レベル1とかのプログラミングの基礎知らなくても、
専門知識だけ持った人が専門知識を生かせるような簡単プログラミングの時代来ないとダメだ。

240:デフォルトの名無しさん
10/07/04 13:30:44
Rxでいう非同期はマルチスレッドの非同期じゃなくて
同期スタイルなら { キーが押されるまで待機(); A(); キーが押されるまで待機(); B(); }と書けるところを
キーイベントを使った"非同期"スタイルだと状態を保持する変数を持たないといけなくて面倒だよねという話

241:デフォルトの名無しさん
10/07/04 13:32:31
>>238
それで行けば専門家レベルだな
基準がぬるいよ

242:デフォルトの名無しさん
10/07/04 13:36:00
>>240
その状態を保持しながら通知するから便利なんだろ?
簡単に言えばステートフルな非同期処理
だから強力なのさ

243:デフォルトの名無しさん
10/07/04 13:38:52
>>238
これの初級レベルでここや初心者用で質問したら
ググれと言われて相手にされないだろwww
と思ったけど大学4年以上いっても初級レベルの奴がゴロゴロいるよな…

244:デフォルトの名無しさん
10/07/04 13:49:26
>>236
void OnCreated(EventArgs arg) {
var created = Created;
if (created!=null) {
created(this, arg);
}
}
これでスレッドセーフ?
関係ないけどイベントハンドラ用のデリゲートを作りたくなかったらEventHandler<TEventArgs>
それと引数なしのEventArgsはEventArgs.Emptyを使う

245:デフォルトの名無しさん
10/07/04 13:51:38
> var created = Created;
そのテクニックどっかでみたな?
どこだっけ?

246:デフォルトの名無しさん
10/07/04 13:59:09
>>244
>スレッドセーフじゃないよなぁこれは。

247:デフォルトの名無しさん
10/07/04 14:07:55
じゃあスレッドセーフにしてくれ
ロックはなしで

248:245
10/07/04 14:19:44
あー思い出したわw
MSDNだ、そうそうw
URLリンク(msdn.microsoft.com)

で、横からだけどスレッドセーフ
public event EventHandler<EventArgs> Created = (_, __) => {}

こいつはPropertyChangedなんかで使われるテクニックだわな
(Week何とかつかえとかPrism使えとか言われてるけどw)

まー、このケースで言えばこれでOKだろ

さぁ、俺を褒め称えよ!w

249:デフォルトの名無しさん
10/07/04 14:26:00
245△

250:245
10/07/04 14:34:44
>>249
なはw
律儀にあんがとさんw

251:デフォルトの名無しさん
10/07/04 16:10:24
すまん。>>244 の"スレッドセーフ?"と言ったのを、 >>236 の最後を見落としてて
揶揄してるんだと誤解してた。スレッドセーフにしてくれてたのね。

252:デフォルトの名無しさん
10/07/04 16:19:27
いいよ気にしないで
慣れてるから

253:デフォルトの名無しさん
10/07/04 16:29:03
>>244
これってなんでスレッドセーフになるの?
解説を聞きたい!

254:デフォルトの名無しさん
10/07/04 16:29:43
>>248
public event EventHandler<EventArgs> Created = (_, __) => {}

これもなぜこれだけでスレッドセーフになるのかわからにぃ

255:デフォルトの名無しさん
10/07/04 16:32:20
>>253
null比較がスレッドセーフではないからローカル変数に一時待避でスレッドセーフ

>>254
null比較しなくていいように前もって空イベント挿入でスレッドセーフ

また、△ってしてもいいんだぜ!

256:デフォルトの名無しさん
10/07/04 16:36:57
>>253
if (Created!=null) {
/* この間に別のスレッドがイベントを-=してCreateをnullにする可能性がある */
Created(this, arg);

257:デフォルトの名無しさん
10/07/04 16:43:18
はあ・・・また自演っぽいな

258:fushianasan
10/07/04 16:46:58
別に自演じゃないよ。
ホントにわかんないだけ。

259:デフォルトの名無しさん
10/07/04 16:50:31
>>256
var created = Created;
Created-=********** --この時点でcreated -= *********
したのと同じことにはならないの?
参照型でしょイベントって。

260:デフォルトの名無しさん
10/07/04 16:58:33
add/removeしたら別オブジェクト
a += b;は
TDelegate c = (TDelegate)Delegate.Combine(a, b)
a = c;
の略で、このとき
Object.ReferenceEquals(a, c)もObject.ReferenceEquals(b, c)もfalse

261:デフォルトの名無しさん
10/07/04 16:59:26
君は
var objA = new object();
var objB = objA;

この時どうなると思ってんだ?
ちゃんとポインタ(厳密には違うけど)はコピーされてるんだぞ

262:デフォルトの名無しさん
10/07/04 16:59:42
ならないの。デリゲートはStringと似たつくりになっていて、一度作成したインスタンスは変更できない。
イベントの実装はこうなってる
private EventHandler _Created;
public event EventHandler Created {
[MethodImpl(MethodImplOptions.Synchronized)] add { _Created = (EventHandler)Delegate.Combine(_Created, value); }
[MethodImpl(MethodImplOptions.Synchronized)] remove { _Created = (EventHandler)Delegate.Remove(_Created, value); }
}

[MethodImpl(MethodImplOptions.Synchronized)]のおかげでaddアクセサとremoveアクセサの呼び出しもスレッドセーフ。

263:253,254,259(261は別人)
10/07/04 17:27:30
>>260,>>262
解説ありがとう。
参照型だけど毎回インスタンスが生成されるクラスなんですね。
理解しました。


264:デフォルトの名無しさん
10/07/04 17:39:38
何読んだらそう言うのがわかるようになるの?

265:デフォルトの名無しさん
10/07/04 18:47:37
>>255
> null比較がスレッドセーフではないから
そういう話じゃないような

266:デフォルトの名無しさん
10/07/04 19:01:53
>>265
うん、間違えたw

267:デフォルトの名無しさん
10/07/04 22:59:50
あほか。nullはスレッドセーフだわ、ボケ。

268:デフォルトの名無しさん
10/07/05 01:22:17
えっ?

269:デフォルトの名無しさん
10/07/05 01:44:53
>>244
実はECMAの仕様ではスレッドセーフではなかったり。


270:デフォルトの名無しさん
10/07/05 03:05:16
完全なスレッドセーフなど存在しない

271:デフォルトの名無しさん
10/07/05 03:07:36
しかしlockを何個も書くのはかっこ悪いしめんどいんだが
このオブジェクトは最初から排他仕様だからよろしくみたいなことは出来ないのか?

272:デフォルトの名無しさん
10/07/05 10:20:28
比較自体はスレッドセーフじゃないからあながち間違いではないけどな

273:デフォルトの名無しさん
10/07/05 13:46:46
は?

274:デフォルトの名無しさん
10/07/05 14:22:32
>>272
だよな 間違ってないよな
さすがだな

275:デフォルトの名無しさん
10/07/05 17:20:35
え?
obj = nullは常にスレッドセーフだよ?
あと
obj = 0とobj = falseもさ
大丈夫?あぁネタかw

276:デフォルトの名無しさん
10/07/05 17:24:40
ほ?

277:デフォルトの名無しさん
10/07/05 18:27:47
それがどうであるかと>>244がなぜスレッドセーフなのかはまるで関係ないよね。

278:デフォルトの名無しさん
10/07/05 18:57:15
>>275
obj = ""が抜けてるよ♪

279:デフォルトの名無しさん
10/07/05 22:54:43
>>277
>>244がスレッドセーフであることの前提条件ではあるだろ

280:デフォルトの名無しさん
10/07/06 00:39:11
C#でDllMainって使うにはどうしたらいいかわかるひといる?

281:デフォルトの名無しさん
10/07/06 00:45:48
うん

282:デフォルトの名無しさん
10/07/06 00:49:24
>>281
マジで知ってるなら教えて下さいm(_ _)m

283:デフォルトの名無しさん
10/07/06 01:45:26
>>282
COMコンポーネントあたりでぐぐってみるといいよ
サムネイル表示するのをWindows7に移植しようとC#で作ってみたが
その時にそんな感じのことをした気がする
結局動かなくてテストに毎回再起動するのがまんどいので放置してるが

284:デフォルトの名無しさん
10/07/06 02:58:32
>>279
いや、そんなことないが。落ち着け。

285:デフォルトの名無しさん
10/07/06 03:03:12
とまぁ、えらそうに申しておりますが、俺も>>248 >>262で初めて知り、
>>265のツッコミをした程度のへっぽこです。
知らなかったらlockステートメント使ってたと思う。

286:デフォルトの名無しさん
10/07/06 03:30:32
んなこたあどうでもいいから>>282に教えて上げなさい

287:デフォルトの名無しさん
10/07/06 03:39:33
質問が曖昧すぎて回答できません

288:デフォルトの名無しさん
10/07/06 03:43:35
とりあえずクラスライブラリとかDllImportとか曖昧回答して上げなさい

289:デフォルトの名無しさん
10/07/06 03:46:10
ぐぐったら少ないけど情報出てくるね。

290:デフォルトの名無しさん
10/07/06 10:41:53
デッドロックの恐れがあるからCLR2.0以降では禁止されているという話らしいよ

291:デフォルトの名無しさん
10/07/06 12:48:59
約束は破るためにあるっちゅうことやな

292:デフォルトの名無しさん
10/07/06 13:06:04
ところでこいつを見て欲しい。どう思う?
URLリンク(www.atmarkit.co.jp)
Observerの変形と言えなくもない気がするが、状態オブジェクトが焼け太りしそうな悪寒。
実際んとこ、コレどんな場面で有効だと思う?

293:デフォルトの名無しさん
10/07/06 13:31:43
Observerとかいう次元じゃなくてアプリケーション全体の構造の話でしょ
ステートが絶対に変化しないならいいんじゃないの
素直にやったら全部グローバル変数と変わらないから、テストのことを考えると
IProductsStateとかインターフェイスで小分けすることになるだろうけど
インターフェイス使っちゃうと後で変更がきかないよね

294:デフォルトの名無しさん
10/07/06 14:09:25
>「銀の弾丸」が存在しない以上、「ステート集約プログラミング」も銀の弾丸ではありえない。
>「ステート集約プログラミング」とは、あなたが“カオスの縁で踊る”ステップのバリエーションを増やすものであって、
>他のステップがなくてもよいと主張するものではない

これだけでなんかオタ臭さをすげぇ感じるわ。


295:デフォルトの名無しさん
10/07/06 14:45:39
オタですがなにか?(-_-メ)

296:デフォルトの名無しさん
10/07/06 14:57:12
状態オブジェクトの変更に弱い
に尽きるな
筆者もそれはわかっててわざと誤魔化した書き方をしてるように見える
結局グローバル変数と一緒だわね

297:デフォルトの名無しさん
10/07/06 15:07:06
>>294
実戦で役立つなら考案者が厨二でも邪気眼でも構わんが、これは正直微妙な感じ
他の人も指摘してる通り、ちょっとヲサレなグローバル変数以外の何者でもない罠

とは言え、相互作用する状態が大量発生するような手合いだと、Observerパターンでも苦しいのは事実
なんかうまい方法はないもんか

298:デフォルトの名無しさん
10/07/06 15:28:57
なんかレベル低いことをわざわざ敷居高くして難しく書いてるだけな気がする。

299:デフォルトの名無しさん
10/07/06 16:35:04
>>280
URLリンク(msdn.microsoft.com)
DllMainではマネージコードを実行してはいけないという制限があるので
「C#では不可能」というのが答えだな
C++/CLIでそこだけネイティブコードのみで実装する必要がある

300:デフォルトの名無しさん
10/07/06 17:19:05
>>292
一つ前の記事の日本語でテスト名は書けというのは共感出来た。
ビジネスロジックのテスト名はそっちの方がわかりやすいしね。

301:デフォルトの名無しさん
10/07/06 17:36:41
だね

302:292
10/07/06 17:58:00
皆THX.
アレは文中でもある通り、DBの簡易代替に過ぎないんだろうな。

>>300
まあテスト名くらいは許容できるが、変数名を日本語で書くのは俺はあかん。
インテリセンス使えねえじゃん。

303:デフォルトの名無しさん
10/07/06 18:51:18
あかんね

304:デフォルトの名無しさん
10/07/06 19:13:21
変数全部に/// <summary>と/// <remarks>を。

305:デフォルトの名無しさん
10/07/06 19:43:28
日本語使うとインテリセンス使えないんだっけ?
使えたように思ったけど気のせいか

306:デフォルトの名無しさん
10/07/06 19:58:50
変換して確定しないと候補が出てこないんだから、インテリセンスの意味なし。

307:デフォルトの名無しさん
10/07/06 20:01:19
候補が出てこない訳じゃないだろう
ピリオド打った後カーソルキー上下とかスクロールつまみ動かすとか
まあインテリセンスのメリット低下は確かだが

308:デフォルトの名無しさん
10/07/06 20:10:16
そうだね

309:デフォルトの名無しさん
10/07/06 20:35:39
>>292
もう中身以前にい近づきたくない感じ

310:デフォルトの名無しさん
10/07/06 20:41:00
>>306-307
そこでイニシャル付き変数ですよ。k金額とかn日数とか。
というか、日本語の変数名を簡単に検索できるアドインを作ったら結構受けるかもな。

311:デフォルトの名無しさん
10/07/06 21:20:13
migemoを組み込むってことか?

312:デフォルトの名無しさん
10/07/06 21:23:28
川俣に期待するなと・・・

313:デフォルトの名無しさん
10/07/06 21:36:21
なんで?

314:デフォルトの名無しさん
10/07/06 21:41:06
匿名掲示板のレスにいちいち理由なんて期待するなと・・・

315:デフォルトの名無しさん
10/07/06 21:53:36
>>313
やってることがいろいろと可笑しすぎる。


316:デフォルトの名無しさん
10/07/06 22:15:34
MVVMのView側って何書くの?
Command Binding出来ないDragDrop系とか?

317:デフォルトの名無しさん
10/07/06 22:23:00
Modelに依存しない処理。
Click系のコマンドでViewの操作のみならViewModelに書かずViewの中で完結する。
DragDropの事後処理等でModelに依存するコードがあるならその部分だけViewModelに書く。
無いならViewで完結。
間違ってもView内のハンドラでModelを触らない事。

318:デフォルトの名無しさん
10/07/06 22:23:18
某スレに載ってたんですけど、
Jane Style 3.4 を使って2chに書込みをすると
C:\\Document And Setting\【スズキ タロウ】
という部分の文字列までパケット送信してるらしいのですが、
誰か逆アセンブルして解析した方はいますか?


※前々から2ch専用ブラウザは怪しいと言われていたのですが・・・

場合によっては警視庁ハイテク化にアプリとソースを引き渡します。

319:デフォルトの名無しさん
10/07/06 22:24:22
>>299
マジレス感謝m(_ _)m
キーロガー作ってプロセスを隠蔽しようと思ったらやっぱC#じゃ無理か・・・
がんばってC++勉強します。。

320:デフォルトの名無しさん
10/07/06 22:25:11
>>317
MVPレベルキタコレ!
凄くわかりやすかったです
サンクス

321:デフォルトの名無しさん
10/07/06 22:30:01
またこいつか

322:デフォルトの名無しさん
10/07/06 22:41:03
MVPと言えばいつも見てる高スキルのブロガーが落ちてたな
かと思えば何もしてない人が選ばれたり…
あれの選別基準がいまいちわからん

323:デフォルトの名無しさん
10/07/06 22:43:58
あれは、コミュニティを運営してる人、もしくはライター。
Most Valuable Professionalとは名ばかり。

324:デフォルトの名無しさん
10/07/06 22:45:15
むむむ…
そう言う事か…

325:デフォルトの名無しさん
10/07/06 22:47:58
オレも以前受賞したことあるけど、雑誌に記事書いてたのが評価されたみたい。
他にはとくに活動してなかったし。

326:デフォルトの名無しさん
10/07/06 23:47:43
>>316
きっちりやれば、たいていの場合XAMLしか残らない。
C# 側は、テンプレ通りの InitializeComponent() のみに。

全く持ってその通りで、一部の Command Binding できないものとかのために
しょうがなく View の分離コードに何か書く。

327:デフォルトの名無しさん
10/07/06 23:52:33
MVP の評価基準が、やっぱ露出度で計られるんで。
(「MS に対する貢献」って言い方されるけども、結局それは好意的な記事の露出。)
コミュニティ運営と、編集の校正入るウェブ記事は評価高いっぽい。

ああ、あと、MS Connect へのフィードバック数とか、
フォーラムでの書き込みすうとか。

最終的に評価は米本社側でやるんで、
検索でどれくらいの位置、PV いくら、執筆本数いくら、会員数いくら
とか、客観的な数字がある方が受けるみたい。

328:デフォルトの名無しさん
10/07/06 23:56:09
>>318
の質問誰か答えてちょ

329:デフォルトの名無しさん
10/07/06 23:57:14
コピペ君って馬鹿だな、まで読んだ。

330:デフォルトの名無しさん
10/07/07 00:14:17
>>328
自分でパケットキャプチャしろ

331:デフォルトの名無しさん
10/07/07 00:18:09
>>328
応援してるよ頑張ってね

332:デフォルトの名無しさん
10/07/07 00:25:08
>>328


333:デフォルトの名無しさん
10/07/07 00:27:29
ここは328を応援するスレになりました

334:デフォルトの名無しさん
10/07/07 00:46:39
>>328
逆アセしなくてもwiresharkのようなソフトで通信をモニターすればいいんじゃね?
まあ個人名称をそのままユーザーにしてる人もいるだろうから気持ち悪いよね
Styleは使ってないのでアレだがその情報はどこへ送ってるの?

335:デフォルトの名無しさん
10/07/07 00:48:41
正直名前くらい漏れてもいい

336:デフォルトの名無しさん
10/07/07 00:52:30
>>334
各板の鯖
Reflectorでソース解析済み。

>>335
2chにはプロ固定がいるのをお忘れなく

337:デフォルトの名無しさん
10/07/07 00:52:50
コピペ君にマジレスって....
っていうか、「送信してるらしい」ってどこの誰にだよ。
2chのサーバー?w
仮にそうだとして、どこぞのPCのユーザー名なんか収集して何の役に立つんだ?
それはソフトの作者にとって、犯してるリスクに見合うものなのか?

なわけないだろw
被害妄想狂の想像とちがって、お前さんの個人情報(にすらならんがユーザ名なんか)
になんか1円の価値もないよ。

こんなの小6レベルの推理力でわかる話だと思うが。

338:デフォルトの名無しさん
10/07/07 00:56:18
>>336
> Reflectorでソース解析済み。
結論が出てるならそれでいいじゃん。

339:デフォルトの名無しさん
10/07/07 01:07:25
>>337
2ch プロ固定 でググレ

そしたらなぜ不味いかが分かるはず。

340:デフォルトの名無しさん
10/07/07 01:07:59
Jane Styleって.NET製じゃないよな

341:デフォルトの名無しさん
10/07/07 01:16:59
プロ固定…。
んーなんかデジャブ。
前に見たのはオカルト板だったはず。
だからその手の都市伝説はあっちの板でやれ。

342:デフォルトの名無しさん
10/07/07 01:30:14
>>340
Delphi

343:デフォルトの名無しさん
10/07/07 01:30:53
スクロールバーについて質問をしたいのですが、
スクロールバーで値を変更したときに、
フォーム内のすべてのコントロールの表示位置を変更する様な
プログラムを組むのでしょうか?
それとも、根本的になんか、勘違いしているでしょうか?


344:デフォルトの名無しさん
10/07/07 01:34:49
Jane StyleはDelphiのはずだが>>336はReflectorで何を見たんだ…?

これはマジでオカルト板の出番かもしれん

345:デフォルトの名無しさん
10/07/07 01:47:19
>>343
Panelとかの上に全てのコントロールを乗っけてPanelだけ動かす
まあ普通はAutoScroll使う

346:デフォルトの名無しさん
10/07/07 01:49:15
>>340
ReflectorはDelphi対応みたいね

Delphiって中間コード持つような言語だっけ?

347:デフォルトの名無しさん
10/07/07 01:50:33
>>336
気になるならスパイウェアのような挙動をするとしかるところへ報告しておけばいいんじゃね?
ローカルのアカウントに個人名使ってればIPとひも付きでデータが集まるしなあ
その程度だとそれほど価値はないがそういう兆候があるってことは
そのうち何かやりかねないので注意を促すと言う意味では動いた方がいいかもしれない
ソフトの監視という意味でね
利用者多いし

348:デフォルトの名無しさん
10/07/07 01:51:57
あふぉか


349:デフォルトの名無しさん
10/07/07 01:52:38
というのは>>346あて


350:デフォルトの名無しさん
10/07/07 02:01:16
Reflectorで見れるのはDelphi.NET。
(2003年に出たDelphi 8から.NET対応の製品がリリースされてる。)

ネイティブコンパイルされるDelphiは.NETと無関係なのでReflectorでは見れない。

Jane Styleは後者。

351:デフォルトの名無しさん
10/07/07 02:15:40
C#とは関係ないな。陰謀論は他でやれ

352:デフォルトの名無しさん
10/07/07 02:18:10
>>345
ありがとうございました。
オートスクロールってプロパティ、
2002年のバージョンのc#には無かったですよね?
確か、そんな気がしましたが。
最近乗り換えたもので。


353:デフォルトの名無しさん
10/07/07 02:49:29
Left,Top,Width,Heightと4つそろった構造体は標準で用意されてませんか?

Pointは二つ(X,Y)のみなので、これの4カ所バージョンを探しています。

354:デフォルトの名無しさん
10/07/07 02:52:33
RectangleとかRegionとか

355:デフォルトの名無しさん
10/07/07 02:55:10
Regionは気のせい

356:デフォルトの名無しさん
10/07/07 02:56:06
出来ればSharp系のクラスではなく構造体で・・・

357:デフォルトの名無しさん
10/07/07 03:00:53
これ構造体だったはず

>.NET Framework クラス ライブラリ
>Rectangle 構造体

>四角形の位置とサイズを表す 4 つの整数を格納します。より高度な領域関数を使用する場合は Region オブジェクトを使用します。

>名前空間: System.Drawing
>アセンブリ: System.Drawing (system.drawing.dll 内)
>構文
>[SerializableAttribute]
>[ComVisibleAttribute(true)]
>public struct Rectangle

URLリンク(msdn.microsoft.com)

358:デフォルトの名無しさん
10/07/07 03:02:08
>>357
そですた…。
WPFやってるとごっちゃになるから勘違いしてしまったorz
サンクス。

359:デフォルトの名無しさん
10/07/07 06:59:42
>>352
バージョン情報
.NET Framework
サポート対象 : 4、3.5、3.0、2.0、1.1、1.0

>>358
WPFにだってRect構造体があるし(こっちは各要素がdouble型だが)

360:デフォルトの名無しさん
10/07/07 07:30:45
>>359
みつけた。サンクス。

361:デフォルトの名無しさん
10/07/07 09:08:13
#include<stdio.h>
struct kou{
int ZAHYO data[4];
double data[3].x=(data[0].x+data[1].x+data[2].x)/3;
double data[3].y=(data[0].y+data[1].y+data[2].y)/3;
};

void main(void)
{
int data[4],i;
for(i=0;i<4;i++);
data[i]=(data[i].x,data[i].y);
printf("重心=(%f,%f)"data[3].x,data[3].y);

return 0;
}
これエラーが12個でるんだがそのエラーを消したい。手伝ってくれ
ちなみに問題は構造体を使って平面上の3点の座標を入力して三角形の重心を求める問題だ

362:デフォルトの名無しさん
10/07/07 09:09:52
お断りします

363:デフォルトの名無しさん
10/07/07 09:35:33
釣りだろw
スレタイ読めないバカがいるとは思えん

364:デフォルトの名無しさん
10/07/07 10:45:07
スレタイ読めるのか!すごいな!

365:デフォルトの名無しさん
10/07/07 11:13:51
学者さんだよ

366:デフォルトの名無しさん
10/07/07 14:16:15
しーしゃーぷ
しーしゃーぷ
しーなんばー
そうだんしつ
ぱーとろくじゅう

367:デフォルトの名無しさん
10/07/07 14:31:55
VIPPERはム板へ立ち入り禁止

368:デフォルトの名無しさん
10/07/07 14:32:08
泣いた

369:デフォルトの名無しさん
10/07/07 15:32:30
[]をオーバーライド?するにはどうすれば?
検索しても出てこないんですが
class AがあったらB=A[0];みたいなアクセスがしたいんです

370:デフォルトの名無しさん
10/07/07 15:36:26
>>369は解決しましたが
foreach inに対応する方法がわかりませぬ

371:デフォルトの名無しさん
10/07/07 15:36:42
できるよ、オーバーライドではない方法でだ。
プロパティ関連をしらべろ。

372:デフォルトの名無しさん
10/07/07 15:39:14
List<A>から派生されたら出来た

373:デフォルトの名無しさん
10/07/07 15:41:29
>>370
IEnumerable<T>インターフェースを実装すれば対応する

374:デフォルトの名無しさん
10/07/07 15:46:48
IList<T>じゃねーの

375:デフォルトの名無しさん
10/07/07 15:50:59
おいおい…

376:デフォルトの名無しさん
10/07/07 15:54:07
あーごめん最初の質問しか読んでなかった

377:デフォルトの名無しさん
10/07/07 17:02:36
URLリンク(homepage3.nifty.com)のDLL側の関数の作り方 を参考に
C#を使って秀丸エディタのマクロから呼び出すDLLを作ってます。
内容は秀丸マクロからDLLを呼び出して1234(数値)を返す動作です。
test.cs(以下の4行の内容)をコンパイルしてtest.dllを作成しました。
class Test{
static int Main(){return testNum();}
public static int testNum() {return 1234;}
}
これを秀丸マクロで以下のようにして呼び出してmessageで1234と表示させたいのですが「dllfunc関数で指定された呼び出し先が見つかりません」エラーが出ました。なお、秀丸マクロからDLLの読み込みは出来てました。
$dll = "test.dll";loaddll $dll;#a = dllfunc("Test");freedll;message str(#a); // 秀丸マクロ

test.csをどのように書き直すと良いでしょうか?どなたかご教示お願い致します。

378:デフォルトの名無しさん
10/07/07 17:03:47
ネイティブからマネージのDLLってよべるんだっけか?

379:デフォルトの名無しさん
10/07/07 17:06:59
COMにするかC++/CLIはさむかしないと

380:デフォルトの名無しさん
10/07/07 17:22:13
逆P/Invokeと言う手法もないわけではない

381:デフォルトの名無しさん
10/07/07 19:33:10
素人の集まりか
呼べないわけないだろ

382:デフォルトの名無しさん
10/07/07 20:05:01
そうやって煽っても無い袖は振れませんので^^;

383:デフォルトの名無しさん
10/07/07 20:05:05
.NETのアセンブリにネイティブのエントリポイントを作成して呼べるようにするのも
不可能じゃないんだけど、一筋縄じゃいかない。
秀丸のマクロから呼ぶのが目的ならCOMのサーバを作るのが手っ取り早いでしょ。

384:デフォルトの名無しさん
10/07/07 20:46:25
ホストAPIでCLRバージョン指定してアプリケーションドメイン作ってマネージランタイム読み込んで
実行。終わったらアプリケーションドメインは解放してやらんとDLLがアンロードされないので注意。
とかメンドイわ!やっぱ言うとおりCOMでやるのが一番だな。

385:デフォルトの名無しさん
10/07/07 23:47:09
うん

386:デフォルトの名無しさん
10/07/08 00:31:56
素直にC++でやった方が遥かに簡単で軽快なコーdうわやめなにを

387:デフォルトの名無しさん
10/07/08 01:44:34
まあな。処理内容にもよるけど。
まさか実際に定数を返すだけなんてこともあるまい。

388:デフォルトの名無しさん
10/07/08 04:05:23
NetWorkStreamクラスのReadメソッドの引数に byte[4096] の変数を指定したら応答なしになってしまいました。
散々動かないと悩んでbyte[1024]にしたら直ったんですが4096の配列というのは大きすぎるもんなんでしょうか?

389:デフォルトの名無しさん
10/07/08 05:58:34
リソースファイルで、テキストファイルがあるとします。
そのプログラムが実行中に、自分のリソースファイルの
テキストファイルを開いて書きこんで保存すると言う事が、
できるのでしょうか?
その他、画像リソースファイルなども。


390:デフォルトの名無しさん
10/07/08 06:06:48
リソースを書き換えはできない

391:デフォルトの名無しさん
10/07/08 06:16:17
ばぁぶぅ

392:デフォルトの名無しさん
10/07/08 14:01:16
すみません以下のコードで例外が発生するんですが、
何が悪いのかわからないのですが・・・

//確実に数値化する
private int SetNum(string str)
{
try
{
int num = int.Parse(str);
return num;
}
catch (System.FormatException)
{
return 0;
}
}
お願いします。

393:デフォルトの名無しさん
10/07/08 14:03:58
あ、上のコードなんですが
int num = int.Parse(str);
の部分でブレイクします。。。

394:デフォルトの名無しさん
10/07/08 14:05:00
TryParse使うべき

395:デフォルトの名無しさん
10/07/08 14:06:27
catchの()いらないんじゃね

396:デフォルトの名無しさん
10/07/08 14:07:08
普通に動くけどどういう状況でどうなるんだ?

397:デフォルトの名無しさん
10/07/08 14:07:27
>>394 >>395
なるほど迅速で正確なご回答ありがとうございました。

398:デフォルトの名無しさん
10/07/08 14:09:13
>>396
strに "" が入ってきた時ですね。
2008expでは動いてたんですけど
2010proに代えてから初回例外が発生するようになって
どうやらここがおかしいっぽいという感じですハイ。

399:デフォルトの名無しさん
10/07/08 14:09:16

private int SetNum(string str)
{

int res;

if(int.TryParse(str,out res) == false)
return 0;
else
return res;

}

こんなのとかかな?

そもそも例外発生するのは文字列が悪いと思うが、どんな文字列を渡してるんだ? 

400:デフォルトの名無しさん
10/07/08 14:09:30
少なくともSystem.OverflowExceptionとか

401:デフォルトの名無しさん
10/07/08 14:10:58
なんかJAVA的な書き方だな とオモタ

402:デフォルトの名無しさん
10/07/08 14:11:15
どうでもいいが、Setとかメソッド名に使っておいて実体は型変換とかどういうことなの…

403:デフォルトの名無しさん
10/07/08 14:13:29
>>402
シーッ
Getとか別の名前にする方がいいとかいっちゃダメッ 

404:デフォルトの名無しさん
10/07/08 14:21:30
>>402
あ、なるほど。
そうですね。

とりあえず
//確実に数値化する
private int SetNum(string str)
{
int num = 0;
int.TryParse(str,out num);
return num;
}

として問題は回避できたっぽいです。

でもまだイミディエイトウィンドウに
'System.FormatException' の初回例外が mscorlib.dll で発生しました。
っていう文言が正確に数えてないんで分からないですが
100行以上くらい出てるんですがこれなんなんでしょ・・・。
2008expで開発してた時は出なかったんですが。。。
しかもエラーではない様子でプログラムはまともに動いてるように見えるし
この例外がどこで発生しているのかもわからないんです・・・(;ω;)

405:デフォルトの名無しさん
10/07/08 14:26:56
2010はいいとしてターゲットのフレームワークはどれなんだろう。
4.0かしら?

406:デフォルトの名無しさん
10/07/08 14:27:34
>>405
その通りです

407:デフォルトの名無しさん
10/07/08 14:36:20
ちょっと俺も気になるから確かめてくる

408:デフォルトの名無しさん
10/07/08 14:44:09
それと不思議な事なんですが
イミディエイトウィンドウにもろに表示されてるワケじゃない気がするんですよね。
イミディエイトウィンドウは上から順にメッセージが表示されると思うんですが
プログラムの立ち上げが終わった時点でイミディエイトウィンドウには何も表示されていない
部分までカーソルが下がってきてるんですよ。
それで、そのカーソルを上に持っていくと前述の通り大量の
'System.FormatException' の初回例外が mscorlib.dll で発生しました。
が表示されているという・・・。

状況としては
URLリンク(questionbox.jp.msn.com)
この質問者の人に似ているかなあと。

加えて、すごく初歩的な質問でもうしわけないのですが
C#で開発者が設定できる1番最初のブレイクポイントってどこになるんでしょうか。
Program.csのMain()の
Application.EnableVisualStyles();
であってますかね?
というのもここでブレイクをかけて見ても既に上述の例外が発生していますもんで
URLリンク(gyazo.com)(こんな感じです)
例外の発生している部分を突き止める事ができないな・・・っていう感じなんです。。。

409:デフォルトの名無しさん
10/07/08 14:47:25
イミディエイトウィンドウではなくて出力ウィンドウではないんだろうか?
イミディエイトなら自分で出してるだけの気がする。

それはさておき、別にでないんだけどなぁ…
それって出力ウィンドウの右クリックで例外メッセージを表示しないようにしてただけとかそういう問題じゃなくて?

とりあえずソース

private void button1_Click(object sender, EventArgs e)
{ 
try
{
string text = "";
int res; 
if (!int.TryParse(text, out res)) res = -1;
System.Diagnostics.Debug.WriteLine(res);

}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message); 
}
 
}

410:デフォルトの名無しさん
10/07/08 14:52:06
うおあ!
VSを再起動したら表示されなくなりました・・・。
僕がみていたのは皆さんにアドバイスされる前のコードで生成された
メッセージの履歴だったんでしょうか・・・^ω^;



411:デフォルトの名無しさん
10/07/08 14:53:54
>>409さん
おそらく1番最初の int.Parse try{}catch{}で分けるという方法が
コンパイラの気に障っていた?ようですね・・・。

TryParseを使う事で例外の表示もなくなったようです。
どうも長々とスレ汚し、すみませんでした(^ω^;
ありがとうございましたー!

412:デフォルトの名無しさん
10/07/08 14:55:03
(#^ω^)ビキビキ

413:デフォルトの名無しさん
10/07/08 14:56:21
>>412
スマンお(^ω^;;

414:デフォルトの名無しさん
10/07/08 15:01:35
>おそらく1番最初の int.Parse try{}catch{}で分けるという方法がコンパイラの気に障っていた?

そうではなく、テスト動作させてるときに空文字渡したとか言ってたから
キャッチはしているけど例外が発生したから表示されてたんじゃないか?

例外はコンパイルレベルで発生する代物ではないと思うんだ


415:デフォルトの名無しさん
10/07/08 15:11:14
>>414
なるほどご明察です。

416:デフォルトの名無しさん
10/07/08 15:22:47
■Jane Style 3.4 はスパイウェア
スレリンク(poverty板)



417:デフォルトの名無しさん
10/07/08 16:30:03
>Reflectorでソース解析済み。
とか言って騒いでた馬鹿か。

418:デフォルトの名無しさん
10/07/08 16:33:53
janestyleてドトネト制だったん?
delphiかとおもてた

419:デフォルトの名無しさん
10/07/08 16:43:45
ヘルプにはDelphi 7.0 Professionalで開発したと書いてあるね


420:デフォルトの名無しさん
10/07/08 16:47:06
>>413
( ^ω^)ゆるすおっ

421:デフォルトの名無しさん
10/07/08 16:55:14
>>416
.netじゃねーよ……

422:たった
10/07/08 17:21:18
.netじゃねーけど
Reflectorはdelphiに
対応してるみてーだなwwwww
ということはdelphiも
中間コード系の
言語なのかよ!?
あ!?

423:デフォルトの名無しさん
10/07/08 17:39:55
>>422
8から

424:デフォルトの名無しさん
10/07/08 17:41:13
っと、8からなのは.net frameworkに載ったのが8からね。
もともとPascal系は中間コード使ってる

425:デフォルトの名無しさん
10/07/08 17:43:38
>>418>>419
無知

426:デフォルトの名無しさん
10/07/08 17:56:11
>>422
無知な馬鹿

427:デフォルトの名無しさん
10/07/08 18:17:39
オープンファイルダイアログと言うコントロールは、
前に使った時のフォルダのパスを覚えてて、
新しく開いたときに、前開いたときのフォルダを最初に見せてくれますが、
この情報は一体どこに覚えているのでしょうか?

普通にアプリケーション設定と同じ位置に覚えているのでしょうか?


428:デフォルトの名無しさん
10/07/08 18:19:39
os

429:デフォルトの名無しさん
10/07/08 18:37:21
URLリンク(www.atmarkit.co.jp)
例えばここにアプリケーション設定の記憶位置が書かれていますが、
そこと同じ様な場所なのだと考えても良いのでしょうか。


430:デフォルトの名無しさん
10/07/08 18:38:22
os

431:デフォルトの名無しさん
10/07/08 18:38:46
カレントドライブ、カレントディレクトリ

432:デフォルトの名無しさん
10/07/08 19:05:02
>>429
はい、PCの中に記憶されてますよ。

433:デフォルトの名無しさん
10/07/08 19:09:54
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32

434:デフォルトの名無しさん
10/07/08 19:18:14
>>430-433
なるほど!
ありがとうございました!

435:デフォルトの名無しさん
10/07/08 20:09:18
>>433
つまり、レジストリって事?

カレントなのかレジストリなのか、それとも、ユーザー設定なのか?
どこやねん。

お前らも本当は知らないんだろ。
別に知らないなら答えなくていいのに。

>>434
お前誰やねん。


436:デフォルトの名無しさん
10/07/08 20:11:42
いまいちよくわかりません。
説明されているサイトなどに、誘導していただけませんでしょうか。

>>434-435
真面目に質問しています。茶化さないでください。

437:デフォルトの名無しさん
10/07/08 20:15:07
とりあえず落ち着け

438:デフォルトの名無しさん
10/07/08 20:16:46
>>435
(-3-)<Boo ナリスマシやめれ

439:デフォルトの名無しさん
10/07/08 20:19:30
      / _ .::::ト、  ̄ ´ \  
     i \ ̄_ ̄_\   \
     l    )┼┼+(     |  あ゛あ゛っ!!
       /ヽ__ i\    i  ンダコラッ!!
       ヽ_     ̄__/   
         ̄''''‐'' ̄    

440:デフォルトの名無しさん
10/07/08 21:12:58
>>433でなんでわからんの??


441:デフォルトの名無しさん
10/07/08 21:15:07
イミディエイトウィンドウはデバッグ開始しても勝手にクリアされたりしないよ。
過去に出力された分はずっと残ったままになる。
イミディエイトに出力をリダイレクトする設定をしてなければデバッグ出力に出力される。
こっちはデバッグ開始するたびにクリアされる。

例外発生時にデバッガで停止するのは、まあわかってると思うけどデバッガの例外の設定。


442:デフォルトの名無しさん
10/07/08 21:16:02
寝て起きたら書いてたコードが微妙に書き換えられててうまく動かなくなった
夢だったんだろうか、それとも夢遊病だろうか
夜中ちょっと目が覚めた時にパソコンがついてておかしいなとは思ったんだけど
超怖い

443:デフォルトの名無しさん
10/07/08 21:20:21
>>442
ごめん。悪気はなかったんだ…

444:デフォルトの名無しさん
10/07/08 21:27:42
>>440
つまり、レジストリなのですね。
解りました。


445:デフォルトの名無しさん
10/07/08 21:42:37
コモンダイアログはコモンダイアログがやっていることだから基本的には考えなくていいと思う

446:デフォルトの名無しさん
10/07/08 21:54:41
でも、例えばさ、そう言うのって、結局はさ、
自分の作ったプログラムを配布した場合、
ユーザーのパソコンの記憶領域を勝手にいじっちゃうわけでしょ?
いつの間にか勝手にレジストリをいじって記憶領域を減らすってのは
あまり良い気分じゃないよね。
まあ、実際殆ど問題無いけどさ。

レジストリを散々いじった挙句、そのソフトをもういらないからって削除した場合とか、
無駄な記憶だけが残るだけの結果になったりするじゃない。
なんか、そう言うのって気分悪いのさ。


447:デフォルトの名無しさん
10/07/08 21:58:31
まあインストーラ付けないならアプリケーション設定は使うべきじゃないな

448:デフォルトの名無しさん
10/07/08 22:01:52
コモンダイアログから随分話が飛んでるな

449:デフォルトの名無しさん
10/07/08 22:02:19
わしのは、エクスプレス板だから、
ついて無いのじゃ。
確かにインストーラーがあるなら、
OSにアンインストールしてもらえば良いのだけど。


450:デフォルトの名無しさん
10/07/08 22:04:27
ほぼ確実に朝になるとノートのバッテリが上がってたんだけど、イベントログ見たら
真夜中にWindowsのCEIPがなんかどっかに通信しようとしてコケてた(そのときLAN
ケーブル外してたんでエラーになってた)。
そのサービス殺してからは朝になってもバッテリが上がってることはなくなった。
何か関係してるのか?

451:デフォルトの名無しさん
10/07/08 22:08:57
板違い。失せろカス。


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