- 1 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 20:45:59 ]
- (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
前スレ C♯, C#相談室 Part34 pc8.2ch.net/test/read.cgi/tech/1157549657/ 過去スレは>>2-5あたり。 ※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。
- 623 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 21:48:27 ]
- D言語は
bool b = true; if(b){} // これはいけるけど、 if(b = true) {} // これはだめだお
- 624 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 21:48:36 ]
- 動的型じゃ意味ないわな
- 625 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 21:51:33 ]
- >>623
やるならここまできっちりやるべきなんだろうな
- 626 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 22:05:30 ]
- >>623
Dはbool以外の型の値もifに与えられるけど、 代入式を取れないってのは革新的だよね。
- 627 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 22:12:14 ]
- Dはよく知らんが
while ((line = reader.ReadLine()) != null) こういうのはOKなの?
- 628 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 22:13:29 ]
- >>626
メソッドのリターンコードで条件判定するようなプログラミングが簡単に 表現できない欠陥品だろD言語は
- 629 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 23:00:27 ]
- 何を言ってるの君は?
- 630 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 23:02:10 ]
- bool以外の値をifに与えられちゃダメだと思うがね
boolの代入は規制すべきだと思う
- 631 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 11:12:08 ]
- そういった人それぞれのプログラミング思想を具現化したものがそれぞれの言語な訳です
- 632 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:19:44 ]
- だな
- 633 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 02:04:33 ]
- C言語(C++)のDLLを、C#と連携を取ろうと思いました。
char*の受け渡しで、詰まるところがありました。 以下のコードで、環境により、エラーが出たりでなかったりします。 (現在、エラーが出る環境がないため、エラーメッセージ失念……) --------エラーとなるコード C#側(Form1.cs)--------- [DllImport("Hoge.dll")] extern static StringBuilder GetHogeMessage(); private void Form1_Load(object sender, EventArgs e) { StringBuilder msg = GetHogeMessage(); this.label1.Text = msg.ToString(); } -------エラーとなるコード CのDLL側(Hoge.dll)---------- char msg[255]; extern "C" __declspec(dllexport) char* GetHogeMessage() { sprintf_s(msg, 255, "ホゲホゲプー"); return msg; } -------------------------------------- 以下のように、ネットで、よく見かけるコードに変えましたら、 エラーが出なくなりました。 続きます。
- 634 名前:デフォルトの名無しさん [2007/12/26(水) 02:04:57 ]
- --------正しく動くコード C#側(Form1.cs)---------
[DllImport("Hoge.dll")] extern static void GetHogeMessage( StringBuilder name, int len ); private void Form1_Load(object sender, EventArgs e) { StringBuilder msg = new StringBuilder(255); GetHogeMessage(msg, 255); this.label1.Text = msg.ToString(); } -------正しく動くコード CのDLL側(Hoge.dll)---------- extern "C" __declspec(dllexport) void GetCurrentName(char* msg, int length) { sprintf_s(msg, length, "ホゲホゲプー"); } 私のよく知る Delphiでは、string ←→ char*(PChar)間では、 コンパイル時に自動で変換コードを入れているのが、 デバッガで逆アセンブルすると、わかります。 同様に、動作を知ろうと、Reflectorで、 ILに変換したのも読んでみたのですが、コンパイラマジックなどなく、 理解にいたりませんでした。 C#は(というか、MSIL?)、内部動作的には、char* → StringBuilderでは、何をやっているのでしょうか? 私は想像では、StringBuilder.pChar のような非公開のプロパティに、char*を代入して処理しているのでは?と思っています。 そうなると、上記のエラーとなるコードでは、インスタンスを生成していないために、 強引なキャストが起き、StringBuilderとして処理はされるものの、 msg.ToString などで、エラーが起きることがある、と。 この辺の、動作に関するドキュメント等ありませんでしょうか?
- 635 名前:デフォルトの名無しさん [2007/12/26(水) 02:05:54 ]
- コードミスりました orz
--------正しく動くコード C#側(Form1.cs)--------- [DllImport("Hoge.dll")] extern static void GetHogeMessage(StringBuilder name, int len ); private void Form1_Load(object sender, EventArgs e) { StringBuilder msg = new StringBuilder(255); GetHogeMessage(msg, 255); this.label1.Text = msg.ToString(); } -------正しく動くコード CのDLL側(Hoge.dll)---------- extern "C" __declspec(dllexport) void GetHogeMessage(char* msg, int length) { sprintf_s(msg, length, "ホゲホゲプー"); }
- 636 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 02:10:16 ]
- マーシャラがStringBuilderが持ってるバッファのポインタをchar*として渡すだけ。
char*を返す関数なら普通にStringで受ければいい。
- 637 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 02:12:17 ]
- >>634
msdn2.microsoft.com/ja-jp/library/fzhhdwae(VS.80).aspx
- 638 名前:デフォルトの名無しさん [2007/12/26(水) 03:00:09 ]
- >>636-637
サンクス!! アンマネージドと、マネージドの相互変換をマーシャリングというのですね。 Buffers のサンプル msdn2.microsoft.com/ja-jp/library/x3txb6xc(VS.80).aspx >>637の文字列のところに書いてありました。 文字列の変更の可能性がある場合は、StringBuilderを使うのはあってるみたいです。 引数などで渡した場合、StringBuilderのバッファのポインタが渡されるだけなんですね。 アンマネージドで確保されたchar* を返却値としてもらう場合は、 自動的に、解放されるのを防ぐために、IntPtr でアンマネージのままもらって、 Marshal.PtrToStringAuto で、stringに変換すればいいのですね。 わかりました! ありがとうございました。
- 639 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 11:48:22 ]
- .net のVBコードをC#に変換できるツールってないですか?
- 640 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 12:12:05 ]
- ありますよ
- 641 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 12:21:21 ]
- ありがとうです
- 642 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 18:45:28 ]
- ツールでVBコードをC#に変換して
勉強がてらいじってるけどさっぱり分からん c++でネイティブ書くなんて一生無理だなこれは
- 643 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 18:53:27 ]
- それはない
プログラミングが上達しない才能が無い限りいつかできるようになっちゃうよ
- 644 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 00:38:35 ]
- >>638
char*からなら、PtrToStringAnsiではないのか?
- 645 名前:デフォルトの名無しさん [2007/12/28(金) 01:18:07 ]
- こんばんは。質問があります。
[管理ツール]−[データ ソース (ODBC)]-[ユーザDSN]でデータソースの設定を行う際、 表示される画面(例えばアクセスの場合だとデータベースの選択画面)をプログラム上で 出すにはどうすればいいのでしょうか? ヒントか参考になるサイトでもいいので教えていただけないでしょうか。 よろしくお願いします。
- 646 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 02:11:03 ]
- GetLastErrorをHRESULTに加工して
それから例外を作る装備はないですか?
- 647 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 04:48:09 ]
- >>644
そうですね。 Buffers のサンプル msdn2.microsoft.com/ja-jp/library/x3txb6xc(VS.80).aspx の方でも同じようなやり方で、できるとありました。 どもです。
- 648 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 11:10:04 ]
- throw Marshal.GetExceptionForHR(Marshal.GetLastWin32Error());
- 649 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 11:18:20 ]
- LastWin32ErrorはHRESULTじゃないと言うに
GetHRForLastWin32Error
- 650 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 21:48:02 ]
- >>643
すげぇ才能だなww 逆にそれは見てみたい >上達しない才能
- 651 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 22:17:45 ]
- 論理的思考を拒否する人。
感情や直感が最優先の人。 自分の思いが総て正しいと思う人。(これはちょっと微妙か 実際居ると思うぞ。
- 652 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 22:19:38 ]
- 急に何の話してるの?
- 653 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 08:03:35 ]
- >>650
俺いっぱい見てきてるよ・・・
- 654 名前:デフォルトの名無しさん [2008/01/09(水) 05:55:52 ]
- imepita.jp/20071227/588010
- 655 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 23:45:17 ]
- da.Fill(dt)で取得したデータの内容をColumnNameでダイレクトに取得したいのですが
foreach以外に良い方法があるでしょうか?
- 656 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 23:57:24 ]
- www.atmarkit.co.jp/fdotnet/basics/adonet04/adonet04_04.html
- 657 名前:655 mailto:sage [2008/01/14(月) 00:05:49 ]
- >>656
理解が足りてませんでした・・ ありがとうございました
- 658 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:01:58 ]
- 質問です
SizeChangedイベントをハンドルしてInvalidateを呼び出して画面全体を再描画したいんですが 領域全体が無効化→背景色クリアが入ってしまい、その後に全体を書くので偉くちらつきます。 で、この背景色クリアを無効化したいんですが、どのようにしたら良いですか? 背景色クリアに関してはWinAPIで叩いてたころは確か ブラシを入れないとか、Invalidateの引数でRedrawするかしないかを指定できたと思うんですが… よろしくお願いします。
- 659 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:13:19 ]
- SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.DoubleBuffer,true);
と設定してダブルバッファリングすればいい
- 660 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:18:12 ]
- いやダブルバッファするかどうかは別問題でしょ。
>>658についてはResizeRedrawを有効にすればOKだと思うけど。 なんか>>658はあまりよくわかってなさそうだから一応補足すると、 これは要するにいちいちInvalidateしなくてよくなるって意味ね。
- 661 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:21:52 ]
- 用途によって違うだろ
- 662 名前:658 mailto:sage [2008/01/14(月) 13:24:59 ]
- >>660
ResizeRedraw=trueにしても駄目でした。 おっしゃるとおり、いちいちInvalidateしなくてよくなるんですが、 単に勝手にInvalidateを呼び出しているだけみたいですね。 結局ですが、多分.NETのInvalidateの実装が InvalidateRect( m_hWnd, NULL, TRUE ); みたいにされちゃってるんだと思ったんで、 直接user32.dllのInvalidateRectをDllImportして bEraseをFALSEで呼び出したらブラシのクリアが無くなりました。 ご返信していただいた方ありがとうございました。
- 663 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 15:07:20 ]
- >>658
なにもしない OnPaintBackground は?
- 664 名前:658 mailto:sage [2008/01/14(月) 16:11:11 ]
- >>663
.NET的にはそれが一番よさそうな実装方法ですね… ありがとうございます。そちらのコードに修正します。
- 665 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 11:05:58 ]
- WM_ERASEBKGND をいじった事なかったのか
- 666 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 07:35:08 ]
- すみませんが教えてください。C#とC++は、.NETで行っても処理速度は
あくまでも同じなのでしょうか?それとも、C++の方が圧倒的に早いのでしょうか? C#とVBでは処理速度は描画も含めて同じだと思いますが、C++では直接 Win32APIで動かしていて高速動作するようになっているのでしょうか? よろしくお願いします。
- 667 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 08:43:03 ]
- >>666
.NETが扱えるのはC++ではなくC++/CLI C++/CLIが吐き出す中間コードはC#,VBと同じ よって速度は同じ
- 668 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:33:13 ]
- C++/CLIはネイティブコードを埋め込める
- 669 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 11:07:18 ]
- >>668
C#もunmanaged使えば同じじゃないの?
- 670 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 11:18:37 ]
- 同じ内容を書けば同じ速さになるはずということで
- 671 名前:666 mailto:sage [2008/01/17(木) 11:21:15 ]
- >>667-669
解説ありがとうございます。 たとえば、Windowsのエクスプローラはフォルダのフォーカス移動に伴う ファイル表示でもものすごく高速に実行され、画面の描画もめちゃくちゃ 瞬時に行われ、ノートPCなどの描画が比較的遅いPCですと.NETの Formアプリケーションなどとはけっこう速度差を体感します。レインボウ のような現象も顕著に出ていて、ネイティブのアプリケーションとでは ものすごく遅い感じが否めませんでした。 こうした差は、C++/CLIを使って、すべてをネイティブコードにコンパイル してしまうと、たとえばエクスプローラ並みにすばらしく高速で動くように 体感できるようになるということなのでしょうか。(長くてすみません)
- 672 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 11:22:25 ]
- >>669
C#でunmanagedは使えないだろ
- 673 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 11:27:32 ]
- >>671
それはWindows.Formsが遅いだけ。 C++/CLIを使っても同じGUIライブラリを使う限り、もっさりするのは換わらない
- 674 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 11:33:04 ]
- >>673
なるほど、そうだったんですか。 ということは、C++/CLIで、Formsを使わずに何かネイティブのGUI処理をする 方法を使う(MFCでしょうか、よくは知らないのですが)などすれば、 エクスプローラ並みの高速処理が実現できるということでしょうか、 そしてそういうことはC#やVBでは実現できないと・・・、この辺がよくわかりません、 よろしくお願いします。
- 675 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:04:06 ]
- >>674
C# と GDI+ でも、あんまり Forms の世話にならないで自前で描画する 大型のコントロール等書いて使えばそこそこ高速になるよ。 下手に Forms で UI 書くより、ブラウザ埋め込んで Ajax でもした方が 高速になるケースもあるだろうし (ブラウザはレンダリングが結構速いから・・・)。 >この辺がよくわかりません 「ネイティブ」の意味が分からないということ?
- 676 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:10:02 ]
- Forms はなんであんなに重いのかね?
- 677 名前:デフォルトの名無しさん [2008/01/17(木) 12:37:29 ]
- >>675
たびたびすみません。 >自前で描画する大型のコントロール等書いて これは要するに、Paintイベントなどでの処理を描くということでしょうか。 >「ネイティブ」の意味が分からないということ? 「自前で描画する大型のコントロール等」という場合に、そこに.NETFramework のクラスで描画をするだけでよくて、いちいちAPIを使うことなく高速化できるという ことでしょうか?
- 678 名前:666 [2008/01/17(木) 12:41:00 ]
- 名前入れるの忘れました。
そのようにしてコントロールを高速化した場合、たとえば現在Form の右下を つまんでリサイズすると、Formのサイズ変更がやたらと遅くてボーダーの移動が ぱらぱらと目に見えて動きます。こういったことも高速になるでしょうか?
- 679 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:44:57 ]
- GDIのAPIを直接叩くGraphicsクラスみたいなのは作ったことあるぜ
- 680 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:45:19 ]
- たとえばTextBoxを100個WinFormに貼り付けて使うより、
普段はTextBoxの「ハリボテ」を100個描画しておいてユーザーがマウスポインタで クリックしたときだけ本物のTextBoxを該当位置にひとつだけ表示するような コントロールを自作した方が早いってことじゃない? でもこの手のコントロールの自作ってかなり面倒なんだよね。 情報すくないから手探りでいろいろ調べる必要があったり。
- 681 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 12:54:09 ]
- >>678
そう。 同時にOnPaintBackgroundで一瞬背景色で塗られるなどのUI 的に不快な動作も直す。 Panel を Dock させてあれこれやるより、OnSizeChanged 等で自前でレイアウトする方が速いし。 ただ GDI+ の遅さは非力なPCでは如何ともしがたいところもあるので、低スペックPCでも 超軽快に動くようにしたいなら C++ でネイティブでやるより無いと思う。
- 682 名前:666 [2008/01/17(木) 13:03:35 ]
- >>679-681
いろいろご指導ありがとうございます! >>680 >同時にOnPaintBackgroundで一瞬背景色で塗られるなどのUI 的に不快な動作も直す。 あの動きも改善方法があったんですね、うれしいです。自分でも実装できる かどうかわかりませんが勉強してみます! >Panel を Dock させてあれこれやるより、OnSizeChanged 等で自前でレイアウトする方が速いし。 このPanelのDockやDocking機能のコントロ-ルは使っていました。 そうすることなく自分でコントロールの移動やリサイズをさせた方が早い のですね。いまからそれやると大変かとも思いましたが、今後の参考に致します! 勉強になります、ご指導ありがとうございました!!
- 683 名前:666 [2008/01/17(木) 13:07:33 ]
- >>682(訂正)
すみませんリンク先まちがえました。訂正>>680→>>681 >ただ GDI+ の遅さは非力なPCでは如何ともしがたいところもあるので、低スペックPCでも >超軽快に動くようにしたいなら C++ でネイティブでやるより無いと思う。 この件も頭に置いておきます。どうもでした!
- 684 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:54:33 ]
- フォルダのタイムスタンプについて教えてください。サブフォルダを追加してそこに
ファイルを作成して編集したりしてあるフォルダの中身が変化していましたが、 なぜかそのフォルダのタイムスタンプがその変更よりも前のままになっていました。 こうならずに、更新日時が反映されている場合もありました。これは何か更新される ために必要な条件のようなものがあってそれが異なっているためなのでしょうか?
- 685 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 10:40:29 ]
- そりゃディレクトリエントリが更新された時刻だもの
- 686 名前:684 [2008/01/18(金) 15:57:46 ]
- >>685
そうだったのですか、ということは内部のサブフォルダ内の何かのファイルが変更された としてもそれの時刻は繁栄されないのですね。わかりました。 すみませんがもう一つお願いします。 アプリケーションのアイコンを探すときにレジストリ内のDefaultIconキーの値のところに、 次のようにマイナスの番号が入っている場合、shell32.dllのファイルの中の番号としては 使えないのでしょうか?kernel32.dllの LoadLibraryExA で検索してアイコンを見つける ときにも使えるのでしょうか? HKEY_CLASSES_ROOT\VBSFile\DefaultIcon\"(default)" = "shell32.dll,-298" HKEY_CLASSES_ROOT\txtfile\DefaultIcon\"(default)" = "shell32.dll,-16" (これでサウンドの場合の C:\WINDOWS\system32\wmploc.dll,-734 の-734 を そのまま使ったところ、音符マークのアイコンとは別のものが来たのでした)
- 687 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:11:30 ]
- わからんが、wmploc.dllを開いてみたら 734 に音符のアイコン入ってたけど。
マイナスは別の意味を持たせてるのかも?
- 688 名前:684 [2008/01/18(金) 17:24:42 ]
- >>687
あ、すみませんでした、一つ間違いがあることに気がつきました。とはいうものの、 プラスとしてやってみたもののそれでも取ることができませんでした。なんだろう、 映画のフイルムの絵のようなアイコンなのですが・・・。まずは、そのアイコンの ビューワを探して見てみます、ありがとうございました。
- 689 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 17:34:14 ]
- アイコンはVisualStudioでDLL読んでみたんだけど、
EEだとリソースは無理か
- 690 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 18:43:00 ]
- >>686-687
0以上の値は、0からの連番で何個目という指定(シェルのアイコン指定のダイアログの順番)。 負の値は、絶対値がリソースIDを表すという指定。
- 691 名前:デフォルトの名無しさん [2008/01/18(金) 19:15:16 ]
- >>690
あーそうだったのですか、わかりました。それでもう一度やってみます、 どうもありがとうございました!!
- 692 名前:691 [2008/01/18(金) 21:20:38 ]
- >>689-690
アイコンの取得に成功しました、ありがとうございました。助かりました!!
- 693 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 22:18:09 ]
- int / int で小数点が出てこないのはなんでだぜ?
- 694 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 22:19:29 ]
- その方が速いから
- 695 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 23:10:17 ]
- >>693
int/intの結果はintになると規格で決まってるから
- 696 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 23:11:29 ]
- LOG4NETで設定ファイルを使わずに、ソース上で出力先やAppenderの指定をできる方法ってありますか?
クライアントアプリケーションとして扱う場合に、ユーザに勝手に設定を弄られたくないから LogManagerでApp.Configの設定を読むような方式にはしたくないのです。 ログ出力クラスを自作したほうが早いですかね?
- 697 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 23:49:42 ]
- そのまんまコードで初期化すりゃいいんでは?
- 698 名前:696 mailto:sage [2008/01/20(日) 03:49:16 ]
- >697
ログメッセージを出力するためのILogインタフェースを持った インスタンスを取得するには、LogManagerクラスから取得する しかないようなんですよね。 LogManagerクラスからはRepositoryやAppenderを取得できても、 設定はできないので、どうしたらいいのか分かりません。 RollingFileAppender appender = new RollingFileAppender(); appender.AppendToFile = true; appender.File = @"C:\test.log"; appender.Layout = new PatternLayout("%d %5p %c{2} - %m%n"); RootLogger root = new RootLogger(Level.Debug); root.AddAppender(appender); root.Log(Level.Debug,"tset", new Exception()); 以上のコードでログが出ないか期待しましたがダメでした...
- 699 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 04:18:03 ]
- >698
log4netのソースを直に書き換えて埋め込んじゃえばいいんじゃない?
- 700 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 08:13:51 ]
- >>699 あほですか?
- 701 名前:デフォルトの名無しさん [2008/01/20(日) 20:53:54 ]
- アホちゃいまんねん
- 702 名前:デフォルトの名無しさん [2008/01/20(日) 20:59:58 ]
- パーでんねん
- 703 名前:698 mailto:sage [2008/01/20(日) 23:56:26 ]
- >699
なるべくOSSのモジュールはソース変更したくないんですよ。 ライセンスに従って公開しなきゃいけなくなっちゃうし。 公開するだけならまだ変更部分だけで済みそうですが、 公開するための環境を維持しておかなきゃいけなかったり、面倒です。
- 704 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:16:31 ]
- >703
log4netはアパッチライセンスだから融通が利くよ。
- 705 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 13:26:49 ]
- ParallelFXのParallel.Forで実行されるスレッド数はいじることができますか?
- 706 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 23:21:36 ]
- >>705
System.Threading.Tasks.TaskManagerPolicy のコンストラクタで、minThreads, idealThreads, maxThreads を指定可能。
- 707 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:49:38 ]
- FlowLayoutPanelにコントロールを追加しているのですが、
下記のようなコードだと一瞬ちらつきます。 FlowLayoutPanelにBeginUpdate、EndUpdateのような描画を一時止めるようなメソッドはないでしょうか? Panel.BeginUpdate;←のようなものありませんか? Panel.Controls.Clear();←ここでクリアしてる為、一瞬まっさらになり、ちらつく for (int i = 0; i < max; i++) { Panel.Controls.Add( コントロール ); } Panel.EndUpdate;←のようなものありませんか?
- 708 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 22:28:31 ]
- 節穴?
SuspendLayout/ResumeLayout
- 709 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 23:21:31 ]
- PictureBoxの非同期読み込みみたいに、画像の読み込みを途中でキャンセルしたり
読み込み状況をモニターできるようにしたいです。 Image.FromFile等ではそのようなコールバックを指定できないようです。 どうやればいいのでしょうか?
- 710 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 23:26:44 ]
- ためしもしないで適当に書くと
Image.FromSteamに非同期Streamを渡せばいいんじゃね
- 711 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 00:02:26 ]
- >>710
Streamを自分で実装してReadの中でゴニョゴニョ、ってことでしょうか。 そういうやり方しかないんかなあ。
- 712 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 06:00:26 ]
- 画像のデコード程度、キャンセルしたくなるほどの時間もかからんと思うが
- 713 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 17:05:46 ]
- Image.FromStreamするとImageが生きてる間はStreamも生きてなきゃダメなのか…
と思ってKB309482見て試してみたけど、アニメーションGIFだとダメだった…
- 714 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 19:33:03 ]
- DataSetを使ってレコード単位にDBを操作する場合に、
DataSet.DataTable.Rows[i]["カラム名"] のような記述が必要になりますよね。 (DataGridのDataSourceを使えばそんな意識はしないですが) この、文字列でカラム名を指定するのがイマイチだと思うのです。 文字列だからインテリセンスも効かないですし、打ち間違えの可能性も。 カラム名を入れたenumを作れば解決できるような気もしますが、 DataSetの中に既に定義があるのですから、それを流用できないでしょうか? 要するに、カラムをカラム名で指定する際に、intと文字列以外の方法が あるでしょうか?
- 715 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 20:12:22 ]
- >>714
DataSet継承してカラム名をプロパティにしたクラスを作る。 VisualStudioでテーブルから自動生成すればできるだろ。
- 716 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 09:26:24 ]
- >>713
一旦 MemoryStream に読み込んでそっから Image 作ればいいよ
- 717 名前:714 mailto:sage [2008/01/31(木) 10:22:15 ]
- >>715
どうも有り難うございます。 しばらく考えているんですけれど、どうもイメージが浮かばないです。 DataSetを継承しても、汎用的なものは出来ないように思うのですが。 VSで自動生成と言う意味は、VSのデザイナで自動生成されたDataSetの ソースを何らかの方法で解析して、カラム名を格納するという意味なのでしょうか‥‥。
- 718 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 13:51:08 ]
- >>717
厳密に型指定されたDataSetでググる。 DataSetをそのまま使うならカラムやその型の情報はクエリーの応答があるまでわからない。 その場合はカラム名の文字列か序数で指定するしかないな。
- 719 名前:714 mailto:sage [2008/01/31(木) 18:19:17 ]
- >>718
なるほど、DataSetを作る段階で別の種類のDataSetだったのですね。 どうも有り難うございます。調べてみます。
- 720 名前:デフォルトの名無しさん [2008/01/31(木) 22:15:17 ]
-
DBと接続して使うんじゃなく、dataset単独で簡易なデータベースとして使うなら、 プロジェクトに新規でxsd(スキーマ)を追加してテーブルやリレーション、キーを定義して、 いっぺんコンパイルすると、ツールボックスにdatasetを継承したdataset1(xsdファイルで定義した 名前による)コンポーネントが現れる。フォームのデザイナでこいつをD&Dしてやると型付けの あるdatasetとして使えるよ。
- 721 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 02:47:42 ]
- 表計算ソフトの=REPT(x;y)を模倣した自作関数をfprintfの第3引数以降に使う場合です。
rept(int x,int y)の記述にはfor,while,do〜whileのどれが適任でしょう? 回数を指定するyは0の場合もあります。
- 722 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 15:04:16 ]
- それは本当にC#の質問ですか
- 723 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 09:11:50 ]
- ウィンドウを持ったアプリケーションが起動されるのを
監視することはできますか?
|

|