1 :
デフォルトの名無しさん :
2007/01/18(木) 17:55:45
(#゚ー゚) ←これって「C」と「しぃ」を掛けて「しぃ#」だったのか… 気付かなかった…
質問するときに 〜したいのですが、上手くいきません。 〜したときにエラーが出ます。 という書き方はイクナイ。 何も書いてないのと同じ☆ 〜したいのですが、〜で〜が失敗します。 〜したときに〜エラーが出ます。 隠さずくわしくかきましょううううう
>>11 ここ初心者スレじゃないから
そんなのは放置
IDとパスワードを登録してドメインに投げるプログラムについて。 参考になるソースご存知の方はご教授下さい。
ドメインって何のドメイン?
一般的なyahooとかgooとかに自動ログインするプログラムを作りたいんです。 ヘッダを見る限り、アカウントとパスをサーバに投げればログインしたことになってCookieとか返ってきますよね?
Hint: HttpWebRequest CookieContainer
HttpWebRequest CookieContainerは、Cookieを使ってログインするのではないでしょうか? IDとPASSを登録して自動ログイン・・・というのも利用したらいけるんでしょうか?
俺用語禁止 ドメイン サーバにログイン
HTTPの基礎からやり直せ
スミマセン、ちょっと質問なのですが。 あるTextBox内がマウスでクリックされた場合に、クリックされた行全体を選択状態にしたいと考えています。 次のようなものはすぐに思いついたんですが、この他にやるとしたら、文字列検索とかになるのでしょうか? private void textBox1_MouseClick(object sender,MouseEventArgs e) { textBox1.SelectionStart = textBox1.GetFirstCharIndexOfCurrentLine(); textBox1.SelectionLength = textBox1.GetFirstCharIndexFromLine(textBox1.GetLineFromCharIndex(textBox1.GetFirstCharIndexOfCurrentLine())+1) - textBox1.GetFirstCharIndexFromLine(textBox1.GetLineFromCharIndex(textBox1.GetFirstCharIndexOfCurrentLine())) - 1;
質問ですまない。 色々なサイトで「ShellExecuteでverbをpropertiesにして呼び出すとそのファイルのプロパティダイアログが出てくる」と書いてあったので以下のようなコードを書いて実行してみたんだけど、 ComponentModel.Win32Exceptionが発生(この操作に対して指定されたファイルには、アプリケーションが関連付けられていません。)して使えない。 ここはWin32APIをそのまま使うしかないのですか? Process p = new Process(); p.StartInfo.FileName = "(ファイルのパス)"; p.StartInfo.Verb = "properties"; p.Start();
>>20 それのどこに不満がある?それ以上の方法はないと思うけど
まあ、そのままだと最終行で例外落ちしそうだが。
>>20 Homeを押した後、シフト+Endを押すというコード書けば短くなりそうだ
>>22 文字列が無い場合の例外は、一旦"int length"に格納して分岐させて解決させました。
基本的には希望通りなのですが、何とも長ったらしいのでもっといい方法は無いかと思いまして。
あと、やや問題なのはダブルクリックをした際に対応されなくなる(選択範囲が一文字だけになる)事でしょうか。
>>20 の質問の解決法ならそれで十分。
最終的になにがしたいのかわからないから
こっちにはその他の問題なんて想像もつかん。
>>21 そっちのVerbはレジストリにあるやつだけ
Verbsプロパティみれば分かる
画像ファイルを使った時計を作ったんだけどメモリ使用量が凄い タイトルバーに収まるくらい小さいのに15MBくらい消費してる メモリクリーナーを使うと1.5MBになる 表示する用の画像をメンバ変数に持っておいて その画像の一部を毎秒フォームに描画してる タイマーで生成してるのは フォームのGraphics(解放してる)だけ なんでこんなにメモリを消費してるの?
またメモリの話か。 とりあえずVSで初期状態のWindowsフォームアプリ作って見ろ。 なんにもしなくても16MB確保してるから
>>29 作りが悪いから。
いまさらメモリとかいってる段階で学習能力無いからどーせまともな書き方してないんでしょ
d
一番大きいのは、.NET の DLL を使ってるから。 DLL は複数プロセスで同じメモリが共有されるが、 タスクマネージャではそれをプロセスごとに計上する。 あとメモリクリーナの類は使う意味がないぞ。 仮想メモリに追い出すだけだから。
ワーキングセットの内訳を調べるツールはないものか。 プロセスビューワでコミットチャージの内訳ならわかるのだが。
いつの間にIE7正式リリースしてたんだ?
何故このスレで聞く
38 :
デフォルトの名無しさん :2007/01/20(土) 22:34:33
古典的なランダムアクセスファイルをパフォーマンスを犠牲にせずに
実現する方法ってないかな?
つまり、プリミティブな値型(int とかfloatとか)のみをフィールドにもつ構造体sがあるとして、
このsが一次元配列状に数珠繋ぎに記録されるようなファイルの読み書き、
具体的には任意位置からsまたはsの配列として読み書きをしたいんですが。
BitConverter使って構造体とバイト配列を相互変換すればとりあえずの実現はできそうだけど、
これだといかにも効率が悪そうだし。。
この辺とか読むと、.NETでもsの配列のようなものは単純に連続した領域にフィールドの
バイナリイメージが書かれるようにできるようだから、なにか効率的な方法が
あってもよいように思うんだけど。
http://msdn2.microsoft.com/ja-jp/library/75dwhxf7 (VS.80).aspx
byte[]で読み書き あとunsafeとポインタ
普通にポインタつかえばいいじゃない?
41 :
38 :2007/01/21(日) 01:24:59
VB厨なんで誤解してるかもしれないけど、unsafe使っても結局できるのは、 「構造体配列のバイナリイメージをbyte[]にコピーすること」であって、 「構造体配列そのものを(マネージドな)byte[]として扱うこと」ではないですよね? (BinaryReader,BinaryWriter使って読み書きするためには、マネージドなbyte[]として 扱えないと意味がない。) それならBitConverterで変換するのとあまり変わらない気がするんですが。。
>BitConverter使って構造体とバイト配列を相互変換すればとりあえずの実現はできそうだけど、 >これだといかにも効率が悪そうだし。。
何でコピーするの? sの配列をポインタ使って順番にファイルに出していけばいいんじゃないか?
>>41 unsafeにしといていまさらBinaryWriterなんかつかうことはないだろ
45 :
デフォルトの名無しさん :2007/01/21(日) 01:56:05
>>43 目的は「効率的に」読み書きすることだから、1バイトずつちびちび処理するんじゃ
恐らくあまり意味がないわけで。。
>>44 Win32使えって事?
そりゃあまあそうなんですが。
ここ見てると次期はC#なんかねぇ・・・と思う 元C、元C++、元VBがわんさか集まってる感がある 個人的に好きな言語だからいいんだがM$がね・・・
>> 45 結局こういう事で良いのか? struct Hoge { public int A; public int B; } using (FileStream fs = new FileStream(path, FileMode.Open)) { byte[] data = new byte[16]; fs.Read(data, 0, data.Length); fixed (byte* pdata = data) { Hoge* hoges = (Hoge*)pdata; for (int i = 0; i < 2; i++) { hoges[i].A *= 2; hoges[i].B += 2; } } fs.Write(data, 0, data.Length); }
>>45 .NETは基本的にマシンパワーで押し切るようにできてる環境なんだ
おとなしくC++/CLIでも使っとけ
>>47 目的は構造体のランダムアクセスファイルを効率的に実現することなので
たぶん微妙に違うと思う。
つまり、必要なのは「構造体配列とファイル上の位置を引数にとってファイルに書き込むメソッド」と
「ファイル上の位置と必要なデータ数を引数にとって構造体配列を返すメソッド」です。
つうかほとんどIOの性能だけで決まって その他の影響なんて誤差じゃねーの、大抵。 1バイトずつちまちまって何を1バイトずつちまちまするっていってんのよ?
どうせどっか低級なところでバッファリングされるんだから、 一旦配列にコピーするくらいたいしたことないだろ。
FileStreamでバッファリングされるし さらにOS自体でバッファリングされるし
ポインタを使うよりMarshal.Copyのほうが速いよ
54 :
38 :2007/01/21(日) 15:04:11
>>53 ああ、なるほど。いいこと聞いたよありがとう。
unsafeで構造体配列の先頭のポインタを取得して、それをIntPtrにキャストしてやれば
Marshal.Copyを使って効率よくbyte[]と相互変換できそうな感じだ。
それ以前に、値型だけをメンバーに持つ構造体の配列っていうのは、
連続したメモリ領域に隙間なく配置される、と思っていいんだろうか本当に?
もちろん構造体はStructLayoutでアラインメントをきちんと指定するという前提で。
このあたりMSDNライブラリ読んでも俺の頭じゃどうもよく理解できない。
fixed してれば問題ない
そもそも何がしたいのかと。 手段自体が間違ってるってことないのか?
コンソールで作ったプログラムを、ボタンをクリックすると動くようにするのはどうしたら良いのでしょう? クラスをボタンクリックの方のプロジェクトに持っていって読み込むって感じですか?
初心者スレいってきな
おまいらある処理がどのぐらい時間かかってるのか計りたいんですがいい方法ないですか? パフォーマンスツールだとある処理もしくはそこから呼ばれる処理だけを分析するようなことが出来ないような木がするんですがどうなんでしょう(´・ω・`) そうしないと遅くて使い物に並んです・・・
DevPartner
>>61 ・・・・(´・ω・`)
・・・・えーと有料ですよね・・・
このスレ的にはないものは自分で作れ
VSに統合されてなくてよければMS製のCLRプロファイラがあったろ
>>62 CEは無料でダウンロードできね?
2003しか対応してないけど
お舞らリリースのデバッグ情報出力ってデフォルトでNoneになってます? 自分のはPDB出力ですた(´・ω・`) きったら分析するまでも泣く馬鹿っぱやになったよ・・・
いちいち(´・ω・`)つけなくていいよ^^
使い物にならんほど遅いなら大体原因は限られてるでしょ
意味不明
この間も同じような質問あったなあ
別にC#だから特別ってことは何もないから調べろとしか
Stopwatchでもつかったら? プロファイラ使いこなせるならそれがいいんだろうけど 現実にはそんなもの知らない人間が調査することも多いし。 俺は簡単に時間計測できるユーティリティクラス作ってる。 気になるところにはとりあえず入れとく、あるいは勝手に入るようにしてる。 構成ファイルで無効に出来るようにしとけば消す必要もない。
>>70 Visual C#(Visual Studio)を起動する。
メニューのファイル→新規作成→ファイルをクリックし、ダイアログボックスの「HTMLページ」を選択して開くを押す。
最初に表示されてるHTMLは必要ないので全て消す。
上のサイトから「mixiに一発でログインできるHTML文書」のHTMLをコピー&ペースト。
ファイル→名前を付けて保存で、適当な名前を付けて保存。
ほら、C#でできたよ!!
Windowsサーバのサービスを管理(開始・停止・再起動)が行えるアプリケーションを作成してるのだけどもドメイン・アカウント・パスワードを入力して作業する方法ってありませんか? Process.Startでexeを指定すればできるんだけどももう少しスマートに一つのexeで実行したいのですが
WMI でできるのかどうかは知らんけど
79 :
デフォルトの名無しさん :2007/01/22(月) 18:08:41
JavaのPipedReader, PipedWriterみたいなクラスってC#にはない? パイプライン処理を実装したいんだけど・・・
Javaつかったことないからよく分からんが StreamReader, StreamWriterあたりじゃね
81 :
79 :2007/01/22(月) 20:26:16
うーん PipedWriter(PipedReader) 引数にパイプ入力データであるPipedReaderオブジェクトを指定します。 Javaのはこういうコンストラクタがあってさ これ使うとReaderのデータを自動的にWriterに渡せるんだよね やっぱりないか・・・
自分で作るとしてもそんな難しそうなものじゃないな
C#のwindows form開発でsql server 2005のストアドプロシージャから 取得したデータをdatagridviewのソースに設定しています。 その際verbinary(max)列に画像を入れているものがあるのですが、 値がnullのものが勝手に「×」マークがついた画像としてdatagridviewに表示されてしまいます。 値がnullの場合はdatagridviewに何も表示しないようにするにはどうしたらいいのでしょうか?
DataGridViewImageColumn の解説嫁
>>69 なんか知らんがPDBがあるとPointF型のプロパティにsetするところで15ミリせくかかることがある。
それもリストでぐるぐる回すループの中。
PDBなくしたら快適そのもの。PDBがどうデバッガで絡んでるのか知らん。
画像1から画像2を検索し、見つかった場合 その左上頂点座標を取得しようと考えています。 今は、 画像2の左上ピクセルを画像1内の全てのピクセルと照らし合わせ、 もし、一致した場合、さらに画像2の次のピクセルと、画像1の次のピクセルを照らし合わすという 作業を続けることによって判定しているのですが、 もっとスマートな実装、もしくは関数があるのでは?と思い質問させていただきました。 他の方法はあるのでしょうか?
そんなけったいなものねえよ
せめてポインタ使おうね Get/SetPixelでやったら死ぬよ
なんだよポインタってw
ポインタはポインタじゃねえの?
ウルトラ警備隊の車
ハンティングにつれてくワンコのことじゃないの?
一番簡単なのはGetPixel。その代わり遅い。
たぶんこれでやってると思うけど。
で、効率上げようとピクセルで判断するんじゃなくて
バイトデータで判断しろと言いたいのがたぶん
>>90 。
でも色数等の比較環境(バイトデータの保存形式)を揃えないと意味が無い。
対角線だけGetPixelでチェックして、あとはXORでbitbltして真っ黒になるかどうか見るとか。 まあDCが「真っ黒」かどうかどうやって判定するのか俺は知らないけどw
>>88 ヒントだけですまん。
・画像1内の全てのピクセルと比較する必要はない
→せめて画像1の幅-画像2の幅でおk(高さも同様)
・画像の場合、隣のピクセルは同じ色の頻度が高いので無駄が多い
→数ピクセル飛ばしにチェックとか(0,8,16,32, 1,9,17,33, 2・・・)
もういらない?
>>97 そんなトーシロー臭い「ヒント」いらんやろw
質問みたらトーシローっぽいからいいんじゃね?
>>97 前者はともかく後者はいたずらに精度を下げてるだけじゃない
>>100 下げてないだろw
0→8→16→32→1→9・・・
しかし、何のためにそんな判定が必要になるんだ 根本的なところから考え直したほうがいい気が駿河
他人のレスに文句しか言わないヤツばっかりでワロタ
>>102 「画像に含まれた画像を探す」じゃねーの?
例えばどういうこと?
速度もとめるなら各行をBM法を使って探索すると良いよ! 列部分はほとんどかわらないけど、行部分が理論上高速になる。 と、書いてて思ったけど2次元に拡張したBM法ってない? そういうのがあったら、列部分も高速化できると思うんだけど。
>>88 要は、UWSCのCHKIMG関数のよう事をやりたいわけよね?
で、最終的に何がしたいんだい?
だからbitbltでxorとれば判定できるでしょ
1ピクセル目のいろで探して見つかったらXor?
それの方が遅い気が・・・
画像に含まれた画像を探すって 文字列含んだ画像からアルファベット探すようなものかな?
実際にベンチとってみないことにはなんともいえんな。
多分ポインタの単純なコードが速いと思うよ。
だから具体的に教えろよ
それじゃ
>>90 に戻るだけだろ
xorするにしたってwidth*height*depth回の比較は必要になるじゃない LockBitsでとったデータをポインタで手繰っていけばいい
C++/CLIでmemcmpでもしときゃいいじゃない
高速画像マッチングアルゴリズムのコーディングなんだよな、本当は 素直にアクティブ探索法とかコーディングすればおk
もう言語は関係なくアルゴリズムの話になるってわけだな
C++かアセンブラでゴリゴリ書けば速くなるって結論でいいんじゃないかw
Scan0などを使うとかの話じゃないの?
ウォーリーを探せ
カラー画像ならグレイスケールに変換してマッチングかければ速くなるお
>>125 数学できなかった奴だねチミは。
写像って知ってるか?w
(゚д゚)ハァ?
写像となんの関係が?
よくわからんが異なるカラー画像が同一のモノクロ画像に なることがある、というのを1対多の写像、みたいにいいたいのでは ないかと。
違いが出た時点で違うことがわかるのが早いほうがいいなら 早い手段での比較を通して、最後に元画像でチェックする、とか?
違うと分かるまで走査しなきゃいけないんじゃね?
132 :
デフォルトの名無しさん :2007/01/24(水) 15:42:32
WebBrowserコントロールのUrlプロパティにローカルフォルダのパスを指定すると エクスプローラと同じようにファイル操作ができますが、 このとき表示されているフォルダに関する情報(ファイル一覧など)を取得することは可能でしょうか?
>>132 パスが分かってるのなら
普通にDirectoryInfoでファイル一覧とか取得できるけど?
選択されてるオブジェクトとか知りたいなら↓
リフレクション使う。
Shell32.dllとSHDocVw.dllを参照に追加して、
FieldInfo fi = typeof( System.Windows.Forms.WebBrowser ).GetField( "axIWebBrowser2", BindingFlags.NonPublic | BindingFlags.Instance );
SHDocVw.IWebBrowser2 wb = (SHDocVw.IWebBrowser2)fi.GetValue( this.webBrowser1 );
Shell32.IShellFolderViewDual2 folderView = wb.Document as Shell32.IShellFolderViewDual2;
MessageBox.Show( folderView.Folder.Items().Item(0).Path );
あとはこのShell32.IShellFolderViewDual2 を
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/objects/objects.asp を参考にしてごにょごにょ。
>>126 はちょっと早計だなw
グレイスケールにしてはいけない場合だって当然あるけど
そういう例外は除いて一般的に速くなるってことだろ
テンプレートの特徴量(例えばヒストグラム)を事前に作成しておいて
特徴量で比較する手法でも単純なテンプレートマッチングより速いぞ
PenとかBrushっていうのは描画が終わり次第Disposeすべきなんだろうか? Formとかと同じ寿命にするのはまずい? ググると掲示板なんかで「すべき」と言ってる人が何人か見つかるけど、 根拠付きでそう書いてある文章は見つからない。 Bitmapあたりが「すべき」なのは直観的にも明らかなんだけど、 PenやBrushなんてせいぜい数100Byte程度のメモリしか消費しないように思えるんだけど。 生のWin32ではどうか知らないけど、.NETじゃ単なる「オブジェクト」だよね?
ちゃう
アンマネージリソースを持ってるクラスは基本的にIDisposable
>>137 そういうことを聞いてるんじゃないだろうw
ブラシとかのオブジェクトはGDIリソースを消費して、
その数にはシステム単位で上限があるから
アプリケーションが解放しないで保持してると不足する可能性がある。
>>138 つまり、PenやBrushは、「Graphicsの描画メソッドで使われる時だけ生のOSの
リソースを取得する」ような実装にはなってないってこと?
本当にそんな間抜けな実装をするだろうか?
>「Graphicsの描画メソッドで使われる時だけ生のOSのリソースを取得する」 そんな間抜けな実装(゚听)イラネ
なってないよ そんなこと勝手にされたらかえって混乱する だから必要に応じてDisposeが使えるようにしてある
>>141 そうか回答ありがとう。
結構複雑な描画をするコントロールを自作してるんだけど、
その際ペンとかをフィールドで持ってコントロールと同じ寿命にすると楽だと思ったんだけどね。
線の色や太さやスタイルなんかは、Penのそれをそのまま公開するようにすれば済むから。
これがまずいとなると面倒だな。
いや,かなり素直なGDI+のラッパーだよ コンストラクタでペン作ってDisposeで破棄してるだけ
Disposeパターンめんどい人は using文をつかえ
ところで、Pensから得られたペンはDisposeしなくていいんかいな?
>>146 Pensで取得したものはDisposeしようとすると例外が発生すると思うけど。
俺はデフォルト値にPens.Blackを使って嵌った MSDNに一言も書いてないのは不親切だよな
パスワード入力用に入力文字が'*'で表示されるテキストボックスを 作りたいんですけど、プロジェクトはクラスライブラリと ユーザコントロールのどちらにすれば良いですか?
TextBox.PasswordCharでは駄目なんか?
TextBox.PasswordCharじゃいかんのか?
どうしても自前で実装したければ、TextBoxを継承するのが普通だろうな UserControlを使う必要はない
>>133 ありがとうございます
参考にしてみます。
C#でレイヤードウィンドウ使いたいときはAPIでUpdateLayerdWindowを呼ばないと駄目(´・ω・`)?
GetGUIThreadInfoのAPI使ったサンプルってありませんか?
グラフ理論を確かめたいので、 グラフ表示用のライブラリが欲しいのですが、 有りますでしょうか?
ドトネット用のソフトあったけど忘れたw 馬鹿な答えで申し訳ないがどこかにあるよ。 ただしサイトは英文だった。
C用のをDllImportするほうが現実的かも
graphlayout でぐぐる。java だけど。
つ【Graphviz】
ぬこでもわかるC#出たけど読んだ人います?
ゾウリムシでも分かる言語なので読んでない
COMでLPIDISPATCHを受け取る関数があって .NETのラッパーだとobject型で受け取るんです。 で実際に入ってるのはSystem._ComObjectなんですけど このSystem._ComObjectを元のインターフェイス(のラッパー型)に変換するにはどうすればいいんでしょうか?
インポータ使うか手動で必要なインターフェイス定義してキャスト。 あるいはリフレクションでも出来たかもしれない。
>>164 本出たのか
猫のサイトを覗いてみたけど,CやC++を知ってる人向きな感じがした
質問です。 timerなどのようなコントロールを作成することは出来るのでしょうか? 又、そういったソースなどはMSDNなどのサイトに置いてあるんでしょうか? もしあるのでしたら、urlやググるキーワードなど教えていただけたら有り難いです。
>>169 できる。というかSystem.Windows.Forms.Timerとか揃ってる。
サンプルソースくらいどこかにころがってるでしょ
とりあえずVC#Expressインストールして付属のMSDN読むのがお勧め
ビジュアルを持たないコンポーネントを作りたいのか?
ぬこならわかるC#
いろいろ調べてみたのですが、わからないので教えてください。
現在作りたいもの
Windows Media Encoder SDKを使ってAVIをWMVにエンコードするC#コンソールプログラム
やろうとしていること
エンコード処理の終了イベントを取得してプログラムを終了させる。
困っていること
Visual C# Express Edition上でデバッグ実行をすると正常にイベント処理されるが、
CTRL+F5で実行すると、終了処理イベントを取得できない。このとき、開始イベントは
取得できている。もちろん、コマンドラインからExe叩いても同じ。
行っていること
このサイトにあるサンプルを単純にコピペして使ってます。
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmencode/htm/capturingeventscsh.asp 唯一違うのは、エンコードしているファイルに音声がないので、SrcAudの処理部分はコメントアウトしています。
デバッグ実行ではイベントの割り込みがデバッガによって頻繁に行われると理解していて、そのため、イベントキュー内の
イベントが正常に処理されるのでは?と思ったのですが…。
何かヒントでもわかればと思っています。お願いします。
2つ同時にエンコードとかしてないか? あと途中でオブジェクトの寿命終わったりしてないか?
別IDですが、174です。
>>175 えっと、二つ同時にとかはしていません。
ただ、途中でオブジェクトの寿命が終わってるのは可能性ありそうです。
が、オブジェクトの寿命ってどうやって延命するんでしょうか。。。?
調べてみます。
ビルドは確実にできてる?
>>177 はい。ビルドはできてます。
Exeも更新されています。
「終了処理イベントを取得できない」てどういう意味? いつまでも終了しないの?
>>179 はい。そうです。
イベントごとに何かメッセージを出力させるようにして確かめたのですが、
Debug時には最後まで表示されるのですが、通常実行時には、いつまでたっても、
Whileループの中を回っていました。。。
_ ∩ ( ゚∀゚)彡 おっぱい!Volatile! ⊂彡
VistaにVSインストールしたら報告してね!
183 :
169 :2007/01/29(月) 20:54:42
>>170 ,172
スミマセン、timerのようなという表現は適切じゃなかったですね。
>>172 さんの仰る通り、ビジュアルを持たないコントロールを作りたい、ということです。
例えば、サーバから定期的なメッセージをクライアントに送るようなアプリケーションがあったとして、
そのメッセージをイベントとして受け取れるようなアプリケーションが作れないか、と考えています。
こちらはまだC♯を触り始めたばかりで、これはあくまで習作なのですが。
>>182 起動するたびに Run as Administrator してねって言われるよ
ほんとかよ。
たしか、for Vistaっていうバイナリ出てなかったっけか?
列挙型 enum A : int { a } でint b = (int)aと aにキャストがいるのは何でなの intだっつってるのに
あ、int b = (int)A.a ですね
A.a は A 型であって int とは相互変換できるってだけだから
なるほどダウンキャストがいるってことですね トンクスです
>>183 System.Window.Forms.Timer じゃないTimerがあるよ。
でも、その用途にTimerはオススメしないけど。
だからTimerじゃないと(ry
>>190 クラスツリーとしてはAはEnumの子で、EnumとInt32は兄弟だから、ダウンキャストとは言わんな
194 :
192 :2007/01/29(月) 22:33:28
なんだよ…orz
>>181 ありがとうございます。
意味を理解しました。
で、解決しました。
ん〜、確かに…言われてみれば納得です。
マルチスレッドなプログラムや組み込み系のプログラムはあまりやったことが
なかったもので(←言い訳です)、今回は非常に勉強になりました。
「コンテキストメニューをあるタイミングで表示→項目をユーザが選択」 という事はどうすればよいのでしょうか。 通常、ユーザが右クリックしてコンテキストメニューを開きますが ここはプログラム側でコンテキストメニューを表示し、ユーザに選択を 促そうと思っています。 this.ContextMenuStrip.Show(); とやると、一瞬コンテキストメニューが表示されますが、次の処理へ 進んでしまい、ユーザが選択をする事が出来ません。
次の処理へ進む?もしかしてアクティブ状態じゃないんじゃない?
そうでもないな、ユーザーがマウスで何かしてる、とか?
ContextMenuStripはWindowだから Showしたあとにどこかのコントロールに フォーカス合わせちゃってるんじゃないのか
ContextMenuStrip -> ContextMenu
>>190 enum A : intは継承とは違うぞ
形式が似てるだけ
>>197 >>198 >>199 そんな高度な話ではなく、this.ContextMenuStrip.Show();
の次の行に制御がいってしまいました、という話だと思う。
イベントドリブンが解ってないという話。
>>196 コンテキストメニューを Show() したら、選択なりキャンセルなりされて
イベントが来るまで何もしないようにプログラムを作ればOK。
ContextMenu は自分でトラッキングするけどContextMenuStripはしないという話か・・・
>>196 普通はコンテキストメニューのShow()で右クリックのイベントはおしまい。
で、コンテキストメニューアイテムのクリックイベントに処理を書く。
その間、他の処理は何も出来ないようにするのはどうかと思う。
メニューアイテムに「キャンセル」作るなんで考えない方がいいよ。
Explorerでファイルやフォルダを右クリックして試してみ。
ContextMenuStripはいろいろ困るんだよなぁ。AppBarでうまく表示できないとか。
FormからFormをつくってTopmostで表示したらそっちにフォーカスが逝っちゃうんですが逝かないようにするにはどしたらいいでしょう?(´・ω・`)
2.0ならやっとというかShowWithoutActivationプロパティが付いたので これをオーバーライド。 じゃないならSetVisibleCoreのbase呼ぶ前あたりにShowWindowで アクティブにせずに表示。
208 :
206 :2007/01/31(水) 16:47:03
ShowWithoutActivationは実装し呼ばれることも確認したんですが、trueかえしてもフォーカスロスとしてるっぽいです... ShowWindowあたり見てみます。
209 :
206 :2007/01/31(水) 16:54:55
フォームを表示して、新しく表示されるフォームがactivateされず、元のフォームがフォーカスをロストすることはありえる?
実際にそうなってるんならありえるんだろが
>>209 現象を確認した。TopMostを指定するとShowWithoutActivation無視される。
一応MSにフィードバックしといてや。by Designか直さんやろうけど。
基本的なやりかたは以下のように。
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
const int SW_SHOWNOACTIVATE = 4;
protected override void SetVisibleCore(bool value) {
if(this.ShowWithoutActivation && this.TopMost && !this.Visible && value) {
ShowWindow(this.Handle, SW_SHOWNOACTIVATE);
}
base.SetVisibleCore(value);
}
書き捨てなのでもうちょいほかのプロパティとの整合性あわせて。
>>204 だがエクスプローラの右ドラッグには「キャンセル」がありまする。
これきっと、メニューの外側を適当にクリックしてメニューを消すと
ファイルの選択が解除されるからだな。
213 :
211 :2007/01/31(水) 17:16:53
と思ったらなおらねぇ。 …あれだ、ひょっとしたらTopMost指定するとアクティブになる仕様かも…
TopMostはSetWindowPosをSWP_NOACTIVATEなしで使ってた希ガス だからTopMostもSetWindowPosでやるしかないんじゃないかね
>>212 ドラッグ後に出るメニューはドラッグというアクションへの操作だろ。
右クリックはまだアクションを指定していないからキャンセルはおかしい。
>>214 ごにょごにょして眺めてみた。っぽいなぁ。
TopMostのままでShowWindow(SW_SHOWNOACTIVE)でよりあえずフォーカス動かなくなったようです(´・ω・`) なんか汚いコードになってますがとりあえずはしのげそうです。 ただ今度はFormオブジェクトを作ってから初めてhandleから見そうなメソッド呼び出しでWM_CREATEがとんできてそのときにLocationがいじられるという現象が出てるがなぁ・・・orz
VB的な解法であれだけど、コンストラクタでActiveForm取得しといて OnShownでそいつにFocusしてやれば、実際の動作はともかく見た目的には 目的を達成できるよ。
>>218 そうすると元もフォームのフォーカスが一度外れることになるので問題出ることがある。
やれやれ読解力がない人って困るな。。
221 :
デフォルトの名無しさん :2007/02/01(木) 22:13:53
こんばんわ。初書き込みです。 C#を最近、始めたばかりでド素人なのですが、 質問に答えてもらえるのでしょうか??
前置きはいいので質問をどうぞ
ここも質問スレだろ
でも始めたばかりなら
>>223
225 :
デフォルトの名無しさん :2007/02/01(木) 22:23:38
C# 3.0って、VisualC#2005で使えるの?
なぜググらないんですか?
>>225 Visual Studio 2007(仮称)までお待ちください
228 :
デフォルトの名無しさん :2007/02/01(木) 22:37:20
>>227 現状はコマンドラインのコンパイラも無いの?
なぜ吊らないの?
嘘つくんじゃねえよ
http://ja.wikipedia.org/wiki/Microsoft_Visual_Studio >NET Framework 3.0に対応させるための Visual Studio 2005 extensions for .NET
>Framework 3.0 (WCF & WPF), November 2006 CTPとVisual Studio 2005 extensions
>for .NET Framework 3.0 (Windows Workflow Foundation)が現在、配布されている。
クマー
232 :
デフォルトの名無しさん :2007/02/01(木) 23:19:24
Visual Studio 2005 extensions for .NET Framework 3.0で、C#3.0使えるようになるの?
C#と.NET Frameworkのバージョンは別物
234 :
デフォルトの名無しさん :2007/02/01(木) 23:35:00
だから、C#3.0が、たまたまバージョン番号が同じ3.0であるだけの Visual Studio 2005 extensions for .NET Framework 3.0 で使えるのかどうかを聞いている。
237 :
デフォルトの名無しさん :2007/02/01(木) 23:56:36
で、結局Visual Studio 2005 extensions でC#3.0は使えるの?
こたえはNOだグリフ
むりだろw
ラクダ式とかの奴じゃないの?
241 :
デフォルトの名無しさん :2007/02/02(金) 00:03:04
今はまだ、C#3.0の処理系は存在しないってことでおk?
C OMEGAとかLINQならあるよ。
243 :
デフォルトの名無しさん :2007/02/02(金) 00:07:48
C OMEGAとかLINQって、C#3.0の処理系なの?
プレビュー版のC#3.0コンパイラなら出回ってるな。
仕様どおりコンパイルできない場合があるみたいだけど
>>234 C#3.0やLINQは.NET Framework 3.5の機能
246 :
デフォルトの名無しさん :2007/02/02(金) 00:19:47
.NET Framework 3.5って、プログラミング言語(C#3.0)の処理系を含むの?
248 :
デフォルトの名無しさん :2007/02/02(金) 00:24:09
で、結局、今はまだ、C#3.0の処理系は存在しないってことでおk?
何故読まない。
自分で調べようともしないお前には存在してても使いこなせないから気にすんな
251 :
デフォルトの名無しさん :2007/02/02(金) 00:26:54
結論 今はまだ、C#3.0の処理系は存在しない
それでいいよ。 カエレ
C#3.0の処理系って言ってる時点で初心者だけどな。
>>246 コンパイラはフレームワークについてくるでしょ
255 :
デフォルトの名無しさん :2007/02/02(金) 00:34:02
.NET Framework 3.5についてくるコンパイラはC#コンパイラだけ?
糞初心者はかえれwww
257 :
デフォルトの名無しさん :2007/02/02(金) 00:34:50
スルーしろよ。
259 :
デフォルトの名無しさん :2007/02/02(金) 00:43:08
まとめ ・今はまだ、C#3.0の処理系は存在しない ・「C#3.0の処理系」という表現は適切である ・Visual Studio 2007(仮称)ではC#3.0が使えるようになる
勝手に変な仮称つけないでOrcasって呼んでやれよ
262 :
デフォルトの名無しさん :2007/02/02(金) 00:48:32
まとめ ver.2 ・今はまだ、C#3.0の処理系は存在しない ・「C#3.0の処理系」という表現は適切である ・Orcas(次期Visual Studio)ではC#3.0が使えるようになる
ところで、ラムダ記法関連で出てくるジェネリクスクラスのFunc<>ってどうなってんの? 型パラメータを4個とか5個とか渡してるソースがあるんだけど、可変長型引数がサポートされてたりする?
Vistaで少しは.NET Frameworkの動作速度は改善されるのでしょうか? VB6よりもっさりしてるので凹みます。
コンパネでWPFを使ってるらしいからランタイムの起動は体感的に速くはなったな
>>262 まともに答えてやろうよ。
C# 3.0 のβ版ならすでに出てて、誰でもダウンロード可能
正式には .NET Framwork 3.5 (仮称)という形でリリース
予定では、3.5 は今年中(おそらくは Orcas と同時期かちょっと前)
3.5 には他に、VB 10 と Ajax ライブラリが付く
ちなみに、3.5 になっても CLR の部分は、2.0 のときのまま
>>264 ランタイム自体も改善されてるとは思うんだけど、
それ以上に、スーパーフェッチが効いてて速い臭い。
VB6糞遅いじゃん
269 :
264 :2007/02/02(金) 13:38:02
>268 書き方悪くてごめんなさい。 VSじゃなくて、作成したアプリケーションのことです。 >265 そうですか!ちょっと期待しよっと。
実行速度が遅いっていうやついったい何つくってんの?w
作成したものがクソということは作ったやつが(ry
今隣の席でグリッドに1万件表示が遅いって言ってるバカがいるw
.NETを遅く感じるならとりあえずメモリをもっと積め。 Vistaでは腐るほどメモリがあるときのパフォーマンスが改善されているが、 はじめから少なめならVistaにしても効果なし。Vista自信もメモリ食いだから1GB〜程度は必要
paint.netとかはSourceCode見た感じ大部分が C#だがそんなに遅くないけども
フォームベースのソフトなんだけど デバッグ用にコンソール窓作ることは可能?
COMのオートメーションでGUIはないんです。はい。
APIで作るとか
telnetにでも送ったらあかんの?
それをやるならsyslogだべ
Debug.Write()は効かないんだっけ?
>>275 <OutputType>Exe</OutputType>
↑こういう教え方するヤツ嫌い
お前の好みなんぞ誰も聞いちゃおらん
俺も嫌いだ。 知ってるけど教えないみたいだ
.NET Frameworkの質問はここで良いでしょうか。 CheckedListBoxでいずれかのアイテムのチェック城外が変更されたときに、 既にチェックされたアイテムの一覧を取りたいのですが、ItemCheckイベントだと、 チェックされた/チェックが外れた瞬間のアイテムが取得できません。 適当に合成してやれば良いのかもしれませんが、他に何か良い方法はないでしょうか?
CheckedIndices, CheckedItems?
Consolo console = new Console();
型または名前空間名 'Consolo' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。 静的クラス 'System.Console' のインスタンスを作成することはできません。
>>263 > 型パラメータを4個とか5個とか渡してるソースがある
Func<A,R>しか見当たらないんだけど
ソースは?
LINQ Preview (May 2006) から System.Query.dll namespace System.Query { public delegate T Func<T>(); public delegate T Func<A0, T>(A0 arg0); public delegate T Func<A0, A1, T>(A0 arg0, A1 arg1); public delegate T Func<A0, A1, A2, T>(A0 arg0, A1 arg1, A2 arg2); public delegate T Func<A0, A1, A2, A3, T>(A0 arg0, A1 arg1, A2 arg2, A3 arg3); } と、いうことのようだ。
原始的すぎるなあw
C#3.0ではCLRに手を加えないからなあ
ジェネリックでは、型パラメータを参照型で展開できない。 あ、ここでの参照型ってのは、クラスとかじゃなくて ref とかのメソッドパラメータとしての参照型のことね。 参照型とそうでないものの組み合わせを定義するのは 現実的じゃないよな〜
refは型ではなく実/仮引数を修飾してるんだから当然だろ
>>297 どういう場合にそんな珍妙なことがしたくなるの?
通常の型名に&をつけたものが参照タイプ 汎用デリゲートで参照渡しのあるメソッドに対応したい場合
CLRでは型を派生させてるが、C#では引数の修飾だから 流石にそんなことできると気持ち悪いな
ポインタ型も型パラメータに使えないしな
デリゲート定義するときに参照渡しがあると汎用的なので対応できないんだよね
いつも思うんだけど、そんなこと言語開発者だってわかってると思うんだが… 俺はMSのような優秀な(中には癖のある)人間が沢山いる大企業が いろんな意見を纏めて最終的に一つの製品としてリリースする以上、 俺が抱く疑問や不満は既に議論されていて、そうせざるを得なかった 理由があるんだと思う。
ジェネリックの型にrefを認めたら List<ref int>なんかも当然認めないといけない そうなったら,ref int型をメンバに持てるようにしないといけない 破綻するな
「できなかった」んじゃなくて「しなかった」って考えるのが普通だわな
309 :
デフォルトの名無しさん :2007/02/04(日) 01:27:51
var d = new[] { 1, "one", 2, "two" }; がエラーになるのは痛すぎる。 何で object[] にしないんだよ。アホか。
object型だということを忘れそうだからじゃないか?
312 :
デフォルトの名無しさん :2007/02/04(日) 01:53:29
そもそも「暗黙の型付け」なんだから、忘れるも何もないだろ。
313 :
デフォルトの名無しさん :2007/02/04(日) 02:20:04
プログラミング初心者です。 えっと、 2つのテキストファイルを読み込んで、 それぞれ配列に格納して、 出来た配列Aと配列Bのi番目の要素同士の和を求めたいのですが、 どうすればいいのでしょうか?? どなたかよろしくお願いします。
型推論ってなんかやだな
>>313 >どうすればいいのでしょうか??
って、どうしてほしいんだよ。
その文章の各ステップ全部分からないのか?
ファイル読み込むまでは出来ます。
>>316 テキストファイルの各行が配列に入ってるわけだな?
で、その配列の型は何よ。
ようは、「要素同士の和」というのは文字列を連結することを言っているのか
それともテキストファイルには数値しか入ってなくて、数値として和を求めたいのかどっち?
宿題の悪寒
>List<ref int>なんかも当然認めないといけない >そうなったら,ref int型をメンバに持てるようにしないといけない >破綻するな 参照渡しは型で言うとちゃんと参照タイプになってるていってんのに。 ポインタ型とかと同じ扱いだよ、どっちもジェネリックでは対応していないが。 もちろんいろいろ理由はあるだろうし、どこかで破綻してしまうのかもしれないが、 >そうなったら,ref int型をメンバに持てるようにしないといけない こんなあほな理由ではないだろう。 参照型やポインタ型をメンバに出来る言語だってあるわな
あと、しなかった理由があるんだろうことぐらい分かっとる。 できないのが残念だなってことだ。
出来る言語があるから、は CLI に機能を盛り込む理由にはならんだろう クロスランゲージを指向してるんだから公約数的な方向に向かうのは必然
誰か
>>313 をLinqで解く強者はいないか?
できそうな気がした
テキストファイルには数値しか入っていません。 数値同士の和を求めたいんです。
そうですか。頑張って下さい。
頑張れ
>>322 CLIレベルではmanaged pointerが存在するが、
どうしてC#で使えないのかって話をしてたんじゃないのか?
初心者スレに誘導しても宿題には解答しないよ。
C#って静的メンバを表すためのthisのようなキーワードってなかったっけ? 仮引数で隠蔽されるときにクラス名つけるのって今ひとつ美しくないんだけど。。
C#のメニューは MFCみたいに特定のIDにするとデフォルトの終了ハンドラが呼ばれるとかないですか?
ないですね
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="
http://schemas.microsoft.com/developer/msbuild/2003 ">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.50727</ProductVersion>
〜略〜
</PropertyGroup>
〜略〜
</Project>
みたいなXMLファイルがあるんです。
XmlDocument document = new XmlDocument();
document.Load("hoge.csproj");
てな具合で開くんです。
XmlNodeList nodes = document.GetElementsByTagName("PropertyGroup");
だとヒットするんです。
XmlNodeList nodes = document.SelectNodes("/Project/PropertyGroup");
とXPathで検索しても見つからないんです。
どうしてでしょうか?
名前空間が付いてるだろ。 XmlNamespaceManagerつかうといい
流れ的にはこんな感じ
XmlDocument document = new XmlDocument();
const string xmlns = "
http://schemas.microsoft.com/XXXXXXXXXXX ";
XmlNamespaceManager nsmgr = new XmlNamespaceManager(document.NameTable);
nsmgr.AddNamespace("AAA_AAA", xmlns);
document.Load("hoge.csproj");
…
XmlNodeList xnl = xmlElement.SelectNodes("AAA_AAA:tag_name", nsmgr);
できました。どうも。
変数の宣言とか基本的なことは大体理解したんでGUIが詳しく載ってる参考書探してるんだけどどれがいい? ツールつくったりするだけなんで、Webとかデータベースとかはいらん。
詳しくないぞそれw 2005のフォームのコントロールに詳しい本ってたぶんないんじゃないかな。 洋書は知らないけど
自動テストのために、ランダムな日本語文字列を作りたいのですが、何か良い方法ないでしょうか? 引数に文字コードと文字列長を指定したら、適当なランダムな文字列が返ってくるような……。 英数だけだったら配列に入れてランダムに取り出したり、用意されているパスワードジェネレータを 使えば良いと思いますが、 ひらがなだけでなく、漢字なんかもあるので、日本語でその方法はちょっと……。
346 :
デフォルトの名無しさん :2007/02/05(月) 17:30:56
DataGridViewのボタンになんらかのアクションを設定するにはどーしたらいいんでしょう…
347 :
・_・;<あぼーん :2007/02/05(月) 23:29:36
何かDataTable(DataSet)関連で上級者レベルの技はありますか? 他のヤツが知らない様な上級技を教えて下さい。
349 :
344 :2007/02/05(月) 23:56:11
>>348 なんじゃそりゃ〜。VBスレなんて見たこともありません。
なんちゅう言いがかりですか。VBスレで回答したのはあなた様ですか?
老婆心ながら、もし、返事やお礼の言葉が欲しいなら、2chで回答するべきではないかと。
私の求めているのは、およそありうる文字が、等しい確率で出てくる方法です。
やっぱり、UTF8に限定して、バイト列で生成してUTF8でエンコードとかしか無いですかね。
>>345 確か、何かのCOMを参照追加でできますよ。
配布するときに、それも付けなくちゃいけなくて、8MBぐらいあって凹んだ記憶が。
IEコンポーネントでググれば出てくるはずです。
>>349 >およそありうる文字が、等しい確率で出てくる方法
是非結果をここに書いておいてくれ
期待はしてないがな
>>349 16ビットの乱数出してCharにキャスト。
それをJIS X 0208に含まれる文字が出るまで繰り返せばいい。
>>349 そんなに必死になると余計…ま、いいやw
だいたい、自動テストくらいでそんな厳密にやる必要があるのかよ。
地名や氏名なんかはどっかの資料から引っ張ってきて、適当にくっつければいいじゃん。
まぁ
>>348 も見事な勘違いだろうけどな。
質問内容似てるけど、344の解答には全然なってねぇし。
あっちよりもちょっと詳しく説明しただけに見えなくもないな。 ハッキリ言ってどうでもいいんだが、349の言い方は気に入らないw
>老婆心ながら、もし、返事やお礼の言葉が欲しいなら、2chで回答するべきではないかと。 質問者のセリフかよ…
お前等食いつきすぎ・・・ ゆとりの実力はこんなもんじゃないぞ
Vista入れてみたけど、自作のC#アプリの動作がなにげに変だな。 APIも結構使ってるんで、.Net Framework自体の問題かどうかは すぐにはわからんけど。修正めんどくさい...
361 :
デフォルトの名無しさん :2007/02/07(水) 01:59:36
ちょいと皆様の知恵を拝借したい struct aaa { public byte xxx; public ushort[] yyy; } こんな感じのbyte型とushort配列を持った構造体を構造体配列で使用したんだが、 出来るだけ多くの要素を持たせたくて dic[] aaa1 = new aaa[ulong.MaxValue]; ってしたら案の定オーバフローしたんだよね この場合いくつの要素数まで宣言できるのか教えて欲しい ちなみにyyyは256個の要素を持たせる予定
ageてしまった スマン
そんな無茶なことしないで、事前に必要な要素数の見当を付けとくか、 見当つかなければList<aaa>でAddするとかしたほうがいいと思う。
メモリによるとしか言いようがないな…
365 :
デフォルトの名無しさん :2007/02/07(水) 09:44:50
Wordに指定したファイルパスを渡して起動したいのですが、うまくいきません。 こういう感じで渡してみました。 System.Diagnostics.Process.Start("WinWord.exe", FilePath); どうやって渡してやればいいでしょうか? よろしくお願い致します。
>>365 「うまくいきません」じゃわかんねえよ
何でエラーメッセージとか書かねえのかね
FilePathに空白が含まれてるなら""で囲え
367 :
365 :2007/02/07(水) 10:28:54
解決しました。 psi.Argumentsに渡さないとだめなんですね。
配列は参照型だからヒープに確保されるでしょ
どっちにしてもulong.MaxValueはありえない
ペタの2個上ってなんだっけなってレベルだよな
東洋の神秘にたよるか ・・・那由他、不可思議、無量大数
30エクサバイトくらい?
日付2桁とかみたいに後々破綻するから数値の上限とかは制限しないほうがいい
HDのクォータ機能でサイズ制限にPB,EBがあって この機能使ってるヤツがどれだけいるんだろと思った
ネタはいいよ。
あほ
あほのさかた
C#だと、ベースクラスが引数のないコンストラクタをもつ場合、派生クラスをnewするとそのベースクラスのコンストラクタが勝手に呼ばれちゃいますよね? このときにベースクラスのコンストラクタが使うメンバをその前に初期化して動作を変えたいんですが可能でしょうか? ちなみにベースクラスは自分で作ってるものでないのでいじれません(´・ω・`)
むり。
無理。第一お作法が悪い。
無理なのは分かったがお作法が悪いというのには納得できん(`・ω・´) C++で出来たことを何で削ったのか思想を誰か教えてくれ。
作ったウィンドウがAlt+TABで表示されてしまうんですが出さないためにはどうしたらいいんでしょう。
>C++で出来たことを何で削ったのか思想を誰か教えてくれ。 とても興味があります。 ぶしつけなお願いで申し訳ありませんが、 もしよろしかったら どうやってやってたのか書いていただけませんか。
何か大きな勘違いをしてるようだw
>>383 FixedToolWindow or SizableToolWindow
>>382 思想なんかMSFTの中の人しか答えられんだろ。
まあ、ILレベルで弄ればできるから頑張ってくれ
public Hoge():_hogeValue("hoge"),HogeBase(){}; こんな感じにかけたっけ?
今の時代protectedすら避けられているのにベースクラスのメンバなんか
あほか。ベースクラスがメンバ使っててほかの手段を提供してなかったらいじるしかなかろうが。
>>388 ソースコード上の順序に関わらず、コンストラクタ初期化子よりもベースクラスのコンストラクタが先に呼ばれるよ。
リフレクションでタシーロが今の主流
っていうか、初期化も糞もコンストラクタ呼ばれる前なんか その肝心の初期化の対象がそもそも存在してないと思うんですが。。
>>379 メンバってのがメンバフィールドのことを意味してると仮定して、
それが可能ってことは親クラスがフィールドの初期化を忘れてるってことにならないかなあ。
ベースクラスのメンバの初期化が行われて、かつベースクラスのコンストラクタが 動く前に割り込んで独自の処理を行いたいということなんじゃないだろうか。 C++では出来るということだから、それと同様にやればいいと思うが。
.class public Test.BaseClass { .field family int32 Member .method public specialname instance void .ctor() cil managed { ldstr "BaseClass::.ctor()" call void [mscorlib]System.Console::WriteLine(string) ldarg.0 ldfld int32 Test.BaseClass::Member call void [mscorlib]System.Console::WriteLine(int32) ret } } .class public Test.DerivedClass extends Test.BaseClass { .method public specialname instance void .ctor() cil managed { ldstr "DerivedClass::.ctor()" call void [mscorlib]System.Console::WriteLine(string) ldarg.0 ldc.i4 42 stfld int32 Test.BaseClass::Member ldarg.0 call instance void Test.BaseClass::.ctor() ret } } .method void Main() cil managed { .entrypoint newobj instance void Test.DerivedClass::.ctor() pop ret }
BaseClassがメンバを初期化してないな。
スタティックメンバだと考えたらどうだろう。
それならば変更するタイミングが欲しいという、
まぁ妥当かもしれない質問になるような気がする。
んで
>>398 のようにアセンブラで書けばOK、と。
それならコンストラクタをprivateにしてやって、 Createとか静的メソッドで用意すればいいだけでは。
そんな面倒なことしなくても、C++でやっていたときと同様にすればできると思うな。
UACが効いてる状態のVista上でProcess.MainWindowHandleに触ると.NET1.1だと例外が返ってくるんだけどパッチとかないよね? 1.1もサポートするって書いてあるから試してみたら落ちてくれて、 仕方なく2005でビルドしてデバッグしてみたら2.0なので落ちなくなってちょっと悩んだよ。
なんでC++厨はアホみたいな事にこだわるの?
アホみたいな事にこだわらないとC++の存在価値が無くなるから
WebBrowserでYouTubeとか開いて、Flashで書かれたプレイヤのスライダとか マウスでいじると、2回目はいじれない問題って既出? focusの問題みたいなのだけど。 あとWebBrowserでcookie設定ってできないの?
>>407 前者のは俺も悩んでる
後者のは API の SetCookie でOK
>>408 > 前者のは俺も悩んでる
Timerでもまわして定期的にwebBrowser.Focus() 呼べば一応は解消するんだけど
これだといろいろ不都合があって…
> 後者のは API の SetCookie でOK
? 詳しく教えて。
WebBrowserの各インスタンスごとに固有のcookieを食わせたり吐かせたりしたいんだ。
いいからFormがWindowをクリエイトする前に内部のプロパティを与えられた引数でいじくるすべを教えろボケ。
>>410 親が初期化する前に弄ったって元に戻されると言ってるじゃないか
メンバにもたせて、自分でタイミング見計らって更新とかは?
>>410 コンストラクトだけして、
あとはAPIでShowWindow(...)
Formクラスの内部の状態がおかしくなってレイアウト崩れたりするけど。
415 :
デフォルトの名無しさん :2007/02/09(金) 21:45:52
DevPartner 8.0 の評価版ダウンロードしたいけど 個人情報ださなあかんねんなー 会社名まで必要だしなー なんだか憂鬱だ
BandObject を使った IEツールバーで、 JavaScript や ActiveX の実行を切り替えるには どうしたらよいでしょうか? DISPID_AMBIENT_DLCONTROL を処理すれば 良いと思うのですが、ぐぐっても見つかるのは IOleClientSite を実装する例ばかりで、 IEツールバーから操作する例は見つけられませんでした。
>>416 IInternetSecurityManagerだっけか?
IInputObjectSite→IServiceProviderにキャストしてQueryServiceすれば取れるんじゃね
たしかCodeZineかCodeProjectかにそのままずばりのサンプルがあった気がするよ
私には夢があるけど、C#にはないね
たたくよ
しばくぞ
421 :
416 :2007/02/10(土) 18:11:02
>>417 やってみます。ありがとうございました。
耳から手入れて奥歯ガタガタいわしたろか
Vistaのエクスプローラ、assemblyフォルダとか行くと 詳細ペインとか死ぬな。前のフォルダで選択したもののままになる。 まだバグバグってことか
>>422 解剖学的には、あながち間違っていない。
伝統芸能ですから
吉本乙
実装のめんどくささを除いたらすべてのメソッド定義をインターフェースベースでやったほうがよさそうだ・・・ クラスとインターフェースを混在させるとどこかで破綻する・・・(´・ω・`)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace Project1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } } class Program { public static void Main() { Application.Run(new Form1()); } } } public partial class Form1 : Formとclass Program の順番かえるとデザインができないVS2005C#nに感動した
それでInitializeComponent(); とは何をしてるんですか? 消しても正常に動くし。
お前はフラットスレにでも行ってろ
むしろくだスレ
>>428 だが、MSの推奨はAbstractクラスベースな罠
>>429 フォームとかはソースの先頭で宣言したのもじゃないとデザインできない。
435 :
デフォルトの名無しさん :2007/02/11(日) 21:10:17
なあ、C#のインタプリタ誰か作ってくれよ。 インタプリタがないと言語の習得できねえよ。
C#はコンパイル激速だから別に必要ない
どう考えてもインタプリタは必要ないだろ? 必要な理由を述べよ。
そんなにインタプリタがいいならVB6でもつかってろハゲ
インタプリタを使うと何ができるの?
めじろ++
441 :
デフォルトの名無しさん :2007/02/11(日) 23:40:25
既出な話だったら申し訳ないんですが、 今C++からC#に移行しようと.NETを勉強中なんですが 参照型(class)と値型(struct)が、仕様的におかしい気がして 仕方ないんです。 C++では、あるオブジェクトのインスタンスが参照型になるか 値型になるかは、使用時に自由に選ぶことが出来ます。 T t; // 値型 T* pt = new T(); // 参照型 対して,C#は定義時に問答無用で決められてしまいます。 別にGCが絡む問題があるとも思えないし、まったく意味のない改悪じゃないでしょうか? また、C#で以下のコードだけ見た場合、 変数tが値型であるか参照型であるかどうやって知るんでしょうか。 T t = new T(); 値型と参照型の混同、勘違いはバグの元であり わざわざそうしやすくしているようにしか見えません。 C#プログラマの方はどう思って使っていますか?
>値型と参照型の混同、勘違いはバグの元であり >わざわざそうしやすくしているようにしか見えません。 どちらと言うとc++でその問題が起こったのでjavaで改善された。
でもそれだと不便なので値型を付けた。
言葉足らずだった。 ポインタの弊害を解消するため、ポインタっぽいものが見えないようにしたんじゃなかった?。 値方かどうかは、ポップアップされるので気しない。
>>441 > また、C#で以下のコードだけ見た場合、
> 変数tが値型であるか参照型であるかどうやって知るんでしょうか。
> T t = new T();
C#としてはTがstructとして宣言されているか、またはValueTypeを継承しているならば値型。
内部的にはValueTypeを継承するクラスが値型で、その他のクラスは参照型。
>>441 一年後には体感しているだろうが、絶対改悪ではない。
447 :
デフォルトの名無しさん :2007/02/11(日) 23:54:40
C++のclassとstructの違いは、デフォがprivateかpublicの違いだけだしな。 C#のよくないところはValueTypeにstructという名前をつけて、誤解する人間を増やしたことだと思う。 C++/CLIみたくvalue classとかそのままvaluetypeでよかったと思うな。
>>445 使用されてるところのコードだけ見て区別できないって言ってるんだろ
確かに,覚えとくかVSの機能に頼るしかないのは問題
>>441 C#の文法で見てるうちは.NETを理解することはできないよ。
MSILかC++/CLIを使いこなせるようになれば目が開く。
インタプリタで実行できます。
>>447 でもCOMのマーシャリングするときもstruct→structだからそのままでよかったと思うよ。
値型とか参照型とかを気にしなくていいのがC#
>>452 気にしないとforeachとかではまるぞ!
Point型のプロパティとかも
プロパティの方はコンパイルで弾いてくれるからマシ 自分の状態を変えるメソッドは……
C++/CLIは個人的にきもすぎるとおもいます。
MethodBase(の派生クラス)が表してるメソッドの一意性は、 MethodHandleを調べないと分からないんだろうか? とあるリフレクション情報(いろいろ処理した結果)をキャッシュしようとしてるんだが、 MethodHandleをキーにしないと一意にならないっぽい。 ※同じメソッドを示すMethodInfoインスタンスが複数できる 単なるキャッシュなので、同じメソッドで異なるMethodBaseインスタンスになっても それ自体は致命的ではないのだが、キャッシュとして保持する以上、 調べるたびに新しいMethodBaseインスタンスができていくと困ってしまう。 ※キャッシュの意味なし&無駄にメモリ消費 やっぱりMethodHandleでキャッシュしないとだめなんかな…
>>441 C++/CLIではC#で言っている参照型・値型の他に、アンマネージドポインタやハンドル、
マネージドポインタ型(トラッキング参照、通称「参照」)なんてのもあります。
気持ち悪い言語がお好きでしたら、C#よりもC++/CLIをオススメします。
クラスを値型として使用できるようにするためには、 インスタンスのコピーなどを明確に定義しないといけない。 全クラスでこれが必要になって死ぬほどややこしくなったのがC++。 C#は柔軟性、効率などはある程度犠牲にして単純な方をとった。
>>441 ref class MyRefType { }
value class MyValueType { }
...
MyRefType ^ r = gcnew MyRefType; //参照型
MyRefType ^% tr = r; // 参照型へのトラッキング参照
MyValueType ^ v; // 値型
MyValueType ^% tv = v; // 値型へのトラッキング参照
こういうことできるのが.NETの本来の姿
ここからポインタっぽいものを全部取り去って単純化したのがC#
勉強になります
>>460 使いたければポインタは使えると思うけど。
仕事で使いたくないと思うが勉強になる
466 :
464 :2007/02/12(月) 03:47:00
>>464 >V ^ はボックス化された値型。
訂正。
V^ はボックス化された値型をボックス化解除したもの、と言った方が良さげ。
MyValueType v; // スタック上の値型
Object^ o = v; // ボックス化 = GCヒープ上のメモリ確保+コピー
MyValueType^ rv = safe_cast<MyValueType^>(o); // ボックス化解除 (1)
MyValueType v2 = rv; // ボックス化解除した値型のコピー (2)
C# だと(1)と(2)が基本的に不可分だから区別しないことが多いけど、
厳密な意味での「ボックス化解除」は(1)だけだよ、
「ボックス化解除」は「ボックス化」の反対じゃないよ、
ってJeffreyが言ってた。
(プログラミング .NET Framework 第2版 5.3章)
467 :
464 :2007/02/12(月) 03:50:56
>>466 にさらに訂正。* が抜けてた。
gdgdだな。すまん。
MyValueType v; // スタック上の値型
Object^ o = v; // ボックス化 = GCヒープ上のメモリ確保+コピー
MyValueType^ rv = safe_cast<MyValueType^>(o); // ボックス化解除 (1)
MyValueType v2 = *rv; // ボックス化解除した値型のコピー (2)
468 :
464 :2007/02/12(月) 04:06:31
Jeff本読み直してみたけどV ^ はボックス化された値型で良かったらしい。
超gdgdですまん。
>>466 、
>>467 は忘れてくれ。
MyValueType v; // スタック上の値型
Object^ o = v; // ボックス化された値型
MyValueType^ rv = safe_cast<MyValueType^>(o); // ボックス化された値型
MyValueType v2 = *rv; // ボックス化解除+値型のコピー
寝る。
Object^ o = v なんでかな にこやかに見える
System.CodeDom System.CodeDom.Compiler この二つ凄いな。これがあるならインタプリタを素人でも作れそう。 というわけでおまいらC#インタプリタ作ってください。 Perl5とかPythonみたいな扱いやすいやつ一発頼みます。
だからC#のぱーさーはついてないつーの
まだインタプリタいってんのかよwwww
コンパイラがあるににわざわざインタプリタが必要な理由って何なんだろう。
Lispみたいに対話的に使えたら便利だと思うけど。 C#だとちょっとイメージわかないな・・・。
475 :
デフォルトの名無しさん :2007/02/12(月) 13:19:53
ListViewのヘッダ行に、ソート方向を示す三角マーク(△とか▽) を表示する方法は無いでしょうか? 今のところオーナー描画しか無い気がしてますが、、、 環境はVista + VS2005 C#です
476 :
デフォルトの名無しさん :2007/02/12(月) 13:20:55
Vistaかいな。 ハイカラやなぁ〜。
△をカラムのテキストに含めるんだ
478 :
475 :2007/02/12(月) 13:30:37
>>475 1. FindWindowExでSysHeader32のhWndをとってくる。
2. SysHeader32にHDM_GETITEMをSendMessageしてHDITEMを取得。
3. HDITEM.fmtにHDF_SORTUP/HDF_SORTDOWNを設定。
4. SysHeader32にHDM_SETITEMをSendMessageしてHDITEMを設定。
CommCtrl.hみたところ、Windows XPから使えそう。
480 :
479 :2007/02/12(月) 13:59:48
違う違う。 1. ListViewにLVM_GETHEADERをSendMessage
481 :
475 :2007/02/12(月) 14:15:57
>>479 >>480 レスどもです、三角マークでました!(Aeroスタイル、クラシックスタイル共)
参考までに以下にソースを示しておきます。
Pl/Invokeが面倒だったのでとりあえすC++/CLI版ですが。
HD_ITEM item;
HWND hWnd = ::FindWindowEx((HWND)listView->Handle.ToPointer(),
NULL, L"SysHeader32", NULL);
if (hWnd != NULL) {
::SendMessage(hWnd, HDM_GETITEM, 0, (LPARAM)&item);
item.fmt = 0x400; // _WIN32_WINNTを0x501にすればHDF_SORTUP
::SendMessage(hWnd, HDM_SETITEM, 0, (LPARAM)&item);
}
因みに、上記コードではListViewの列テキストは消えてしまいますが
LVM_GETHEADERも後で試してみます。
有難うございました。
>>481 fmtはビットフラグだから
item.fmt |= 0x400;
483 :
475 :2007/02/12(月) 14:31:22
>>482 本当だorz... うっかりしてました。
テキストが消えるのも直りました。もっかいソース載せておきます(マクロ版で)
Header_GetItem(hWnd, 0, &item);
item.fmt |= 0x400; // (HDF_SORTUP);
Header_SetItem(hWnd, 0, &item);
グローバルスコープを持たない言語で対話型環境作っても意味ないだろ。 いちいちクラス定義をしないと評価できないじゃん。
System.Diagnostics.Process を使って呼び出した外部プロセスが 異常終了(不正メモリアクセスなどの Win32 例外とか)したことを 検出したいのだけどどうすればいいだろう?管理者権限不要で 検出して復帰とか、どこで例外が起こったかとかはわからなくてよくて ただ異常終了したか正常終了したかが知りたい ExitCode に表れるかと思ったら、異常終了しても 0 なんだよね
>異常終了しても 0 なんだよね そのソフト組んだ人間による
Win32Exceptionが飛んできた気がするんだけど…
それはプロセスから何かを取ろうとしたときだけじゃないのか?
エクスプローラーでファイルをコピーするときにドラッグドロップするとマウスの後ろにコピーするファイルが半透明で表示されますよね? あれってどうやってるかわかりますか? ドラッグドロップ中にポジションは取れたのでレイヤードウィンドウでウィンドウを描画しつつ移動させたんだけど案の定したのウィンドウにドラッグドロップイベントが届きません・・・orz
あれはドロップされる側(draw overされる側)が描画する。
>>490 ドラッグされる側が描画するにしても画面の外にはみ出るようにしてるのでウィンドウ使ってると思うんです。
だとするとドラッグドロップイベントが下のウィンドウに言ってるのは何でなんでせう。
>>491 リンク先見てみます。
>>493 まさにそれですね。ありがとです。
あとNCHITTESTでHTTRANSPARENTを返すやり方でもとりあえず望みの動作はできそうです。パフォーマンスなどで言われたやり方とどう差があるかはこれから調べですが。
495 :
デフォルトの名無しさん :2007/02/14(水) 02:12:44
プロジェクトにユーザコントロールを追加し 通常のWINDOWSフォームと同様にデザイン出来ることは わかったのですがそれを、ツールボックスからドラッグし 他のWINDOWSフォームにて(TextBox/ComboBox等と同様に) 使用する方法が分かりません。 ご存知の方がいらしましたらお教え下さい。
496 :
デフォルトの名無しさん :2007/02/14(水) 02:28:27
Defferdってなーに? なんて読むのらぁ。。
んな単語ねえよハゲ
498 :
デフォルトの名無しさん :2007/02/14(水) 02:33:30
読める?
499 :
デフォルトの名無しさん :2007/02/14(水) 02:34:47
読める?
外国語板でも逝ってこいよ・・・
deferred?
differed?
DirectXで使うマクロの名前か?
>>495 まずツールボックスに追加するんだ。
メニューを探そう。
DragDropでほかのウィンドウ上に持ってきたときにGiveFeedbackをかえしてくるところとそうでないところがあるみたいなんだがどういう違いだか分かる人いますか?
C#で色々作ったのですが、他の人に使ってもらおうと思ったら、他の人のマシンでは動きませんでした。 フレームなんとかというのが入ってないマシンから動かないのだと思うのですが、でも、普通の人は入れてませんよね。 なんか、うまい方法ってあるのでしょうか?
Windows Update
エクスプローラのフォルダリストにフォーカスをあてて カーソルを下に移動させると、ファイル一覧が表示されますが 常にファイル一覧を表示するのではなく、カーソルが止まったところで 表示されるようになっています。 このようなものを実装するにはどういう方法が最適なのでしょうか。 今作っているのは、ListView1 の項目にフォーカスがあたると その内容が ListView2 に表示されるものです。 カーソルを一気に移動させようとしても、ListView2 にいつも 描画しようとするので、処理が重くなってしまいます。 C# と直接関係のない話題かと思いますが、いい知恵があったら貸してください。 よろしくお願いいたします。
>ファイル一覧が表示されますが てのが何のことやら分からないが、 キーで選択が変わったらタイマーを回したらいいんじゃないの
最近、メニューとか表示とかがハイパーテキスト(HTML?)になってるソフトがありますが、 あれはそういうAPIがあったりするんでしょうか。それとも自分で一からコーディング?
>>508 フォーカス・・・じゃなくて選択だと思うが・・・が移動したときには、
→(a) PeekMessageで(WM_MOUSEMOVE以外の)マウスイベントかキーイベントがある場合には、
短いタイマーをスタートさせる。そうでなければListView2を更新してタイマーをキャンセル。
タイマーが発火したら
→ また(a)を行う。
そんな感じ。
ハイパーテキスト(HTML?)てw エスパーじゃない俺には何のことだかサッパリわからんが、 ひょっとしてLinkLabelのこと言ってるのか? つーか、個人的にはこういう人はプログラマやっちゃいけないと思う。
VisualStudioのスタートページみたいなののことを言ってるんじゃないか? 普通にIEコンポーネントで表示させてるだけだが
>>512 あれだろ。
xpのプログラムの追加と削除とか、VSのC++ウィザードとかはHTMLで書いてある。
WPFが使い物になればそんなことしなくてもいいんだがね…はぁ Orcasマダー
516 :
デフォルトの名無しさん :2007/02/14(水) 23:19:25
517 :
510 :2007/02/14(水) 23:24:25
LinkLabelではなくて、
>>514 の言うとおりXPの「プログラムの〜」とかiTunesとかです。
ああいうのを使いたいんですが。
518 :
510 :2007/02/14(水) 23:29:53
>>513 やっぱりIEコンポーネントなんですかね。
リンクにイベントハンドラを割り当てるのとかどうやってるんだろう。
<a href="action:foobarbaz">リンク</a> みたいにリンク貼っといてNavigateイベント捕まえればいいんじゃね?
つーか、個人的にはこういう人はプログラマやっちゃいけないと思う。
>>519 なるほど、ちょっと手間ですがそれでいけそうですね。
WebBrowser インスタンスの ObjectForScripting プロパティ に オブジェクトをぶち込んどくとスクリプト側から そのオブジェクトのコード呼べるよ
""" ♥ ヽ|〃
お前らそろそろインタプリタ出来た? もう出来上がった頃かと思ってもらいに来たんだけど。
早朝5時にそんなくだらねえこと書いてるくだらない自分が嫌にならんアンタって 幸福な奴だよなw
>>470 みたいなのを使ってそれっぽいのを作るのは簡単だろうけど
インタプリタとは言わない
PowerShell (Monado)? でいいじゃん?
OOPだからインタプリタは意味内。 どうしてもインタプリタ作りたかったらJava使え。
>OOPだからインタプリタは意味内。 そんな餌に(ry
>>529 馬鹿だろあんたもw
遂次実行ってことは、その処理系にはユーザー定義の型を持たせ難いことを
意味するんだよw
C#の文法には前方宣言がないから何らかの方法で型名の遅延解決をできるようにする必要はあるだろうな。
すべてのメンバをデリゲートで持つようにするとか
何でインタプリタが欲しいの??
IronPython
前方参照なつかしい。 これでコンパイル速度が速かったPASCAL思い出した…
OOPだから、というのは変でした。 OOPスクリプト言語も一応インタプリタみたいなものが多いみたいだし。 ASCIIコードを実行してるわけじゃなくて、内部コードに変換してるんだろうな。
Emitで無理やり実現できないかな
>>530 持たせ難いといってる時点で矛盾を露呈していることに気づいてなす
つーか、最近のCPUなら実行時にcscにかけたって大丈夫だろ。
>>539 それはコンパイルしてるw
そのあともう一度コンパイルする羽目に…
クラスのスタティックメンバが参照されたり、オブジェクトが最初にインスタンス化されるあたりで おもむろに相互参照の解決とか始めるってのはどうだろう。 実行中にエラーが出たりしていかにもインタプリタらしい感じの動作になるな・・・
実行部分よりも下に型定義があった場合はどうするよ 結局、最初に全部読む羽目になるんじゃないか?
とりあえず名前を考えよう ShapaScript
CSharpScriptってきっと探せば誰か既に作ってるだろ。
CSharpScript の検索結果 約 52 件
できても c--って感じだろ。 c=かなw
現状,完結したコードを実行時に一気にコンパイルするものしかないみたいだな
C::Script
C# Script for .NET 2.0 script compilerってなってるね。 何だこれ?
>>530 そもそも持たせ"難い"ってプログラマにあるまじき発言だな。
TabControlの文字・画像をタブ幅を固定したまま左に寄せることは出来ませんか? タブ幅を固定しようとして、SizeModeをFixにすると画像と文字が中央によってしまいますし 例としてはSleipnirのタブのようにFaviconとタイトルを左詰にしたような感じです もしかしてオーナードローするしか方法はないでしょうか?
オーナードローすりゃいいんじゃね?
>>553 そういうのは「するしかない」と表現しようね
そういう揚げ足とって楽しいか?
オーナードローすりゃいいなんて答えの方がガキっぽい匂いがするが
そりゃ鼻がおかしいんだろう
そんなもの大昔に卒業したがな。
最悪,空フォームに全部自前で描画すればなんだってできる
c++の<algorithm>で定義されているような関数ってC#で使えんの? accumulateとか. 関数型ライクにC#を満喫したいんだ。
>>561 うーん、少なくとも標準ではない。
generics 内でオペレータのオーバーロードしたの使えないから作りづらいし。
C++ の template と違って、インラインに展開されまくったりしないから
効率もあんまりよくないと思うし。
>>562 thx!
そうか・・・。
だからあんまりそういう系の話出てこないのか
564 :
デフォルトの名無しさん :2007/02/20(火) 00:25:47
DynamicMethodに関して質問です。 DynamicMethodを定義したのですが、通常のメソッド呼び出しより2倍以上の時間がかかってしまいます。 DynamicMethodから生成されたMSILとハードコーディングされたメソッドのMSILを見ても バイトコードのサイズは誤差程度なのですが・・ やっていることはオブジェクトのプロパティを取得して同値判定しているだけです。 o.Name == "name";//ハードコーディングによる比較 PropertyInfo prop = o.GetType().GetProperty("Name"); (string)prop.GetValue(o,null) == "name";//リフレクションによる比較 DynamicMethodWriter dmw = new DynamicMethodWriter("Name");//Nameプロパティで比較するようなILを作成するクラスを初期化 dmw.Compare(o, "name");//DynamicMethodによる比較 比較する箇所の速度を比較するとDynamicMethod:リフレクション:ハードコーディング = 4:2:1 位になってしまいます。 DynamicMethodのInvokeメソッドを使用した場合、そもそも速度は出ないものなのでしょうか?
565 :
デフォルトの名無しさん :2007/02/20(火) 00:31:12
listboxに表示されている項目について、右クリックで選んで 右クリックメニューを出して、そのメニューを選択するのは どうすればいいですか?
Invokeじゃなくてデリゲートにバインドしないとだめじゃない? Invokeはリフレクションと実質同じだと思う。
つーか、プロパティとかだとリフレクションて意外と早いのね…
こっちで試したらリフレクション:ハードコーディング=700:1くらいだったぞ
どんなリフレクションの使い方してる? てかリフレクションじゃない方インライン展開されてるとかっておちじゃねーの?
571 :
569 :2007/02/20(火) 17:49:15
リフレクションの方は
>>594 をそのまま
リフレクションじゃない方は
[MethodImpl(MethodImplOptions.NoInlining)]
string GetName(){return this.name;}みたいに変えたり
仮想プロパティにしたりしてみてもほとんど変わらなかった
>>594 がみえない…
そうか、やっぱり差がある方が普通な気がするな。
>>564 は何かを間違ってる気がする。
リフレクションて実行時にコンパイルしてるの?
何ツーか参考書見直してからカカッテコイ!щ(゚Д゚щ)
576 :
564 :2007/02/20(火) 21:13:47
計測に使用したプログラムはちょっとしたイテレータを含んでいたのでリフレクションの差はそんなに出なかったみたいです。 試しに作ってみたプログラムを一応貼り付け。まぁ、問題はDynamicMethodを使うとさらに遅くなってしまったことなんですが。 public class RefTest{ public void Test(){EvalByReflection();EvalByHardcode();} private MethodInfo _m; private NamedObject[] _array = new NamedObject[1000000]; public RefTest(){ _m = typeof(NamedObject).GetProperty("Name").GetGetMethod(); for (int i = 0; i < _array.Length; i++) { _array[i] = new NamedObject(); } } public void EvalByReflection(){ Stopwatch sw = new Stopwatch(); sw.Start(); for (int i = 0; i < _array.Length; i++){if (_evalReflect(_array[i])){ }} sw.Stop(); Debug.Print("reflect {0}ms", sw.ElapsedMilliseconds); } public void EvalByHardcode(){ Stopwatch sw = new Stopwatch(); sw.Start(); for (int i = 0; i < _array.Length; i++){if (_evalHardcode(_array[i])) { }} sw.Stop(); Debug.Print("hardcode {0}ms", sw.ElapsedMilliseconds); } private bool _evalReflect(NamedObject n){return ((string)_m.Invoke(n, null) == "name");} private bool _evalHardcode(NamedObject n){return n.Name == "name";} } public class NamedObject{ private string _name = "xxxx"; public string Name { get { return _name; } set { _name = value; } } } reflect 2280ms hardcode 66ms reflect 2405ms hardcode 70ms 単純な、そこだけの処理コストだけで比較すると確かに700:1あるかも。
なんでベンチの最中に文字列比較とかそういうことを入れるわけ? しかもメソッド呼び出しが2回で間接になってるし。 (まああえてそういう場合で計測ってのはもちろんありえるが) しかしそれでも30倍程度は差があるし、2倍っていったいどんなベンチしたときなんだ? >まぁ、問題はDynamicMethodを使うとさらに遅くなってしまったことなんですが。 で、デリゲートではためしてみたのかえ? Invokeじゃリフレクションとおなじだっつってんだが。
バインドで試しました。 静的に作成したデリゲートにバインドしたら速度的にはほぼ同じでした。 デリゲートの型が実行時に確定するようなコードだったので、どのようにバインドすればいいのわかりませんでした。 実装方式変えてDynamicMethodのシグニチャを固定しました。 ありがとうございました。 ベンチはより実装に近いイメージで計測しました。(動的メソッド内でメソッド呼び出しを行っていたので) DynamicMethodとの比較がメインだったので、2倍とかの情報は誤解を与えました、ごめんなし。
>静的に作成したデリゲートにバインドしたら速度的にはほぼ同じでした。 これは速くなった(ハードコードに近い感じ)と受け取っていいのか?
はい、ハードコードに近い感じです。 生成したILが若干余計なものが含まれているので少し遅いですが ILが同じなら多分同じくらいじゃないかと。
マーシャリングについて質問です。 文字列を返すアンマネージドAPIで、呼び出し側が文字列のために自前でバッファを 割り当て/解放することが要求されているものでは HogeAPI( LPTSTR lpstr ); ↓ HogeAPI( StringBuilder str ); のようにするとマーシャラがアンマネージドバッファを勝手に解放してくれると どこかで読んだ記憶があるんですが、 SHGetKnownFolderPath(... , PWSTR *ppszPath ); みたいにCoTaskMemFreeで解放することが要求されているものはどうしたらいいんでしょうか? SHGetKnownFolderPath(... , out string ppszPath ); で動作してしまうんですが、やっぱりIntPtrで貰って自前で解放しないと駄目なんでしょうか。。
ビルドでインストールされるプログラムを、 exeファイルの実行等でビルド等の処理を行うにはどうした良いのでしょう?
日本語でたのむ
インストーラの実行時にビルドしたいとか?
順番に行こうw まずこれから。 「ビルドでインストールされるプログラム」
理解したかも
「ビルドでインストールされるプログラム」はVisualStudioのGUIを通したビルドや実行のことで,
>>582 は,出力されたexeファイルがどこにあるのかが分からないんじゃないか?
プロジェクトのフスマソォルダ\bin\Debug\名前.exe
間違ってたらスマン
エスパーすると、nmake.exeが正解。
コマンドでビルドしたいってことじゃね? 違うな・・・
次はコレ。 「プロジェクトのフスマソォルダ」
msbuild とかこういう話じゃないの?
591 :
デフォルトの名無しさん :2007/02/21(水) 18:39:22
すみません。 p[0]+2 このような配列への計算はできないのですか?
「配列への計算」という言葉の意味はわかりませんが、そのような計算はできます。
エスパー回答! p[0]=p[0]+2
594 :
デフォルトの名無しさん :2007/02/21(水) 20:12:16
double[]とint型の演算はできないというエラーが出たのですが・・・。 public int a(・・・・) { swap(p[i],p[i]+i); } swap(res a,res b) { : } このように使うときなんですが。
C#にポインターは無いだろ
なにその言語
ref
p[i] + i の ref ってなにか考えてみろよ。
意表をついて res型つくってるとかw
601 :
デフォルトの名無しさん :2007/02/21(水) 20:33:55
すいません。間違えました。 public int a(・・・・) { swap(ref p[i],ref p[i]+i); } swap(ref a,ref b) { : }
>>601 >>600 のリンク先のスレッドで続けるか、C# の学習本(サイト等でもよい)を読むか
した方がよいと思います。
それ以前に良く見直せ。 swap(p[i],p[i]+i); これは何をしたいのか分からん。 実際に引数が何を指しているか考え直せ。
>>601 なあ、おまいさん。
それ、意味分かって書いてんのか?
605 :
デフォルトの名無しさん :2007/02/21(水) 20:55:15
これ適当に書いたものなので特に意味はないです。 ただp[i]+iのようにできるか知りたいだけだったのですが。
606 :
デフォルトの名無しさん :2007/02/21(水) 21:01:04
>p[i]+iのようにできるか できるっつってんだろボケ。
607 :
デフォルトの名無しさん :2007/02/21(水) 21:03:15
だからエラーが出たから聞いてんだろハゲ!!
>>607 だからさ、これはできるの。
↓
p[i]+i
これはC# のコードではないし、何をしたいのかもわからないの。
↓
>>601
適当に書いた箇所が間違ってんだ低脳
変数と変数でないものの区別も付かんような奴は氏んでください
>>605 そういう時には
「ref 引数に変数ではなく式を渡せますか」と質問して、
「渡せません」と答えをもらって、
「そうですか、ありがとうございました」とお礼を言うんだよ。
>p[i]+iのようにできるか
こんなの関係ないじゃん。
変なコードを書くより、何をしたいのか日本語で書いてよ。
swap(ref p[i],ref p[i]+i); いったいどういう挙動を期待してるんだよ。
2/21 (水) NHK教育 22:00 ようこそ!鉄道模型の世界へ・レイアウト制作入門
( ´д)テッチャン(´д`)テッチャン(д` )
コテッチャ━━━━(゚∀゚)━━━━ソ!!
はじまった
みるなよw
市況1かよ。
流れを切って申し訳ありません。質問させて下さい。 半透明ウィンドウで、テキストだけをくっきりと不透明で表示したいのですが、 可能でしょうか?可能であればヒント・参照先を教えていただけるとありがたいです。 よろしくお願いします。
可能だけど難しいよ。 レイヤードウィンドウ(layered window)にして、アルファ付で描画したビットマップのGraphicsから 取得した DC のハンドルで UpdateLayeredWindow してあげる、というような流れ。
vistaでxaml使ってやれ。
XP SP-2 でも .NET 3.0 つかえるよ
625 :
デフォルトの名無しさん :2007/02/22(木) 10:39:22
数値でも、文字でもインデクサの指定できるDictionaryだかListってなかったけ? dic[int]やdic[string]のどちらもイけるやつ。
なければそれぐらい作れ
627 :
デフォルトの名無しさん :2007/02/22(木) 11:19:43
>>626 作り方聞いてんじゃなくて、あるかどうか聞いてんの。
最近はゴミばかりだな
>>628 お前もな
けなしてる暇あったら回答しろ。
相談室なんだから。
>>626 SortedListだかSortedDictionaryあたりが使えたかもしれないね。
俺もあったような気はするんだが、結局自作したかもしんない。
つーか、Dictionary<object> でよくね?
っていうか、俺には
>>625 の言ってる意味がさっぱり分からんが。
いや「分からん」ってのは婉曲表現だから勘違いしないように
そうか
VBのCollectionと同じのがほしいんでしょ。
634 :
デフォルトの名無しさん :2007/02/22(木) 14:41:11
なんか色々カキコすまそ 要は dic[1] = "hogehoge" dic["key1"] = "hogehoge" のどちらでもアクセスできるクラスがなかったかなぁと。
ない。 以上。
いや、だから、Dictionary<object, string> でいけるって。
>>636 >>634 はindexでもkeyでも両方で全部のアイテムにアクセスできる
もの、という意味でいってるんじゃないのか
それならSortedList
あまり詳しくないけど DataTableだかDataRowとかは?
640 :
デフォルトの名無しさん :2007/02/22(木) 15:55:43
ふぃ〜 SortedListにて、いけるわ list[0] list.Keys[0] でアクセスできるわ。 これだた。 センクス〜 長々お付き合い頂き、誠に、真に、感謝いたす。 それでは失礼つかまつります
641 :
デフォルトの名無しさん :2007/02/22(木) 15:57:29
すんずれい。 list["key"] List[0] だ。 それでは!
TreeView で CheckBoxes = true の場合に、チェックがされたノードって拾えますか? .NET 1.1 なのですが。
>>642 自己レス。TreeNode node = (TreeNode)e.Node;
実行時に、基底に同じクラスを持つインスタンスの数をチェックしたいです。 よく判らないのですが、リフレクションを使うと可能になるのでしょうか?
基底クラスを触れるなら, public static int Count; public MyBaseClass() { Count++; }
>>645 おぉ。難しく考えすぎていました。ありがとうございました。
647 :
デフォルトの名無しさん :2007/02/22(木) 20:55:21
MMORPGのようなコンテンツを作りたいんですが、 アイテム「が100個あるとすればどのようにDBで管理すれば良いのでしょうか? フィールド100個とか無理です・・・
本屋行けばそういう本は幾らでも並んでるから、好きなの買ってきなよ
ArrayList<Hogerpg.Item> itemList = new ArrayList<Hogerpg.Item>();
List<T>
651 :
デフォルトの名無しさん :2007/02/22(木) 21:02:38
買えないから聞きましたorz
>>647 データベースレイアウトの話ならスレ違いだと思うが、
持ち主のIDを振ったレコードを100ほど用意すればいいんじゃなかろうか
なかったよ
>>654 コンピュータ関連の棚とは別に、
ゲーム関連の棚がある。
オセロとかダーツの辺りにあるよ。
>>640 ほんまにそれでええのんか?
OrderedDictionary とか、文字列対象ならNameValueCollectionとか。
658 :
デフォルトの名無しさん :2007/02/23(金) 01:56:42
はっきり言って俺はC#は詳しいよ。 Append()は戻り値がvoidなので新たにオブジェクトを作らない。 よーく考えろ。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\| ̄ ̄ ̄ ̄ ̄ ̄ _,,t-‐‐-、,-‐‐-、 三'::::::............... .....::::::`y,. ナ::::::::::::::::::::::::::::::::: :::::::::::::ヾ | ̄| V::::::::::::::::_{{ ({∫∬ノノjヾ:::::{ | ̄| | ̄| ナ::::::::::::::i`__,,,,,,,ァ_ _,,,,,_ t;;:ヌ | | | | イヘ::::::(ヾ~!,ャt、 !'''i ィtン )=f }f | | | | i {t)テ" ヘ' '___,イ ヽ_/ 介' | | | | _,rヘ_,j|!' /ー--''! |' |,.ィ―'''' ̄ /| | /二ク ! /;;:::'';;::''::;;:/ { ! 、 ヾニン ノ\ /'''::::;r|''':::;;;| | ! \ _,,./|::;;'''\ /:;;/ |;;;''::;;| 丶\ `__>-ー´ !;;;:'''::iヽ、 i/ |'::;;;;''| 三 ―''" !''::;;;;| /ヽ /⌒ヽ |;;''':::;| \ !;;::''|/ i / \{'';;;::''}  ̄二ニ= !::;;| | /ヘ |;;:::::;{ ‐- !/ | / i |:::;;;''! ー ! / | / l |;;'';イ } {、 〉、 ∧テ{ ヽ _ _,,,,;;;;;:::-==ニ;;;_ ノ __,イ´ / \_ //レ!  ̄  ̄ { ̄ |
図書館にあるコンピュータ関係の本ってマイコンとBASIC時代止まりなんだが@田舎
>>659 古くなった技術書ほど役に立たないものはないよな。
古本屋でたな晒しになってるN66BASIC入門とかNIFTY-Serve活用術とか、誰も買わないって。
>>657 おおぅ!
こちらの方が使いやすいス!スバラスィ〜
ご好意感謝致す。
このスレを見ている人はこんなスレも見ています。(ver 0.20) Windows Vista PGスーパーハカー専用 スレ [Windows] 総合質問スレッド@PCサロン Part23 [PCサロン] OSを作ろうpart12 [OS] Windows Meの良さについて語ろう。 [Windows] JR東日本 社会人採用対策スレッド 2006 Part6 [転職]
663 :
デフォルトの名無しさん :2007/02/23(金) 13:29:22
JR東日本ってことは、JR情報システム関連だな。 あそこはまだドトネトにこだわりをもっているのか?
664 :
デフォルトの名無しさん :2007/02/24(土) 11:52:22
COBOLという古い資産に縛られて生きているからね
JAVAやC#なくなってもCOBOLは現役だろ
SVGを表示するには独自に解釈するしかない?
667 :
デフォルトの名無しさん :2007/02/24(土) 18:20:14
ファイルをダウンロードするときに、リクエストヘッダに Range: bytes= と、 If-Modified-Since: を追加したいのですが、どうすればいいですか?
どういうクラスを使ってるかくらい書いてくれんと答えようがない
669 :
デフォルトの名無しさん :2007/02/24(土) 18:27:09
HttpWebRequestです。
HttpWebRequest.AddRange HttpWebRequest.IfModifiedSince 何でMSDN見ないのかなあ
671 :
デフォルトの名無しさん :2007/02/24(土) 18:41:18
どうもです。
672 :
デフォルトの名無しさん :2007/02/24(土) 18:45:55
>>665 何れ衰退するよ。あの言語は問題だらけな上に将来性がない。
抵抗勢力のッサン共を救済するためにあえて残っているだけ。
今は必要悪だが、徐々に不要になり、いずれ不要悪になる。
673 :
デフォルトの名無しさん :2007/02/24(土) 18:47:49
ライセンス? 何を言ってんだおまいさんは
MSDNなしで開発できる猛者とかいるわけ?尊敬するわ
全く知識がなくてある程度の見当がついてないと探しようがないけどな
677 :
デフォルトの名無しさん :2007/02/24(土) 20:03:54
CookieContainer|CookieCollectionをファイルへ保存したいのですが、どういった方法が一番良いでしょうか? よろしくお願いします。
678 :
デフォルトの名無しさん :2007/02/24(土) 20:13:46
>>679 ・・・出来ました・・・。
恥ずかしながら、バイナリシリアル化とXmlシリアル化を混同してました・・・orz
有り難うございました。
682 :
デフォルトの名無しさん :2007/02/24(土) 21:45:56
JavaでいうところのXMLEncoder/XMLDecoderが XMLシリアライズか・・・
コンパイラDLしたんだけど、実行の仕方がわからん 誰か教えて
断る
改めてVisualC#Expressを落としてきて出直せ
質問させてください。 Formを特定の場所に出力させるために下記のようなコード書きました。 -------------------------------- Form form = new Form(); form.Show(); form.Location = new Point(300, 300); --------------------------------- しかし、上記のように書くとShowしたフォームが一瞬、別の場所に表示されてしまい ちらつきが発生してしまいます。 どのようにコードを書けば画面のちらつきは解消できますでしょうか? ご教授お願いいたします。
表示してから動かしたらちらつくに決まっているではないか Form form = new Form(); form.StartPosition = FormStartPosition.Manual; form.Location = new Point(300, 300); form.Show();
form.StartPosition = FormStartPosition.Manual; こんなのがあったんですね。 ありがとうございました。
690 :
デフォルトの名無しさん :2007/02/25(日) 00:04:27
>>686 必要システム
* サポートされているオペレーティング システム : Windows Server 2003; Windows Vista; Windows XP
Windows持ってないから無理です
気違い警報
ieがない
あきらめたら?
単なるヘルプファイルの詰まったDVDなんだから XML解読してビューア作るくらいしろよ
>>689 それもそうだけど、Show()してから移動してるのが主な原因
697 :
689 :2007/02/25(日) 01:17:54
>>696 はい。そうですね。
俺が行間を補わなかったので
そう思われても仕方がありませんね。
698 :
696 :2007/02/25(日) 01:29:16
>>697 わかってたんなら余計な事言った。スマン
>>693 釣り野郎か?Fxで普通に見られるつーの
眼がないので無理です
Fxてなんだ サンテFX?
.NET Fx
なんでで炉の裏ものって肝心なところ塗り潰してたりするんだろ どうせ違法なのに
規制前だろ
>>701 Wikipediaより
Firefox は FireFox, FireFOX, FIREFOX, Fire fox, Fire Fox
などと表記されることが多いが、これらはすべて誤表記である。
正式には最初の文字だけが大文字であり、分かち書きもしない。
また FF と略記されることも多いが、こちらも誤りである。
Fx あるいは fx が好ましい略称とされている。
「好ましい」略称が示されているだけなのにその他の略称は誤りなのか いやまあその部分書いた奴は /. で死刑とか言ってたようなのと同類なんだろうけど
スレの流れから判断できるだろ ここも春が来たか・・・
まあMozilla-Japanもそういう口調で出てるからいいんじゃね Q. Firefox のスペルは? 短縮形は? A. Firefox のスペルは F-i-r-e-f-o-x です。最初の文字だけが大文字になります (例えば、FireFox や FireFOX、FIRE FOX など、多くの人がそうだと思い込んでいるものはすべて間違いです)。好ましい短縮形は「Fx」か「fx」です。
英文翻訳体だから原文で読まんとなんとも
為替証拠金取引
おまえら全員消えろガキ
714 :
デフォルトの名無しさん :2007/02/25(日) 23:15:01
WebBrowserを使って、マウスがリンク上にあることを 伝えるイベントって何ですか?
そんなものはない
<a>のonmouseoverになんか設定しとけばいんじゃね?
ファイヤーフォックス? ファイアーフォックス?
スレ違いというより板違いだな まー 一人の基地外が暴れているだけだと思われるが
720 :
デフォルトの名無しさん :2007/02/26(月) 23:45:35
AxWebBrowser で表示させたブラウザ内をマウスホイールで スクロールするにはどうしたらいいですか?
.Netのロギング機構って使い辛いと思いませんか?Trace.XXX TraceSwitch 皆さんはロギングには何を使用していますか? ツリー構造なのと、書き込みメソッド呼び出しが簡単なので自分はlog4netを使っています。 標準のをしっかり使ってる人いますか?
自作のライブラリに限るね。 不用意に第三者の書いたコードを混入させるわけにいかんし。
仕事だと再発明をせんとならん場合もあるだろう
C#のソースコードをJavaに変換したいのですが どんなツールで出来るか、或いは出来ないのかを教えて頂きたいです
出来ない。
そんな魔法みたいなことが
っJ#
Enterprise Libraryって周りでは使ってるひと居ないんだけど。 みなさんどうですか?
732 :
デフォルトの名無しさん :2007/02/27(火) 17:54:49
使ったことありますが、二度と使いません。
>>726 .NET FrameworkとJAVA SDKで互換性がないから無理。
VB.NET VC.NET VC#.NET
この3つ間なら一部のAPI以外は互換性あるから可能だと思うけど。
>726 文法だけならほとんど同じだから、 スクリプト組んで変換すれば動くかも。 ライブラリを一つでも使うと無理。
C#でソフトウェアを作ろうと思っているんですが C#はソースコードが丸見え、通信の反応からソースコードがばれるといいますが どういうことなんでしょうか?詳しい方お教え下さいませ また、それに対する対処法などもあればお教え願いたいです ただし、逆アセンブリング解析でのソースコード判明は置いておいたとします
ヘラブナ釣り思い出した
>>737 あらゆるカテゴリのUnicode文字が識別子に使えたら面白いな。
繁体字、カンナダ文字、IPA、ハングル、アムハラ文字、罫線、アルメニア文字、etc.が入り乱れるソースコードに。
それはすごい(棒)
それはうまい(棒)
それはエロい(棒)
それは珍しい(棒)
744 :
735 :2007/02/27(火) 20:50:24
>>737 私は難読化ツールを紹介して欲しかったのではなくて
逆アセンブリング解析と難読化の有無は置いておいた上で
C#はソースコードが丸見え、通信の反応からソースコードが分かるといわれる仕組みを知りたかったのです
どういう風にしてソースがばれるのかということで、クライアントサイドとサーバーサイドで動くもの
両方とも同じ仕組みでソースコードがばれてしまうのかということについても、不躾ですがお教え願いたいです
>通信の反応からソースコードが分かる イミワカラン
むむ、この浮きの反応はスレアタリだな。あわせたらいかん。
> C#はソースコードが丸見え、通信の反応からソースコードが分かるといわれる > 両方とも同じ仕組みでソースコードがばれてしまう そんなことはない。
通信云々は知らんが、.net言語は全部ILに変換するはずだから、 ILさえ解析できれば動作がわかるのは当然。 それがソースコード丸見えっていうのならそうに違いないが、 アセンブリが読めるからソースコードがわかるってのとそんなに替わらん。 現実的にはILからC#のソースに逆変換するのは難しいんじゃないか? おれが知らんだけかもしれんが。
C#をコンパイルしたままのMSILは、ほど100%の精度でデコンパイルできるでしょ
750 :
737 :2007/02/27(火) 21:17:23
リンク先にある「Reflector for .NET」を探しているのかと思ったけど いったい何がしたいのやら・・
CILは通常のネイティブアセンブリと違って、人間の読むことができる言語だがな
>>749 ググったらほんとにそうだった。
MSILってもっとミクロな言語だと思ったんだが、クラス名や関数名まで再現できるのね。
こりゃセキュリティ関連で使うには問題あるわ。
解析されても大丈夫なセキュリティにすればよいのだ
> こりゃセキュリティ関連で使うには問題あるわ。 そんなプログラムを書くプログラマの方に問題がある。
セキュリティじゃなくて、シェアウェアの解除コードとか埋め込んでる人たちは困るだろうな。 大体ネガってるのはシェアウェアの作者や業者だな。
競合他社のアセンブリを、なぜか入手できちゃって、なんとなく解析しちゃってる 大手ベンダーの存在も見逃せないけどなw
.NETの初期の頃なだまだしも、今更な話題で盛り上がれてもなぁ。
で、
>>744 はどこ行ったんだ?
オマエの知識の参考元のURLでも示してくれよ。
初めのころはそういう話題で盛り上がったのを思い出した。 ソースに近い情報が見えたら盗用してるのがばれてしまうではないか。 おらのセキュリティの危機っす・・とかいうネタがあった。
クライアント側で動くものについてはC#でもJavaでもC++でも アセンブラでも(クラックは簡単という点で)大差ないんだけどね。 サーバ側で動くものについても(クラックは難しいという点で) 大差ないわけだが。
そりゃサーバー側のプログラムが手に入れば逆コンパイルできるかもしれんが それ以前にどうやってそのプログラムを手に入れるんだという問題が
文句があるならP&Gは何の略か言ってみろ。
大学翻訳センターです。
何とかアンドギャンブル
今回のスレは今まで以上に無駄な内容ばかり。
>C#はソースコードが丸見え、通信の反応からソースコードが分かるといわれる どこで言われてんのか教えろ
(アニメ) マリア様がみてる 〜春〜 第13話 「パラソルをさして」 [23m40s 640x480 DivX502+MP3].avi
ソース見える言うけど実際はあれくらい見えてもいいんじゃないかと思う。 見られてほんとに困るところは少数な気がする。 まあいやってのも分かるんだけどね。
>シェアウェアの解除コードとか埋め込んでる人たち んなの.NETでなくてもあるていどは似たようなもんだと思うが。
>>752 リフレクションが使える時点で気づけよ・・・
>>725 せめてTraceSourceの説明がまともにあるとこにしてやれ。
Enterprise Libraryはログだけのためには大げさなんだよな…
解析する奴はドングルにしたって解析するだろ
つうか普通はバイナリでも見られちゃ困るものはそのまま埋め込むようなことはしない。
ソース
ソースが見えるからセキュリティで使うのは問題って、典型的なSecurity by Obscurityですね
>>744 あんまりお勧めじゃないけど、
『これからはじめる .NETFramework .NETリモーティング編』
にそこら辺の理由が書かれている。
実際には『C#はソースコードが丸見え…』でなく、作り方によっては丸見え(?)なってしまうこと。
もうちょっと書くと、C/S間でお互い通信するために、インターフェースのやりとりが必要で、
インターフェースのやりとりをするのに生のコード(DLL)を渡してしまうと
>>752 が書いているようにMSILで簡単にコードが分かってしまうってこと。
インターフェースのやりとりに3種類あるらしく
・実装タイプ
・メタデータタイプ
・インターフェース
で、実装タイプにはソースコードの機密性の問題があるらしい。
その他はインターフェースのみだから、ソースコードの漏れの問題は無し
ぶっちゃけfubsucatorとかで難読化した紋ってどの程度難読化になるのかね? 個人的にはあれで難読化したものおおうとは思わないが、気合入れてやる人にはあまり意味がない?でもそんな人にはあせんビルコードでも意味が内規がするが。
難読化なんて文字通り意味ない。 ソースコード見られてマズいのはセキュリティ関連や特許技術なんかじゃねーの? それか恥ずかしいとかw
業務で実際に見られて困るのは、DBのレコードや通信データがほとんどだから、 DBはサーバ管理、通信データは暗号化で対応するから問題ない。
あと契約上の問題とか。ソースを納品しない契約だから、バイナリからソースを復元できてはダメとかw
>>778 通信内容からとか全然関係ないじゃん。
dll配ったらそら見れるつか当たり前。
配らなくても出来るのにわざわざ配って
ソースまる見えとかただのあほじゃん。
ああちなみに、インターフェイスでやりとりするのが常識、俺の中では。 まあそもそもリモーティング使う場合の話だが。
opensslなんかソース公開だがそれで危険なんて話は聞いたことがない
あれは公開されてるから安心なパターン。
大抵暗号キーを埋め込んでたり俺暗号もどきをおこなってたりっていう 馬鹿なことをしてる奴だろ。
売り上げ3500万程度だと接待費はどれくらいまでなら落ちますか?
はいはいスレ違い。 食費とバレナイ程度じゃねw
@IT:.NET TIPS 実行ファイルのパスを取得するには? - C# file:///D:/html/_entry/NET%20TIPS%20−%20@IT/www.atmarkit.co.jp/fdotnet/dotnettips/016exepath/exepath.html ここを参考にして、実行してるプログラム自身のパスを取得したんですが、 あってるはずのパスと比較してもうまくいきません。 実際には以下のようなコードです。 String exePath = Application.ExecutablePath; if (exePath == @"C:\p1\bin\Debug\p1.exe") { 〜 } パスはあってるはずなのに何度やってもfalseになるので、格納されてる文字列を出力してみたところ、 ExecutablePath で取得したパス:C:\p1\bin\Debug\p1.EXE 実際のパス:C:\p1\bin\Debug\p1.exe のように、実際の拡張子が小文字にもかかわらず大文字で認識されることがわかりました。 そこで、文字列比較のところでToUpper()を使うことにより正常に動作するようになったのですが、 上のサイトでは、ExecutablePathで取得したパスの拡張子は小文字なのに、なぜ私の環境だけ大文字になるのか不可解です。 これは.netのバグでしょうか?それとも私が仕様を読み違えているんでしょうか? ググっても、MSDNを参照してもそれらしいことは発見できませんでした。
多分Win32APIの仕様だと思うが とりあえずパス比較ではCaseを揃えるのは常識
そんなことあるまいと思って見てみたけど、確かに拡張子は大文字になってら ちなみに、自分の過去アプルもCaseは揃えるようにしてた。 大文字、小文字が混合している場合とか考えると、 その方が楽だからという理由だったんだけど
>>792-793 パスの文字列比較はCaseをそろえる必要があるんですか、知りませんでした。
でも、もしこれがWin32APIの仕様だとすれば、Vistaでは通常通りのパスが取得できるんですかね。
OSによって取得する文字列が違うとかまずいと思うんですが、そこらへんMSはどう考えてるんでしょうか。
Vista上のVC#2005 Express Edition で試してみたけど、 デバッグ時→.EXE リリース時→.exe になったよ
プロジェクトのプロパティで[Visual Studio ホスティング プロセスを有効にする] が有効になってると拡張子が大文字になる気がする
>>794 >OSによって取得する文字列が違うとかまずいと思うんですが、そこらへんMSはどう考えてるんでしょうか。
FATとNTFSの仕様でパス名内の大文字小文字は区別しないことになってる。
文字列として違っていてもパスとしては等しいので問題なし。
ntfsは区別できるけどな あえてしないだけで
パス文字列の等価性を検証するのはかなり困難だろ
\\?\
それかって一部の変態的サービスが無効になるだけだからなあ
UNIXのNTFSドライバで大文字小文字区別する設定があるな。 FATは元々同一ファイルになるからないが。
クマー
おまいらある領域を透明なカラーで塗りつぶしたいときはどうしたらいいんですか? やりたいことは半透明なカラーとかで描画する前にその領域をアルファ値が0のカラーで塗りつぶしてくことです。 そうしないと前回描画したものに上書きすることになってしまい残ってしまいます。 透明な色で塗りつぶしたいのはその描画した内容をUpdateLayeredWindowで半透明な描画として扱いたいためです。
XOR
System.Drawingでいいんだよな? ClearメソッドかCompositingMode?だかそんな感じのプロパティ
Graphicsのプロパティですかの? 明日調べてみます。もうおねむなので・・・(´・ω・`) お舞らあり。
あるDataSet内に関連性の無いDataTable1とDataTable2があって、それぞれのスレッドで書き込みがあるとしても、同期を取る必要はあるのでしょうか? それとも、そもそも関連性の無いDataTableは違うDataSetに分けるべきでしょうか? よろしくお願いします。
811 :
デフォルトの名無しさん :2007/03/01(木) 08:16:27
普通にalpha値指定した「色」で描画するだけだと思うんだが。。
>>809 そ、Graphics。
俺もおねむだったのではしょったけど、SourceCopyにしてFillRectangle
みたいな感じでいけない?
>>811 普通に透明な色で描画してみなはれ。
>>812 いけますたありがと♪(´ー`* )))) ((((*´ー`)ありがと♪
ベースクラスのコンストラクタで呼ばれるメソッドの挙動を変える何かいい方法ありませんか? コンストラクタから呼ばれてしまうので内部メンバを変える暇がない。 オーバー可能なプロパティを読んでるものならそれをオーバーライドすればいいけどパラメータの組み合わせの数だけクラスを作らないといけない(´・ω・`) なんかすごく醜いコードです・・・
>>814 ベースクラスの挙動を制御しなきゃいけないような設計自体がまずいのでは。
virtual
>>815 Formみたいにベースクラスで勝手にウィンドウ作られてるのとかほかの人がくそな設計してることも多いと思われ。
>>814 815の指摘通り設計がまずいと思う。
ベースクラスがきちんとデザインパターンに沿った設計をしていればそんなひどいことにならない。
いやいやですからベースクラスの設計がうんこなのは承知の上で(自分じゃタッチできないし)それをコントロールする方法ないかということだったんですが・・・(´・ω・`)
>自分じゃタッチできないし それを先に書かないと、「設計しなおせ」の嵐になるのは当然
すまんですた(´・ω・`)
ちなみにひとつでも仮想関数を使った場合にほかのメソッドをvirtualにしないりゆうってなんざんしょ。
前も同じこと言ってる奴いなかったか
とりあえず、デザインパターンも知らないやつに設計してもらいたくはないな
デザインパターンとか持ち出す以前の問題ではある ていうか、どうしてもその出来の悪いクラスを親にしないといかんの?
>デザインパターンとか持ち出す以前の問題ではある んだね 派生クラスで手に負えないってどういうケースなんだろ コンストラクタって初期化するところだろ 派生クラスで上書きで初期化すれば通常済むだけだとおもうし、 場合によっては、基底クラスのコンストラクタ呼ばなければいいんじゃないと思ってしまったけど 複数の変数間でうまいこと整合性がとれないとかなのかな?
規定クラスのコンストラクタは必ず呼ばれるだろ。
α値 0で塗りつぶしても描画されないのでは??? 50%ぐらいにしないと…
透明度0だとでは
Reflectorの今度のアップデートで ローカル変数の名前まで出るようになってない?! と焦ったが、単にメソッドの仮引数から名前引っ張ってきてるだけだった
チラシの裏にでも書いてろ
いや、変数の意味をある程度推測して名前つけるようになってるよ。
Add-Inが全滅したでよ!!!
MSDNライブラリのRSACryptoServiceProviderの項を見ますと、次のように書かれています。 > Microsoft Enhanced Cryptographic Provider がインストールされている場合、 > RSACryptoServiceProvider は 384 ビットから 16384 ビットのキー長を 8 ビット単位でサポートします。 > Microsoft ベース暗号化プロバイダがインストールされている場合は、 > 384 ビットから 512 ビットのキー長を 8 ビット単位でサポートします。 これは要するに、Windows 2000以前のバージョンでは、RSAの鍵長は512bitまでだ、ってことなんでしょうか。
>>838 そうじゃないの?
俺もそう受け取ってるんだけど
MSDNのどっかに、もっと直接的に書かれてなかったっけ?
840 :
839 :2007/03/02(金) 14:00:31
お前らは、なぜC++/CLIを使わずに、C#を使うの?
キモ過ぎる C++でさえ変態的なのに、もはやC++ですらない
キモいは言い過ぎだと思うけど、生理的に嫌。
C#ってそんなにキモイの?
というか*C++/CLIを使わずに*って決め付けられても。 適材適所としか。
C#でできることって全部C++/CLIでできるじゃん。しかも簡単に。 なのに、なぜC#をわざわざ使うのかわからない。
勝手にC++/CLIでも使ってろよ
>>846 ・匿名メソッド
・イテレータ
IDEに広げればインテリセンス(さらにその他の支援機能)は劣るし、
「クラス」で機能分割しているからヘッダのシステムは糞めんどくさいだけだし
そもそもC++ってEffectiveC++とか「あんなレベル」の解説書が何冊も書ける
仕様なほど落とし穴だらけだし(EC++が糞本っていう意味じゃないぞ)、
まぁ、その、なんだ、C++は嫌い。もう。すごく。便利だけど。
C++/CLIなんてさらに複雑だし。つーか、あのデストラクタの実装超キモいよ。
>>849 そういう論理的な理由が聞きたかった。ありがとう。
.NET使うなら一番楽ができるのはC#なんだろうなあとは思うけど、 言語的にはけっこう窮屈な気がする。多重継承ありでmix-inとかやりたい。
>>851 それは、partial class + Generatorで補えってことなんだと思う。
個人的にはこれはキモいのでいい手ないかなぁとも思うけど、
Extension Methodがあんな形で出てくるところを見ると、難しい
点でもあるのでしょう。
ヘジの統合屋としての才能は信用しているから余計に。
dotcoeという.NETで書かれたPC管理ソフトがある。 難読化もされていない。 リモーティングも活用ですよ。 お前等もこれくらいノーガードを見習え。
見習えって誰も難読化なんてしてませんが・・・
なんて○○使わずに○○使うの?って質問の方がキモイ 世の中の車は全てヴィッツが正しいとでも言うのかよw
おまえらなんでムキになってんの?
男ならGT-R
結論 1から始めるなら C# よりも C++/CLI の方がよい。
そうだな。1から始めるような人がこのスレに来なくて済む
そして路頭に迷うんだな
C#不要論が大勢を占めてきたな
ManagedからんだときはC++/CLIでできることもC#でできることもかわらんと?
C#にしろC++に言語など所詮道具、使う人の技能次第だということがわからないとは。
物事を始めるにあたり、先ずはじめに、どの道具を使うかを選ぶわけで、 道具としてC#よりC++/CLIの方が便利であるという結論が出た。
>>865 そうだねー原子とかいじれればたいていのことできるもんねー。すごいねー。
868 :
865 :2007/03/03(土) 12:50:20
C# WindowsOS上の開発(ASP.NET・スマートクライアント) C++ UNIXおよびリソースの少ない組み込み開発 に使い分けられるだけだよ。 C++はライブラリ互換性に問題あるからWindowsアプリで使うには厳しいだけ
漏れはWindows上なら、 1.仕事で作る物と使い捨てプログラムはC#が使えるなら使う。 2.個人使用目的、特に常用する物なんかはC++で古風に書く。 1は楽だから。 2は.NETでかいから。
c++ のライブラリで ***a とかが出てくるだけでやる気が失せるんですけど。
C++とC++/CLIはまったく別物だろうが…
C++/CLIはVBプログラマーをVB.NET開発に引き入れるために作られたのと同じように C++プログラマーを.NET開発に引き入れるために作られたもの。 C++/CLIで実装したことはC#でも実装できる。 C#はJAVAと構文が近いからJAVAとまったく一緒と思い込んでる人が多いのしょうがないけど、 実際にはC++で必要と思える機能を書き直した言語だと理解していないだけ。 C++で実装できたことはほとんど実装できると見てよい。
874 :
デフォルトの名無しさん :2007/03/03(土) 16:35:50
>>841 お前は、なぜC++0xを使わずに、C++/CLIを使うの?
875 :
デフォルトの名無しさん :2007/03/03(土) 16:36:47
>>849 EffectiveC++がそうだからといって
EffectiveJavaまでそうだとはいわんよな
>>874 C++0xはまだ出ていないから。
あと、C++0xにはGC無いんでしょ。
auto_ptrとかshared_ptrとかいちいち使い分けたくないし。
>>849 Effective C++が書けて、Effective C#が書けない理由は何?
これ全部
>>841 の自演だろ。
わざわざC#のスレに荒らしに来るなってw
荒らしだとか言う人が一番の荒らしです。
お前らくだらねぇから消えろ
IDが出ないのも困るよね
IDが出ないならfusianasanすればいいじゃない
C++よりC#の方が開発、保守が楽になってるのに、C#に文句いってるC++プログラマーは変だな。 新言語覚えるのめんどくさいからいやだと一言ですませればいいのに。
いい加減スレ違い