C♯, C#相談室 Part35
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/11/03(金) 03:07:45前スレ
C♯, C#相談室 Part34
http://pc8.2ch.net/test/read.cgi/tech/1157549657/
過去スレは>>2-5あたり。
※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。
0348デフォルトの名無しさん
2006/11/15(水) 00:44:300349デフォルトの名無しさん
2006/11/15(水) 00:52:40そんなことするくらいなら全部ネイティブで書いたほうが早い
Cだと面倒なんでC++/MFCならC#を使うより工数は少ないはず
0350デフォルトの名無しさん
2006/11/15(水) 00:57:27その質問に答えられるのは MS の中の人だけだろう。
MSDN フォーラムででも聞いてくれ。
0352デフォルトの名無しさん
2006/11/15(水) 01:36:58Listメンバを編集させないようにできないですか?
ReadOnly をつけても編集できてしまいます
class MyClass{
private List<string> myList;
[ReadOnly(true)]
public List<string> MyList{
get{return myList;}
set{list = myList;}
}
}
0353デフォルトの名無しさん
2006/11/15(水) 10:02:58プロパティとしては、setterを用意したいけど、
デザイナー上からは、編集できないようにしたいってこと?
0354デフォルトの名無しさん
2006/11/15(水) 10:22:50「関連付けたい拡張子のファイルを右クリック」
→「プログラムから開く」
→「プログラムの選択」
で作成したアプリケーションを選択したら、アプリケーション名が空になってしまいました。
これって何が悪いのでしょうか?
0355デフォルトの名無しさん
2006/11/15(水) 11:58:280356デフォルトの名無しさん
2006/11/15(水) 13:42:04Argじゃなくてプロパティにあった気がする
0357デフォルトの名無しさん
2006/11/15(水) 19:04:48文字型の1が0x31のはずなのになんかばかでかい変な値だった
どうやればいいか教えてくれ
0358デフォルトの名無しさん
2006/11/15(水) 19:05:400359デフォルトの名無しさん
2006/11/15(水) 19:21:170360デフォルトの名無しさん
2006/11/15(水) 19:21:270361デフォルトの名無しさん
2006/11/15(水) 19:44:08それじゃ
0362デフォルトの名無しさん
2006/11/15(水) 20:15:220363デフォルトの名無しさん
2006/11/15(水) 21:39:370364デフォルトの名無しさん
2006/11/15(水) 21:41:410365デフォルトの名無しさん
2006/11/15(水) 21:54:49すまん。
もう、君が何を言ってるのかわからないよ。
0366デフォルトの名無しさん
2006/11/15(水) 22:11:15多分 AssemblyTitle 属性の値が使われると想う。
AssemblyInfo.cs 見てみ。
あとキャッシュされてる可能性がある。
前にそう言うやり取り見たな。あれは XP のタスクバーのグループ化の話だったか。
0367デフォルトの名無しさん
2006/11/15(水) 22:25:32何となく理解はできた。
それすらもわからないなら君も早く引退した方がいいよ^^
0368デフォルトの名無しさん
2006/11/15(水) 22:37:27intみたいな数字型に変換するのは無理…というかしちゃダメじゃないの?
Encoder使って、byteに変換すれば可能だけど
0369デフォルトの名無しさん
2006/11/15(水) 22:42:36(゚д゚)ハァ?(゚д゚)ハァ?(゚д゚)ハァ?(゚д゚)ハァ?
0370デフォルトの名無しさん
2006/11/15(水) 22:58:19CharもInt32もただの構造体だがその辺は適当にConvertibleになってる。
つーか、君はちょっとくらい調べてから発言しようとは思わんのかね。
0371デフォルトの名無しさん
2006/11/15(水) 22:59:220372デフォルトの名無しさん
2006/11/15(水) 23:13:23char->intなら暗黙的にキャストできるだろ。
0373デフォルトの名無しさん
2006/11/15(水) 23:21:470374デフォルトの名無しさん
2006/11/15(水) 23:25:340375デフォルトの名無しさん
2006/11/15(水) 23:26:060376デフォルトの名無しさん
2006/11/17(金) 17:55:33左に移動する処理を行いたいのですが、下記のイベント
にブレークポイントをおいても、イベントがコールされません。
EnableはTrueになっています。
何か設定に不備があるのでしょうか?
dataGrid1_KeyPress
dataGrid1_KeyUp
dataGrid1_KeyDown
環境 VS2003 Win2003
0377デフォルトの名無しさん
2006/11/17(金) 18:59:14仕様です。
0378デフォルトの名無しさん
2006/11/17(金) 19:19:55一度終了したThreadに対して普通に再びStart()メソッドを呼ぶとThreadStateExceptionが飛んできます…。
0379デフォルトの名無しさん
2006/11/17(金) 19:31:480380デフォルトの名無しさん
2006/11/17(金) 19:44:500381デフォルトの名無しさん
2006/11/17(金) 19:46:370382デフォルトの名無しさん
2006/11/17(金) 19:49:53用途にもよるがBackgroundWorkerやその他のThreadPoolを使いなされ。
0383デフォルトの名無しさん
2006/11/17(金) 19:50:07while ( ! 死に時?) {
合図があるまで待つ;
お仕事;
}
0385デフォルトの名無しさん
2006/11/17(金) 19:54:130386デフォルトの名無しさん
2006/11/17(金) 20:00:050387デフォルトの名無しさん
2006/11/17(金) 20:01:38CGを描写するプログラムを書いていて、
その画面を動画ファイルとして出力する機能をつけたいと考えています。
動画を作るライブラリはVideo For Windowsなど色々あるようですが、
何を使うのが一番最適でしょうか?
0388デフォルトの名無しさん
2006/11/17(金) 20:43:23おい、死に時らしいぜ
0389デフォルトの名無しさん
2006/11/17(金) 23:48:07GCが後ろで待ってるおw
0390デフォルトの名無しさん
2006/11/17(金) 23:57:22System.GC.Collect();
こうですか!!わかりません><
0391デフォルトの名無しさん
2006/11/18(土) 00:30:24持たせた場合にも参照地にnullをセットすれば勝手にGCが効くんですか?
0392デフォルトの名無しさん
2006/11/18(土) 00:34:52他から参照されてなければ刈ってくれるでしょ。
尤も実際に目で確かめる術はないけど。
0393デフォルトの名無しさん
2006/11/18(土) 00:43:04> 尤も実際に目で確かめる術はないけど。
つ WeakReference
0394デフォルトの名無しさん
2006/11/18(土) 03:48:05意味無いから、やめとけw
消えるべき時に、勝手に消える。
0395デフォルトの名無しさん
2006/11/18(土) 22:40:53BitmapのLockbitsメソッドでゲットしたイメージメモリに対して
Cで記述したネイティブコードからイメージ操作することは可能でしょうか?
0396デフォルトの名無しさん
2006/11/18(土) 22:49:180397デフォルトの名無しさん
2006/11/18(土) 23:36:100398395
2006/11/18(土) 23:36:59今試したらできました!
0399デフォルトの名無しさん
2006/11/19(日) 10:12:40しているのですができません。
public List<string>でできると思ったのですが。
どうすればいいのでしょうか。どなたかご教示ください。
0400デフォルトの名無しさん
2006/11/19(日) 10:37:53フォームクラスForm1のインスタンスをform1とすると
form1.list
staticなら
Form1.list
0401395
2006/11/19(日) 12:54:48私のやりたかったことは、画像のエフェクト処理をCで書いたDLLに任せることだったんだけど、
試しに、Cで作ったエフェクトルーチンをC#に移植しても、スピードが変わらなかった。
C#って遅いと思ってたけど、ほぼネイティブ並のスピード出るのね・・・。
JITコンパイラはきちんとSSE/SSE2命令使ってくれるし。
すみません、チラ裏でした。
0402デフォルトの名無しさん
2006/11/19(日) 13:04:230403395
2006/11/19(日) 13:12:49MSX時代から思考が止まってます。
0404デフォルトの名無しさん
2006/11/19(日) 13:50:150405デフォルトの名無しさん
2006/11/19(日) 14:23:19まあ、遅いのは初回起動のみだし。
そういや、今、自宅で新しく買った PC に Vista RC2 入れてるんだけど、
.NET アプリの起動がむちゃくちゃ早い(ほんとに一瞬)んだけど。
これは、PC のスペックいいからなのか、
Vista では CLR の最適化かかってるからなのか、どっちなんだろう?
0406デフォルトの名無しさん
2006/11/19(日) 14:26:000407デフォルトの名無しさん
2006/11/19(日) 14:36:180408デフォルトの名無しさん
2006/11/19(日) 14:58:53うちでは大差ないよ。
たぶんスペックのせいかと
0409デフォルトの名無しさん
2006/11/19(日) 15:24:10XPはログオンに時間がかかるがVistaは確かにかなり速い。
0410デフォルトの名無しさん
2006/11/19(日) 15:38:06そういえば、Vista対応のために、XPからの変更点のまとめってありませんか?
システムフォルダがお引っ越しor内部で勝手にリンクするというのは聞いたんですが。
0411デフォルトの名無しさん
2006/11/19(日) 15:38:583年後位には主流になるのかねぇ・・・
0412デフォルトの名無しさん
2006/11/19(日) 16:26:050413デフォルトの名無しさん
2006/11/19(日) 21:04:14SuperFetchが効いてるんじゃね?重量級のアプリにはかなり
効くようだ。VSとか。
メモリたくさんつまないと駄目だけど。
0414405
2006/11/19(日) 21:23:29メモリ2GB積んでる。
無駄にオーバースペックなもの買ってみた。
要するに、JIT が早いのは単にプロセッサ性能、
動作が速いのは .NET Framework のコンポーネントが
SuperFetch であらかじめメモリ上にロードされてるから
ってことでいいのかな?
0415デフォルトの名無しさん
2006/11/19(日) 21:48:04なんだかね
0416デフォルトの名無しさん
2006/11/19(日) 23:28:29パソコンを使っている人の大半はあなたみたいなヲタクではありません。
大半の人に使っていただくためには屁理屈こねて遅くないんだよなんていってて・・・
0417デフォルトの名無しさん
2006/11/19(日) 23:33:11415じゃないけど、開発者する人間なら…
0418417
2006/11/19(日) 23:33:49○ 開発する人間
0419デフォルトの名無しさん
2006/11/19(日) 23:36:370420デフォルトの名無しさん
2006/11/19(日) 23:57:280421デフォルトの名無しさん
2006/11/20(月) 00:13:350422395
2006/11/20(月) 08:42:22pentium4 1.7GHz
C#(JIT):16593.75ms
C(SSE2):19250ms
C(SSE):15031.25ms
C(FPU):20125ms
athlon64 2.4GHz
C#(JIT):4296.875ms
C(SSE2):3640.625ms
C(SSE):3796.875ms
C(FPU):6859.375ms
0423デフォルトの名無しさん
2006/11/20(月) 10:33:07もう遅いかもしれないけど、そのセルを編集中かどうかで変わってくる。
編集中はセルのEditingControlがイベントを受け取るので、
そっちで処理しないといけない。
0424デフォルトの名無しさん
2006/11/20(月) 10:43:03普通のプログラマなら、遅いのが、
・不適切なアルゴリズム選択による遅さなのか (ex. クイックソートとバブルソート、ハッシュ探索と線形探索)
・設計のまずさに起因する遅さなのか
・他のサブシステムに起因する遅さなのか (ネットワーク、ウィンドウシステム、ディスクI/O、など)
・本当に、言語による遅さなのか
などを、経験なり、思考なり、プロファイラ使うなりして判断できるが、
ヘボプログラマ程、遅さの原因を考えることなく、言語のせいにする。
ましてや、自分のアルゴリズム選択ミスだなんて考えもしない。
最終的には、CPUが遅い、とかぬかしだす。
0425デフォルトの名無しさん
2006/11/20(月) 11:04:14Form上のLabelなどの表示を切り替える際に、一度Labelをクリアしてから値代入してるのですが
0426425
2006/11/20(月) 11:04:56途中で送信してしまいました・・・
0427デフォルトの名無しさん
2006/11/20(月) 11:08:420428デフォルトの名無しさん
2006/11/20(月) 11:12:000430デフォルトの名無しさん
2006/11/20(月) 13:42:37MsiGetFileHash のような関数を探しているのですが、見つけられなくて…(´д`;
0431デフォルトの名無しさん
2006/11/20(月) 15:03:37using System.Security.Cryptography;
かな?
0432デフォルトの名無しさん
2006/11/20(月) 15:04:57MD5CryptoServiceProviderにFileStreamくわせるか、かな?
0434デフォルトの名無しさん
2006/11/20(月) 21:39:41現在既に起動しているIE6.0のWindowハンドルを取得し、その上に線の描画を行おうとしています。
IEのWindowハンドルは取得できたのですが、そこから線を描画する方法が分かりません。
どの様な解決方法があるでしょうか?
どなたかご教授下さい。
0435デフォルトの名無しさん
2006/11/20(月) 21:52:13GetDC / CreatePen / SelectObject / LineTo 辺りか?
ただし 434 が望んでる結果になるとは限らない。
0436デフォルトの名無しさん
2006/11/20(月) 22:00:290437デフォルトの名無しさん
2006/11/20(月) 22:04:10>>436の言う通り、再描画が発生したら消えるね
0438デフォルトの名無しさん
2006/11/20(月) 22:36:26透明なFormWindowを作成してそこに線を描画し、IEのWindowの上に被せるという
方法も考えたんですけども。。。
>>435 さんと >>437 さんの方法は同じ方法なんでしょうか?
0439デフォルトの名無しさん
2006/11/20(月) 22:41:03private static extern IntPtr GetWindowDC( IntPtr handle );
[DllImport( "user32.dll" )]
private static extern IntPtr ReleaseDC( IntPtr hWnd, IntPtr hDC );
private void button1_Click( object sender, EventArgs e )
{
IntPtr hWnd = IEのウインドウハンドル
IntPtr hDC = GetWindowDC( hWnd );// またはGetDC
Graphics g = Graphics.FromHdc( hDC );
//好きに描画
g.FillRectangle( SystemBrushes.ControlText, new Rectangle( 0, 0, 100, 100 ) );
g.Dispose();
ReleaseDC( hWnd, hDC );
}
0440デフォルトの名無しさん
2006/11/20(月) 23:34:21>>439さん。有難う御座います。
この方法でIEのWindowに描画することが出来ました。
ここから線の再描画をする方法を採ってみようと思います。
0441デフォルトの名無しさん
2006/11/21(火) 00:00:330442デフォルトの名無しさん
2006/11/21(火) 00:13:410443デフォルトの名無しさん
2006/11/21(火) 00:35:50動画ファイルをDivXで圧縮するツールを
作りたいと思うのですが、.NET1.1 + C#では
どのようにしたらいいのか、どなたかヒントを
いただけませんか。
やりたいことは
複数のデジカメ動画を検索し
DivXで圧縮し
あるルールでファイル名を付け
タイムスタンプを変換元ファイルに合わせる
という感じです。
「DivXで圧縮し」以外の部分はできています。
よろしくお願いします。
0444デフォルトの名無しさん
2006/11/21(火) 00:51:420445デフォルトの名無しさん
2006/11/21(火) 01:07:45DirectShow叩けばいいんじゃないか?
0446デフォルトの名無しさん
2006/11/21(火) 08:09:55どっちがやりやすいか調べて試してみます。
ありがとうございました。
0447デフォルトの名無しさん
2006/11/21(火) 15:59:46更に、全てのリスト内の文字列の編集処理後、メインの関数を抜けたいと考えています。
リストにしているのは文字列の順番を記憶したいからです。
以下のThreadMethodように引数を持つスレッドを作成したい場合、
ThreadPoolを使うと良いそうなのですが、joinのような待ちの実現方法が分かりませんでした。
ThreadPoolでの待ちの実現について、また、ThreadPoolを使わなくてもできるよ。そもそもリストじゃなくてこうすれば効率が良い!など、アドバイスいただければと思います。
public bool MainMethod( .... )
{
ArrayList arrayList = new ArrayList(); // (仮)
// arrayListの個々の要素に文字列を生成する処理
WaitCallback waitCallback = new WaitCallback(ThreadMethod);// コールバック作成
// arrayList要素数分ループ
for(int i = 0;i < arrayList.Count; i++)
{
// スレッドでarrayListの文字を更に改変する処理
ThreadPool.QueueUserWorkItem(waitCallback, arrayList[i]);
}
// 待ち
return true;
}
public void ThreadMethod(object aStr)
{
// aStrの編集
}
■ このスレッドは過去ログ倉庫に格納されています