2 :
デフォルトの名無しさん :2010/06/27(日) 03:35:51
すみません。 テキストボックスの入力に対して、例えば、半角英数字だけしか入力できないようにするとか、 そう言う事ってできないのでしょうか? 一応IMEモードプロパティを設定すれば、最初のモードを設定できるのは知ってますが、 ユーザーにより勝手に変えられないようにするとかってできないのでしょうか? 知ってる方いらしましたらお願いします。 それと、テキストボックスって高さは変えられないのでしょうか? これもお願いします。
わかりません 他の人に聞いてください
>>2 keypressイベントで英数半角以外ははじけばいい
fold機能とかいつの間にか勝手に展開されるんだけど 使ってる奴どうしてんの?
Ctrl+M, Ctrl+Oとか
畳みたいだけなら、region使わずに、 普通に{ 〜 }とコメントで十分だと思うんだが、どうかな?
regionはIDEが生成するコードを人間にとってわかりやすくするためのものだからな
10 :
デフォルトの名無しさん :2010/06/27(日) 13:55:36
キリッ
やだねぇヲヤヂは。 自分が気に入らなけりゃ理屈も無しに「ためのもの」とか勝手に決めつけ。 ソースを出せ。ソースを。
12 :
デフォルトの名無しさん :2010/06/27(日) 16:27:02
オヤジかどうかは別として
>>8 の方法だとソースの検索かけるにしてもちょっと使いにくいかなあ
こまめにたたみたい場合はregionはかなりいいよ
2005以降はpartialクラスが使えるようになったから、
その時点で少なくとも
>>9 はありえない。(だから既に#regionの意義は無くなったのだ、
というのなら一応筋は通るけど)
まあこういうのは「プリンの味」みたいなものだから自分で試してない奴を
言葉で納得させるのは難しいものはある。
俺はいろいろregionの使い方を試してみたほうだと思うけど、
その上でメソッド内のregionだけは絶対にありえないと思うわw
まあそもそもそんな誘惑に駆られるようなメソッドが存在すること自体が間違いなんだけど。
ですね
>>13 regionはいろいろ試した結果、regionを畳んで選択して削除が一番便利だった。
バグってるいらないコードが一気に消せて便利だよ。
regionってうじゃうじゃ出てくるとバグってるソースを書き直していらないソースを削ってると
endregionと対応してないってエラーになるから修正するときに邪魔で仕方がない。
バグってるようなソースに限って恐ろしい勢いでregionがネストしてるんだよなぁ。
>>16 regionのネストに捕まると腹が立つよなw
モバイル関係の開発多いんだけどメーカのSDKサンプルとかregion地獄だぜ 書いてる奴等もわからねーだろと思うんだけど.netでハンガリアン全開なんでなんともかんとも
システムハンガリアンを正しく使われたとしても便利じゃないよ。 揚げ足取りみたいですまんが、アプリケーションハンガリアンを否定する人にはあまり出会ったことがない。 いなくはないけど。
いなくはないな。
変数名でとかだと、意味を間違えて付けちゃった時にノーチェックで見逃して、 間違っているのに正しく見えるとかいう状況になるから頼りたくないという人は いた。 一理ある気もするし、まあ強制したりされたりしなけりゃいいんじゃないかな。
ポインタ変数にはpを付けたいけどだめなんお?
変数の型を探すのが遠いコードを書くのが悪い
悪いなw
>>23 int に i、double に x とかと同じノリなら、付けるけども。
あんまり深い意味ないから p。
まあ、ポインターって、「x のポインター」以上の意味を持たない変数になること多いし、
「深い意味なく p」にならざる負えないこと多い気もする。
俺はそのときの気分でつけてる。ルールなんてないw
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) }
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; } } みたいな^^;わかりにくくてすみません。およろしくお願いします。 あと連投すみませんでした、ミスです><;
コンストラクタ
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; } } }
>>30 さん、
>>31 さん
同一人物でしょうか?
>>31 さんおかげ様で解決しました!
なるほどコンストラクタでインスタンスの必要個数を設定するんですね!
わかりやすい例をありがとうございました〜
>>26 単品のpじゃなくて接頭語としてのpでしょ
int Hoge;にたいしてのint* pHoge;
>>24 変数の型がすぐわかる位置で宣言されてようがIDEの機能でポップアップしてすぐにわかるようになってようが
pがあることによって読み易くなるならそれに越したことないんじゃないか?
int型変数にintHogeと書くことと別次元だと思うが
pHogeと書いたからといってint*が保証されているわけではないし。 予断が入るだけで決して読みやすくはないと個人的には思っている。 趣味の問題だな。
ちょっと質問というか疑問 ヘルプとかに「コントロールは所有するスレッドでのみ実行出来る」とあるけど、 これってバックグランドで予めコントロール生成して置けないってこと?
コントロール生成自体はコストの掛かる処理じゃないから バックグラウンドであらかじめとか考える必要はない、普通は ちなみにこの場合new自体はコントロールの生成とは言わない
strHogeというint型に出会った恐怖は今でも忘れられない。
w
>>37 最後の行が良く解らんのだけども
newするのはどのスレッドでも良くて、ルートFormに所有させる時だけはUIスレッドでなきゃダメとか、そう言う意味?
ハンドルが作られたときがWindowsから見たコントロール生成のタイミング。 ハンドルが作られたときのスレッドがそのコントロールが属するスレッド。 newやだけでもControls.Addやだけではハンドルは作られない。 でもハンドルがいつ作られるのかなんて制御は極めて困難(あるいは不可能)なので初めからUIスレッドで扱え。
>>41 つまりハンドルが何時作られるかは誰も知らない知られちゃいけないと
逆に言うと、ハンドルを持たないListViewItemみたいなのは別スレッドで作っておk
そう言う話?
メインスレッドで作ったら問題があるようなのはVirtualModeとか使えって話
>>42 確かにそれは正しい。実際、Controlのメンバであっても、ウィンドウハンドルの絡まないもの
(Tagとか)は別スレッドからアクセスしても問題ない。
でもその区別は難しいし面倒なので、UI関係は全部メインスレッドでやる、と決めといた方がいい。
>>33 ポインター型の変数が、「xx のポインター」以上の意味を持たない場合が多いなら、
ponterOfXx、略して pxx というのはあながち悪い命名じゃないかもしれない。
システムハンガリアン的に、型名プレフィックスなんじゃなくて、
ちゃんと意味考えようとしたけど意味ねーや的意味での p。
C++/CLIでこうやってた ポインタ…pXX マネージオブジェクトのハンドル…gcXX
>>45 要は、都合のいいコメント以外は削除するから投稿すんな!ってことだよな。
でも「著名人ならOK」とかわざわざ書いてあるところはさすがw。
周りの人も友達ならこっそりメールで間違いを教えてあげればよかったのに あの記事を放置するのは公開レイプだろ
ディスカッションは○、論争は×、私が客観的なフィーリングでジャッジします! って結局何が言いたいのやら。
俺が神 それはともかくそろそろ板違いだ
へえ
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メソッドは呼び出せないという理解で正しいでしょうか?
正しいです
残念です・・・ありがとうございました。 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(); とすると動きますから。 なんでダメなんだろう?素朴な疑問。
あ、ちなみに動かしているのは 4.0 です。書き忘れていた。
>>55 C++のtemplateはあれ、マクロみたいなもん(コンパイル時に全部展開される)だからできるだけ。
それやると、実行ファイルサイズが肥大化するのよね。
C#のジェネリクスは、実行時にメソッド呼び出し解決するから、static なものは無理。
そう何度もアピールされても困る
>>45 これは・・・ ここまでのキチガイは久しぶりに見た。
>>58 4.0 の dynamic、別に何でもかんでも動的になったわけじゃないよ。
>>60 MVP認定するとこに連絡してみたらどうなるんだろね
>>53 DynamicMetaObjectを実装すれば
((dynamic)new TypeWrapper(typeof(T))).StaticFactory()
のようなことは可能
実行時のコード生成のルールを定義しないといけないから面倒だけど
静的呼び出しとそれほど変わらない速度が出る
DynamicObjectを継承すれば簡単だけど
このケースでは毎回リフレクションを使うことになるから遅い
C#初心者です。 ニコニコ動画のように取得した時間に対して、 動画を再生するにはどのようにすればよいでしょうか?m(__)m
質問の仕方を勉強してから来てください 状況がまったく伝わってきません
日本語の初心者か…。 要は動画をシークしたいって話じゃないのか…?
英語でおk
>>64 MediaPlayer使うなら
axWindowsMediaPlayer1.Ctlcontrols.currentPosition
69 :
デフォルトの名無しさん :2010/06/29(火) 17:59:45
ニコニコとツベは(他のエロサイトとかは知らん)擬似スとリーミングだからレンジ指定して ダウンロードすればいいんだろうけどシークバーの単位は時間だからなあ 頭から順次再生だとそれほど問題にはならないだろうけど シークバーを動かして途中から再生の場合は指定した時間が 動画データのどの辺から始まるのかという情報を持ってないと厳しいかもね あれってどうやってるんだろう
誤爆乙
>>68 言葉足らずですみません。
ありがとうございます!!
シークバー「30/100の位置で再生したいです。よろしくお願いします。」 サーバ「近くにキーフレームないから0から再生するしかないわ。」 シークバー「80/100の位置で再生したいです。よろしくお願いします。」 サーバ「0から(略」 こうですか。わかりません。
73 :
69 :2010/06/29(火) 19:03:18
そもそもそういうキーフレームを揃えてるのがFLVじゃまいのか?
75 :
デフォルトの名無しさん :2010/06/29(火) 19:26:16
>>74 そうなの?
こういうアプリは書いたことないのでわからん
>>64 Microsoft.DirectX.AudioVideoPlaybackで字幕編集ソフトを作ってみたけど
そういう目的ならこれが一番楽かも
もちろんスクロールとかも自由自在
コーデックも勝手に読み込んでくれるし
単位はフレームで管理してるけど1秒あたり何フレームか計算すれば時間も分かる
計算式はソース見ないと忘れたので書かないから自分で調べてw
遅ながら
>>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サーバです。
どこかおかしなところがございましたらよろしくお願い致します。
改行がないけどいいの? つか、HttpWebRequest使えばいいじゃん。
HTTPのリクエストヘッダは\r\n\r\nで終わらないといけない サーバはリクエストの続きを待ってんじゃね?
このケースでHttpWebRequestを使わない意味がわからない 俺様コードはやめた方がいいよ
83 :
78 :2010/06/29(火) 20:14:04
レスありがとうございます。
>>79 趣味ですので単に興味ですw
>>79 ,80
なるほど、リクエストは改行で閉じなければならないんですね。とても勉強になりました。
もう少しネットワーク勉強しないとダメですね。
しかし未だReadで止まってしまいます。接続するサーバもgoogleに変えてみたりしたのですがだめでした。
引き続きなにかあればよろしくお願い致します。
WebClientをすすめないのはなんで?
>>83 なんでWeb鯖のログを見ないんだ?あとパケットモニタ。
んで、なんでそんな怪しい道具を外部公開サーバに対して使っちゃうの?
使いこなされているやつ使え。 使いこなされているやつは方言や最初の規格に合わないやつにも対応出来る。
>>78 HTTPサーバはクライアントが切断するまで切断しないのが仕様だから
ちゃんとContent-Lengthヘッダを読んで正確に指定されたバイト数を受信したら
切断しないといけません
MVP界隈は正直変なのも沢山生息してるよねえ。
>>78 それかサーバにConnection: Closeヘッダを渡して閉じさせるかしかないです
デフォルトでConnection: KeepAliveなわけです
本気でまともに動くクライアントを作るにはそこまで考えないといけません
>>83 趣味で興味もかまわんが他所様のhttpdで実験するなよな
そういうのは言語、技術、規格などなどを熟知した人間が手を出すもんだ
1.0ならKeep-Aliveはデフォルトじゃないでしょ。
93 :
78 :2010/06/29(火) 20:32:55
byte型にしたリクエストをもう一度stringに直すと改行が文字化けしておりました。 エンコードをASCIIではなくUTF8にすることによって解決いたしました。 ありがとうございました。 HttpWebRequestというのも初めて知ったんですが普段使うにはこちらのほうが便利ですね。そうすることにします。
まあ普通はEqualityComparer<T>.Defaultみたいな実装するよね
>>95 よくわからないんだが、結局何がしたいコードなの?
目的なんてなんでもいいんだよ。 手段のために目的があるんだ。
99 :
デフォルトの名無しさん :2010/06/30(水) 02:30:27
現在フォームがフォーカスを失うと フォームが最小化するプログラムを書こうとしています。 Form.Deactivateイベントを使うと簡単に行えるのですが、 propertyGridのドラッグダウンメニュー等 フォームから出来たコントロールでフォーカスを失った場合でさえ最小化してしまいます。 何か良いアイディアがありましたらご教授ください。よろしくおねがいします。
条件が曖昧だが取り敢えずForm.ActiveFormでも確認してれば
101 :
デフォルトの名無しさん :2010/06/30(水) 03:13:41
失礼しました。 条件としては、メインのフォームから作成される、 どのフォームにでもフォーカスがある限り最小化したくないと言う条件です。 デスクトップをクリックする、他のアプリケーションを開く等、 このプログラムに関係の無い場所にフォーカスが移った場合のみ最小化して欲しいのです。
Form.ActiveFormも使用してみました。 ただ、Form.Deactivateがイベントとして発動した時点で、 Activeなフォームが無いのでnullが返されてしまいます。
へえ
>>95 ありがとうございます。
DynamicMetaObject って MethodInfo の Invoke() の発展形というか、ものすごく
なんでもアリな技術っぽいですね。
動的にメタ情報を扱うから、リフレクションと同じで当然ですが、nor から StaticFactory
の定義をコメントアウトしてもコンパイルは通っちゃうという。
System.Dynamic を使う場合、単体テストの重要性が極めて大きくなってきますね。
dynamic=DynamicMetaObjectじゃないよ。 DynamicMetaObjectっていうのはdynamicなオブジェクトに対する「操作」を実行時に解釈して 具体的なILを生成するルールを定義する型。いわば小さいコンパイラみたいなもん。
質問です。 競走馬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万頭のような大量の頭数にも対応できるようにお願いします。
ミリ秒の定義がおかしい お前さんがやるには時間を0.1秒単位に変換して平均出すのがいいんじゃね
(分*60 + 秒)*10+秒より小さいその一桁のやつ を足して、割って後で戻す
00を付加してParseしちゃえばよいのでは、とか。
DateTime.Parseを使った場合、Addで足していったとして、 最後に平均を求めるのに割り算が必要になりますが・・・
DateTime.Ticksの値を割ってDateTime(long)のコンストラクタに渡す
ひょっとして、タイムを普通の数字に変換してそれで10進数で計算して、最後に出た数字を10進数からタイムに変換しなおせば同じ? たとえば 1 1分33秒6は1336とみなす 2 計算する(どんどん足して、最後に割る) 3 出た数字が1655なら、1分65秒5とみなし、さらに2分5秒5に修正
しかし、msが1/1000秒だってことを知らない人がプログラミングに手を出しても仕方がない気がする
Excelすら使えてなさそうだな
>なおタイムのミリ秒のところは1ケタです。つまり1分33秒6の次に大きいのは1分33秒7になります これは競馬での表記の話ね
国際単位に「競馬での表記」も糞もあるかよ....
>>112 つまりこういうことだね
(1分+30秒+30秒)/3=(1000+300+300)/3=1600/3=53.3秒
あってるかな? とけいをみてかんがえてみようね
全部秒にすればいいと
まあ競馬の表記だろうがなんだろうが、物理量なんて単位さえ統一できていれば問題ないんだが、 1分が60秒ってことを知らないレベルじゃどうしようもない。
TimeSpan使ったれよあほども
ああごめん。 : じゃなくて . だろってことか。
というかミリ秒じゃないし デシ秒 or 秒の小数部
126 :
108 :2010/07/01(木) 02:39:01
>>120 見てくれてありがとう。
けれど、
>>112 には伝わらなかったようで、残念です。
*60って書いてるのにorz
今って小学生でも馬券買えるんだっけ
おはようございまーす。 TextBoxクラスに入力した文字を7色に変える メソッドRainbow()を作りたいなーと思った時に TextBoxクラスを継承したMyTextBoxクラスを作って そこにRainbow()を作ろう思ったのですが それをフォーム上のTextBoxに適用するにはどうすればいいんですかね? というかそもそもこういう考え方で問題ないんでしょうか? ちなみにC#2008なんですけど、教えてもらえないですかー?
済みません、
>>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();
}
を作って
次レスに続く
private void A( str hoge, int hage){ switch int{ case 1: hoge = "xxx"; B(hoge,hage) case2: hage = 5 B(hoge,hage); } とか言う記述にする事について皆さんどう思われますでしょうか。 ご意見お願いします。
質問の意味がわからん
どう思うかっていわれても そんなの好きにすればいいじゃん
>>129 MyTextBoxをフォームに貼ればいいだろ
秒を浮動少数でまとめて計算して、分秒に直せば良いんじゃねーの? A:93.6 B:95.2 C:96.9 (A + B + C) / 3 = 285.7 / 3 =95.2 =1分35秒2
あ、すみません。
好きにしたらいいんですよね(^ω^;
ああいう書き方は設計上好ましくなかったりするのかなーと。
それと
>>129 のしつもんなんですけど
>>134 さんの言うようにフォームに貼りたいんですけど
その方法がわからなくて・・・。
試しにTextBoxを継承した奴をコードに書き加えたら
継承したフォームがツールボックスに出てくるのかなーとかも思ったんですけど
そうでもなさそうですし・・・。
教えていただけないですか><;
でかいのでた すっきりした
>>136 googleでユーザコントロールとかカスタムコントロールとかで検索すれば・・・
自演?
>>138 ありがとうございます。
さっそくやってみます。
142 :
140 :2010/07/01(木) 13:59:23
自決しました
143 :
140 :2010/07/01(木) 14:03:27
自戒しました
145 :
140 :2010/07/01(木) 14:28:13
>>126 120も112も自分です。
>>108 のやり方を参考にさせてもらいます。どうもありがとう。
あと途中レベルが低すぎて申しわけない
>>130 状況によってパラメータを変更したいってこと?
もともとのAを読んでいる部分にそのswitchを置けばいいと思うけど、
その処理自体が多くでてくるのかな。
なんか変なにおいがするのでもっと引いた視点で見直してみるといいかも。
148 :
デフォルトの名無しさん :2010/07/02(金) 10:09:08
いいかもね
質問者のレベルからすると デザイナでボタンを一個ずつ配置して それぞれにイベントハンドラしかけてそう
まあどんなコードでも挙動が同じならいいんじゃね? フリーウェアか……作ろうとしたこともあったがアイデアがないな
俺も個人でやるなら何しようがいいと思うけどね だーけーど仕事で複数人で作業してる時、 不変クラス作れつったのに要求を満たしてなかったり コンストラクタに10個以上も引数を連ねる奴は解雇されればいいと思うの
>>150 普通、書店とかである在庫検索なんかはひらがなの並びは左から右だけど・・・。
>>154 ん?そうかな。あ行で始まり右から左に並んでると思ったけどなー
50音表は縦書きだから右から左でおk
>>153 見てみたいなそのソース
自分の仕事では勘弁願いたいがw
>>152 趣味ならそれでOK。
仕事なら限られた時艱の中で最高の答えを探すべき。
時艱 その時代の直面している艱難。当面する難題。 難しい言葉知ってるな
まあ、十中九十は分析が足りてないんだろうけど DateTime とか Binding コンストラクタ みたいな例も無くもない。
MVVMフレームワーク使うと凍結クラスつーかイミュータブルなクラスを作る事が殆ど無くなったな
GUI はimmutableと相性悪い気がする。
>>45 おいおいおいまたこのページのコメントも全部消えたぞ。
まあ他人のコメントに対しての本人の回答コメントが消えたんだが。
こいつはいったい他人とのコミュニケーションをなんだと思ってんだよ…
まああれだな、貴方の正体が不明なので公開しませんみたいなこと書いてたから、 またその辺におそらく何様だとかどういう態度だとかそういう突っ込みコメントされて逃げたのかな。 コメント非承認で書き込まれたのが表示されない分、逆に殺到した可能性もあるかもな。
コメントへの回答を消されてしまった本人だが… さすがにちょっとイラっときた…
元々のコメントも、技術的質問ではなくて正体不明だから公開は不適切と判断されたが、 「当Blogのコメント投稿について」のルールで不明なところの確認の質問だったんだぜ。 もうこの人はまともにコミュニケーションをとるつもりなどないとあきらめたわ。 スレ違いすまん、ちょっと書きたくなった。
謝るくらいなら書くなよw
お節介かもしれんが一応一言。 君たち、その批判的視線を少しは自分にも向けたらどうなの。 端的にいってそうとう「気色の悪い」人間だと思うぞ君らはw いつも不思議なんだが、こういう奴らってよくそういう薄気味悪い自分に耐えられるよな。
鏡で見慣れてるからな
WPFのTextBoxのマスク処理ってどうやるの? PasswordBoxがバインド出来ないから凄くめんどくさい…
できない
えええええええ ならこれどーすんの? バインド出来なければMVVMにならないじゃん…
まだまだ発展途上だからね
C#でプロセスの隠蔽をしたいんだが、誰か詳しい人説明を頼む。 DLLインジェクションを使えばいけそうなのはわかったんだが…
175 :
デフォルトの名無しさん :2010/07/03(土) 17:43:27
詳しい人だけど時間がないので説明しない
>>174 なんだこの厨房丸出しの質問は
C#で作られたDLLってネイティブコードで動いているプロセスにそのまま注入できるのか?それなら普通のセオリー通りにやればいいんじゃね。
>>175 時間がないなら2chみてんじゃねーw
>>176 具体的な手順頼む。
ネットで調べたらDLLインジェクション自体はサンプルが落ちててできそうなんだ
だが、exeのプロセス隠蔽とDLLインジェクションが自分の中でうまく繋がらなくて
>>177 DLLインジェクションというのは、他のプロセスにDLLをインジェクション(注入)して、そのDLLを実行させるというだけの技術。
実行されているDLLはWindows標準のタスクマネージャーには表れないから、DLLを注入して他のプロセスに実行させることで、結果的にプロセスを隠蔽しているようになるというだけの話。
179 :
デフォルトの名無しさん :2010/07/03(土) 19:28:13
>>172 バインドはMVVMには必須じゃない。普通にイベントハンドラで書け。
MVVMのキモはViewModelがViewに依存しないことであって
それさえ守られてればViewのコードビハインド書いても問題はない。
>>178 レスサンクス
explorer.exeにAというDLLを注入した場合、A.dllで何か処理を書かないといけないと思うんだが
普通のexeみたいに何か処理をするdllを作成するのってできるの?
>>179 依存しないからこそViewModelの差し替えでViewの挙動を容易に変える事ができるんだよね?
イベントハンドラでデータを操作する内容をViewに書いたらMVVMの形式が崩れてしまうし
ViewのハンドラからViewModelに橋渡しするとなるとDataContextの差し替えだけではすまなくなり容易性が失われる(Viewの内容を知っていないといけない)
イベントハンドラ書いたらMVVMじゃ無くなりまするですよ…
>>180 > 普通のexeみたいに何か処理をするdllを作成するのってできるの?
でなきゃDLLが存在する意味がないだろ。
>>182 C#でクラスライブラリを作ったりするとdllで出力されるのはわかるんだが
dll単体で処理を行うのは無理じゃ?
わかんないならあきらめろよ・・・。
やってることはこっちだが、理解がふらっとの方に行ったほうがいいレベルだな
186 :
デフォルトの名無しさん :2010/07/03(土) 19:45:39
>>181 いやそもそもViewModelの差し替えなんか不可能。
ViewModelはViewの抽象化だから、
ViewModelを差し替えるのは例えればクラスの基底クラスを差し替えるようなもの。
差し替えられるのはViewの方。Viewのテストが面倒だからViewModelで抽象化して
ViewModelを単体テストできるようにしましょうっていうアイデア。
>>186 うそーん!
共通のWindowで共通のコントロール
ただしデータが微妙に違ってそれによる制約や検証が微妙に違うものが複数ある
そしてModelは同一又はプロパティ数が同一
こう言う事って結構あるよね?
んで
View(共通のコントロール)
ViewModel(検証とCommandによる操作、及びレガシーModelの包括)
で分けてViewModelを差し替える事で使い回ししてるよ
でもここで出てきたのがView配置のPasswordBoxちゃん
こいつがDependencyObjectじゃないとBindさせねぇ〜とか言っちゃう
んで、これをどうViewModeで吸収?してModelに渡すのかがググってもさっぱりわかんない
お手上げちゃーんなのです
バインドしてOKみたいなもんはTextBoxでいいよ
誕生日になるとメッセージを表示するプログラムを本人に築かれないように 仕込みたいんだが、どうすればいい? プロセス隠蔽ができないとタスクマネージャ開いてばれるかもしれんし。
>>190 そんな方法はない。
仮にあったとして、そんなセキュリティーホールが放置されてると思うか?
>>191 仕込むの自体は手動でやるからいいんだが、
プロセスの隠蔽は普通にできるだろ?
隠蔽はあるだろ… タスクマネージャのタスク一覧を直接弄って消すのは10年前のウィルスですらやってる事 今はサービス、他社のタスク一覧まで消す奴もある
常駐させずにタスクスケジューラに登録しとけ
>>190 そいつの心臓が弱くていきなり出たメッセージに驚いてポックリ逝ったら責任とれるのか?あ?
それはキモいというか、普通にそんなことされたら嫌だろよ。
200 :
196 :2010/07/03(土) 20:22:38
>>198 176も178も私ですけどスキルがなくてすいませんねえ
タスクマネージャの心配はするのにタスクスケジューラはOKってどういうことだよw 確かにタスクスケジューラなんてまず使わないけどな。 俺に言えるのは、100%確実な方法はないってことだな。 パソコンの操作を全部記録するようなソフトを入れてないとも限らないし。
>>201 普通、タスクスケジューラなんて使わないよな?
ちょっと不安になってきたw
操作を記録するソフト入ってたら無理だなw
勝手にアプリを入れさせるようなレベルなんだし、 スタートアップに置いといてもばれないんじゃね?
スタートアップに入れておけ。 誕生日に起動した時だけダイアログを出して他のタイミングは即座に終了して消えるようにする。
スタートアップはたまに覗いたりしないか?
svchost.exeって名前にしとけ
>>190 誕生日はお前以外の相手と一日中デートしててPCを起動しない可能性は?
カーチャンとかだったらごめん
>>187 そりゃMVVMじゃなくて君が開発した別のパターンだ。
MVVMに関するMSの記事のどこを見てもそんなことは書いてない。
もちろんWPFはそのパターンを公式にはサポートしてない。頑張るのは君だ。
>>209 えー
だってMVVMのパターンの概要を見るとViewとViewModelの分離の事は書かれてるよね
この疎結合の副作用を利用して差し替えをしてるだけであって完全マイルールってわけじゃないよー
それにイベントハンドラを書くのは結合度の観点からも勧められないと著名人達は口を揃えて言ってるよん
誰かAdorner何かを使ってTextBoxをマスク処理してるコードを格好良くみせてくれないかなーとか期待してたんだけど無理かなぁ
WPFしらんのでテキトーだけど、UserControlをアダプタとしてPasswordBoxのせて、 仲介してもらうとかできない?
>>211 ググるとそのやり方をやってる風なコメントがあるよねー
んー、やっぱりその方法がいいのかな
と言う前に、やってみるか!
MVVMにこだわるんだったらそのUserControlのためにまた別のViewModelが必要だから UserControl作ったって同じことでしょ
おぬし、ViewModelを勘違いしとるぞい
というと?
なんで別のViewModelが必要と思ったの?
ViewModelを差し替えたいならせめてインターフェイス通すべきだろ 実際のバインディングの動作には全く関係ないけどね 公式サンプルのPrismはViewがViewModelをインターフェイス経由で露に参照してる 差し替えたりしてはいないけど、バインドするVMのメンバは基本的にインターフェイスに宣言されてる
Prismをかなり使い倒してるんだがそんなインターフェイスでViewとViewModelを繋いでるサンプルなんてあるか? RegisterTypeでIDataService何かのサービスをレジストしたりするのはよくやるが
素人としては、ViewModel をストラテジパターンの要領で差し替えて使ってると 認識してて、そうなるとインタフェース必須だと思ってるんだけど違うの?
Prismにしろ何にしろViewModelにインターフェイスは使えないだろjk RoutedUICommand一つとってもViewModel側にstaticで定義しないと駄目なんだぞ?
あ、インタフェースって言ってもViewModelから呼ばれるストラテジのインタフェース って意味で。 そういう感じで作ればXAML共通で、VMの実処理だけ差し替えられるよな?と。
つまりどういう事だってばよ!?
つまり、固定のViewModel と、固定の Model の間で検証したりするロジックが
いくつかパターンがあるんで、それをアダプタ化して差し替え可能にしてるって
ことじゃね?
>>187 は。
とか思ったら PasswordBox 悩む必要無さそうだな、それじゃw
BというクラスがあったとしてAクラスで A hoge = new A(); というように実体が作られたとします。 そこでBクラスがAクラスで実体が作られたという事を知ることはできないでしょうか? Bクラスのコンストラクタで作られたクラスを取得したいです。 引数にでもして入力すればいいとも思うのですが自動でとれたら便利だと思いました。お願いいたします。
A hoge = new A(); は B hoge = new B(); です、失礼しました
どうもどうも〜
Rxってイベントベースじゃなかったっけ? A側にもB側にも特別なコードを追加せずにnewを検知しようと思ったら ILのリライトしかないと思うけどそんなことやってくれるの?
>>230 Rx 進めてる時点で、
>>229 はそういうイベントコード書けって事だと思うけど。
ぶっちゃけ、それなら、class B に static な NewInstance イベントでも足して、
B のコンストラクターでイベント起こせせばいい気はする。
特別なコード足したくないならそれは無理。
IEnumerable,yield,ToObservableで簡単に実装出来るけどな ただRx強力かつ難解なんで上級者でも中々手がない代物 複数人の開発じゃ手が出しにくい
×ただRx強力かつ難解なんで上級者でも中々手がない代物 ○ただRxは強力かつ難解なんで上級者でも中々手が出せない代物
イベントベースの非同期プログラミングが面倒だから LINQ使ってDSLっぽくイベントハンドラを作ろうというやつだよね そんなに難しいの?
うーんどうだろ。 Rx が難しいっていうよりは、C# のイベント機能が簡単すぎる気もする。 あとは、やっぱドキュメント少ない。
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()); } } } とか言ってみるテスト。スレッドセーフじゃないよなぁこれは。
Rxはおもしろ事が出来そうなんだけどドキュメント少ないし やっぱり非同期系は難しい Rxよりはいるけど.Net4の並列系も使いこなしてる人がすくないよね
それ微妙に納得いかないのよねぇ。 レベル1とかのプログラミングの基礎知らなくても、 専門知識だけ持った人が専門知識を生かせるような簡単プログラミングの時代来ないとダメだ。
Rxでいう非同期はマルチスレッドの非同期じゃなくて 同期スタイルなら { キーが押されるまで待機(); A(); キーが押されるまで待機(); B(); }と書けるところを キーイベントを使った"非同期"スタイルだと状態を保持する変数を持たないといけなくて面倒だよねという話
>>238 それで行けば専門家レベルだな
基準がぬるいよ
>>240 その状態を保持しながら通知するから便利なんだろ?
簡単に言えばステートフルな非同期処理
だから強力なのさ
>>238 これの初級レベルでここや初心者用で質問したら
ググれと言われて相手にされないだろwww
と思ったけど大学4年以上いっても初級レベルの奴がゴロゴロいるよな…
>>236 void OnCreated(EventArgs arg) {
var created = Created;
if (created!=null) {
created(this, arg);
}
}
これでスレッドセーフ?
関係ないけどイベントハンドラ用のデリゲートを作りたくなかったらEventHandler<TEventArgs>
それと引数なしのEventArgsはEventArgs.Emptyを使う
> var created = Created; そのテクニックどっかでみたな? どこだっけ?
>>244 >スレッドセーフじゃないよなぁこれは。
じゃあスレッドセーフにしてくれ ロックはなしで
248 :
245 :2010/07/04(日) 14:19:44
245△
250 :
245 :2010/07/04(日) 14:34:44
すまん。
>>244 の"スレッドセーフ?"と言ったのを、
>>236 の最後を見落としてて
揶揄してるんだと誤解してた。スレッドセーフにしてくれてたのね。
いいよ気にしないで 慣れてるから
>>244 これってなんでスレッドセーフになるの?
解説を聞きたい!
>>248 public event EventHandler<EventArgs> Created = (_, __) => {}
これもなぜこれだけでスレッドセーフになるのかわからにぃ
>>253 null比較がスレッドセーフではないからローカル変数に一時待避でスレッドセーフ
>>254 null比較しなくていいように前もって空イベント挿入でスレッドセーフ
また、△ってしてもいいんだぜ!
>>253 if (Created!=null) {
/* この間に別のスレッドがイベントを-=してCreateをnullにする可能性がある */
Created(this, arg);
はあ・・・また自演っぽいな
別に自演じゃないよ。 ホントにわかんないだけ。
>>256 var created = Created;
Created-=********** --この時点でcreated -= *********
したのと同じことにはならないの?
参照型でしょイベントって。
add/removeしたら別オブジェクト a += b;は TDelegate c = (TDelegate)Delegate.Combine(a, b) a = c; の略で、このとき Object.ReferenceEquals(a, c)もObject.ReferenceEquals(b, c)もfalse
君は var objA = new object(); var objB = objA; この時どうなると思ってんだ? ちゃんとポインタ(厳密には違うけど)はコピーされてるんだぞ
ならないの。デリゲートは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アクセサの呼び出しもスレッドセーフ。
>>260 ,
>>262 解説ありがとう。
参照型だけど毎回インスタンスが生成されるクラスなんですね。
理解しました。
何読んだらそう言うのがわかるようになるの?
>>255 > null比較がスレッドセーフではないから
そういう話じゃないような
あほか。nullはスレッドセーフだわ、ボケ。
えっ?
>>244 実はECMAの仕様ではスレッドセーフではなかったり。
完全なスレッドセーフなど存在しない
しかしlockを何個も書くのはかっこ悪いしめんどいんだが このオブジェクトは最初から排他仕様だからよろしくみたいなことは出来ないのか?
比較自体はスレッドセーフじゃないからあながち間違いではないけどな
は?
え? obj = nullは常にスレッドセーフだよ? あと obj = 0とobj = falseもさ 大丈夫?あぁネタかw
ほ?
それがどうであるかと
>>244 がなぜスレッドセーフなのかはまるで関係ないよね。
C#でDllMainって使うにはどうしたらいいかわかるひといる?
うん
>>281 マジで知ってるなら教えて下さいm(_ _)m
>>282 COMコンポーネントあたりでぐぐってみるといいよ
サムネイル表示するのをWindows7に移植しようとC#で作ってみたが
その時にそんな感じのことをした気がする
結局動かなくてテストに毎回再起動するのがまんどいので放置してるが
とまぁ、えらそうに申しておりますが、俺も
>>248 >>262 で初めて知り、
>>265 のツッコミをした程度のへっぽこです。
知らなかったらlockステートメント使ってたと思う。
んなこたあどうでもいいから
>>282 に教えて上げなさい
質問が曖昧すぎて回答できません
とりあえずクラスライブラリとかDllImportとか曖昧回答して上げなさい
ぐぐったら少ないけど情報出てくるね。
デッドロックの恐れがあるからCLR2.0以降では禁止されているという話らしいよ
約束は破るためにあるっちゅうことやな
Observerとかいう次元じゃなくてアプリケーション全体の構造の話でしょ ステートが絶対に変化しないならいいんじゃないの 素直にやったら全部グローバル変数と変わらないから、テストのことを考えると IProductsStateとかインターフェイスで小分けすることになるだろうけど インターフェイス使っちゃうと後で変更がきかないよね
>「銀の弾丸」が存在しない以上、「ステート集約プログラミング」も銀の弾丸ではありえない。 >「ステート集約プログラミング」とは、あなたが“カオスの縁で踊る”ステップのバリエーションを増やすものであって、 >他のステップがなくてもよいと主張するものではない これだけでなんかオタ臭さをすげぇ感じるわ。
オタですがなにか?(-_-メ)
状態オブジェクトの変更に弱い に尽きるな 筆者もそれはわかっててわざと誤魔化した書き方をしてるように見える 結局グローバル変数と一緒だわね
>>294 実戦で役立つなら考案者が厨二でも邪気眼でも構わんが、これは正直微妙な感じ
他の人も指摘してる通り、ちょっとヲサレなグローバル変数以外の何者でもない罠
とは言え、相互作用する状態が大量発生するような手合いだと、Observerパターンでも苦しいのは事実
なんかうまい方法はないもんか
なんかレベル低いことをわざわざ敷居高くして難しく書いてるだけな気がする。
>>292 一つ前の記事の日本語でテスト名は書けというのは共感出来た。
ビジネスロジックのテスト名はそっちの方がわかりやすいしね。
だね
302 :
292 :2010/07/06(火) 17:58:00
皆THX.
アレは文中でもある通り、DBの簡易代替に過ぎないんだろうな。
>>300 まあテスト名くらいは許容できるが、変数名を日本語で書くのは俺はあかん。
インテリセンス使えねえじゃん。
あかんね
変数全部に/// <summary>と/// <remarks>を。
日本語使うとインテリセンス使えないんだっけ? 使えたように思ったけど気のせいか
変換して確定しないと候補が出てこないんだから、インテリセンスの意味なし。
候補が出てこない訳じゃないだろう ピリオド打った後カーソルキー上下とかスクロールつまみ動かすとか まあインテリセンスのメリット低下は確かだが
そうだね
>>306-307 そこでイニシャル付き変数ですよ。k金額とかn日数とか。
というか、日本語の変数名を簡単に検索できるアドインを作ったら結構受けるかもな。
migemoを組み込むってことか?
川俣に期待するなと・・・
なんで?
匿名掲示板のレスにいちいち理由なんて期待するなと・・・
>>313 やってることがいろいろと可笑しすぎる。
MVVMのView側って何書くの? Command Binding出来ないDragDrop系とか?
Modelに依存しない処理。 Click系のコマンドでViewの操作のみならViewModelに書かずViewの中で完結する。 DragDropの事後処理等でModelに依存するコードがあるならその部分だけViewModelに書く。 無いならViewで完結。 間違ってもView内のハンドラでModelを触らない事。
某スレに載ってたんですけど、 Jane Style 3.4 を使って2chに書込みをすると C:\\Document And Setting\【スズキ タロウ】 という部分の文字列までパケット送信してるらしいのですが、 誰か逆アセンブルして解析した方はいますか? ※前々から2ch専用ブラウザは怪しいと言われていたのですが・・・ 場合によっては警視庁ハイテク化にアプリとソースを引き渡します。
>>299 マジレス感謝m(_ _)m
キーロガー作ってプロセスを隠蔽しようと思ったらやっぱC#じゃ無理か・・・
がんばってC++勉強します。。
>>317 MVPレベルキタコレ!
凄くわかりやすかったです
サンクス
またこいつか
MVPと言えばいつも見てる高スキルのブロガーが落ちてたな かと思えば何もしてない人が選ばれたり… あれの選別基準がいまいちわからん
あれは、コミュニティを運営してる人、もしくはライター。 Most Valuable Professionalとは名ばかり。
むむむ… そう言う事か…
オレも以前受賞したことあるけど、雑誌に記事書いてたのが評価されたみたい。 他にはとくに活動してなかったし。
>>316 きっちりやれば、たいていの場合XAMLしか残らない。
C# 側は、テンプレ通りの InitializeComponent() のみに。
全く持ってその通りで、一部の Command Binding できないものとかのために
しょうがなく View の分離コードに何か書く。
MVP の評価基準が、やっぱ露出度で計られるんで。 (「MS に対する貢献」って言い方されるけども、結局それは好意的な記事の露出。) コミュニティ運営と、編集の校正入るウェブ記事は評価高いっぽい。 ああ、あと、MS Connect へのフィードバック数とか、 フォーラムでの書き込みすうとか。 最終的に評価は米本社側でやるんで、 検索でどれくらいの位置、PV いくら、執筆本数いくら、会員数いくら とか、客観的な数字がある方が受けるみたい。
コピペ君って馬鹿だな、まで読んだ。
ここは328を応援するスレになりました
334 :
デフォルトの名無しさん :2010/07/07(水) 00:46:39
>>328 逆アセしなくてもwiresharkのようなソフトで通信をモニターすればいいんじゃね?
まあ個人名称をそのままユーザーにしてる人もいるだろうから気持ち悪いよね
Styleは使ってないのでアレだがその情報はどこへ送ってるの?
正直名前くらい漏れてもいい
>>334 各板の鯖
Reflectorでソース解析済み。
>>335 2chにはプロ固定がいるのをお忘れなく
コピペ君にマジレスって.... っていうか、「送信してるらしい」ってどこの誰にだよ。 2chのサーバー?w 仮にそうだとして、どこぞのPCのユーザー名なんか収集して何の役に立つんだ? それはソフトの作者にとって、犯してるリスクに見合うものなのか? なわけないだろw 被害妄想狂の想像とちがって、お前さんの個人情報(にすらならんがユーザ名なんか) になんか1円の価値もないよ。 こんなの小6レベルの推理力でわかる話だと思うが。
>>336 > Reflectorでソース解析済み。
結論が出てるならそれでいいじゃん。
>>337 2ch プロ固定 でググレ
そしたらなぜ不味いかが分かるはず。
Jane Styleって.NET製じゃないよな
プロ固定…。 んーなんかデジャブ。 前に見たのはオカルト板だったはず。 だからその手の都市伝説はあっちの板でやれ。
343 :
デフォルトの名無しさん :2010/07/07(水) 01:30:53
スクロールバーについて質問をしたいのですが、 スクロールバーで値を変更したときに、 フォーム内のすべてのコントロールの表示位置を変更する様な プログラムを組むのでしょうか? それとも、根本的になんか、勘違いしているでしょうか?
Jane StyleはDelphiのはずだが
>>336 はReflectorで何を見たんだ…?
これはマジでオカルト板の出番かもしれん
>>343 Panelとかの上に全てのコントロールを乗っけてPanelだけ動かす
まあ普通はAutoScroll使う
346 :
デフォルトの名無しさん :2010/07/07(水) 01:49:15
>>340 ReflectorはDelphi対応みたいね
Delphiって中間コード持つような言語だっけ?
347 :
デフォルトの名無しさん :2010/07/07(水) 01:50:33
>>336 気になるならスパイウェアのような挙動をするとしかるところへ報告しておけばいいんじゃね?
ローカルのアカウントに個人名使ってればIPとひも付きでデータが集まるしなあ
その程度だとそれほど価値はないがそういう兆候があるってことは
そのうち何かやりかねないので注意を促すと言う意味では動いた方がいいかもしれない
ソフトの監視という意味でね
利用者多いし
あふぉか
Reflectorで見れるのはDelphi.NET。 (2003年に出たDelphi 8から.NET対応の製品がリリースされてる。) ネイティブコンパイルされるDelphiは.NETと無関係なのでReflectorでは見れない。 Jane Styleは後者。
C#とは関係ないな。陰謀論は他でやれ
352 :
デフォルトの名無しさん :2010/07/07(水) 02:18:10
>>345 ありがとうございました。
オートスクロールってプロパティ、
2002年のバージョンのc#には無かったですよね?
確か、そんな気がしましたが。
最近乗り換えたもので。
Left,Top,Width,Heightと4つそろった構造体は標準で用意されてませんか? Pointは二つ(X,Y)のみなので、これの4カ所バージョンを探しています。
RectangleとかRegionとか
Regionは気のせい
出来ればSharp系のクラスではなく構造体で・・・
>>357 そですた…。
WPFやってるとごっちゃになるから勘違いしてしまったorz
サンクス。
>>352 バージョン情報
.NET Framework
サポート対象 : 4、3.5、3.0、2.0、1.1、1.0
>>358 WPFにだってRect構造体があるし(こっちは各要素がdouble型だが)
#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点の座標を入力して三角形の重心を求める問題だ
お断りします
釣りだろw スレタイ読めないバカがいるとは思えん
スレタイ読めるのか!すごいな!
学者さんだよ
しーしゃーぷ しーしゃーぷ しーなんばー そうだんしつ ぱーとろくじゅう
VIPPERはム板へ立ち入り禁止
泣いた
[]をオーバーライド?するにはどうすれば? 検索しても出てこないんですが class AがあったらB=A[0];みたいなアクセスがしたいんです
>>369 は解決しましたが
foreach inに対応する方法がわかりませぬ
できるよ、オーバーライドではない方法でだ。 プロパティ関連をしらべろ。
List<A>から派生されたら出来た
>>370 IEnumerable<T>インターフェースを実装すれば対応する
IList<T>じゃねーの
おいおい…
あーごめん最初の質問しか読んでなかった
377 :
デフォルトの名無しさん :2010/07/07(水) 17:02:36
http://homepage3.nifty.com/kons/hidemaru/helpsite/hidemac/html/200_Dll.htmlの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をどのように書き直すと良いでしょうか?どなたかご教示お願い致します。
ネイティブからマネージのDLLってよべるんだっけか?
COMにするかC++/CLIはさむかしないと
逆P/Invokeと言う手法もないわけではない
素人の集まりか 呼べないわけないだろ
そうやって煽っても無い袖は振れませんので^^;
.NETのアセンブリにネイティブのエントリポイントを作成して呼べるようにするのも 不可能じゃないんだけど、一筋縄じゃいかない。 秀丸のマクロから呼ぶのが目的ならCOMのサーバを作るのが手っ取り早いでしょ。
ホストAPIでCLRバージョン指定してアプリケーションドメイン作ってマネージランタイム読み込んで 実行。終わったらアプリケーションドメインは解放してやらんとDLLがアンロードされないので注意。 とかメンドイわ!やっぱ言うとおりCOMでやるのが一番だな。
うん
素直にC++でやった方が遥かに簡単で軽快なコーdうわやめなにを
まあな。処理内容にもよるけど。 まさか実際に定数を返すだけなんてこともあるまい。
NetWorkStreamクラスのReadメソッドの引数に byte[4096] の変数を指定したら応答なしになってしまいました。 散々動かないと悩んでbyte[1024]にしたら直ったんですが4096の配列というのは大きすぎるもんなんでしょうか?
リソースファイルで、テキストファイルがあるとします。 そのプログラムが実行中に、自分のリソースファイルの テキストファイルを開いて書きこんで保存すると言う事が、 できるのでしょうか? その他、画像リソースファイルなども。
リソースを書き換えはできない
ばぁぶぅ
すみません以下のコードで例外が発生するんですが、 何が悪いのかわからないのですが・・・ //確実に数値化する private int SetNum(string str) { try { int num = int.Parse(str); return num; } catch (System.FormatException) { return 0; } } お願いします。
あ、上のコードなんですが int num = int.Parse(str); の部分でブレイクします。。。
TryParse使うべき
catchの()いらないんじゃね
普通に動くけどどういう状況でどうなるんだ?
>>396 strに "" が入ってきた時ですね。
2008expでは動いてたんですけど
2010proに代えてから初回例外が発生するようになって
どうやらここがおかしいっぽいという感じですハイ。
private int SetNum(string str) { int res; if(int.TryParse(str,out res) == false) return 0; else return res; } こんなのとかかな? そもそも例外発生するのは文字列が悪いと思うが、どんな文字列を渡してるんだ?
少なくともSystem.OverflowExceptionとか
なんかJAVA的な書き方だな とオモタ
どうでもいいが、Setとかメソッド名に使っておいて実体は型変換とかどういうことなの…
>>402 シーッ
Getとか別の名前にする方がいいとかいっちゃダメッ
>>402 あ、なるほど。
そうですね。
とりあえず
//確実に数値化する
private int SetNum(string str)
{
int num = 0;
int.TryParse(str,out num);
return num;
}
として問題は回避できたっぽいです。
でもまだイミディエイトウィンドウに
'System.FormatException' の初回例外が mscorlib.dll で発生しました。
っていう文言が正確に数えてないんで分からないですが
100行以上くらい出てるんですがこれなんなんでしょ・・・。
2008expで開発してた時は出なかったんですが。。。
しかもエラーではない様子でプログラムはまともに動いてるように見えるし
この例外がどこで発生しているのかもわからないんです・・・(;ω;)
2010はいいとしてターゲットのフレームワークはどれなんだろう。 4.0かしら?
ちょっと俺も気になるから確かめてくる
それと不思議な事なんですが
イミディエイトウィンドウにもろに表示されてるワケじゃない気がするんですよね。
イミディエイトウィンドウは上から順にメッセージが表示されると思うんですが
プログラムの立ち上げが終わった時点でイミディエイトウィンドウには何も表示されていない
部分までカーソルが下がってきてるんですよ。
それで、そのカーソルを上に持っていくと前述の通り大量の
'System.FormatException' の初回例外が mscorlib.dll で発生しました。
が表示されているという・・・。
状況としては
http://questionbox.jp.msn.com/qa3794467.html この質問者の人に似ているかなあと。
加えて、すごく初歩的な質問でもうしわけないのですが
C#で開発者が設定できる1番最初のブレイクポイントってどこになるんでしょうか。
Program.csのMain()の
Application.EnableVisualStyles();
であってますかね?
というのもここでブレイクをかけて見ても既に上述の例外が発生していますもんで
http://gyazo.com/a0b4779e46074481ef531677d615af66.png (こんな感じです)
例外の発生している部分を突き止める事ができないな・・・っていう感じなんです。。。
イミディエイトウィンドウではなくて出力ウィンドウではないんだろうか? イミディエイトなら自分で出してるだけの気がする。 それはさておき、別にでないんだけどなぁ… それって出力ウィンドウの右クリックで例外メッセージを表示しないようにしてただけとかそういう問題じゃなくて? とりあえずソース 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); } }
うおあ! VSを再起動したら表示されなくなりました・・・。 僕がみていたのは皆さんにアドバイスされる前のコードで生成された メッセージの履歴だったんでしょうか・・・^ω^;
>>409 さん
おそらく1番最初の int.Parse try{}catch{}で分けるという方法が
コンパイラの気に障っていた?ようですね・・・。
TryParseを使う事で例外の表示もなくなったようです。
どうも長々とスレ汚し、すみませんでした(^ω^;
ありがとうございましたー!
(#^ω^)ビキビキ
>おそらく1番最初の int.Parse try{}catch{}で分けるという方法がコンパイラの気に障っていた? そうではなく、テスト動作させてるときに空文字渡したとか言ってたから キャッチはしているけど例外が発生したから表示されてたんじゃないか? 例外はコンパイルレベルで発生する代物ではないと思うんだ
>Reflectorでソース解析済み。 とか言って騒いでた馬鹿か。
janestyleてドトネト制だったん? delphiかとおもてた
ヘルプにはDelphi 7.0 Professionalで開発したと書いてあるね
422 :
たった :2010/07/08(木) 17:21:18
.netじゃねーけど Reflectorはdelphiに 対応してるみてーだなwwwww ということはdelphiも 中間コード系の 言語なのかよ!? あ!?
っと、8からなのは.net frameworkに載ったのが8からね。 もともとPascal系は中間コード使ってる
オープンファイルダイアログと言うコントロールは、 前に使った時のフォルダのパスを覚えてて、 新しく開いたときに、前開いたときのフォルダを最初に見せてくれますが、 この情報は一体どこに覚えているのでしょうか? 普通にアプリケーション設定と同じ位置に覚えているのでしょうか?
os
os
カレントドライブ、カレントディレクトリ
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32
>>433 つまり、レジストリって事?
カレントなのかレジストリなのか、それとも、ユーザー設定なのか?
どこやねん。
お前らも本当は知らないんだろ。
別に知らないなら答えなくていいのに。
>>434 お前誰やねん。
いまいちよくわかりません。
説明されているサイトなどに、誘導していただけませんでしょうか。
>>434-435 真面目に質問しています。茶化さないでください。
とりあえず落ち着け
/ _ .::::ト、  ̄ ´ \ i \ ̄_ ̄_\ \ l )┼┼+( | あ゛あ゛っ!! /ヽ__ i\ i ンダコラッ!! ヽ_  ̄__/  ̄''''‐'' ̄
イミディエイトウィンドウはデバッグ開始しても勝手にクリアされたりしないよ。 過去に出力された分はずっと残ったままになる。 イミディエイトに出力をリダイレクトする設定をしてなければデバッグ出力に出力される。 こっちはデバッグ開始するたびにクリアされる。 例外発生時にデバッガで停止するのは、まあわかってると思うけどデバッガの例外の設定。
寝て起きたら書いてたコードが微妙に書き換えられててうまく動かなくなった 夢だったんだろうか、それとも夢遊病だろうか 夜中ちょっと目が覚めた時にパソコンがついてておかしいなとは思ったんだけど 超怖い
>>440 つまり、レジストリなのですね。
解りました。
コモンダイアログはコモンダイアログがやっていることだから基本的には考えなくていいと思う
でも、例えばさ、そう言うのって、結局はさ、 自分の作ったプログラムを配布した場合、 ユーザーのパソコンの記憶領域を勝手にいじっちゃうわけでしょ? いつの間にか勝手にレジストリをいじって記憶領域を減らすってのは あまり良い気分じゃないよね。 まあ、実際殆ど問題無いけどさ。 レジストリを散々いじった挙句、そのソフトをもういらないからって削除した場合とか、 無駄な記憶だけが残るだけの結果になったりするじゃない。 なんか、そう言うのって気分悪いのさ。
まあインストーラ付けないならアプリケーション設定は使うべきじゃないな
コモンダイアログから随分話が飛んでるな
わしのは、エクスプレス板だから、 ついて無いのじゃ。 確かにインストーラーがあるなら、 OSにアンインストールしてもらえば良いのだけど。
ほぼ確実に朝になるとノートのバッテリが上がってたんだけど、イベントログ見たら 真夜中にWindowsのCEIPがなんかどっかに通信しようとしてコケてた(そのときLAN ケーブル外してたんでエラーになってた)。 そのサービス殺してからは朝になってもバッテリが上がってることはなくなった。 何か関係してるのか?
板違い。失せろカス。
>>446 "コモン"コントロールを一体なんだと思ってるんだおまいわ・・・
まあそんなのchmの設定保持とか他にもいくらでもあるわけで。 その程度のことを気にしてたら何もできない。 っていうか気にするだけ無駄。
>>446 それは永久に残るものじゃないから
おまえ馬鹿だろ?
記憶領域減らすw ディスクの中にはいったいどの程度の無駄があるか知ってるか?
わかってない奴ほど どうでもいい細かいこと気にするの典型
457 :
デフォルトの名無しさん :2010/07/08(木) 22:34:14
本当の「相談事」で申し訳ないが・・・。
O/Rマッパって何使ってる?
少し古めだけど一覧
http://d.hatena.ne.jp/aoki1210/20080416/p1 のリンクをざっと辿ってみた限りでは、S2Dao.NET + DBFluteがよさげ(特に定義ファイル書かなくていいのが楽そう)だと思ったんだけどね。
↑以外ではADO.NET Entity Framework が少し話題になってるみたいだけど、「これO/Rマッパぢゃねーし」とかゆー声もあるし・・・。
ってことで何かお勧めがあればプリーズ
今夜バカ王が決まりそうな勢いだなw
俺はエントリーするぜ!!
OSが使うレジストリなんか気にしているお前は男らしくない。
ある処理をしている間だけ、 numericUpDown_ValueChanged イベントを発生させないようにするとかできるのでしょうか?
>>462 フラグ用意してイベント内でスルー
とかにしとかないと後で見たとき
「イベントが発生しない!」とか
悩むかもよ
イベントの発生の仕方について質問があります。 CPUがシングルか、マルチかで発生の仕方が変わったりするのでしょうか? 例えば、シングルだと、あるイベントが終わるまで他のイベントには移行しないが、 マルチだと、あるイベントが処理中に、もうひとつのイベントの処理が始まってしまうとか。 デバッガで追ってみると、値を変えた時に、バリューチェンジドイベントに 飛ぶときと飛ばない時があるのです。
EXEで正常ならば問題無い
わかりました。
久しぶりに覗いたがこんな香ばしいスレだっけ?
前から定期的に痛いの湧いてるじゃん なりすましとか
継承クラスをつくって空白のメソッドでオーバーライドする方法以外で、 Control.OnPaintとControl.OnBackgroundPaintの処理を無効にすることは できないでしょうか?
派生クラス作ってWndProcオーバーライドしてWM_PAINTを無視する 何が不都合なのか分からんと答えようもないな
わかる方だけ回答お願いします
お礼は三行で
あ り がとう
C#2.0でちょっとご相談 一つのファイルを複数ビューで表示させて、一つのビューで編集したら他のビュー全てに反映させたいんだけども この場合、どんなパターン使えばいいかな
3.5使えばWPFの標準的なパターンで実現できるのに。 とりあえず、変更の反映にはINotifyPropertyChanged。
INotifyPropertyChangedに一票
_,, -- " ̄T ) ̄ ̄` --,, ,´ |く `、 ; __,,=ミ" ̄ ̄ ̄``ヾj; .i _,-" `' - 、 ::::::::::::;;i .i ,/ .,/; 三 ヾ ;;;\, ::::::;;i .| / ソ; '`、; \、:::;;| .| ,/ ,=、 ,=、 ヽ、:;;| .トナ i 0 i ,; ;i 0 i .`ゝ:;;| .|1 .ゝイ ,i、 ;ゝイ :::;;| .i` - ____トi圭____ y"i '; :::::;;' ` 、 :::::::_ ,´ ` -- ,,____,, -- " /´`゛''''''ヾ、,;;- ‐'''' ""´``ヽ、 ,i′, ..:::; 、. .::゙:、 .,!、::i ..::::::; ....:::::::::i ::::`:、 ,i ::| 。 .....:::::;;;;! ....:::::。::::;;;;! :::::::i . ,! ;::::;、ー‐'''"´::`゛'''ー-‐'''":::、 ::::::| . / ,,,;;:::| | :::. ;;;:::::::::::::::;/`:、 , ;;::::l ,l′;:::::;! ;!-、_;-;__r-;_;-;、:::::::::;;i !;;;' :゛i . l′;;:::::;! i!爻爻;Ov爻爻i!ー‐''::i |` .:::| | ;::::/ l!※《 WWE》※i!:::::::::::| !、 :::;! . |___;::/ iヾ、゚・。⇔。・゚;;ノ;---‐'i. i__.::;! i′`i′ ト、゛''ー-‐'''"::::::::::::;;;;;;! ,!. ̄| . i´ ̄`i. i′`:、:::::::::;;:::;;-‐''"::`i ,;'"``'i . !、、;r; !. l′ `ヽ;::::;;'" .::::::::| l;ァ .;! `゛''"′. | ::`Y′ .:::::::::::i ゛''''"´ . | .:::::::i :::::::::::::|
コピペ君って馬鹿だな、まで読んだ。
板違い
>>477-478 INotifyPropertyChangedってWPFご用達じゃ?と思ってMSDN見たら2.0からだったw
サンクス
xmlファイルを読み込んで目的の要素を取得したいのですが、xmlファイルが
<hogehoge>
<pekepeke>
</pekepeke>
</hogehoge>
<hogehoge>
<pekepeke>
</pekepeke>
</hogehoge>
となっているとして、pekepekeの項目を上から順番に取得していくにはどうすればいいですか?
ttp://www.kisoplus.com/file/xml.html を見てマネしたのですが、うまくいかなかったのです。
うまくいかなかったとだけ言われても困る XMLのサイズがよほど大きくない限りはXDocumentにロードしてLINQ to XMLとかで検索だな
何がうまくいかなかったのかも書かないのか。誰も答えられないぞ。
>>484 そのままだとroot要素がないぞ。
<root>
<hogehoge>
<pekepeke>
</pekepeke>
</hogehoge>
<hogehoge>
<pekepeke>
</pekepeke>
</hogehoge>
</root>
の間違いじゃないのか?
XmlReaderを直接使うのは初心者にはかなり難しいし 慣れてても非常に面倒なのでLINQ to XMLかDOMを使いましょう
横レスだけど煩雑なXmlReaderから開放されるなら今まで避けていたLINQ勉強しますね
LINQ to XMLはあんまりLINQとは関係ない LINQ to Objects向けに新しく作られた使いやすさ重視のシンプルなDOMライブラリ もちろんLINQ使えば便利だけどLINQ使わなくても非常に扱いやすい
いやー、LINQ って言葉の指す範囲広いよ。 クエリ式のことでもあるし、 Where とかSelect とかの関数名規約でもあるし、 IEnumerable 返すように設計されたデータ読み書きライブラリのことでもあるし。
493 :
484 :2010/07/10(土) 00:54:27
「ルート要素が2つあります。行5、位置2です。」 と出るのです。
アホかおまえ
>>493 htmlファイルにhtmlタグがないのと同じ失敗だよ
>>483 にタイミング外した便乗質問
同じく2.0のListViewのLargeIconモードでデータバインド出来る?
ImageList側のやり方が分からない・・・
>>496 4.01 Strictでもhtmlタグは省略できるような…?
>>497 System.Windows.Forms.ListViewはデータバインディングをまともには使えないはず
>>498 あーやっぱ無理かー
ListViewでなくてもアイコン敷き詰めてスクロール&クリック出来るコンテナあればいいんだけど
2.0だと無いかねえ
あからさまにおかしいと指摘された部分は、 指摘の方がおかしいことにしつつ、大人の態度でw配慮して 実は見れなくしてしまうという高度な逃げ技
コメント不可にすればいいだけなのに
本当に全く何の意味も無い比較 struct Array2 { public int Item1; public int Item2; }と配列を比べて 前者の方がnewが速いから前者を使いましょうと言っている MSに報告するべきだな それはともかく、BitArrayはわかるけどBitVectorって何のためにあるんだろう インデクサがビットの位置じゃなくてマスクになってるけど ビットマスクがわかるんだったらBitVectorなんか使わずにビット演算使うだろ普通
ネットwatch板でやれよ邪魔だから
ネットストーカー君にそんなこと言っても無駄だと思うけどねw 俺が炎上させているのではない。 炎上するようなことを書くあいつが悪いのだ、 ってな具合の超「前向キング」な思考をするのがネットストーカー諸氏だからw
前向キングってなに?
いまきた俺でもわかるように三行でまとめて
読むだけ 時間の 無駄
M V P
511 :
名無しさん@そうだ選挙に行こう :2010/07/10(土) 21:10:04
あるクラス内で記述する関数の宣言に、以下の規約を 設けようと思う。 このクラス内に記述する関数は、すべて、 string型の引数をもち、string型の値を返す。 C#の言語仕様上で、そういう規約を強制させるような 仕組みは設けられるだろうか?
むり
インターフェイスでやる(拡張された分についてはどうしようもない)か、 属性やらリフレクションやらで実行時に検査、かなぁ。
そもそも何故そんな規約を設けたいのか分からんけど リフレクションでアセンブリ読み込んで規約違反がないかチェックするツールでも作ったらいいんじゃね。 ビルド後イベントで自動実行するようにしとけば完璧。
FxCopでカスタムルール作れば
ある晴れた昼下がり 市場へ続く道…(T_T)
これまでにYahoo等のアカウントに HTMLDoc = objeBrowser.Document を使用して自動ログインするツールを作っていたのですが、 ID・PASSの入力フォームをJavaScrioptでページロード時に 生成されているページの場合には自動でログインさせる事が出来ません。 どうすれば良いのでしょうか?
何かとコーディング規約を制定したがる人が多いが大抵は徒労に終わる。
519 :
名無しさん@そうだ選挙に行こう :2010/07/11(日) 08:27:20
POSTしてクッキー保存とかできないの?
ControlクラスのDoubleBufferedをtrueにし、 Paintイベントで同じ範囲をFillRect(赤)→FillRect(白)とした場合、一瞬赤色が見えるのは何故なのでしょうか。 Paintイベントで引数に渡ってくるGraphicsオブジェクトは2次バッファの物では無いの?
>>518 そして中途半端に守ってるのと守ってないのがでてくるせいで
StrHogehoge と Hogehoge と HogehogeString が混在する現場になるんだよな。
Dictionary<,>.GetValueOrDefaultがほしい TryGetValueはなんか思考を中断される
>>522 レベルの低い質問者は初心者スレに行け!
マジウザイ
>>522 非ジェネリックのIDictionaryだとインデクサが例外投げずにnull返すけど、
それもなんだかなぁって感じだしな
>>523 その程度の汎用的でメジャーな機能くらいフレームワークで用意しろってことじゃないのか
似たようなものだと、ParseOrDefaultとかも用意して欲しいかな
ParseOrDefaultなんかいらないよ
527 :
名無しさん@そうだ選挙に行こう :2010/07/11(日) 20:17:14
自分で拡張メソッド書けば。標準では不要。
TryParse はいちいち out 用の変数用意しなきゃいけないのがめんどくせえ
Parseで例外が投げられるよりましだろ
確実に例外が投げられないことがわかっているならParse使えばいいよ
>>520 フォームの DoubleBuffered を true にして、
Paintイベントに以下を書いたら赤は見えなかったよ
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.FillRectangle(Brushes.Red, e.ClipRectangle);
g.FillRectangle(Brushes.White, e.ClipRectangle);
}
引数にIDictionary渡す時は何が適切なの? IList系だとparams 配列 みたいなのが定番だけどIDictionaryはそのまま参照型のまま渡すの?
普通IListはIListのまま渡す IListとparamsがどう関係あるのか知らないけどparams引数はかなりレア IDictionaryはあまり使わない
>>534 そなの?
前、MSの中の人にきいたらIList系は配列型で渡して、params可能ならつける方がいいと言われたよ。
.Netのクラスライブラリもそのポリシーで設計されてるみたい。
今はその人と連絡とれないからIDictionaryはどうなのかと思ったんだけど…。
>>531 日付のカルチャ情報は国が違うだけでなく、日付表示を和暦にしたとかだけで影響を受ける場合があるので常に明示的に指定したほうがいいよ。
数値も小数点がカンマという国が結構あるので気をつけたほうがいいし。
んなこたー知ってる。
>>531 の問題は、そういう話じゃない。
class myClass{ int a; public myClass(int num){ a = num; } } class myClass2{ [System.Xml.Serialization.XmlArrayItem(typeof(myClass))] ArrayList array; public myClass2(){ array = new ArrayList(); array.add(new myClass(0)); array.add(new myClass(1)); array.add(new myClass2)); } public void saveXML(){ //XMLファイルに保存する System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeofmyClass2); System.IO.FileStream fs = new System.IO.FileStream(@"c:\abc.xml", System.IO.FileMode.Create); //エラーが発生する serializer.Serialize(fs, this); //閉じる fs.Close(); } } といった感じにプログラムを書いたのですが これを逆シリアル化するさいにクラス内にpublic void loadXML()という関数を作って arrayの中にデータを入れたいのですがどうやってやればいいんでしょうか・・・。 myClass2としてロードすればできるんですがそうするとクラス内に作れないしで・・・。
>>534 IList は、メソッドの中で Add とか呼ばれちゃう可能性あるからなぁ。
それを意図しない場合は IEnumerable の方がいいかと。
>>535 今思えば、params は配列型じゃなくて IEnumerable<T> にしてた方がよかったと思うけどね。
まあ、1.0 の頃と今では IEnumerable の地位が大分変ってるんでしょうがないけど。
>>535 クラス作成して配列で渡すのが慣わし。
例としてEventArgs等がある。
>>539 なるへそ。
オライリーなんかの本だとそうしてるね。
>>540 ふむふむ、イミュータブルなクラスでやり取りする事になるのか。
UDPでTCPを模倣してみたがやっぱこういう処理はC#じゃ遅すぎるな
ネットワークの処理が遅いとか実装が糞なだけだろ。
あ、普通にロードしたのをキャストした後にほしい部分だけとりだせばおkでしたね・・・。
params付けた方がいいというのは全ての要素をその場で手渡しするような使い方を意図している場合の話だろ。 例えばXElementのコンストラクタはparamだけどそれはコードに階層構造をベタ書きするため。 元からあるリストを渡すためのメソッドならparams付ける意味ないでしょ。
だからベタ書き出来るように出来る事ならparamsつけましょって事でしょ。 付けたところで困る事はないしさ。
C#が遅すぎるんならSilverlight動画アドインなんて出来るわけないよな。
string.Formatで「{0}以上{1}以下」みたいな文字を表示させるときに、 {0}や{1}を表示させない場合は「以上」「以下」も一緒に表示させなくしたい。 色々試してたら↓のコードが上手く行ったんだけど、 この方法ってアリ? たまたま上手く行ってるだけ? public static void Main() { Console.WriteLine(string.Format("{0}{0:以上}{1}{1:以下}", null, null)); Console.WriteLine(string.Format("{0}{0:以上}{1}{1:以下}", 100, null)); Console.WriteLine(string.Format("{0}{0:以上}{1}{1:以下}", 100, 200)); Console.WriteLine(string.Format("{0}{0:以上}{1}{1:以下}", null, 200)); } >100以上 >100以上200以下 >200以下
>>548 Silverlightプラグインはほとんどネイティブコードだ
.NETをスクリプティングに使ってるだけで下層のメディア処理はネイティブコードに丸投げ
>>549 そういう仕様じゃなかったっけ
そうなの?マルチプラットフォームって聞いてたから。
移植するときはネイティブコード部分を入れ替えるだけで済むから その上で動くマネージコードはマルチプラットフォームだよという意味
554 :
デフォルトの名無しさん :2010/07/12(月) 00:43:01
すみません。自分で関数を作りました。もし、戻り値をint型とするとき 成功したら0を返すのか1を返すのかで迷っています。 if文の条件判定でその関数を使う場合1を返したほうがいいですし、 なんかC言語のmain関数なんかは、正常終了の場合、0を返します。 どっちがいいのでしょうか?bool型を使うと簡単なのはわかりますが、int型を戻り値とする場合は どちらのほうが的確でしょうか?
どっちでもいいよ。
初期値に0を持たせるのが普通。 その関数で正常終了と判定した後にどうなるかで変わるんじゃないかな。 知らんけど。
成功失敗にint型とか仕事なら首に出来る仕様だな。
C# なら void にして、失敗なら、例外を投げる。
列挙型を返すのは?
さあ
もう S_OK でいいよ
成功か失敗理由かでいいよ
うん
564 :
554 :2010/07/12(月) 01:37:57
みなさん、どうもありがとうございます。 C言語の文字列操作関係の関数は成功すると0を返すみたいなので、それにならいます(><;) いろいろと私のせいで議論してくれたみたいで、ありがとうございました(><;)
565 :
デフォルトの名無しさん :2010/07/12(月) 01:42:36
うぜええええ(><;)
なんでこんなレベル低いやつがこっちで質問してんだ
>>554 C# で書くんなら絶対 bool にしろ。
C 言語とかとの相互運用目的なんだったら、非 0 が true。
main 関数とかの戻り値はあれ、エラーコードなのよ。
HasError == false だから 0。
568 :
554 :2010/07/12(月) 02:10:52
>>567 そうなんですね。非0がtrueの方がいいんですね。じゃあ、書き直します。
基本はbool でプログラムしてるんですが、ちょっとしゃれでC言語風に書いてみたいなあと思いまして・・
みなさん、スレ汚しすみません。初心者スレで聞けばよかったです。
>>568 C言語は論理式で非0をtrueと扱う言語だから。
C#とかみたいにboolが用意されてる言語ならboolを使うべき。
おい馬鹿やめろ
うわなにをする(><;)
>if文の条件判定でその関数を使う場合1を返したほうがいいですし、 if(func()) return; /* エラー検出して強制終了とかの場合こうしねえか? */
フォームアプリケーションで、ボタンを配置して そこにフォーカスをあてた状態でリターンキーを押すのですが、 ボタンをおせません。マウスでクリックしたときのような アニメーションも発生しません。 ボタンを押せるようにするにはどうすればいいでしょうか?
そういう風に作ればいい
C#2010のコード自動調整(自動でタブを追加したり switch文を改行したりする機能)って有効にしたまま使ってる?
オートフォーマット切るとか考えたこともないわ コードのフォーマットにこだわって手修正したりする奴は迷惑なだけ
デフォの括弧の位置だけは気に入らないけど。。。デフォのままで使ってる。
そういや全てのソースを整形するにはどーすんの?
返り値をboolで返すのも、IsXXXみたいな十分に明示的なネーミングのメソッドの場合は除くとして、 一般にはうんこだとされてる手法だと思うけど.... そんな程度の人が偉そうに命令口調で講釈垂れてるんだから嫌になるな
> 一般にはうんこだとされてる手法だと思うけど.... 思わない
まあ、馬鹿な君ならそうでしょうとも
一般に続く名詞はなんだろうな
たとえばTryParseは成功したらTrue、失敗したらFalseだけど
>>580 の命名規則にしたがってないからうんこメソッドだな
Tell, Don't Ask原理主義者か?何事もほどほどに。
最近だとHashSet<T>.Addは要素が重複してても例外を投げずにfalseを返す
既にあるVC#プロジェクトでlinq-to-xmlを使いたく、まず最初に using System.Xml.Linq; と宣言を追加しただけの状態でコンパイルしてみたのですが、 型または名前空間名 'Linq' は名前空間 'System.Xml' に存在しません。アセンブリ参照が不足しています。 というエラーがでるのですが、どうすれば解決できるのですか?
System.Linq.Xml.Linq.dllを参照設定に追加する ターゲットフレームワークは.NET3.5か.NET4に設定する必要がある
あきらめろ
>>588 ありがとうございます。
対象のフレームワークは、.NerFramework3.5でした。
System.Linq.Xml.Linq.dllの参照設定とはどのようにやるのですか?
ねーねー。なんで初心者スレ行かないの?
ソリューションエクスプローラで参照設定を右クリックして参照の追加を選ぶ .NETタブのSystem.Linq.Xml.dllを選んでOK LINQ to XMLってちょっと癖があって結構難しいよ? ちゃんとわかってる人のための便利なオモチャって感じ
ちゃんとわかってる人のための便利なオモチャって感じだね
>>592 おお!できました!
ありがとうございました!
いえいえどういたしまして
File.Replaceってsoruceとdestinationが同じドライブでないとダメなようだけど、 こんな使いにくい制限をわざわざ設けてる理由って何なんだろう。 ファイルを上書き保存する時なんかに、作業ディレクトリに一旦一時ファイルを 作ってから元のファイルを置き換える用途を当然想定してるんだと思ってたが、 こんな制限があったらこういう使い方できないよね。
その用途ならMoveでもCopyでもいいだろ
馬鹿っぽい(たぶん「ぽい」ではないんだろうが)物言い....
>>597 物理的にファイル動かさなくて済むからでしょ。
>>600 それは事実としては正しいけど、
それって
>>597 みたいな制限を正当化する理由になるかね?
602 :
598 :2010/07/13(火) 21:16:23
ファイルシステム上のエントリの参照先を変更するだけなんだから 当然ファイルの実体は全部同じボリューム上にある必要があるだろ
>>602 言ってる意味分かってる?
だから、そういうシステムの都合があるにせよ、
そのシステムの都合をFile.Replaceに「押し付ける」理由をお聞きしてるわけですが。
>>603 MSに聞けとしか。
想像だけどアトミックな操作に使ってくれ(そしてそれは物理ボリュームが別だと無理)ってことなんじゃないの?
同じディレクトリ内の作業でバックアップファイル作るために使うとかさ。
それ以外は Move とか Copy とか使えってことなんじゃないのかね。
605 :
598 :2010/07/13(火) 21:31:06
WIN32のReplaceFileをラップしただけだろっつうか ファイルシステムに依存した機能だからこそアトミック性が保証できるんだろっつうか 逆にファイルシステムの都合に依らないファイル操作なんてありえんのかって話だが
606 :
デフォルトの名無しさん :2010/07/13(火) 21:35:25
なぁ、formの無いプログラムってどうやるん? タスクトレイだけですませたいんだけど。 フォームがないとデザイン画面でnotifyiconとか作れないし。
態度がでかいな
608 :
デフォルトの名無しさん :2010/07/13(火) 21:44:36
あの、すみません。 Formの無いプログラムっていうのは、どうやってつくればよろしいんでしょうか? タスクトレイだけですまたいんです。 フォームがないとVisualStudioのデザイン画面を使い NotifyIconコントロールなどを貼り付けたりすることができません。 よろしければ、教えてもらいたいのですが。すみません。どうぞ、宜しくお願いします。
改行が多いな
あの、すみません。Formの無いプログラムっていうのは、どうやってつくればよろしいんでしょうか?タスクトレイだけですまたいんです。 フォームがないとVisualStudioのデザイン画面を使いNotifyIconコントロールなどを貼り付けたりすることができません。よろしければ、教えてもらいたいのですが。すみません。どうぞ、宜しくお願いします。
611 :
598 :2010/07/13(火) 21:53:03
ノリがいいな
>>604 ただの愚痴だけど、
>>597 みたいな処理を安全に書くのって意外と手間だからさ。
安全っていうのは、例えば仮に何らかの理由でオリジナルのファイルを
作業ディレクトリに作った一時フォルダで置き換えられないとしても、
最低限オリジナルのファイルが失われないことを保証しようと思うと結構面倒。
こういうのこそライブラリで用意されるべきだと思うんだけどな。
すまたin!
今必要だけどないものをウダウダ言ってもムダ その間にソース書いたほうがよっぽど生産的
>>608 notifyIcon.Visible = true;
しといて
Application.Run();
呼ぶだけ。
これでメッセージループが動く。
終わるときは、
Application.Exit();
を呼ぶ。
616 :
608 :2010/07/13(火) 22:03:32
>>615 どうも、ありがとうございます。それだけでできるんですか?
とても助かりました。今からやってみます!
他の人もどうもありがとうございました!
C#の初心者向けで良い本何かありますか? あと、C#のソースをJAVAに移植するとしたら、どんな事に気をつければよいですか?
@ITで十分 本なんていらん どうしてもというなら@ITの本があるからそれ買え
>>616 最小構成サンプル
using System;
using System.Windows.Forms;
namespace nicon {
public class nicon {
System.Windows.Forms.NotifyIcon icon
= new System.Windows.Forms.NotifyIcon();
System.ComponentModel.ComponentResourceManager res
= new System.ComponentModel.ComponentResourceManager(typeof(nicon));
nicon() {
icon.Icon = (System.Drawing.Icon)res.GetObject("nicon");
icon.ContextMenu = new ContextMenu( new MenuItem[] {
new MenuItem("Exit", delegate { Application.Exit(); } )
});
}
[STAThread]
public static void Main(string[] args) {
nicon inst = new nicon();
inst.icon.Visible = true;
Application.Run();
inst.icon.Dispose();
}
}
}
StreamReaderってファイルが無かったりアクセス権がなかったりしたら 例外をスローもせずに完全に固まらないか?
んなこたーない。
おまえアク禁な
>>621 いやなる
Windows7 64bit C:\ルートに存在しないファイル名でStreamReaderやってみそ
StreamWriterの方もだわw
625 :
608 :2010/07/14(水) 00:00:19
>>619 さん。
ぬぁー!どうもありがとうございます。すごい参考になりました!
もう、あとは私の個人的な機能を付加するだけですね(;^_^
個人的な機能もたいしたことがないので、ちょっと追加するだけでよさそうです。
こんなものをパッと書けるなんてすごいですね。
ネットを今、あさってる最中でした。ありがとうございました。ComponentResourceManagerとかすごい参考になります。
627 :
621 :2010/07/14(水) 00:09:35
>>623 Windows7 Ultimate x64 + Visual Studio 2010 Professional
.NET2.0/4.0, x86/x64/AnyCPU, Debug/Release の12通りの組み合わせで試してみたけど、
どの組み合わせでもFileNotFoundExceptionが発生するな。とりあえずソース晒せ。
ちなみに俺はこう書いた。
using (var sr = new StreamReader(@"C:\a.txt"))
{
}
using (StreamReader sr = new StreamReader(@"c:\a.txt")) { String data = sr.ReadToEnd(); } MessageBox.Show("aaa"); 複雑なんでFormLoadにこれを書いて試したがやっぱりメッセージが出てこない
ちなみにVisualStudio2008の.Net2.0 Windows7 64bit Windows7はクリーンインストール後、特にフォルダの権限とかいじってない状態です
>>625 あのさあ・・・初心者スレに行ってくれないかな?
>>628 そりゃc:\a.txtが存在してないならMessageBox.Showが呼び出されることは決して無いだろうが
632 :
621 :2010/07/14(水) 00:47:07
>>628 確かにVS2008でデバッグ実行すると、例外が捕捉されないな。
出力ウィンドウを見る限り例外自体は発生しているし、デバッグなしで実行(Ctrl+F5)すれば
ちゃんと例外ハンドラが働くから、VS2008のデバッガの問題っぽい。
メッセージボックスが表示されないこと自体は
>>631 の言うとおり正常な動作。
とりあえず StreamReader は避けて File.ReadAllLines とか File.ReadAllText を使ったら?
>>532 ああほんとだ、デバッグモードのしとけば何か原因が拾えるという思い込みが逆に命取りだった
普通に実行したら例外が出てるね
なんじゃこりゃ
100ずれてますよ
VS2008のデバッグ実行でも、出力窓には例外が出ているハズ 例外出ても止まったり止まらなかったりするのは割とよくある
P2PソフトをC#で作ってみた DHTを実装して普通に車輪の再発明しても意味がないので 全文検索システムに改造してみた といっても負荷の予想がつかないので小さいメモを放流して 内容から検索するみたいなそんなものを 理論上数百万件のデータが保持出来る 検索はたぶん1つにつき10分程度かもしれない ただの実験ソフトなんだけど、実用的に動いたら応用範囲はかなりあると思うのだけど 誰かテストしませんか?
するする 面白そう
検索に10分?え?
>>637 アップロードとかいろいろしないといけないのでしばらくお待ちください
>>638 遅いかな?まあGoogleみたいなのに比べると遅いけど
ネットじゅうに分散したメモから10分で余すところ無く拾い集めてくるってことだよ
といっても予想だけど、シミュレーションではうまく動いてるけど
実際のネット環境では動くかどうか
目的のデータを保持してるマシンが24時間稼働とは限らないからね
>>577 ,578
そのまま使ってるのかー。
自分も一応そのまま使ってるけど、2010になってから
かなり補正するようになって使いにくくなった気がする。
;か}が入力されたときに調整してるから}を先に書くと
うまく補正されない。癖の問題ではあるけど。
ところで「基本設定」と「上級者設定」ってのがあるけど、
基本設定の場合、手動で追加しないとタブオーダーと
インデント操作はできないの?
P2Pってそれぞれのマシンが落ちててもいいように、自動でキャッシュ持つんじゃないの?
うまく補正されない。痔の問題ではあるけど。 に見えた。
644 :
598 :2010/07/14(水) 11:43:04
>>641 ;}が先に書いてあってもEnter押したらたいがい補正されるだろ?
おお、名前が残っていたがもう不要だな
641がどんなコードの書き方しててどんなオートフォーマットの動作を難儀に感じてるのか全く分からない
>>644 ある程度構文正しければ確かに補正されたと思う。
構文関係は慣れることにします。
>>646 /*〜*/の中に貼り付けすると勝手にインデントする
(これを直すのにインデント操作ボタンが欲しかったけど基本設定では表示されてなかった)
/*で改行すると次の行に*が入る
この辺が特に難儀に感じた。
まあね
すみません、すべてのテキストボックスでエンターが押された時に フォーム内のボタンを押した事と同じイベントを発生させたいのですが これはどうやって実現できますか? また、テキストボックスが10個あるとして そのすべてに同じKeyUpイベントと処理を記述するのは見通しが悪くなると思うのですが これを一カ所にまとめる事はできますか? VB の handle1,handle2 みたいな書き方がしたいのですが ご教示お願いいたします。
>>649 > すみません、すべてのテキストボックスでエンターが押された時に
> フォーム内のボタンを押した事と同じイベントを発生させたいのですが
同じイベントを発生させるんじゃなくて、それぞれのイベントで同じメソッドを呼び出す方向で
> また、テキストボックスが10個あるとして
> そのすべてに同じKeyUpイベントと処理を記述するのは見通しが悪くなると思うのですが
> これを一カ所にまとめる事はできますか?
> VB の handle1,handle2 みたいな書き方がしたいのですが
デザイナでイベントハンドラを既存のに設定する
>>650 さん
ありがとうございます。
さっそく調べてみます。
>>650 さん
>デザイナでイベントハンドラを既存のに設定する
できました!ありがとうございます!
653 :
デフォルトの名無しさん :2010/07/14(水) 14:54:09
ListView を仮想モードにした場合、 項目の選択状態を未選択、または先頭の項目を選択状態にするには、 どうすれば良いでしょうか? SelectedItemsプロパテイでできるかと思いましたが、 仮想モードではエラーとなりました。
ListView.VirtualModeの解説に書いてる
もう一つ質問なんですが^^; C#のコードの記法が if(state) { } とかに自動的になるのが気に入らないんですが デフォルトを if(state){ } にする方法はありますか?
656 :
653 :2010/07/14(水) 15:13:54
>>654 SelectedIndices ですね。
大変失礼しました。ありがとうございます。
>>655 C#の相談というよりVSの使い方だが
[ツール]→[オプション] の中にテキストエディタの設定をするところがある
>>655 オプションのテキストエディタ - C# - 書式設定の中を好きにいじれ
あと初心者用スレもあるから内容に応じて選択しろ
\ / .::::::::::::::::::::::::;;:;;::,ッ、:::::: ) く ホ す \ l ,ッィrj,rf'"'"'" lミ::::::: く れ モ ま Y ,! ミ::::::: ヽ な 以 な `ヽ、 | くミ:::::::: ノ い 外 い |、__ ャー--_ニゞ `i::::,rく か は ``''ー- ゝ、'l  ゙̄´彑,ヾ }::;! ,ヘ.) ! 帰 ゙ソ """"´` 〉 L_ っ / i , /| て r ≡=- 〈´ ,,.._ i 't-'゙ | ,へ ,r┘ ,、 yx=''" `ー{゙ _, -、 ; l レ' ヽr、⌒ヽ' ゙、`--─゙ /! `、 _,,、- ゙、 ー'' / ; `、 -''"_,,、-''" ゙、 /;;' ,' / 、\ -''" / `ー─''ぐ;;;;' ,' ノ // / ヾ_、=ニ゙
うわ−!すみません誤爆です^^;
>>657 >>658 さん ありがとうございました!解決しました!
661 :
デフォルトの名無しさん :2010/07/14(水) 15:53:53
662 :
デフォルトの名無しさん :2010/07/14(水) 18:01:14
663 :
デフォルトの名無しさん :2010/07/14(水) 18:03:58
^^; ←これむかつく
System.IO.Directory.GetDirectories("C:"); System.IO.Directory.GetDirectories("C:\\"); って、結果違うのね。。。 フォルダの時はちゃんと\付けて返してくれるのに、 なぜドライブの時は\を付けてくけないのだ。。。
それより、ドライブのルートと SearchOption.AllDirectories を指定して GetFiles や GetDirectories を使うと落ちるのはどうにかならないものか。 SystemVolumeInformationにアクセスしようとして権限違反で落ちるようなんだけど。
リンクがループしてると無限ループするって書いてあるし、実用的なオプションとは思えない TopDirectoryOnlyで例外ハンドルしながら自分で再帰処理するしかないんじゃ
いくつか教えてください。 ・JapaneseCalendar.Eraから西暦の開始日付を取得したい ・JapaneseCalendar.Eraを"平成"等の文字に変換したい 完全にJapaneseCalendar依存にしたいのでEraをswitch分岐したり 定数で開始日付を固定したくはないのですが出来ますか?
前者はリフレクションでJapaneseCalenderのprivateフィールドを読めば可能。 後者はたぶん無理。
通常の使い方では無理ってことですね・・・。 Parseで変換できるんだから"平成"等の取得くらいは期待してました・・。 ありがとう。
年号の取得はもう一段階上のDateTimeFormatInfoの仕事らしい
あれは動けばいい
673 :
636 :2010/07/14(水) 22:43:55
初期ノードキャッシュ用と本体配布が出来るCGIが使えるサーバが見つからない
GAEは?
GAEは?・・・
>>670 int era = 0;
var culture = new System.Globalization.CultureInfo("ja-JP", true);
culture.DateTimeFormat.Calendar = new System.Globalization.JapaneseCalendar();
var eraName = culture.DateTimeFormat.GetEraName(era);
で取得できるみたい
>>674 面白そうだけどPerl版で普通のhttpリクエストしか実装してないから
GAE専用のアクセスクラスを実装しないといけないので時間が掛かる
679 :
669 :2010/07/14(水) 23:56:43
>>676 そんな方法があったのか。無知を恥じる。
質問でっす windowsフォームアプリケーションでinvokeを使う場合 this.Invoke(〜〜〜 で使えますがフォームを持たないクラスでこうしたい場合はどのようにすればよいのでしょうか? 分かる方、お願いいたします
Invokeの意味わかってんのか?
そーーーゆのいいですから、即答お願いいたします〜〜〜orz
諦める コントロールへの参照がないならControl.Invokeする必要ないし コントロールへの参照があるならそれ使ってInvokeするだけだし
出来ない 意味もわからない馬鹿は出直せ
InvokeA Invoke9
>>681 そっちこそそういうのいいですからw偽物です
では別クラスのスレッドからフォームを操りたい場合はどうすればいいんでしょうか
どうすればも何もそのままだと思うが何が分からんのよ フォームを操るんだからフォームの参照持ってるだろ?
別クラスが引数一つのget_chatというイベントを持っています。 別クラスでは新しいスレッドが作られていてそのスレッド内でイベントを発生させてフォーム側でそのイベントを処理するのですが フォーム側のソースでイベントの引数を受け取ろうとしたら"有効でないスレッド間の操作"となってしまいます。 現在はフォーム側で private void get_chat(string chat) { this.Invoke((MethodInvoker)delegate() { textBox1.Text += chat; textBox1.Text += "\r\n"; }); } として無事chatを受け取れているのですがライブラリとして作っているのでフォーム側でこのようにするのは避けたいわけです。 まだ始めたばかりで説明下手ですみません・・・
イベント駆動にしてその中でInvokeするだけだろ 何がわかんねぇんだ?
今度から初心者スレへ行けよ
691 :
デフォルトの名無しさん :2010/07/15(木) 04:05:11
ChatClass.OnGetChat += EventHander(OnGetChat) private void OnGetChat(Object o, EventArgs e){ textBox1.text += e.chat; } で ClatClass { private RecvThread (){ socket.recv(*****) if(OnGetChat != null){ ここでinvokeしてOnGetChatを呼び出したい } という意味では?}
気持ち悪い実装だな クラスからフォームのメソッド呼び出すとかどんな設計だよ
外部スレッドで発生したイベントは当然フォームではメインスレッドで動かさないといけないのに イベント処理が別スレッドのまま渡されてすべてユーザーがフォームでInvokeしないといけない なんて仕様の方が気持ち悪い、意味分からない、利点が思いつかない 自分も外部クラスでラップしたイベントがいちいちユーザーが使う時にInvokeしないと使えないなんて 無様すぎるから疑問に思ってたけど、これといった解決策が分からないままでいた
Javaを含むあらゆる言語を否定した出したよこいつ…
>>695 ジャバは知らないがMFCとかC++SDKとかイベントループは各フォームが1個づつ持ってて
外部から投げようがメインスレッドで確実に処理される
単に別スレッドのまま呼び出すのはただのコールバックだし
それだったらわざわざEventHandlerなんて意味深なものを用意する意味が分からないんだが
C#やめてC++使えば?
とにかくこいつを初心者スレへ連れて行け
basicはgotoを使うのが当たり前なのに C#は何でgotoを使ったらいけないみたいな風潮なの?気持ち悪っ! とか何とか言い出しそうだなw
多言語と比較は意味ないよねぇー だって、仕様(しょう)がない。。。
ようするに
MFCは旧来のオブジェクト指向言語のイベントは
メインスレッド <- 外部スレッドがポストだったんだけど
JavaをベースにしたC#は
メインスレッド->外部スレッドに関数ポインタ(デリゲート)を渡して呼び出してもらう
にしたからクラスで完結したイベント処理が「不可能」なんだな
やりたくでも出来ないんだw
かっこ悪いのは分かってるけど出来ないんだw
もし無理やりやるとしたら
外部クラスでデリゲートをキューしておいて
メインスレッドのフォームからそれを一括呼び出しする関数を呼び出すみたいな
そういうことしか方法がないのかもしれない
>>698 や
>>699 はそこまで考える頭が無いのは分かってるが
せめてオブジェクトクラスにそういうことをあらかじめやってくれる イベントキューみたいなのを包めて設計して欲しかったな
久しぶりに痛い奴に遭遇した
705 :
デフォルトの名無しさん :2010/07/15(木) 05:27:39
rem dirの出力をクリップボードに取り込む dir | clip rem クリップボードの内容を表示 clip こういうコンソールアプリを実装したい場合、 上下の処理の分岐ってどう書けばいいんですか?
ComboBoxのテキストを編集できないようにする方法を教えてください。
>>688 ISynchronizeInvokeでググれ
708 :
デフォルトの名無しさん :2010/07/15(木) 06:28:20
>>707 rem dirの出力をクリップボードに取り込む
dir | clip
rem クリップボードの内容を表示
clip
こういうコンソールアプリを実装したい場合、
上下の処理の分岐ってどう書けばいいんですか?
710 :
デフォルトの名無しさん :2010/07/15(木) 06:54:15
>>706 ぐぐれ
デザイナーのプロパティの項目を上からみていけ
>>705 PeekConsoleInput関数でいける感じはするけど保証はないな、ドキュメント的に
712 :
636 :2010/07/15(木) 08:36:47
これって結局なんなの? 凄く時間のかかる全文検索だけ? どういう目的で使うの?
>>713 将来的にはこれはまったく別のP2Pシステムの一部になる予定だけど
本当に機能するか実験してる所です。
何か面白い使い方があれば適当にやって下さい。
多少の修正は対応します。
京都府警がアップを始めました
最低でも某有名P2Pみたいにポート開けずに検索出来るようになってからだな
そうだな、暗号化されてるし、誰が書いたか特定するのは不可能だから しかも検索出来るのはその文章のタイトルか内容のヒントを知ってる人だけだから 秘密の情報をやり取りするのとかに使えるかもしれない
そこまでして読みたい文章ってなんだ? んでヒント知ってる者同士ならその間柄でやり取りしたほうがセキュアじゃね? 暗号化つっても通信経路だけで常にオープンなわけだし
スレ違いじゃね?
>>701 デリゲートをキューに入れて、メインスレッドで一括呼び出しって、
それこそ Control.Invoke とか Dispatcher.Invoke がやってる事じゃん。
ネットワークに参加できない
だれも
>>685 に反応しないところを見ると
このスレ30歳以下しかいないんだな
>>721 原因が分からないけどこれのパケットだけ何故かFWに全部はじかれてる
なんでだろう
>>722 今日初めてこのスレに来たから反応する暇も無いが
わかりにくいわw
>>725 さっきルータのポートだけ開けてパソコンのFWで開け忘れてた
今は両方開けたつもりだけどまだ参加できないって言われる
「切断 0/0 受信 0.00bps / 送信0.00 bps 受信 49bytes / 送信 343bytes」って出てる
なんのかんのでこのスレの住人は優しい奴が多い。 オアシス的な場所。
>>726 dataフォルダをまるごと削除してもう一度再起動してもらえますか?
申し訳ない、こればっかりはデバッグ出来ない問題なんで
729 :
670 :2010/07/15(木) 11:58:13
非同期コールバック系処理で同期取るの面倒だからこういうことするのは俺だけじゃないはず Begin〜( delegate() { ThreadPool.Push( delegate() //Invokeのデッドロック回避 { Invoke( (MethodInvoker)delegate() { //メインスレッドで処理 } } } ) ) );
イベントを使った非同期パターンを実装する場合はAsyncOperationを使って UIスレッドでイベントを発生させるのが推奨されてる もちろんフレームワーク側でのサポートが必要(WinFormsやWPFではサポートされてる)
Javaから引越し中ですが、 ArrayList 同士の結合をするには、どうすれば良いのでしょうか?
AddRange それはそれとしてArrayListなんか廃棄してList<T>なりに移行すること
735 :
733 :2010/07/15(木) 16:19:07
>>734 ありがとうございます!
List<T>なんてものもあるのですね。違いを調べて使ってみます。
>>728 おお、dataフォルダ消したら接続できた
ありがとう
>>736 と思ったら今度は例外が出て落ちるようになった
System.Security.Cryptography.CryptographicException はハンドルされませんでした。
Message="データが正しくありません。\r\n"
Source="mscorlib"
StackTrace:
場所 System.Security.Cryptography.CryptographicException.ThrowCryptogaphicException(Int32 hr)
場所 System.Security.Cryptography.Utils._DecryptKey(SafeKeyHandle hPubKey, Byte[] key, Int32 dwFlags)
場所 System.Security.Cryptography.RSACryptoServiceProvider.Decrypt(Byte[] rgb, Boolean fOAEP)
場所 c.a(Byte[] A_0, Byte[] A_1)
場所 c6.a()
場所 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
場所 System.Threading.ThreadHelper.ThreadStart()
InnerException:
例外ぐらいトラップしてロギングしときなよ… お行儀の悪いソフトだな…
DBで管理するメモ帳を作ろうかと思ってます. 入力した文字列に含まれる単語をstring[]などで取得したいのですが いい方法はないですか? //例 今日は学校に行った ⇒ { "今日","学校","行った"} ("は","に")が入ってもかまわないです 変換キーを押したときに,IMEで再変換時にでる下線部ごとにstring[]を作ってくれるとありがたいのですが, ググってもIME周辺の処理がいまいち分かりません 回答求む
形態素解析でぐぐれ
Graphics.DrawLineで画面外の滅茶苦茶な数値を入れるとちゃんとエラーも出さずに描画してくれるみたいだけど、 描画する線が明らかに全くない場合は自前でDrawLineを呼び出さないように弾いちゃった方が早い? それとも自前でコードを書かなくてもDrawLine内で同コストで弾いてくれる?
1ドットずつ判定するから長い線じゃなければ自分で判定して弾かなくてもいいよ
スケーリングやトランスフォームも含めてGraphicsにお任せすることもあるけど、 そんなとき自前で判定してたらメリット半減だよね。
お前がやれ
ちょっと昔のドロー系のアルゴリズムを書いてある本なら必ず掲載されてたなw
>Graphics.DrawLineで画面外の滅茶苦茶な数値を入れるとちゃんとエラーも出さずに描画してくれるみたいだけど、 こんなのは昔のN88BASICのline命令から普通にできた話 仮想スクリーンだとか言葉は違うけど 指定したエリア(カメラの範囲や表示可能領域)から外れた場合は 処理しないってのはまあ大体実装されてる機能だよ
.netに環境も糞もないだろ…
と思ったら古いソースといつのまにかごっちゃになってた 修正します
赦します
N88BASICにクリッピングなんて気の利いた機能あったっけな。
MS系BASICにそんなのなかった気がしたが....
まあ、
>>750 が勝手に熱くなってるけど
>>743 が聞いてるのはべつにそんなことじゃ
ないはずなんだがなw
今日は蒸すね(´・ω・`;)ふぅ
>>754 できたよ
当時は若かったので仮想スクリーンが何を意味するかわからなかったけど
現在のGPUでは当たり前にやってるような機能が当時からあったんだなあ
と近年3D関連やってみて思った
実環境は想像よりパケットロスが大きいことが分かったのでちょっとプロトコル変えます
てかX68Kみたいに仮想VRAM上の特定領域を表示したりしてるわけじゃなく 単に座標が実表示領域を超えててもエラーにならないってだけだろ?
>>757 直線のクリッピングなんて中学の数学の知識で出来るけどね。
んな大げさな話でもない。
まあね。
Windowsで線を描く場合は、そんなに単純じゃないと思う。 おそらく1ドットずつウィンドウ内かどうか判定して描画している。
>おそらく1ドットずつウィンドウ内かどうか判定して描画している。
今時のOSがそんな間抜けな設計のわけねえだろ。 ちゃんと計算されてる。角度とか。
角度?
シャア専板だかで昔流行ったギャグだ
>>764 と言うと、ウィンドウの重ね合わせの描画処理ってどうやってると思います?
まさか下のウィンドウから順番に描画していき、最後に画面に表示ってのはないと思うけど。
初心者スレへGo!
そんなこと言わずに教えてくれ。 正式にどうやっているか知らないので。
初心者スレに凄いのいるからそいつに聞けよ
あるプロジェクトから別のプロジェクトのコントロールを使いたいのですが、 ツールボックスのコントロールが有効にならないため、使用できません。 自作していない他のコントロールは全て有効になっており、 試しにデザイナーを使わずに動的にコードでコントロールを生成したところ、 正常に動作しました。 これはどう言ったことが考えられますでしょうか?
772 :
771 :2010/07/16(金) 12:18:19
追記ですが、 自作コントロールを作成したプロジェクト内のフォームにそのコントロールを貼り付け、 それをデザイナーでコピーして、 別のプロジェクトのフォームに貼り付けることはできました。
名前空間が違うんでねーの
774 :
771 :2010/07/16(金) 13:21:24
名前空間が違う場合、動的コードによる生成やデザインでコピペ時にエラー出ませんかね?
>>771 おれ自分専用のユーザーコントロール用プロジェクトを別に作ってるよ。
XAMLでちゃんとネームスペース指定してやれば問題なくつかえています。
dllにしてツールボックスでアイテムの追加なんていう・・・ことじゃないよね?
777 :
771 :2010/07/16(金) 13:58:38
解決しました。 原因は、2つのプロジェクトのアセンブリ名が同じで、 かつ出力の種類が「Windowsアプリケーション」だったため、 リビルドすると、片方のプロジェクトにEXEが上書きされていたためです。 お恥ずかしい限りです。 皆様のご意見、試行錯誤の参考になりました。ありがとうございます。
OpenFileDialogで一覧側にフォーカス当てた状態で開きたい どうすればいい?
>>767 今のWindowsではそれぞれのウィンドウが自分自身をバッファに描いたら
それをハードウェアの機能使って重ねてるだけでしょ
>>779 ウィンドウの数が増えた場合、遅くなるってこと?
ハードウェア様の力をナメちゃいかん 半透明+枠のぼかし+影効果付きで画像を数十枚描画するくらい屁でもない
782 :
デフォルトの名無しさん :2010/07/16(金) 18:31:10
>>780 おそくならねえよw
この辺の2Dアクセラレーターはかなり前から積んでるだろうw
最近は2Dアクセラレーターの代わりに3D処理部分を使ってるみたいだが
>>781 >>782 重くならない理由になってないけど。
結論から言うと、
10枚のウィンドウががぴったり重ってる時に一番下のウィンドウに線を描いた場合、
ハードだろうがソフトだろうが、
10枚全部描画しなおすなんてことはしない。
1000枚ウィンドウが重なっていても、スピードは落ちない。
>>783 だからその辺は奥行きを見て見えてる部分に関しては
クリッピングなどでエリア内だけ描画するようにしてるだよ
この辺の処理効率はある意味当たり前に実装されてる
最近はいったんウィンドウの中身をバッファに描くから 奥のウィンドウだけが更新されようが関係ない 最後の重ね合わせの段階では単なる画像描画だからハードの力でリアルタイムに行える
>>778 大まかな方針としては、Application.EnterThreadModalでダイアログのウィンドウハンドルを
検索して適当な子ウィンドウに適当なメッセージを送ればいいんだろう。
ただこのやり方は恐らくXPスタイルのダイアログに対してしか使えないけどね。
うひ
>>785 だよね。ダブルバッファの理屈でいくと見えてようが見えてまいが描画してるよな。
重ねあわせは一々計算の必要のない単純なメモリコピーだからちょっとぐらい増えようと速度かわらんし。
ひょ
>>788 ダブルバッファには違いがないが、
下から全てのウィンドウをバッファに描いていき、最後にコピーとかはしないよ。
今から15年以上前のPCでも実現できていたことを考えてみて。
例えばCPUが80286、12MHz、メモリが1MBで、同じことができるだろうか?
いいかげんスレ違い
ごめんなさい。
以下を実行すると、どこかでたまに文字化けするのですが、仕方がないのでしょうか? もしかして円マークが原因でしょうか? for (int i = 0; i < 200; i++) { Console.WriteLine(@"C:\欲があるのは良くない"); }
まったく文字化けしないですよ。 XP SP3+VC#EE2010
プログラミングに限らんけど、ダメな人って妙なところを横着して端折ろうとするよな。
>>793 なんか、絶対にこのコードで本当に「問題」が再現するか確認してないだろw
フォームアプリだと文字化けした。 コンソールアプリだとしなかった。 原因はわからなかった。 XP SP3 Visual C# 2010 Express
797 :
デフォルトの名無しさん :2010/07/17(土) 03:25:09
cygwinでcコード書いてるときは日本語を使うときに 特定の文字は問題がおきるんだがその辺の関係かね? @をつけると"そのまま"扱われるらしいが内部的に どういう文字コード体系で扱われるのかまでは 気にしたことがなかったな
richTextBoxのScrollBarsをForcedBothにしてもWidth, Heightを変更するとスクロールバーが消滅してしまい 以後表示できなくなってしまいます。 大きさ変更後も強制的にスクロールバーを表示し続けるにはどうすればいいんでしょうか
あんまり試す気はないけどこういうのもやってみてくれ for (int i = 0; i < 200; i++) { Console.WriteLine(@"C:\\欲があるのは良くない"); }
800 :
794 :2010/07/17(土) 03:38:01
フォームにして、TextBoxのMultiLineに出力しても、文字化けしないが。。。 バク出るコードの最小のコードをうぷしてよ。検証のしようがない。
801 :
デフォルトの名無しさん :2010/07/17(土) 03:38:21
802 :
デフォルトの名無しさん :2010/07/17(土) 03:47:53
というかあれだな・・・
@とると
>>793 のコードはビルドできないんだよな
どんな開発環境でやってそうなるんだ
もっと詳しい情報だせよ
それともあれか?また後だしでこんなこともわからないのかよ
と書き込む痛い子か?
うん。なるよ。
VIPでやれ
806 :
793 :2010/07/17(土) 09:08:40
>>794 >>800 最小のコードがあれなんです。もちろん検証済みです。
ちなみに、
Console.SetOut()で、ファイル出力した場合は文字化けしません。
デバッグ時にコンソールに出力した場合のみ出ます。
>>796 文字化けしましたか。ありがとうございます。
>>797 特定の文字の場合は常に文字化けすると思いますが、
「たまに」文字化けしてしまうのです。
>>799 「\\」がそのまま「\\」になってしまいますが、文字化けはしませんでした。
円マークを抜くと、文字化けしなくなります。
>>802 環境は、
Vista64bit SP2 C# 2008 Express
Microsoft Visual Studio 2008 Version 9.0.30729.1 SP
Microsoft .NET Framework Version 3.5 SP1
です。
>>790 全部コピーじゃなくて単純な矩形領域のコピー可否判断をしている。
線引くときに1ドットづつなんて判断なんかしねーよ。良く考えろ。
80286でそんなすっとろい処理考えてたら首になるわ。
808 :
793 :2010/07/17(土) 09:14:55
あと、for (int i = 0; i < 200; i++) としていますが、 200行のうちのどこかで文字化けします。
>>808 アドバイスはできないけど、その文字化けしてる画面の画像、
どこかにアップロードしてみて
どんなのか見てみたい
811 :
デフォルトの名無しさん :2010/07/17(土) 10:53:57
>>809 線引いたりするのはCPUだからアルゴリズム的に工夫しないとしんどい
DWMによる各ウィンドウのバッファの最終合成はすべてGPUで行われるから
すべてのピクセルに対してエフェクトをかけつつ毎フレーム全コピーとか余裕
OSのバージョンでも違うしなあ N88BASICというかPC9801のころはLSIがVRAMに対して引いてたので 今のGPUのように勝手にエリア内判定してくれてたのかな・・ もう忘れちゃったわw
813 :
793 :2010/07/17(土) 10:57:48
>>810 少し抜粋しましたが、以下のように、たまに出ます。200回のうち1、2回。
C:\欲があるのは良くない
C:\欲があるのは良くな・「
C:\欲があるのは良くない
C:\欲があるのは・ヌくない
C:\欲があるのは良くない
そろそろ、あきらめます。
>>796 さんも文字化けしてるのが気になりますが。
VS2008で試してみたら同じように化けた @"AAAああああああああああ"でも同様 先頭の半角文字の個数が奇数の時に発生するみたい
>>814 コンソールのほうで?
まあwindowsも内部はucsで2バイト管理だけどファイルはS-jisとか
いびつな状態だからなあ
どこかで変換して・・・とかあるのかもしれん
> 欲があるのは良くない ( ^ゎ^)
>>813 それ、ファイルにリダイレクトしても化けてるの?
818 :
813 :2010/07/17(土) 11:34:22
コンソールアプリやファイル出力だと発生しないっぽい おかしくなるのはVSの出力ペイン上だけかな
>>818 あ、そこのことだったのね、確認したらうちでも化けたよ
何なんだろうね
>>812 PC-9801のGDCには線を引く機能はあったけど
N88-BASICではその機能は使わずにCPUで引いてた
>>811 TextboxはOSが勝手に再描画してくれるけど、Lineとかは自分で再描画する必要がある。
この違いを考えてみてくれ。
そりゃコントロール側で勝手に再描画してくれてるだけだw もしコモンコントロールとしてLineコントロールがあれば当然自動で再描画されるだろうな 文字列だってTextOut関数とか使って描画したら自分で再描画しないといけない
つまり、各ウィンドウのバッファには、何もないってことでは? あれば勝手にマージされて表示されるはず。
毎回クリアされるだけでしょ
クリアされるのではなく、元々ウィンドウ毎のバッファがないのが正しい。 テキストボックスとかはオブジェクトとして持ってるからOS側で再描画可能だが、 Lineなどで描いた情報はバッファにないので、消える。
TextBoxにバッファなどございません
描画用のバッファではなく、テキストボックスをオブジェクトとして持っている。 OSはそれを描画している。 つまり、ウィンドウのサイズが1024*768だろうが、2048*1536だろうが、 そのウィンドウの再描画に必要なバッファサイズは変わらないと言うこと。 ちょっと語弊あり。
どこまでがOSの機能かの境界線にはひょっとしたら曖昧さがあるのかも知れんが、 少なくともコントロール(コモンコントロール含む)の機能をOS側だと見做すプログラマは まずいないと思うけど..... しかし、なんでこんな低レベルかつどうでもいい話になってんの?
プログラマはマジ死ね
この板も全滅だな・・・
こんなXP以前とVista以降をごっちゃにした話なんぞどうでもいいわ
しかし、馬鹿はある意味しょうがないけど死ねだの氏ねだのガキみたな言葉遣いが 平気でできる幼稚クンは何か嫌だね。
836 :
デフォルトの名無しさん :2010/07/17(土) 18:34:13
年取った人って「幼稚クン」とか「〜してネ」とか 変なところでカタカナ使うよな なんで?
>>836 マレジスするとカナカタの変な使い方が80年代から90年代初頭にかけて流行った
戦後まもなくはカタカナがはやったからな。 老害ははやくしねよ。
>>837-838 適当なこと言うなよ。
どっちもない。
戦前は片仮名の仮名遣いで教育を受けた世代がいたのは事実だが、
そんな世代はもう80以上だし、別に流行ったわけでもない
すみません。何故かツールボックスに自殺クラスが追加されません`;ω;´ 手順は、プロジェクトのコンテクストメニューから[追加]->[クラス...]の後コードを書いてビルドでツールボックスに追加されるんですよね?
>>843 おまえが自殺して人生おわったほうがはやい。
自殺を教唆する事は犯罪です`;ω;´
>>843 が
>>844 のカキコを見たきっかけで自殺して初めて犯罪成立だが、
書いただけではまだ成立していない。
つまり完全犯罪未遂 - Attempted Perfect Crime -
勘違いする奴がいるといけないで一応突っ込んどくけど、 そんなものが犯罪になるわけがないだろ。
お前ら面白すぎるぞ! とりあえずC#を難読化するフリーのツールを教えてくれ。NanDoku以外で。
VisualStudioExpressEdition (ビルド時に暗号化オプションをつける)
>>851 マジカ!それだけでよかったんか・・・。
ところで.Netが吐くバイナリってバイナリエディタでコードを改変されたとして、
そのアセンブリが正常か異常かはローダーが判断してくれたりするのかな?
著名しとくといい
ちょ、ちょめい?w
アセンブリのところに署名するだけでよかとですか?
いろんな方法があると思うけど URL を指定して HTML を取得する 一番短く書けるコードでどんなのでしょうか?
初心者スレで聞けよ
858 :
デフォルトの名無しさん :2010/07/17(土) 22:27:49
ググれないなら諦めた方がいい
とりあえず859は論外
まあ確かに取得できるけどさ、後続のコードで利用できねえだろw
まあ、このぐらいかねえ。
string html;
using (var wc = new System.Net.WebClient())
{
wc.Encoding = System.Text.Encoding.UTF8; // 必要に応じて
try
{
html = wc.DownloadString("
http://www.hoge.jp ");
}
catch (System.Net.WebException)
{
html = "";
}
}
863 :
デフォルトの名無しさん :2010/07/17(土) 23:08:52
教えてください。 CAD風のグラフィックってOnPaint内に記述するのが普通? それともPictureBoxなどのコントロールのイベントハンドラ 内でRefreshしまくりが普通? ダブルバッファリングを使うことを前提として
どっちでも一緒 CADみたいなの作るんだったらどうせ描画処理とか内部の処理とかものすごく複雑になるんだから そんないつでも変更できるようなところどうでもいい
一緒とは思わんけどな....
>>863 揚げ足とって悪いけど、その2つって対立しないよ。
Refreshするってことは、自動的にOnPaintで描画することを意味する。
OnPaintが発生しないコントロール以外では、普通はあえてCreateGraphics を使う
必要はないと思う。
866 :
デフォルトの名無しさん :2010/07/17(土) 23:30:33
そうですか。C#始めたばっかりなのでその辺がよくわかってないです。 OnPaint使う方がMFCに似てる気がしますが。
イベントとOn○○の違いのことを言ってるのか? C++わかるんだったら、イベントは関数ポインタの配列みたいなもので On○○は(オーバーライドされない限り)○○イベントに登録された関数ポインタを呼んでると考えとけばいい
statusStrip.ItemsにAddしたToolStripStatusLabelのオブジェクトに、Text = "hogehoge";しても表示がhogehogeにならない
869 :
デフォルトの名無しさん :2010/07/18(日) 02:23:58
今、Cやってるんだけど、ちゃんと繋がって覚えられる?
努力次第じゃないかな
872 :
デフォルトの名無しさん :2010/07/18(日) 02:52:53
>>871 musk
GUI系のイメージあるから
難しいのかと。。。
おすすめの書籍とかサイトある?
873 :
デフォルトの名無しさん :2010/07/18(日) 02:59:34
>>872 お題がほしいなら2chの専ブラでもやってみれば?
作り方を解説したブログとかあったはずだし
オープンソースでソース公開してるツインテールだっけ?
もあるし
C#は勉強するのは楽よ
874 :
デフォルトの名無しさん :2010/07/18(日) 03:03:27
875 :
デフォルトの名無しさん :2010/07/18(日) 03:09:11
C終わったらって何をもって「終わった」とするんだろうな
876 :
デフォルトの名無しさん :2010/07/18(日) 03:10:43
道具を理解するのに終わりも糞もないけどなw それに道具で積み上げた他人の作った部品を理解するには 時間はたくさんいるし
ヘミ猫になれば終わり
878 :
デフォルトの名無しさん :2010/07/18(日) 03:13:27
とりあえず入門書の知識全部入れて 構想のプログラムつくれたら、変わるつもり
やたらageてる子ってなんなの?
smtpclientでメールを送ろうとしてるのですが、CCやBCCが空白のときに エラーが出てしまいます。 このエラーを回避する方法を教えてください。 エラー内容はパラメータ'address'を空の文字列にすることは出来ません コードの一部は以下のようになってます。 public static bool SendMail(string strFrom,string strTo, string strCc,string strBcc,string strSub,string strBody ) { System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage(); mailMessage.From = new System.Net.Mail.MailAddress(strFrom); mailMessage.To.Add(new System.Net.Mail.MailAddress(strTo)); mailMessage.CC.Add(new System.Net.Mail.MailAddress(strCc)); mailMessage.Bcc.Add(new System.Net.Mail.MailAddress(strBcc)); mailMessage.Subject = strSub; mailMessage.Body = strBody; System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient(); smtpClient.Send(mailMessage); CCやBCCが空のときは設定されないようにすればいいと思うのですが、 方法が分からないので教えてください。
if strXXX != 空白 then mailMes(ry
882 :
880 :2010/07/18(日) 03:56:04
textboxから値を受け取って各変数に格納してたのですが、 textboxが空でも変数はnullじゃなかったようで、 if(strTo != null) { 処理 } では、無理でした。 ただ、strXXX.lengthで0のとき処理をしないようにしたら出来ました!
誰がnullと比較しろと言った
884 :
880 :2010/07/18(日) 04:06:26
すいません。 元々!=nullでやってて、それで上手くいかなくて質問させていただきました。 空白で比較するというのを見てlengthを思いつきました。 ありがとうございました。
System.String.IsNullOrEmptyでいいじゃないか
もとMVPで超有名な菊池さんがIsNullOrEmptyは使っちゃだめだ。 s == null || s.Length == 0 と書けば十分だし書くべきって昔言ってた。 理由は忘れた。
じゃあ class MyString : String{ public bool IsNullOrEmpty(){ return s == null || s.Length == 0; } } って書くわ。
IsNullOrEmpty なんてメソッドあったことをはじめてしった・・・
なんでDoubleClickイベントでマウスの座標取得できないの? コントロールのグローバル座標とマウスのグローバル座標で位置を出すしかないの?
マウス以外でも起こりうる高位のイベントだから マウス限定のダブルクリックならMouseDoubleClickを使う
>>886 だれ?菊池さんって。
スマイリーのこと?
いや「走る爆弾娘」の方だよ
895 :
デフォルトの名無しさん :2010/07/18(日) 13:08:14
>>879 いまだにこんなこと言ってる人がいるのかw
化石だな
>>894 エーネッヤカ・ダーヴァナ・パンニャッター
System.IO.StreamReaderでshift_jisを指定しているのですが、 utf-8のファイルも文字化けせずに読み込めてしまいます。 これは指定方法がまずいのでしょうか? private void button1_Click(object sender, EventArgs e) { System.IO.StreamReader reader = new System.IO.StreamReader(@"C:\test.cs", System.Text.Encoding.GetEncoding("shift_jis")); while (reader.EndOfStream == false) { String line = reader.ReadLine(); Console.WriteLine(line); } reader.Close(); }
単に英数字のみのファイルだったとか言うオチだろどうせ
>>898 自動認識できなかった場合、指定したエンコードとなる。
901 :
898 :2010/07/18(日) 15:43:57
>>900 謎がとけました。ありがとうございます。
C#で作った有名なソフトって何がある?
Visual C#
ロマンシング詐欺
Visual C#だな
Visual C#とか
ロマンシング詐欺もそうだったな
ロマンシング詐欺のソースあったよな? 無効化された奴。どこだが知ってたら教えてくれ
Reflectorでとれるじゃん
P2Pの実験のサイトが消されてしまったようだ
911 :
デフォルトの名無しさん :2010/07/19(月) 18:48:04
stringとStringの違いってなんですか
ちがいます
違いはない 実装依存というわけでもなくて、言語仕様で明記されているので絶対に常に同じ 何の意味があるのかは俺も知らん
typedefは混乱を招くからサポートしないといいつつこの有様だよ
>>911 stringはusing Systemしてなくても使える。
Stringはusing SystemしてないとSystem.Stringの形じゃないと使えない。
int の実態は Int32 みたいな感じか。
static メソッド使うときだけ String にしてたわ。型宣言とかは string で。 単なる癖だけど。
そこはInt32の実態がintだろ。
いや、それは、int の実態が Int32でしょ。 実態:実際のありさま。実情。(大辞林)
C#の組み込み型はエイリアスで、intなら using int = System.Int32; に相当するから、Int32の方が実態
Int32:別名 int:本物
ごちゃごちゃうるせえな! int とか strignはC#言語の型なんだよ! Microsoft.NetFrameworkでの言語ではInt32とかStringが定義されているんだよ! たとえば、他のベンダーがC#使おうとすると、IntHogeとかStringHogeとか適当な名前付けて 型をつくるってこともありうるって事だよ!
>>920 一応突っ込んどくけど、なんでわざわざ辞書まで引いて誤用するんだw
意味がわかんないよ。
この場合正しくは「実体」でしょ。
Disposeのあるオブジェクトって、GCが動いてオブジェクトが破棄される段階に入ったらDisposeちゃんと自動で動く?
>>923 でも命名規則でローカル変数はキャメル型。
コンテクストメニューをどこかクリックしてポップアップが消えたらOnPaintが走って消えた部分を補完描画してくれるはずなんだけどなぜか描画されない。 ちゃんと処理のフローが来ているかどうかを確かめるためにOnPaintの中にMessageBox.Show("test");とするとちゃんとダイアログが出てくるし、 何故かダイアログを仕掛けると症状が消える。 どうなってんのwindows7
wpf使え
929ですけどUpdateし忘れてただけでした^^;
マルチラインのテキストボックスで、 文字を枠から5ptほど離して表示したいんですが、設定方法はありますか?
試してないけどmarginやらpaddingやらで設定できないか?
ごめんできないね
>>932 picturebox の上に5pt空けてtextboxを置く
textbox自体、alignをtopにしても 枠と文字の間がちょっと離れてるんですが…… この距離ってどっかで変更できるんですか?
EDITのメッセージにそんなんあった気がする。
[DllImport("User32.DLL")] public static extern int SendMessage(IntPtr hWnd, UInt32 Msg, Int32 wParam, Int32 lParam); const UInt32 EM_SETMARGINS = 0xD3; const Int32 EC_LEFTMARGIN = 1; const Int32 EC_RIGHTMARGIN = 2; public Form1() { InitializeComponent(); SendMessage(textBox1.Handle, EM_SETMARGINS, EC_LEFTMARGIN, 8); } で動いた。
あ、マージンのみ。トップとかはどうするのかな?
940 :
デフォルトの名無しさん :2010/07/20(火) 22:36:07
なんで最近ArrayListとか使えなくなったの
使えなくなったわけじゃないけどジェネリックコレクションが使えるようになったから存在価値が無くなった Silverlightのライブラリでは削除された
ジェネリックじゃないコレクションのメリットって何だろう
string と int みたいなまったく関連性のないクラスをつっこめるとかかねえ それも List<object> で充分なわけなんだけれども。
ジェネリックを扱えない言語でも使える
ToArrayでキャストが入るのが場合によっては嬉しいと思うよ
Hashtableのインデクサは例外を返さないのが違う。
>>945 ごちゃまぜリストから特定型を抽出するくらいしか思いつかない
それもジェネリックのOfTypeとかあるからなぁ・・・
2.0までしか使えない環境ならってことかな
書いた後に気づいた抽出もできないじゃん・・・
>>944 ジェネリックはCLSに入っちゃったから
そういう言語が存在すること自体が間違ってることになる
初心者スレのせいで抽出が拙者に見えて混乱した
なんか質問者と回答の半分くらいのホストが一緒なんだけど自作自演ってことでよろしいか?
よろしいです
955 :
デフォルトの名無しさん :2010/07/21(水) 18:08:58
ワロス
958 :
デフォルトの名無しさん :2010/07/21(水) 22:48:35
throw を使うと例外が起きたとき、その場所にジャンプしてくれて便利なんですが、 Debug.Assert でも同じようにジャンプする方法ないでしょうか?
throw使えばいいじゃんw
>>953 .go.jpが混ざってることについてスルーするとか
引き継いだコード全ての関数にtry〜catch〜が・・・さらにcatchではthrowしてるだけだし・・・(’A` 何か直すのに良い方法ない?
さらにtry..catchをかぶせるw
tryってデバッグの邪魔になるからあんまり使いたくないけど 配布用ソースとかに分けてtry入れるわけにもいかないし あと配布時には例外をどっかに記録したい時にDebug.Writeなんかを使えばいいんだろうけど どこの関数で問題が起こってるかトレースする時にも細かいメッセージを出して確認したいけど これもDebug.Writeするとものすごい量のログが出てくるし どうするのがいいんだろうね? 1.デバッグ時には例外で止まる 2.配布時には例外をログの取るようになる 3.デバッグ時には細かいトレースメッセージを表示させる 4.ソースの修正を必要としないでリリースビルドするだけでこれが切り替わる 以上の条件を備えた方法ってあるのかね?
>>963 もう1つ条件を
プラグマでtryする度に2重記述なんて気持ち悪いソースは作りたくないw
試してないけどこれでどうかね try { throw new Exception(); } catch (Exception ex) { Hoge(ex); // Logging } [Conditional("DEBUG")] private void WhenDebugging(Exception ex) { // Getting trace message throw ex; }
s/Hoge/WhenDebugging/
そもそもリリースビルドだからって例外(もちろんプログラマが想定していない、 つまりバグに起因するもの)で止まらないプログラムって、考え方間違ってると思う。
>>963 1、2、4の意味がよくわからないんだけど、
デバッグ時は例外が起きたらそこで止まるから何もしなくても1は解決で、
その時にエラーの詳細も見れるから3も解決で、
切り替える必要もないから4も解決じゃね?
>>963 とりあえずデバッグ→例外→スローされるときのチェックを入れるで十分だろ。
>>966 リリースビルドで挙動が変わるソースってのは極力避けた方がいい。
デバッグ時のみばかすかログを吐くくらいにしておけ。
>>963 TraceSource使う
欲しい種類のメッセージだけ設定ファイルでフィルタできる
smtpclientでメール送信を行う際に、メールを他のメーラーで参照するために、eml形式で保存をしたいのですが、方法を教えてもらえないでしょうか。
簡単な方法はない C++かなんかで書かれたコンバータのソースコードを拾ってきて BinaryReaderでも使ってC#に移植する
DataGridViewでVirtualModeにした場合、 RowCountに5000と設定した段階で重いのですが、 仕方がないのでしょうか? グリッドサイズを 10 * 10 程度に小さくして、 スクロールされたら、Valueプロパテイを毎回全部書き直すような、 独自の仮想モードを実装して試してみましたが、 これはこれで再描画が重かったです。 DataGridViewのスクロールによる再描画は速いので、 Valueプロパテイ以外を使って値を設定できれば速そうなのですが。
977 :
976 :2010/07/22(木) 20:45:56
自己解決です。AutoSizeRowsModeで行の高さを自動にしてました。。。
>>959 throw と Debug.Assert の区別がつかない人は黙ってようね^^
他のプログラムのウィンドウからマウスを出さないようにしたいんですが、 どういう方法を取ればいいんでしょうか?
WinAPI
>>979 自分のウィンドウじゃなくて、ターゲットが別のプログラムなのかいね?
マウスを動かさない。
そのプログラムを最大化して最前面に出せばいいんじゃね?
984 :
デフォルトの名無しさん :2010/07/23(金) 13:11:03
986 :
984 :
2010/07/23(金) 19:53:31 >>985 一ヵ月後というと2010年4月ですよね?
すみません、上手く検索できないのですが、出来ればURLを教えていただけませんか?