1 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 20:45:59 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 前スレ C♯, C#相談室 Part34 pc8.2ch.net/test/read.cgi/tech/1157549657/ 過去スレは>>2-5 あたり。 ※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。
348 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 18:23:29 ] >自動的に段々重ねになる仕様 え? んな仕様になってないでしょ。 デフォではタブが横幅に収まらない場合スピン(?)が右隅に付く
349 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 19:44:51 ] >>348 Tab耳を横並べHorizontalにした場合はその通りなんですが、 縦並べVerticalにした場合はデフォルトで段々重ねになる仕様のようでした。 Helpにもそうありました。これだと、たくさん耳があるとそれだけで場所を 取ってしまうため、一列にしたいのでした。 やっぱり仕様だから無理なのかなー・・・
350 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 19:48:04 ] 追記) ちなみに、「段々重ね」というのは、MultilineプロパティをTrueにしたとき の並び状態のことでした。
351 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 20:57:34 ] 確かにAlignmentをLeftにするとMiutilineが勝手にTrueになるね
352 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:21:53 ] メソッドの引数としてデリゲートを使いたいのですが、 いちいちデリゲートの型を外部に宣言せずに書く方法はありませんか? public void Func(delegate void del() sendMethod) {〜} のようにかければ非常に楽なのですが。
353 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:24:23 ] これだからC厨は
354 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 00:01:07 ] いや、Cでも関数へのポインタ型は きちんとした意味を持った名前にtypedefして使うものだろ。
355 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 01:05:46 ] >>352 System.Action
356 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 01:07:59 ] デリゲートや関数ポインタがスタティックだとわかってるんだろうね?
357 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 01:29:00 ] >>355 そのデリゲートが使えるということですか?この場合引数はないので使えないと思うのですが。 また、デリゲートの定義全般の話ですので、一つのデリゲートの型が一致しても抜本的な解決にはならないかと。 >>356 型の定義が静的だ、という意味でしたらわかっています。 その定義をどうにかして見やすく配置できないかと考えてる次第です。
358 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 01:41:26 ] void Func(Action sendMethod) { } void SendMethod() { } Action sendMethod = new Action(SendMethod); Func(sendMethod); Action<T>
359 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 01:50:40 ] >>358 すいません、がんばって理解しようとするのですが眠くてどうにもならないようです。 また明日の朝見直して理解しようと思います。
360 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 06:06:10 ] 擬似コード過ぎて理解の必要がないというかw
361 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 10:27:19 ] メソッド内で、一度代入したら不変であることを保証しようと思って、 void func() {
362 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 10:29:12 ] すいません、失敗して書き込んでしまいました。 メソッド内で、一度代入したら不変であることを保証しようと思って、 void func() { readonly int i = OtherFunc(); 〜 } としようとしたのですが、readonly が使えるのはクラスのフィールドのみらしく、できませんでした。 これと同等の文法はありますか?
363 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 10:59:26 ] フィールドにすれば?
364 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 11:35:46 ] >>363 あほなことゆうな。 出来てもいいと思うんだけど出来ないね。 言語仕様を出来るだけシンプルにしたかったんかな?
365 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 12:07:10 ] メソッド内でreadonlyを使わなければわからなくなるほど 変数宣言が多くて長いメソッドを書くなということでは
366 名前:デフォルトの名無しさん [2007/11/15(木) 00:24:37 ] C#をやってるたら、仕事に支障をきたし始めたので辞めます 皆さんも仕事でC++を使う人は辞めたほうが無難です。
367 名前:デフォルトの名無しさん [2007/11/15(木) 00:33:52 ] | | ∩___∩ | | ノ _, ,_ ヽ (( | プラプラ / ● ● | (=) | ( _●_) ミ _ (⌒) J )) 彡、 |∪| ノ ⊂⌒ヽ / ヽノ ヽ /⌒つ \ ヽ / ヽ / \_,,ノ |、_ノ
368 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 00:37:32 ] 今時一本で食ってこうとしてる奴なんているんだ・・・可哀想に
369 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 01:07:38 ] >>366 きっとC++をただ使ってるだけだろうな
370 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 03:44:22 ] 英語をやってるたら、仕事に支障をきたし始めたので辞めます 皆さんも仕事で日本語を使う人は辞めたほうが無難です。
371 名前:デフォルトの名無しさん [2007/11/15(木) 04:08:37 ] 自分の能無しぶりを理由にしても説得力はないな
372 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 11:25:36 ] 言語は道具、道具を複数使ってるからと言って支障きたすとは思えないのだが?
373 名前:デフォルトの名無しさん [2007/11/15(木) 23:27:54 ] わからんではない オブジェクト作りっぱなしなんてC++ではありえない そんな環境になれてしまうとC++が面倒に感じてしまう。 まぁ、C#は使いやすさと引き換えに速度を完全に捨てたらな・・・
374 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:41:29 ] 速度は捨ててないぞ 捨てたのはメモリだ
375 名前:デフォルトの名無しさん [2007/11/15(木) 23:50:26 ] >>374 ソクドモステテマスッテ
376 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:59:31 ] メモリを捨てて速度が保たれるなんてありえない。
377 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:59:31 ] 文法がC#のC++があったら最強なんじゃないかと思う。
378 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:00:42 ] >>376 それに初起動の速度もパフォーマンスだと考えると、メモリを食うならそれだけ起動が送れるからな。
379 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:04:58 ] >>377 ネイティブのC#ならアンマネージドC#で作れるだろう。 ただし、APIは自作になるけどな。
380 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:05:35 ] >>377 Delphi
381 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:12:14 ] 個々の性能を見るとC#はそう悪くない。 GCに関してはここによると ttp://densanshokunin.at.webry.info/200702/article_1.html > C++のstack > C#のFinalizeなし > > C++のheap = C#のDispose > C#のFinalize ということらしい。スタックさいこーで次点がファイナライザなしのGCだそうだ。 C#が遅く感じるのはメタ情報を抱えたままなのが大きいように思える。 必要以上にコードやリソースの破棄と再ロードやページアウトインを繰り返していてこれが足を引っ張ってる。 JITやngenしててもメタ情報を参照するために結局もとのアセンブリもロードされているのが確認できる。 おかげで別の部分がメモリから追い出されることになりやすい。
382 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:19:38 ] GCの話題にC++が出て来るなんて胡散臭すぎ
383 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:24:30 ] >>382 普通に一番使われてるからだろ。 それにGCの動きはシステムに激しく依存するから、言い出したらきりがない。
384 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:27:09 ] C#はマネージドコードなんだから、比較対照は同じマネージドコードのJavaだったら良いが ネイティブのC++出されてもね。それにネイティブコードはあっさりとOS壊すプログラム開発が できる(例えやりたくなくても)という欠点があるから、今後は.NETもよりセキュリティ強化された サンドボックス上で実行しなくてはならないと結論がでて、ネイティブは生き残れなくなるんだよ。
385 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:33:13 ] トリを忘れてたが>>381 は>>373 を受けての書き込みだからね。
386 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:33:15 ] >>384 マジで言ってんのか?だったらなんでWin32APIを.NETでサポートしないんだよ。 アンマネージドがマネージドに置き換えられるんなら、全部の機能が.NETから使えないとおかしいだろうが。 だいたいユーザー管理もまともに出来ないWindowsでソフトウェアのセキュリティ云々言われてもなあ?
387 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 02:10:11 ] w
388 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 02:11:05 ] ∩___∩ | | ノ\ ヽ | / ●゛ ● | | | ∪ ( _●_) ミ j 彡、 |∪| | J / ∩ノ ⊃ ヽ ( \ / _ノ | | .\ “ /__| | \ /___ /
389 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 02:43:35 ] >>386 きまってるだろうが、最初は置き換えるつもりだったけど厳しいから 方向転換したんだよ。
390 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 03:42:16 ] これはAA貼られても仕方ないなw技量が知れる
391 名前:デフォルトの名無しさん [2007/11/17(土) 01:20:47 ] string csvDir = @"C:\test\"; string csvFileName = "test.csv"; string conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" csvの接続ロジック System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(commText, con); DataTable dt = new DataTable(); da.Fill(dt); OleDbConnection OleConn = new OleDbConnection(); ACCESSの接続ロジック OleDA = new OleDbDataAdapter(expenditure, OleConn); OleDA.Fill(Ds); DDs = ddt;←ここがわからない OleDbCommandBuilder cb = new OleDbCommandBuilder(OleDA); cb.QuotePrefix ="["; cb.QuoteSuffix = "]"; OleDA.Update(Ds) ; CSVファイルをACCESSにインポートしたいのですが、CSVをテーブルに貼り付けた後は どのようにしてACCESSにインポートすればよいのでしょうか? 上記のプログラムは一応コンパイルできるのですが、ちゃんとデータが移ってなくて・・・ どなたかわかる方がおられましたら、修正をおねがいします
392 名前:デフォルトの名無しさん [2007/11/17(土) 01:21:37 ] すいませんDDs⇒Ds、ddt⇒dtです
393 名前:デフォルトの名無しさん [2007/11/17(土) 11:14:16 ] C++で配列を作成し、それをIntPtrにポイントし、そのIntPtrをC#の関数に渡したいと思います。 この時、C#ではどのようにして、その配列を扱うことができるのでしょうか?
394 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 11:34:03 ] C++"で"IntPtr? そのC++ってのはC++/CLIなのか?
395 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:10:06 ] >>394 はい。基本的にはIntPtrがサポートされているものです。
396 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:23:22 ] 意味が分からん。なんだよ基本的にはサポートされてるって マネージド同士なら配列直接渡しゃいいじゃねーか
397 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:29:21 ] >>396 正論。 >>395 何がやりたくてそのようなことをしようとしてるのか説明してくれないと。
398 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:47:38 ] >>397 すいません。説明が悪くて。 アンマネージの配列のポインタが渡されて、それをC#クラスに渡したいというクラスがあります。 その方法としてIntPtr渡しを考えました。 アンマネージからマネージにマーシャルする方法もありますが、メモリコピーは避けたいです。 このような場合はマネージのみサポートする言語では作成しない方がいいのでしょうか?
399 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:55:04 ] 妥当なのは配列をやり取りするんじゃなくて操作をラップしたクラスをやり取りする形。 UnmanagedMemoryStream とか。 いざとなりゃ直接ポインタでもいいけどな。
400 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 12:58:36 ] unsafeでポインタにすればいいのでは? そもそも、C++の配列を作っている部分が既存部分でない(C#に対するラッパ部分) であるなどといった状況なら、初めからマネージ配列にし、 C++内では必要に応じてpinしてやったほうが楽な気がする。
401 名前:デフォルトの名無しさん [2007/11/17(土) 13:23:51 ] unsafeとクラス作成ですか。 特にC#はダメということではないのですね。ありがとうございます。 いただいたアドバイスをさらに調べてみます。
402 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 16:43:46 ] C#はC++の後継言語だから、C++できることはたいていサポートされているよ。
403 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:01:06 ] >>402 【審議拒否】 ∧,,∧ ∧,,∧ タリー ∧∧ (・` ) ( ´・) ∧∧ (ω・` ) U ) ( Uノ( ´・ω) キリバンナノニヨ | U u-u u-u (U ノ u-u ∧,,∧ ∧,,∧ u-u (・ω・`) (´・ω・) コンナレスジャシカタネエヨナ (l U) (U ノ `u-u'. `u-u'
404 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:06:00 ] 餓鬼くさ。 403みたいのってひょっとして面白いと思ってコピペするのかね。 そんなの面白いと思うのは精神年齢永遠の12才の自分だけなのに
405 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:08:27 ] 402 はキリ番なのか?
406 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 17:59:26 ] しかし402も釣りだろ
407 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 18:31:32 ] >402 C++からややこしい機能はできなくしたからこそ扱いやすい言語になってるのかと。
408 名前:デフォルトの名無しさん [2007/11/17(土) 19:29:29 ] this.axWebBrowser1.Navigateに client.Connect(comboBox1.Text,80); でアドレスを渡して表示させています。 comboBoxにはFQDNを入れておりますがhttp://から記載するとエラーになります。 FQDNしか入れられないためにHTTPSでのアクセスが出来ていないのですが どのようにすればSSLでのアクセスが可能になるのでしょうか?
409 名前:デフォルトの名無しさん [2007/11/17(土) 21:57:07 ] >>407 C++に挫折した人にぴったりですねhw
410 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 22:05:37 ] >>408 AxWebBrowser なのか TcpClient なのかわからん 取り敢えず SslStream とか調べたらどうだ
411 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:07:17 ] C++にこだわる奴は言語にこだわり過ぎ。 本当に大事なことは必要な機能を実装すること。 ややこしい機能はチーム開発や保守性をぶっ壊してくれるから 簡単にすることは大事。
412 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:08:08 ] >>411 楽しいのも判るけどさスルーする事も大事。
413 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:26:01 ] いろんな言語やってきて思うんだけど、結局のところ言語の文法って本質的に言語間の差にはならないんだよね。 foreachなんかでも、マクロ使えば簡単にCでも使えるわけだし。 本当に言語選択で大事なのは、VMだとかOS依存部分だとかのもっと大局的な部分なんじゃないかなあ。
414 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:36:54 ] 言語選択は技術者の経験やシステムの構成に左右されるところが多いから、 何が良いとかは断言できない。 自分にとって、一番スマートにプログラミングできるのはC#だけど、 サーバサイドプログラミングでLinuxならJava、UnixならCを選択するのが良いと思う。 なにせ、並列処理はやはりUnix系使うのが一番堅実だから。
415 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:38:25 ] 堅実ってなあに?
416 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:39:59 ] 堅実というより堅牢性 ・プログラムにおいて、エラーや例外などに強く簡単には暴走しないもの。 ・少なくともすぐに「不正な処理」と表示し、データ諸共および自分自身までふっ飛ばすようなOSのような作りではない事。
417 名前:デフォルトの名無しさん [2007/11/18(日) 00:40:08 ] ググレカス
418 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:42:08 ] いまどきそんなサーバ用OSはない。
419 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 04:36:13 ] なんか見てると最近WebBrowserコントロールの質問はやってんな 同一人物なのか 流行なのかwwww
420 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 01:24:28 ] ちょっと前に、スプラッシュウィンドウの実装についてあちこちで議論があったのを見たんだが、 こんなやり方では駄目なんだろうか? public static class Program { [STAThread] private static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Idle += Application_Run; Application.Run(); } private static bool _applicationRunning = false; private static void Application_Run(object sender, EventArgs e) { if (_applicationRunning) { return; } else { _applicationRunning = true; } Application.Idle -= Application_Run; //ここにスプラッシュウィンドウだの、メイン処理だのを書く //プログラムを終了させるべき場所にApplication.Exit()を書く } }
421 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 10:47:43 ] 初期起動時の処理にアプリケーション関連のイベントを記述するのは常識だから、 それでおk。
422 名前:420 mailto:sage [2007/11/23(金) 16:41:04 ] >>421 さんくす
423 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 16:42:35 ] そのあとのスプラッシュの表示と初期処理の 同時処理から完了までの流れがないと 大して意味ない気がするが… どうでもいいが最近の書籍ではタイマー使って 一定時間同期的にスプラッシュ表示するやりかたばっか書かれてるな。 スプラッシュの意味ないっつうの。 まあ平気でビジーループ使ってる例よりはちょっとだけましだが。
424 名前:420 mailto:sage [2007/11/23(金) 17:23:29 ] >>423 ご意見どうも。 実のところを言うと、スプラッシュウィンドウというよりは、 Form_Loadに全体の初期化処理を書きたくないので、 それをどこに書こうか、ということです。 必ずしも最初からFormを使うというわけでもないし。 あとは>>420 の例で、何か過失を犯していないかを知りたかったのです。
425 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 19:03:56 ] メッセージループに入ってからやる必要のある初期化ならそんなんじゃないの。 そうでないならなんもいらんと思うが。
426 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 18:00:35 ] Bitmapを綺麗に回転させたいのですが、 RotateTransformは中心で回転していないのか一定以上の角度になると上手くいきません。 画像中心で回転させるにはどう指定すればいいのでしょうか? 教えてください。m(_ _)m public static Bitmap BitmapRotate(Bitmap bmp, float angle) { // 出力用 Bitmap dst = new Bitmap(bmp.Width, bmp.Height, PixelFormat.Format32bppArgb); // Graphics オブジェクト Graphics g = Graphics.FromImage(dst); // 透明色でクリアする g.Clear(Color.Transparent); // 回転させる g.RotateTransform(angle); // 綺麗に回転させるフィルタ g.InterpolationMode = InterpolationMode.HighQualityBilinear; // 描画 g.DrawImageUnscaled(bmp, 0, 0); // 解放 g.Dispose(); return dst; }
427 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 20:45:04 ] >>426 画像の中心を回転中心にするならそいうふうに移動させないと。 msdn.microsoft.com/library/ja/cpguide/html/_gdiplus_why_transformation_order_is_significant_usecsharp.asp?frame=true 移動→回転→元の位置に戻す 回転させたことないから間違ってたらスマンね
428 名前:426 mailto:sage [2007/11/26(月) 05:37:10 ] RotateTransformの前後に下記のコードを入れることで解決しました。 ありがとうございました。m(_ _)m // 中心を指定する g.TranslateTransform(bmp.Width / 2, bmp.Height / 2); // 回転させる g.RotateTransform(angle); // 元に戻す g.TranslateTransform(-bmp.Width / 2, -bmp.Height / 2);
429 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 19:57:23 ] C#がJavaより勝っている点を教えてください。
430 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 20:13:42 ] 教えてあげないよ
431 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 20:16:46 ] じゃん
432 名前:デフォルトの名無しさん [2007/11/29(木) 04:54:20 ] さくさくさんかくぽりんきー
433 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 05:48:08 ] コイケヤ ココ行ケヤ JAVAとC#どちらが優れているか教えてください Part2 ttp://pc11.2ch.net/test/read.cgi/prog/1189919634/
434 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 21:56:41 ] データバインド対応のコンポーネント作りたいんですけど どのクラスから調べればいいですか? ぜんぜん見つからない・・・
435 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:00:29 ] 意見の割れそうなネタですが、皆様 using ステートメントをどの程度 使用していらっしゃるのでしょうか。 自分は今まで、ルート名前空間を汚したくない、或いは名前空間の 構造を崩したくないといった理由で using ステートメントを一切 使わず、愚直にも省略せず全部記述していたのですが、横に長く なりすぎていよいよ疲れてきて、それに追い打ちをかけるように、 拡張メソッド (C# 3.0 言語仕様) を使うにはそのメソッドの属する クラスの属する名前空間をインポートしてらねばならないという ことを知って悩んでおります。 それなりに多様な名前空間を使用していますが、あまり多くインポートしても 逆に読みづらくなりそうに感じます。使用する名前空間それぞれどういった 基準でインポートするか否かを決めるか等、皆様どうか私に何らかの指針を 示して頂けませんでしょうか。
436 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:02:27 ] 全部インポートしてる。 型名重複するのなんてTimerぐらいだろ。
437 名前:435 mailto:sage [2007/12/01(土) 00:02:39 ] >>435 の 9 行目: 誤: してらねば 正: せねば 失礼いたしました。
438 名前:デフォルトの名無しさん [2007/12/01(土) 00:10:26 ] 基本的に全部インポートする クラス名が重複する場合は完全修飾名で書く
439 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:16:27 ] >>435 文脈からしてひどく実直そうな人物と見るが、 努めてソフトにいうと、usingは普通衝突が発生しない限り使う。衝突しても、名前空間の張り替えをして使う。 よって、あなたがしてるようなコーディングはひどく非効率で例外的だ。今すぐusingステートメントを使うことをおすすめする。 それと、なんとなくIDEなどのコーディング補助を一切使ってない雰囲気があるのだが、 この際にそれらの機能を使ってみたらどうだろうか? VisualStudio2005を使ってるなら、クラス名を書けば左下になにかでるはず。そこをクリックするか、Ctrl+Alt+F10を押して、 メニューから任意の名前空間を選べば、自動的にusingを書いてくれる。
440 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:21:23 ] usingはクラス名を省略したいから書き込むんだよ。 つまり、一回しか宣言しないクラスは完全修飾名で記述してもいいが、 例えば、ファイルアクセスクラスでSystem.IOを何回も呼び出す可能性が 多い名前空間はあらかじめ宣言しておいた方が効率が良い。 この効率が一番重要なのがRAD。
441 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:22:07 ] >>439 ( ・∀・)つ〃∩ ヘェーヘェーヘェー
442 名前:デフォルトの名無しさん [2007/12/01(土) 00:23:09 ] ユーザコンポーネント内のコードからページに直接貼り付けたテキストボックスを参照するもっとも効率的な方法はどうすればいいのですか
443 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:28:48 ] テキストボックスに限らず、クラスを参照する一番の方法は プロパティを使うこと。
444 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:59:34 ] たしかにC++なんかだと、C#のそのusingに相当する usingディレクティブは使うなって言われるけどね。 ただ、それはエイリアスとかusing宣言とか代替があるから言えるわけで、 C#はガンガンusingする言語だと思っている俺。
445 名前:443 mailto:sage [2007/12/01(土) 01:25:47 ] それと忘れてたけど、コントロールのアクセス修飾はprivateがデフォルトだから、 変えなければいけない。
446 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 01:30:23 ] >>435 「using ステートメント」じゃなくて「using ディレクティブ」だろというか そんなこと気にする前に基本的な言葉をだな(ry まぁそれはいいとして >>444 もいっているように C++ で using namespace が気になるのは、その他の仕様含めた総合的な要因によるもので、 その前提を元に C# は考えられていてほぼ危険性がクリアされているので 普通に使え。そっちのほうがみやすい。
447 名前:デフォルトの名無しさん [2007/12/01(土) 10:19:35 ] ありがとう。 でもユーザコントロールから親のページクラスをどうすればアクセスできるのか想像できません
448 名前:デフォルトの名無しさん [2007/12/01(土) 11:54:24 ] ページクラスを継承したクラスにコントロール検索プロパティを実装したとしてもユーザコントロールからはスコープの範囲外だからみれないですよね
449 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 12:24:22 ] マスターページに実装。
450 名前:デフォルトの名無しさん [2007/12/01(土) 13:47:00 ] マスターページに検索ののプロパティを作ってその配下のページコントロールに配置したテキストボックスを参照するのですか? できそうな気がする。。
451 名前:デフォルトの名無しさん [2007/12/01(土) 14:22:26 ] DataGridVewでデータバインディングしている時、主キー、ユニークの重複チェックは皆どうしてるの? 主キーは複合もあるので行でチェックするのがいいという前提で。チェック場所はいろんなイベントがあると思う ・DataGridVewのRowValidatingイベント ・DataTableのRowChagingイベント ※DBに問い合わせは論外。 他にもあるかもしれんが・・・。あったら教えて欲しいんですが。 で、入力された値をチェックと言うことでDataGridVewのRowValidatingでチェック。(ViewのことはViewでチェック) 他のクラスでチェックすると、調査時いろんなソースを追いかけないといけないので。 ほんでと、主キー重複、ユニークチェックメソッドはあるのか? → 調べたけどないと思う。 じゃ、別の方法でチェックするにはどうしたらいい?となると。 クラス内部で主キー、ユニークの値を配列で保持して、配列内をチェックしかないのかなと思ってるんだけど。 複合主キーの時は、それぞれの列の値を文字列連結して1つの文字列として保持する。 これ以外になんかいい方法ってないですか?
452 名前:デフォルトの名無しさん [2007/12/01(土) 14:25:06 ] あ、DataGridVewのDataErrorイベントは論外で。あんなの使いようがねぇって感じなので。
453 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 14:49:10 ] バインド先がDataTableならPrimaryKey設定しとけば DataGridVewの入力時エラーになるけど
454 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 16:24:19 ] >>450 逆、参照するのがテキストボックス
455 名前:デフォルトの名無しさん [2007/12/01(土) 17:25:07 ] 逆とはどうゆう事?マスターページからページのテキストボックスを参照でいいんだよね。
456 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 19:25:42 ] 設定値はマスターページの値で、テキストボックスが更新されたら マスターページの値を更新。
457 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 19:29:06 ] 説明が面倒だから、これをやるってこと www.atmarkit.co.jp/fdotnet/dotnettips/469aspmasterpage2/aspmasterpage2.html
458 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 19:36:58 ] UdpClient.BeginReceive(〜) から byte [] buffer = UdpClient.EndReceive(〜); の間に複数の受信接続が在った場合 bufferに入るのは最後に受け取った1つのデータだけですか?
459 名前:デフォルトの名無しさん [2007/12/01(土) 23:09:37 ] 結局はテキストボックスがトリガーとなってマスターページに値をあたえないとだめなんだね。 ユーザコントロールがトリガーとなって見に行くことがしたいけど無理なんだよね
460 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 08:48:15 ] >>458 最初のだ
461 名前:デフォルトの名無しさん [2007/12/02(日) 14:07:57 ] >>459 これは無理そう。 FindControlsみたいなメソッドをマスターページにプロパティで実装して、 ユーザコントロールのイベント内から呼び出したいんだろ? これはできそうでできない領域。それに気付いただけでも天才だよ。お前 >>456 も言っていること意味不明。
462 名前:デフォルトの名無しさん [2007/12/02(日) 20:44:44 ] やっぱり無理なんですね
463 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 21:07:10 ] >>461 parent経由で親PropertyにSetなら出来るだろ
464 名前:デフォルトの名無しさん [2007/12/02(日) 21:53:27 ] ページといえどもクラスでしょ参照できる分けない
465 名前:435 mailto:sage [2007/12/02(日) 23:13:03 ] 書き込みが遅れてしまいすみません。 他の方々が書かれたソースを読んでいても薄々感じていましたが、やはり皆様 using を積極的に使うものなのですね。確かに衝突など滅多に起きませんし、 名前空間の構造が崩れることよりも行が横に長い方が害悪かもしれません。 皆様のご助言のお陰で漸く using を使うべきとの考えへと至ることができました。 ありがとうございました。 >>435 自分はむしろ真逆な質の人間だと思っていたのですが。一応 IntelliSense 等、 少しは使っています (というより IntelliSense を使わないで日々コーディング できる方が居たら尊敬してしまいます)。 >>446 仰る通り、using ディレクティブでした。>>437 といい、きちんと見直したはずだった のですが。お恥ずかしい限りです。
466 名前:435 mailto:sage [2007/12/02(日) 23:17:31 ] >>465 中のレスアンカ 誤: >>435 → 正: >>439 でした。 またしてもやらかしてしまった。度々の訂正、申し訳ありません。
467 名前:デフォルトの名無しさん [2007/12/03(月) 12:18:45 ] 質問があります。環境はVS2003のC#です。 const Point pos = new Point(1, 1); とやると 「'pos' に割り当てられた式は定数でなければなりません。」 というエラーが出ます。 定数にnewは使えるないんでしょうけど、どのようにしたら上記のような定義を実現できるでしょうか?
468 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 12:26:56 ] static readonly Point pos = new Point(1, 1); ふらっとC#スレに行け
469 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 12:30:39 ] >>467 残念なことに、constはプリミティブ型(int, double)か、後は例外的にString型のみしか認められない。 非常に不思議なことに、C#には改変不可を示す修飾(C++のconstやJavaのfinal)がない。 一応readonlyという似たようなものがあるが、これはコンストラクタでしか使えないのでメソッド内などでは使えない。
470 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 13:43:13 ] いたいことは何となく分かるがかなり変なこと書いてるぞ。
471 名前:467 mailto:sage [2007/12/03(月) 13:58:16 ] >>468-469 ありがとうございます。 readonly修飾子を使用することにしました。
472 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 16:09:37 ] >>471 プロパティの使用も検討してみては。
473 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 20:10:03 ] StreamReader sr = new StreamReader("C:\\test\\時間集計.txt", Encoding.GetEncoding("Shift_JIS")); string text = sr.ReadToEnd(); sr.Close(); this.rtbIndication.Text = text; Regex R_Ex = new Regex("this."); //TextBox1.Text内で正規表現と一致する対象を1つ検索 Match M_stPath = R_Ex.Match(this.rtbIndication.Text); while (M_stPath.Success) { int iFind = this.rtbIndication.Find(M_stPath.Value, RichTextBoxFinds.MatchCase); this.rtbIndication.SelectionStart = iFind; this.rtbIndication.SelectionLength = M_stPath.Value.Length; this.rtbIndication.SelectionColor = System.Drawing.Color.Red; M_stPath = M_stPath.NextMatch(); } リッチスプレッドの中から特定の文字だけを抜き出して、そのフォントカラーを赤くしたいのですが この場合、thisが複数あるにも関わらず、最初に見つかったthisしか赤くなりません。 どこがまずいのでしょうか??
474 名前:デフォルトの名無しさん [2007/12/08(土) 21:30:40 ] ↑"this"です
475 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 21:45:22 ] とりあえずステップ実行でもしてみたらー?
476 名前:デフォルトの名無しさん [2007/12/08(土) 22:12:01 ] >>475 原因は解っています。 int iFind = this.rtbIndication.Find(M_stPath.Value, RichTextBoxFinds.MatchCase); の部分で、リッチテキストボックス(rtbIndication)のテキストの最初から読み込んでるから 必ず最初の"this"で止まってしまうのです なにかいい方法はないでしょうか?
477 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 22:17:56 ] Findの任意の位置から検索開始できるオーバーロード使えばいいんじゃね
478 名前:デフォルトの名無しさん [2007/12/08(土) 22:23:12 ] >>477 すいません、たとえばどのように書けばよろしいのでしょうか?
479 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 22:37:03 ] いやまずヘルプ見ろよ
480 名前:デフォルトの名無しさん [2007/12/08(土) 22:37:58 ] >>all 解決しました!>>477 ありがとう!
481 名前:デフォルトの名無しさん [2007/12/11(火) 18:21:35 ] namespace IEnumeratorTest { public class Sample : IEnumerable<char> { public IEnumerator<char> GetEnumerator() { yield return 'C'; } } class Program { static void Main(string[] args) { foreach (char c in new Sample()) { Console.Write("{0}", c); } } } } C#2.0 yieldの勉強をしています。 このコードで何故コンパイルエラー(CS0536)が出るのかわかりません。 下記のどれにも違反していないのですが。。 ・public キーワードが省略されている。 ・戻り値の型が一致しない。 ・static キーワードがある。 何か足りないものでもあるのでしょうか? Visual C# 2005 Express Editionを使用しています。
482 名前:デフォルトの名無しさん [2007/12/11(火) 18:46:25 ] MSDNを見るとIEnumerator<>は非ジェネリックのIEnumeratorを継承 していました。 また、以下の記述がありました。 実装時の注意 このインターフェイスを実装するには、非ジェネリックの IEnumeratorインターフェイスを実装する必要があります。 そこで IEnumerator IEnumerable.GetEnumerator() { //ここでIEnumeratorオブジェクトを戻さないとエラーになる } を実装する必要がありそうなのですが、何を書けばよいのかわかりません。
483 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 18:49:49 ] >>481 エラーメッセージ読め。 IEnumerable<T> は non-generic な IEnumerable を継承してるんで、 そっちの GetEnumerator も実装しないとだめ。 System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
484 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 18:50:59 ] >>482 IEnumerator IEnumerable.GetEnumerator() の中身は、 return this.GetEnumerator(); にでもしとけ。
485 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 19:02:48 ] Yieldの使い方を根本的に間違ってるわけだけどな。 Yieldを含む IEnumerableなファンクションが暗黙にいろいろやってくれる。 この例だとstaticにしてもいいな。 public class Sample { public IEnumerable<char> Hoge() { yield return 'C'; } } foreach (char c in new Sample().Hoge()) Console.Write("{0}", c);
486 名前:デフォルトの名無しさん [2007/12/11(火) 19:28:55 ] >>483 >>484 >>485 ありがとうございました。解決しました。 >>485 別法でしょうか。まだ詳しいことは分からないのと サンプルの方法も間違っていなそうなので、とりあえず これを使っていこうと思います。
487 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 20:12:58 ] int x = 100, y = 200; private Storyboard story; private DoubleAnimation myDoubleAnimation; private DoubleAnimation myDoubleAnimation2; private void WindowLoaded(object sender, RoutedEventArgs e) { Rectangle rect = new Rectangle(); rect.Width = 10; rect.Height = 10; . (省略 myDoubleAnimation = new DoubleAnimation(); myDoubleAnimation.From = 10; myDoubleAnimation.To = x; myDoubleAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(2000)); myDoubleAnimation2 = new DoubleAnimation(); myDoubleAnimation2.From = 10; myDoubleAnimation2.To = y; myDoubleAnimation2.Duration = new Duration(TimeSpan.FromMilliseconds(2000)); Storyboard.SetTargetName...(省略 story = new Storyboard(); story.Children.Add(myDoubleAnimation); story.Children.Add(myDoubleAnimation2); story.Begin(this, true); } private void click(object sender, RoutedEventArgs e) { story.Stop(this); x = 200; y = 300; story.Begin(this, true); } .NET3.0ですが、ストーリーボードの子要素の中身を変更するのってどうやるんでしょうか? xとyの値をクリックで変えたいのですが、上記の方法ではうまくいかず、 クリックしてもx,yは100,200のままで変わりません 。どうすればいいのでしょうか?
488 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 01:25:48 ] yieldって使うか?用途が見えないのは理解不足なだけなのか?
489 名前:デフォルトの名無しさん [2007/12/12(水) 01:27:37 ] うん
490 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 02:07:33 ] 用途ってか、Enumerable返すメソッドが簡単に作れるから便利ってだけだけど。 状態を持つ場合なんか手で書きたくないしね。
491 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 04:35:41 ] >>487 myDoubleAnimation.Toはint?だからclickの中でx変えただけじゃ元の値のままですよ。 意図通りの挙動をさせるにはこんな感じ? private void click(object sender, RoutedEventArgs e) { story.Stop(this); x = 200; myDoubleAnimation.To = x; y = 300; myDoubleAnimation2.To = y; story.Begin(this, true); }
492 名前:491 mailto:sage [2007/12/12(水) 04:38:58 ] ×int? ○double? 寝ぼけてました。
493 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 07:41:59 ] yieldは列挙とマイクロスレッドが主な用途だろうな こう言語機能をこんな風に使うとこんなことができるよてきなTips( ゚д゚)ホスィ…
494 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 12:22:21 ] foreachと組み合わせるとなかなかいい塩梅だよ。
495 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 12:22:41 ] オライリーのプログラミングC#見たけど ユーザー定義型のソート基準を決めるのに IComparerを実装するのって面倒ですね。 この点はC++のほうが分かりやすくて楽チン。
496 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 12:34:29 ] >>>493 その手のサイト運営してる身だけど、 そういう Tips は結構まとめるの面倒なのよね。 日記とかにちまちま書いてる人はいるけど、それを1箇所に集めるとなると。 「この辺りを Tips にまとめて欲しい」みたいなの列挙しといてくれたら そのうちページに起こすけど。 >>495 いや、IComparison<T> デリゲートでもソートできる。 C# 3.0 だと、 list.Sort((x, y) => y.CompareTo(x)); とか書ける。
497 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 12:36:10 ] 2.0でも、十分楽だと思うけど。 Array.Sort(table, delegate(Hoge x, Hoge y) { return ・・・; });
498 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 12:44:30 ] delegateは未読です。 C#は記法がキモイのはC++と同じで、 慣れるまで時間がかかりそうです。
499 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 12:47:37 ] C++ がキモイって。 いったい、元々どこの畑にいたんだ。
500 名前:デフォルトの名無しさん mailto:omanuke@hotmail.com [2007/12/12(水) 12:57:45 ] >>496 よかったらサイトのアドレス教えてください@メアド
501 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 18:52:31 ] TextBoxに色付けたり インデント開始と停止する系の命令はあるですか?
502 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 20:28:42 ] 釣り?
503 名前:デフォルトの名無しさん [2007/12/12(水) 20:35:34 ] はい
504 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 20:47:52 ] リッチなやつにしとけ
505 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:14:34 ] ブルジョワテキストボックスでも開発するか めちゃくちゃリソース食うの。
506 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:15:23 ] word呼べよ
507 名前:デフォルトの名無しさん [2007/12/13(木) 04:30:30 ] 例外をcatchするとデバッグしにくいという問題は、 IDEのメニュー「デバッグ」「例外」で対応できる。 基本的にはSystem.IO系やNullReferenceExceptionの「スルー時中断」にチェックを入れる。 あとは発生したベースで必要な例外を追加していけばいい。
508 名前:デフォルトの名無しさん [2007/12/13(木) 04:34:09 ] 今は特に言う事無いけど何か思いついたら次からここに書き込むよ
509 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 09:26:21 ] スルー時中断ワロタ
510 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 18:23:06 ] にゃるるで言及されてたC#のお偉いさんの話は本当なのだろうか。 もしマジだとしたら、ガクブルもので正直この先も使うか考えてしまう。
511 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 18:27:37 ] 何の話か言えよ
512 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 19:09:25 ] ヘジたんが AOP 嫌いだとかクエリ式嫌いだと書かれてたアレ? そんなガクブルな話書かれてたか?
513 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 20:18:43 ] >>512 そんなことは常識だろ
514 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 20:52:09 ] >>513 いや、だから、常識なのに何をガクブルしてんの?と。
515 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:34:46 ] クエリ式もあれはひどいよな 使い物にならん
516 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 22:38:37 ] いやいや、クエリ式は使い出すと便利でしょうがないよ。
517 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 22:41:45 ] >>516 LINQのほとんどの演算子が使えないのに?
518 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 22:59:40 ] >>517 どういうこと? 「LINQ to SQL では LINQ の標準クエリ演算子を全部サポートしてないのに?」といいたいのかな?
519 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 23:02:05 ] >>518 拡張メソッドでは呼び出せて、SQLにも使えるのに クエリ式では使えないものがいっぱいあるだろ
520 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 23:11:29 ] >>519 ああ、そういうことね。 まあ、それでも、let とか2重 from とか使うときはクエリ式便利。 from x in a from y in b select new { x, y }; とか、クエリ式使わないと SelectMany 使って書くの大変よ。
521 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 23:16:59 ] 正直letとか使われるとコードがわけわかんなくなる 拡張メソッドでいいじゃん
522 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 23:25:31 ] や、let はむしろ便利だろ il からコード起こしてみたらすごいことになってたけどw
523 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 23:26:16 ] クエリ式この世からなくなってくれればコード読みやすくなるのに
524 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 00:33:05 ] csvファイルを読み込んで数値計算をさせたいのですけれど どうやったらいいのか分かりません。 条件式書くのとcsvファイルを読み込んでそのまま出力することはできます。 むしろそれくらいしかできない初心者です。 アドバイスお願いします。
525 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 00:34:09 ] >>524 そのまま出力できるならその値を出力せずに計算すればよかろ
526 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 00:37:08 ] >>525 普通に計算式を書いてから、その後出力する処理を書けばいいということでしょうか?
527 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 00:38:05 ] >>526 その通りだ
528 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 00:41:13 ] >>527 あああああ そうだったんですか。 難しく考えすぎてました。ありがとうございました。ものすごく助かりました。
529 名前:デフォルトの名無しさん [2007/12/14(金) 08:35:40 ] てもその計算式をどうやって解析するかは想像できてるか?
530 名前:デフォルトの名無しさん [2007/12/14(金) 08:36:06 ] 天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。 天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。 天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。 天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。天パ男死ね。バケモン。身障。気色悪すぎ。ボーズで天パ隠すなよ。
531 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 10:33:22 ] WinAPI の DllImport やら、 const int WM_HOGE みたいなのをC++ヘッダファイルから 自動生成するようなツールってないの? VB6 にあったやつみたいな。 それか、WinAPI をひたすらラッピングした .NET Frx 向けライブラリ。
532 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 10:38:01 ] >>531 こういうのは? www.pinvoke.net/
533 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 11:14:51 ] >>532 おおサンクス。ググっても DllImport の解説やら、WinAPI を使ったサンプルばっか出てきて 困ってたんだよね。これで幸せになれそうだ。
534 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 12:18:55 ] たしかアドインでPInvoke関連のヤツがあったはず。 具体的に何を補助してくれるのかしらんが、余裕があれば試してみたらいい。
535 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 12:23:20 ] そのアドインも>>532 のリンク先にある
536 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 15:06:38 ] 隔離スレなのにずいぶん機能してるな
537 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 15:14:57 ] オライリー プログラミングC# プログラミング Microsoft Visual C# 2005 言語編 C#の勉強をはじめる場合、どちらがお勧めですか?
538 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 15:29:59 ] 難しくなさそうなのをちょっと読んで あとは使ってれば分かる
539 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:47:31 ] >>537 すでにほかの言語が使えるなら、オライリーが無駄な説明がなく理解しやすい。 下はシラネ。ただ、言語編とかつくのは他のも読む前提で書かれてることが多い。 後、@itのC#入門改訂版ならタダで読める。正直助長な部分もあるが、本を買う前に一度見てみて、 それだけでは不十分だと感じてから本を買っても遅くないんじゃないか?
540 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 18:58:04 ] ってかMSDNとかの Microsoft 様のドキュメント読めば十分すぐるだろ・・・
541 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 20:11:48 ] >>540 リファレンスには十分だが、携行できないしいろんな意味で不十分 「C#の勉強を始める場合」だからな。
542 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 20:13:03 ] >>539 C++は使えるのとJAVAの文法の基本は分かっているので オライリーにしてみます。MSの本は高すぎるのもネックです。 >>540 基本を押さえたら適宜参照してみます。
543 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 20:48:26 ] 携行できないのはたしかにその通りだけど、↓あたりとか折角無料なのに スルーしてしまうのはもったいないと思う。 ttp://msdn2.microsoft.com/ja-jp/library/67ef8sbd%28VS.80%29.aspx
544 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 20:51:56 ] >>542 正直、C++ と Java 使えるなら MS のドキュメントだけで十分だと思うけど。
545 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 21:07:26 ] MSDNの ・C# プログラミング ガイド ・Java 開発者のための C# プログラミング言語 あたりに一通り目を通しとけば、まあいけると思うけどな。 どうしても紙媒体が好きならオライリーのC#いいと思うよ。
546 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 21:19:20 ] 以外とWebですますっていう人間多いのか? 俺は新しい言語を勉強するときには、とりあえず一冊本を買うんだが、 Webだけだと記憶しづらくないか?
547 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 21:20:23 ] msdnはローカルに入れますよ
548 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 21:25:51 ] >>547 ごめん、Webっていうのは言葉のあやで、デジタルデータでってこと。
549 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 21:30:31 ] あんまり紙資源を無駄にしたくないから本は買わない ウラニウムとどっちが無駄かは知らんけど
550 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 21:42:48 ] 「Web ですます」というより、C# は「Web ですむ」。 それくらい日本語情報充実してる。
551 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 22:00:43 ] どっちにしろ公式のドキュメントには目を通しておく必要があるし、 MSの物の場合それだけで十分なことも多いからなぁ・・・
552 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 22:02:49 ] 俺の場合基本的に本ですべてすませて、必要なところだけ公式のドキュメントを見る。
553 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 23:18:24 ] 俺も情報をつかむ程度ならweb、じっくり勉強するなら本だな。 論文とかもできるだけ印刷して読む・・・あ、単純に紙媒体が好きなだけかな?結局好みの問題かも。 でもディスプレイとずっと睨めっこするのは辛くない? というかMSDNは重いのが・・・ 動的生成なサイトってイライラが溜まって好きじゃないんだよなw
554 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 23:30:20 ] >>553 禿胴。昔はモニター越しの情報も紙媒体も一緒だと考えてたんだが、 長年やってるうちに結局紙媒体の方が覚えやすいっていう結論になった。
555 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 00:38:52 ] オライリーの本は二部が難しいな。 のマーシャリングやらアセンブリやら属性、シリアル化とか わけわからん。 ここはC#というよりは.NETの世界なんだろうけど。
556 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 00:57:36 ] >>555 二部って何を指してるの?
557 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 00:59:39 ] 何らかの言語触ってりゃC#なんか一日で書けると思うが まークラスライブラリは必要になったときに引くが
558 名前:デフォルトの名無しさん [2007/12/15(土) 01:07:27 ] 1日もかかるかよ
559 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 09:48:19 ] >>556 本の目次
560 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 10:01:01 ] >>557 は本当に一日で習得できた? プログラムを動かすだけならコピペでも出来るし、 それに一通り使えるようになった後ではいままでやってきたことがひどく簡単なことだったと思うもんだよ。
561 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 10:09:47 ] 何らかの言語触ってりゃ コボラー 絶対無理w まあ、かけるだけならアホプログラムでも書けるといえなくもないから、 1日でとか短時間を自慢げに言うのって馬鹿にしか見えんよね。
562 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 10:13:54 ] このスレらしいくだらない話だなw
563 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 10:18:49 ] >>560 C++やらJavaやらやってたんで、楽勝だったよ。
564 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 10:20:54 ] 文法理解しただけで「習得」したと思っちゃう人いるよね。
565 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 10:34:09 ] 何らかの言語と C++やjavaじゃぜんぜん条件が違うわけだが。 まあそんなことはどうでもいい。 できるって言うレベルが人によって違いすぎて何の意味もないわな。
566 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 10:42:55 ] blog.livedoor.jp/dankogai/archives/50841173.html > 私自信、新しいプログラミング言語を3日でマスターできなかったら負けだと思っている。 > もちろん「マスター」にもピンからきりまであるが、ここでいう「マスター」は、もちろんライ > ブラリーやクラスを端から端まで覚えるということではなく、その言語の特徴をつかんで、 > 一目見てその言語で書かれた事がわかるようなコードを読み書きできることを指す。
567 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 10:47:36 ] C#なんて、2.0あたりまでは、メジャーな言語の寄せ集めみたいな文法で、 入門書をパラパラと読んで「ああ、こういう言語ね」と思えないようなヤツは不勉強すぎ。
568 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 10:48:53 ] 言語自体の割合は小さくなってフレームワークなんかの割合がでかいって 偉い人も言ってたのにね。
569 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 10:52:31 ] 1.1まででの壁はデリゲートぐらいか 2.0は匿名メソッド(のスコープ) 言語としてはこじんまり
570 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 11:09:48 ] あ、こういう言語ね 書ける ここでいうマスター はいはいなんの意味もないね。 ほんとに言語固有の部分は少ないしね。 まあそれでも仕様のボリュームはそれなりにあるけど、 ごく基本的な部分だけでもプログラムは書けるしな。
571 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 11:13:31 ] そんなんだから、ライブラリでも設計実装させたら とんでもないことになったりする。
572 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 11:22:58 ] 深く考えずに、細かいところを検証せずに やたらマニアックなことする奴も氏ね、 コードは複雑で冗長でそのくせ穴だらけでたいして役にも立たない、 ああもうトラウマだぜ。
573 名前:デフォルトの名無しさん [2007/12/15(土) 11:30:57 ] みんなすごいんだね。 俺なんて、他人のサンプルコード見ては 「なんだよ、このアトリビュート。どうやって学んだんだよ」 「このプログラムの設計ってまず何からどうやって作ったんだ?」 ってな感じで右往左往して C言語で作ったプログラムをC#で組んでみようと思っても 上手くいかないし。 よし、JAVA宿題スレにそのプログラムの問題投稿して 解いてもらって、そこからJAVA経由で理解しようと 思ったけど、返ってきた答えが答えになってない 不完全なプログラムだったりして、どーしたもんかと考えたり・・・ 基本構文はすぐに解ったけどオブジェクト指向が出来てない 自分に辟易する。
574 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 11:32:45 ] それは単に自分の頭が悪いだけで、 みんながすごいわけじゃなかろう。
575 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 11:35:21 ] >>573 あんまりふらふらせずに一つの言語に専念してみたらどうだろうか? ここで上がってる多言語使える人間も、基本的には一つの言語を十分に学んでから、 その言語を起点して他の言語を学んでる人が多いはず。 複数の言語を同時に習得しようとすると、文法やメトリックを混同してまったく勉強できないことも多い。 俺は、とりあえずjavaが使えれば、基本的なOOP的言語は文法の違いだけですぐに覚えられると思う。
576 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 11:42:36 ] 多言語を習得するというのは、実はそれほどすごいことじゃない。 文法とライブラリを使用する程度なら、その言語の主要概念(OOPとか)をすでに習得していればそれこそ丸一日あれば十分。 だから、Javaさえ覚えられればCやC++、C#は使えるも同然だし(言語固有の習慣や文法を除いて)、 言語を習得したっていうのは、言語の設計概念を理解してるかということに直結すると思う。 だから、一日で十分とかいってる人間も、似たような概念で構成された言語を、 今まで覚えた言語の概念を流用して使えるといってるわけで、 関数型言語をまったく知らない状態から、haskellを一日で自由に使えるわけがない。
577 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 11:53:33 ] >だから、Javaさえ覚えられればCやC++、C#は使えるも同然だし(言語固有の習慣や文法を除いて) 無茶ゆうなw ってか、言語固有の習慣や文法を除いて ってどういうこったよ?それはどう使えるっていうんだ? C++まともじゃなくてもやったことあるなら そんな台詞はどうやっても出てこん。
578 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 11:56:40 ] java屋がC#始めると変なとこだけ潔癖症でかなわん。 C#の文法でjavaを書く癖が直ってくれない。
579 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 12:01:02 ] あるある、チェック済み例外がうじうじとか言い出すよな。
580 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 12:17:54 ] >>573 そうだね。 こんだけオブジェクト指向が広まってるのに、たとえば、 「C一筋で10年、それ以外にはまったく興味もなくてすごしてしました。 いまさらC#やJavaなんてできません」 みたいなPGって激しくオワットルね。
581 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 12:23:13 ] C++勉強してればオブジェクト指向の概念自体はだいたいわかるんじゃないのかな。 時歳に使いこなせるかどうかは別だけど。
582 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 12:28:23 ] C++よりゃよっぽどオブジェクト指向部分に集中し易いjavaでも 結局思い切り人次第だからな〜
583 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 13:14:59 ] >>577 同意。C++の複雑度はJAVAの比ではない。C++を知ってる人間なら JAVAはえらく簡単に覚えられるが、その逆は真ではない。
584 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 13:34:40 ] C++は手動でメモリ管理しなきゃならんし 標準ライブラリも足りないものだらけだし 言語自体にも罠がいっぱいある
585 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 13:44:33 ] >>584 メモリ管理なら、今やスマートポインタを使わない なんて考えられない。boostがよりいっそう充実して ライブラリが進化することを期待する。現にそうなって きている。
586 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 13:47:44 ] いい加減すれ違い。
587 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 13:50:49 ] ここを隔離スレと知っての発言か?
588 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 14:10:25 ] いや、おまいらまずC#が生まれた背景を理解しろよ。一言だとJavaのパクリだがw 「C#はC++をモデルとしてプログラマーを面倒で煩雑な作業から開放するために 作られたより効率的開発のしやすい言語」でC++プログラマーが開発者なんだよ。 つまり、C#はC++からメモリ開放や宣言の煩雑さを省いたオートマバージョンなんだよ。 つまらないCopyとCloneの違いなんてC++プログラマーは一瞬で理解できる。 それを勘違いしているC#ヲタはC#はすばらしいと思っているが、 C#でC++より優れたものを作れるかといったら答えはYESでもありNOでもある。 「何に優れたものか」によって尺度が違うからな。 C++⊃C#、VB.NET これは間違いない。C++を極めればどんな言語でも理解できるよな。 ただ、C++を極めると簡単に言ってもSTL、ATLからUNIX系、MS系や 地方言語のマクロ、コンパイラ、デバイスのインターフェースからOS制御、途方もないボリュームだ。 OSを記述する言語としてのC++ではなく、業務アプリを作るC++を学ぶなら 表面だけなら言語経験より開発手法や設計思想なんかの方がよっぽど重要なのかもな。 はい長文ゴメンなさ〜い。
589 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 14:27:21 ] 痛い
590 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 14:45:54 ] C#にはあってC++にはない致命的なもの 一つのクラスを一つのソースファイルに書く機能 リフレクション object型 クロージャ 式ツリー 自動シリアライズ そしてもちろんGC C++にあってC#にない致命的なもの なし
591 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 14:49:50 ] テンプレートがないのは重症だろ
592 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 14:53:58 ] 素晴らしい!これぞ隔離スレ
593 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 14:57:30 ] ファイルのインクルードは? あれがないおかげで、プロジェクト全体から見えるシンボル(#defineで定義するやつ) を定義しようと思ったらプロジェクトのプロパティーでチマチマやらんといかん。 面倒だし明示的じゃない。
594 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 15:18:13 ] C++にあってC#に無い物はわざわざ削った物ばかり
595 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 15:30:26 ] >>593 何を言ってるのか分からん #defineをプロジェクトのプロパティでどう代用するんだ
596 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 15:36:50 ] >>595 ただ君が知らないだけなわりになぜか偉そうな口ぶりなのはどうなのw まあ落ち着いて msdn2.microsoft.com/ja-jp/library/0feaad6z (VS.80).aspx の「Visual Studio 開発環境でこのコンパイラ オプションを設定するには」でも読め。
597 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 15:46:21 ] C#で#defineはそんな使わんと思うんだが マクロないんだし
598 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 15:54:10 ] >>596 この機能のことであればひとかけらも致命的ではないだろ お前のコードはいろんなシンボルを使った#ifだらけなのかもしらんが プロパティで設定すればいいだけの話だ
599 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 15:59:18 ] C# でも #if SYMBOL はやるけどもな。 #define は、 マクロ型関数は使うな、 プロジェクト全体に渡るシンボル定義はコンパイラオプション+プロジェクト設定でやれ ってこと。 プロパティはあんまり関係ないと思うが。
600 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 16:20:24 ] >>598 たしかに致命的ではないね。 その点は申し訳ない。
601 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 17:39:33 ] つ C++/CLI
602 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:19:16 ] >>590 おまえは本当に痛い。 リソースの乏しい久組み込みではGCが激しく邪魔になる。 一生Winアプリでも作ってろカスが。
603 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:39:26 ] まるで組込用途でC#使ったことがあるような言いぐさだなw
604 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:43:33 ] まあ組み込み用途ならCだし
605 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 19:03:47 ] >>603 適当に言いました。 すいませんでした。
606 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:34:29 ] >>591 っジェネリック
607 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:36:45 ] C#のジェネリックは実体化しなくても型チェックされるから、 肝心なところで使い物にならない。
608 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:38:05 ] 型のチェックがガチガチなのはむしろ好きだがね ちょっと間違うとコンパイルも通らない
609 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:44:21 ] CとかC++は何でもかんでも値型にキャストできるのが気持ち悪い。 なんでchar[]とかがintにキャストできるのかと。 ポインタはパフォーマンスアップに繋がるのはわかるがこれだけは 気持ち悪くてしょうがない。
610 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:48:55 ] C#の将来は明るいですか? Windowsのソフトを作る予定がなくてもC# を覚える必要があるか。JAVAとどっちを 勉強すべきか。
611 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:49:47 ] 基本的にC++はメモリ操作が特徴。 型なんてただのメモリの入れ物としてしか認識してないから。
612 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:52:04 ] >>611 CはともかくさすがにC++にそれは言い過ぎのように思う
613 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:52:26 ] >>611 C#の型はどうなの?
614 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:53:42 ] >>611 仮想関数があれば仮想テーブルや型情報、vptrもある。 ただの入れ物とは思えない。
615 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 01:11:04 ] Windowsのソフトを作る予定がないならC#使ってもしょうがない 作る予定があるソフトに必要な言語をやるといい
616 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 01:28:21 ] >>615 Linuxに移植されたら? 世界は変わるかも?
617 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 01:33:30 ] Monoのこと、ときどきでいいから思い出してください
618 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 01:35:46 ] >>617 しょっちゅう使ってるよ ペンケースに入ってる
619 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 19:00:20 ] そういえばC++にはbool型をとる安全なifもないな
620 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 21:28:37 ] 安全 そのようなものはC++の思想に反するのだよ うそですすみません。
621 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 21:38:41 ] むしろif文にbool型しかとらないJava/C#が異端なんじゃねーの? 俺もbool型オンリーの方が好きだが、スクリプト言語してるとそうじゃない方が多い気がする。
622 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 21:47:50 ] 型に寛容な言語だとboolだけってわけにもいかないから
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 ] ウィンドウを持ったアプリケーションが起動されるのを 監視することはできますか?
724 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 12:20:47 ] できます。
725 名前:723 mailto:sage [2008/02/02(土) 13:09:26 ] >>724 やり方か調べるためのキーワードを教えていただけませんか?
726 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 13:19:43 ] findwindow
727 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:26:37 ] >712 画像のデコードがそこまで重いことはまずないと思うが、 ファイルアクセスが妙に遅延することはあると思うよ。 ノートンとかウイルスバスターがファイルアクセスに むやみやたらに割り込むから信じられないくらい応答が返ってこないことがあったり。
728 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:51:34 ] や、それなら普通に事前にMemoryStreamに(非同期で)読んどけば良いじゃん?
729 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 22:59:01 ] 画像がWeb上とかにあって数KBダウンロード毎に描画するんならキャンセルとかあってもいいかもしれんが、 既にハードディスクあるものを表示するだけで、わざわざキャンセルとか普通やらないな
730 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 20:08:01 ] .NETでATLのCComPtrみたいな タイプライブラリのないInterfaceを扱う仕組みはあるですか?
731 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 20:26:03 ] Managed DirectX
732 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 21:38:05 ] 自前でinterface再定義はできる Guid属性とかComImport属性とか使う IDispatchならType.InvokeMemberでレイトバインディングもできる
733 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:35:42 ] std::exceptionにUNICODE入れると文字が壊れますか?
734 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:37:43 ] スレ違い
735 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:08:55 ] すみません、よろしければ pc11.2ch.net/test/read.cgi/tech/1200911737/182-183 について教えてください。何卒よろしくお願いします。
736 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:36:45 ] その質問には答えるなということか。 了解した。
737 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 11:45:38 ] IPCをチャンネルに使ったリモーティングを使って、同一PC内でプロセス間通信を しているのですが、厳密署名したら少し動かなくなりました。 Clinet.exeとServer.exeとRemote.dllの3つのプロジェクトからなるソリューションです。 それぞれのアセンブリに同一のsnkファイルで署名したところ、 Client.exeが、Server.exeからのコールバックのみを受け取れなくなりました。 クライアントからサーバへのメッセージングは今までどおりに出来ています。 こういうモノなのでしょうか?どなたかご存知の方がいらしたら、宜しくお願いします。
738 名前:737 mailto:sage [2008/02/13(水) 13:33:40 ] IpcChannel channel = new IpcChannel(properties, null, new BinaryServerFormatterSinkProvider(properties, null)); クライアントとサービスの両方を、上記の書き方で初期化したら出来ました。
739 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 21:14:32 ] SqlTransactionのCommit()のタイムアウト時間を変更したいのですが どこで設定すればいいのでしょうか? サーバーの負荷がでかいときにCommitのタイムアウト時間だけ短くてタイムアウトしてしまいます。
740 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 09:36:26 ] start tran somewhere here SqlCommand cmd = new SqlCommand(mySqlCommand, conn); cmd.CommandTimeout = 0; // NO TIMEOUT cmd.ExecuteNonQuery(); commit here
741 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 09:58:26 ] >740 それで変わるのはExecuteNonQuery()のタイムアウト時間だけで Commit()のタイムアウト時間は変わらないから困ってるんだよ。
742 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 10:23:36 ] なるほど。 しかし、"BEGIN TRANSACTION"と"COMMIT"をExecuteNonQueryで実行したら?
743 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 22:05:21 ] >742 確かにSqlTransactionのCommitもExecuteNonQueryでCOMMIT叩いてるだけにしか見えないのでそれでもいいかなとか思ってました…。 やってみたらそれで問題なく動いてしまったし。 SqlTransactionの存在意義がなくなってしまうけど仕方がないか。
744 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 18:18:25 ] マクロメディアFlashの タイムラインみたいなウィンドウ作りたいけど やっぱり自作しなきゃだめかな なんか楽そうな方法ありませんか?
745 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 00:20:43 ] 最近どっかで見たな
746 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 13:04:29 ] NiVEとか?
747 名前:747 mailto:sage [2008/02/29(金) 01:44:05 ] axWindowsMediaPlayerを使ってオーディオファイルを再生しています。 ListBoxにプレイリストの内容を表示しようと this.listBox1.SuspendLayout(); for(int i = 0; i < wmp.currentPlaylist.count; i++) { this.listBox1.Items.Add(wmp.currentPlaylist.get_Item(i)); } として、ListBoxにプレイリストの内容を表示しました。 更に再生中のMediaを選択状態にしたく、続けて for(int i = 0; i < this.listBox1.Items.Count; i++) { if(this.listBox1.Items[i].Equals(wmp.Ctlcontrols.currentItem)) { this.listBox1.SelectedIndex = i; } } this.listBox1.ResumeLayout(); としました。しかし、再生中のMediaが選択されません。 インターフェース同士の比較が上手くいかないからなのかなと思っています。 上手くいく方法がありましたら教えて下さい。もう3時間位悩んでいます。 よろしくお願いします。
748 名前:747 [2008/02/29(金) 04:47:58 ] age忘れてました。まだ悩んでます。助けて下さい。orz
749 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 16:00:56 ] そもそも、PlayList[]の型とcurrentItemの型が違う。
750 名前:747 [2008/02/29(金) 16:37:55 ] wmp.currentPlaylist.get_Item(i) も wmp.Ctlcontrols.currentItem もWMPLib.IWMPMediaかと思ったのですが、違うのでしょうか? for(int i = 0; i < this.listBox1.Items.Count; i++) { if(((WMPLib.IWMPMedia)(this.listBox1.Items[i])).Equals(wmp.Ctlcontrols.currentItem)) { this.listBox1.SelectedIndex = i; } } this.listBox1.ResumeLayout(); とキャストしても比較出来てないみたいだし、どうしましょ…orz
751 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 21:39:35 ] そもそもオブジェクトを比較してどうすんだ メディアプレイヤーいぢったことないけども、普通に考えて実体はCOMの先だろう 何らかのインスタンスを識別するIDとかがあるだろうからそれで比較汁
752 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 21:49:27 ] >>751 何らかのインスタンスを識別するID o...rz
753 名前:747 [2008/02/29(金) 22:35:46 ] 解決しますた。 get_isIdenticalの戻り値と引数を見て、 もしかして…と思って試したら当たりですた。 this.listBox1.SuspendLayout(); for(int i = 0; i < wmp.currentPlaylist.count; i++) { WMPLib.IWMPMedia media = wmp.currentPlaylist.get_Item(i); int j = this.listBox1.Items.Add(media); if(wmp.Ctlcontrols.currentItem.get_isIdentical(media)) { this.listBox1.SelectedIndex = j; } } this.listBox1.ResumeLayout();
754 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 19:03:45 ] listViewに大量のデータを設定していると スクロールした時とか、再描画がとてつもなく重いんです。 プロパティとかで回避方法ってありますか? また、セル表示で別のコントロールでお勧めのやつってありますか?
755 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 19:22:28 ] VirtualMode やや面倒だけどな DataGridView
756 名前:756 mailto:sage [2008/03/06(木) 18:09:14 ] 相談があります。 forums.fanatic.net.nz/index.php?showtopic=11226&st=0&p=81800& のCのコードを参考にしてC#で同じ事をしようとコードを書きました。 using System; using System.Runtime.InteropServices; using System.Windows.Forms; namespace msnTest { public partial class Form1 :Form { private const int WM_COPYDATA = 0x004A; [DllImport("user32.dll")] private static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("user32.dll")] private static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, ref COPYDATASTRUCT lParam); [StructLayout(LayoutKind.Sequential)] private struct COPYDATASTRUCT { public IntPtr dwData; public int cbData; public IntPtr lpData; } } 続く
757 名前:756 mailto:sage [2008/03/06(木) 18:13:37 ] COPYDATASTRUCT sendData = new COPYDATASTRUCT(); sendData.dwData = (IntPtr)0x547; sendData.lpData = songDataPtr; sendData.cbData = Marshal.SizeOf(songData); IntPtr msnHandle = FindWindow("MsnMsgrUIManager", null); MessageBox.Show(SendMessage(msnHandle, WM_COPYDATA, IntPtr.Zero, ref sendData).ToString()); Marshal.FreeHGlobal(songDataPtr); } } }
758 名前:756 mailto:sage [2008/03/06(木) 18:16:53 ] あれ、なぜか書けない…。間が飛んでる…
759 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 22:39:53 ] そのまま放置とはどういう了見だ
760 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 12:40:24 ] ワロタ
761 名前:756 mailto:sage [2008/03/08(土) 20:39:33 ] すみません。何か突然書き込めなくなったので…。 解決しました。リンク先のCのソースは送信データが間違っていて、 Cのままコンパイルしても動かないものでした。 正解が yuuan.net/blog/index.php?itemid=257 にありました。
762 名前:デフォルトの名無しさん [2008/03/10(月) 03:11:16 ] しつもんです。 Graphics g = pictureBox1.CreateGraphics(); mypen = new Pen(Color.White); fillbrush = new SolidBrush(Color.Black); g.FillEllipse(fillbrush, 10, 140, 400, 400); g.DrawEllipse(mypen, 10, 140, 400, 400); pictureBox1.BackColor = Color.Red; とやると、せっかくかいた円が消えてしまうのですが、 どうすれば消えないでかけるのでしょうか? 背景の色の設定と、円を書く順番を変えても意味ありませんでした。
763 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 03:23:50 ] >Graphics g = pictureBox1.CreateGraphics(); なにこれ
764 名前:デフォルトの名無しさん [2008/03/10(月) 03:27:44 ] >>763 pictureBox1に円を書きたかったのでこうしたんですけれど、 必要ないんですか?
765 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 03:35:20 ] コントロールを継承したクラスでOnPaintメソッドをオーバライドする CreateGraphics()じゃなくてOnPaintに渡されるe.GraphicsのGraphicsで描画する
766 名前:デフォルトの名無しさん [2008/03/10(月) 03:44:49 ] >>765 ??? すいません、もう少し分かりやすく説明してもらえませんか?
767 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 03:53:17 ] おいおい・・・
768 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 04:18:29 ] 人間やめろ。
769 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 05:14:01 ] >>766 君にはまだ早い C#の基礎を理解してから来なさい
770 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 11:55:04 ] >>768 >>769 「現在のウィンドウのメッセージの存続期間だけ有効です。」 を具体的に説明してくれ。
771 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 12:59:21 ] おいおい・・・
772 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 13:13:41 ] 人間やめろ。
773 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 14:18:21 ] >>770 君にはまだ早い C#の基礎を理解してから来なさい
774 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 14:48:31 ] ここ、もう相談スレじゃないよな…
775 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 17:23:26 ] 本スレ行けよ
776 名前:無知な人間 mailto:sage [2008/03/10(月) 17:34:46 ] WinXPのC#.NET2003での質問ですが、 DDLのChangedで動的に選択したインデックスが上手く取得できません どうしたらよろしいでしょうか?
777 名前:デフォルトの名無しさん [2008/03/10(月) 18:11:18 ] ファイト
778 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 18:45:10 ] 笑えばいいと思うよ
779 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 14:30:22 ] 何、このスレ
780 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 10:59:40 ] 垂直同期をとるためにVsync待ちをしたいと思い調べたところ C++では IDirectDraw::WaitForVerticalBlank IDirectDraw::GetVerticalBlankStatus IDirentDraw::GetScanLine などを使うようなのですが、 これらの機能をC#で使用する方法はあるでしょうか? また、C#で垂直同期をとる手法として一般的なものがあれば 教えていただけないでしょうか
781 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 12:57:50 ] Managed DirectX
782 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:40:54 ] ずいぶん懐かしい言葉だなー。 垂直同期待ちって。
783 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:42:50 ] 液晶全盛、リフレッシュレートいじり放題のこのご時勢にVSync待ちはないだろ
784 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:54:57 ] へーCRTのリフレッシュレートが「いじり放題」じゃなかったなんて知らなかったよw むしろ液晶の方がそういう面では不自由なデバイスのはずだと思ってたけど
785 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 22:43:07 ] 液晶のリフレッシュレートが弄りやすいかどうかなんて話してないんだが
786 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 23:26:20 ] へーじゃあ「どんな話」をするつもりだったのかとっくり語ってもらおうじゃないの。 いやまあできないなら無理すんなよw
787 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 23:51:20 ] 液晶全盛 かつ リフレッシュレートいじり放題という意味で、 液晶全盛 だから リフレッシュレートいじり放題という解釈ではないということだと思う。
788 名前:783 mailto:sage [2008/03/14(金) 00:07:04 ] おまえら俺の言葉が足りなくて悪かった 言いたい事は>>787 さんのいう通りだ おやすみ
789 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 01:33:35 ] いや普通はそう解釈するよ 揚げ足を取ろうとするなら別だけど
790 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 04:35:47 ] >>781 解決しました 有り難うございました
791 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 08:04:13 ] >>789 君も頭悪いなw >>788 は図らずも自分を擁護できる発言をする奴がいたからそれを利用してるだけ。 そんなことねえだろ、と言いたいのなら、>>783 の意図が>>787 の通りだとして(それでも全然かまわないが) 「なぜ」「このご時勢にVSync待ちはない」という結論に繋がるのか説明してみな。
792 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 08:10:25 ] 必ずいい方向に脳内補完する人と必ず悪い方向に脳内補完する人が この世の中にはいるんだな。 なぜ分かれるかというと性格がいいか悪いかなんだな。
793 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 08:37:00 ] >>788 は利用してるのか?
794 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 11:40:10 ] Vistaは垂直同期取ってるんじゃなかったっけ
795 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 12:21:13 ] もうそろそろカスはほっとこうぜ
796 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:29:31 ] >>795 Vistaのことをひどく言うのはやめてあげてください。
797 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:34:44 ] Vistaは、悪くない 悪いのは、サンプルプログラムのフォント関連部分と>>791 の頭
798 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:38:22 ] まあ>>797 がそういう「負け惜しみ」はみっともないと思う程度の恥の意識もない奴だ、 というのはよくわかったよw
799 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:39:43 ] うわ、反応早ww
800 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:50:14 ] 反応早かったら何? っていうか、どうしてこの手の馬鹿ってのは自分の言葉を自分に適用しようとしないのかねw 一言で言えば恥を知らないからだろうけどさ。 そんなことはどうでもいいから>>791 に書いた疑問を説明してみてよ早く。
801 名前:783 mailto:sage [2008/03/14(金) 20:59:24 ] ちょっとおまえら俺の事はもうスルーしてC#の話ししてくださいホントお願いします
802 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 21:22:54 ] C#の話はC#スレでやりましょう
803 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:31:51 ] テアリング避けでVsync待ちしたいこともあるけど、 漏れのやり方が悪いのかビジーループになるんで非ゲームでは あんまり使いたくないな・・・
804 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 18:57:26 ] もうリフレッシュレート論争やめようや
805 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 19:20:24 ] 続けたい奴は続けていいよ どうせ糞スレだし
806 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 19:26:10 ] 中途半端に機能してるから紛らわしいw
807 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 17:02:16 ] >>784 で書いた自分の勘違いを認めたくないだけだろ こういうバカは何言っても食いついてくるからほっとけばよろし
808 名前:デフォルトの名無しさん [2008/03/19(水) 17:35:42 ] ここで質問ですよ リッチテキストボックスに画像貼り付けたり、背景を自前で描画したりやりたいんですが WndProcのWM_PAINTを捕らえても文字の上に描画されてしまいます 文字の下に描画できませんか?
809 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 18:48:37 ] つWPF
810 名前:デフォルトの名無しさん [2008/03/19(水) 19:44:09 ] >>809 製品?
811 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 21:14:14 ] ググレ押忍
812 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 21:38:24 ] >>807 それって>>783 のことだと思うけどね。 こういうバカ? それって君とか>>783 みたいなバカのこと?w
813 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 21:39:32 ] >>808 そんなの簡単だろ・・・と思ってやってみると意外とできないねこれ
814 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 11:21:46 ] Func<T,TResult>に共通化されつつある今、 Converter<T>やPredicate<T>などを使う意味はあるのでしょうか?
815 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 11:22:30 ] 意味を明確にできる
816 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 13:13:34 ] >>814 前からいちいち定義するのがいやでDelegate<Result,Param1,Param2>とか普通のメソッドの型の順番にあわせて使ってたんだが、 Funcniそのまま使えないんだよなぁ・・・どうしよう
817 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 20:49:21 ] DataGridViewでNullValueが設定されている列のセルの値を、プログ ラムでDBNull.Valueに設定したとき、セルにNullValueの値を表示す るにはどうしたらいいのですか? MSDNライブラリには、DBNull.Valueを設定するだけではできないと書 いてあるけど... セルの値がDBNull.Valueで、セルの表示はNullValueの値にする方法 を教えてください。
818 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 21:08:56 ] 変換は行われないってのはDataSourceNullValueがDBNull.Valueで(ryってところの解説だぜ?
819 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 21:43:29 ] >>818 ありがとうございます。よく読んだらその通りでした。 その列の型はstringで、DataSourceNullValueを設定してないため、MSDNライブラリの 「DataSourceNullValue が DBNull.Value で、セルの ValueType が参照型」に見事に 合致してました。 DataSourceNullValueをstring.Emptyにして試してみます。
820 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 18:48:31 ] コレクション要素の変更をコレクションのオーナーに通知する方法 はないですか?オーナーをコレクションとしてラッピングするくらいしか 思いつかなくて。
821 名前:デフォルトの名無しさん [2008/03/24(月) 18:55:21 ] その方法でいいんでない? 何か問題があるのか?
822 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 19:09:34 ] IBindingListでも実装しとけ
823 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 19:55:39 ] >>820 そういう用途だとObservableCollection使っておくといいんじゃないかね。 ttp://msdn2.microsoft.com/ja-jp/library/ms668604.aspx
824 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 14:57:38 ] 配列の配列にアクセスする方法について教えていただけないでしょうか? int data = new int[5][5]; に数値データが入っているとして、例えば全要素を表示させることを考えます。 その際あえて、ポインタを使ってアクセスすることを考えてます。 (ポインタなんて使わず、添字を使えばいいというのはわかっていますが、 あくまで、勉強のためということで。。。) ポインタ(*p)を使う方法はわかるのですが(ソースの上半分)、ポインタのポインタ(**p)を使ったやり方が(ソース下半分)がわかりません。 ちなみに具体的にはソース中の<<<<data>>>の部分の書き方がわかりません。 (もしかしたら、ぜんぜん違うのかもしれませんが。。。) わかる方教えていただけないでしょうか?よろしくお願いします。m(_ _)m //とりあえず うまくいった ポインタ を使う方法 fixed (int* p = &data[0][0]) { for (int* px = p; px != p + 5; px++) { for (int py = *px; py != *px + 5; py++) Console.Write("<" + (int)&py + "," + py + ">"); Console.WriteLine(); } } //うまくいかない ポインタのポインタ を使う方法 fixed (int** p = <<<<data>>>) { for (int** px = p; px != p + 5; px++) { for (int* py = *px; py != *px + 5; py++) Console.Write("<" + (int)py + "," + *py + ">"); Console.WriteLine(); } }
825 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 16:01:03 ] >>824 ポインタなんて使わず、添字を使え こうですか? C#でわざわざポインタなんて勉強する価値無し
826 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 16:15:55 ] int*[] temp = new int*[data.Length]; for (int i = 0; i < temp.Length; i++) { temp[i] = (int*)(void*)Marshal.UnsafeAddrOfPinnedArrayElement(data[i], 0); } fixed (int** p = temp) { ... こうじゃね 本気でこんなの書く奴がいたら頭おかしい
827 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 18:05:17 ] >>824 上も全然ダメ。めちゃくちゃ。 コンパイル通りゃいいってもんじゃないよ・・・
828 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 20:47:06 ] そこまでやるならC++/CLI使えって話しだな
829 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 23:24:50 ] MSも unsafe 使えと推奨している。 www.microsoft.com/japan/msdn/columns/csharp/csharp10182001.aspx
830 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 23:36:12 ] その記事,すごく客観的で秀逸だよな
831 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 23:58:45 ] この記事には続きがあって、その記事とセットで初めて客観的と言える。 www.microsoft.com/japan/msdn/columns/csharp/csharp11152001.aspx
832 名前:824 mailto:sage [2008/04/02(水) 18:38:08 ] >>826 具体的なソースをご提示いただき、ありがとうございます。 >>827 上のソースも、ポインタの使い方に間違いがありますか。。。 一応、ほしい結果は得られたので、正しいかと思ったのですが。。。 >>828 もちろん、その通りですが、あくまで勉強ということで。。。。 >>829 この記事読みました。 実際に簡単なループをまわして何パターンかのソースで確認したところ、配列とポインタとでそんなに大きく処理時間がかわらないようです。 (逆にポインタが遅い場合もありました。。。) ポインタのポインタは関数の文字列型の引数に使う程度で、やっぱりあまり出番がないんでしょうか。。。。
833 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 22:22:26 ] |┃三 / ̄\ |┃ | | |┃ \_/ ガラッ. |┃ | |┃ ノ// ./ ̄ ̄ ̄ \ |┃三 / ::\:::/:::: \ |┃ / <●>::::::<●> \. |┃ | (__人__) | |┃三 \ ` ⌒´ / |┃三 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
834 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 11:43:48 ] C++とC#の違いを教えて下され
835 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:00:13 ] 全然違うので説明が逆に難しい。
836 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:09:15 ] JAVAとC#の違いを教えて下され
837 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:13:29 ] 中途半端に似てるから鬱陶しい 特にJavaのジェネリックの糞さには発狂しそうになる
838 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:15:36 ] >>836 Sunが作ったのがJava。 Microsoftが作ったのがC#。
839 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:46:37 ] JavaとJ#の違いを教えて
840 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:54:39 ] JavaをWindowsに最適化したのがJ#
841 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:05:48 ] そーいや大学の研究科目でjavaを使ったGUIとかいうのがあったがどうにもなあ 「最終的には1000行を超えるコード〜」とか「毎年大人気の科目」とか意味の分からん宣伝ばっかで萎えた。 そんなん個人でもうやってるって話だし。チームプログラミングとかを前面に押し出してたなら魅力があっただろうに
842 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:07:50 ] 学部一回生向けの授業?
843 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:21:35 ] >>841 大学でチームプログラミングなんて教えれる先生がいないって。
844 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 02:23:01 ] >>842 三回生向けだからあれなわけで 一回生でそこまでやったらそれは別にいいと思うけどね
845 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 12:48:39 ] 大学でチーム開発してもできるやつが全部やっちゃうから意味なし。 >>842 学部一回生でそんな高級なことしたら単位が全然でないじゃないか! 学部一回だとこんなもんだ。 ・電源の入れ方、終了のしかた。 ・エディタのつかいかた ・ファイル操作のしかた ・ほーむぺーじをつくろう ・一番最後に hello world(全角スペース入れてコンパイル通せないヤツ多発)
846 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 13:05:54 ] これは酷いww
847 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 13:11:51 ] >>845 卒論を二人で一つ書く大学もあるらしいからな ありえる
848 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 19:44:54 ] 一回目のCの授業でHelloWorldコンパイルまで行ったけどwwwwwwww
849 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 20:33:05 ] どこの底辺専門学校だよ。
850 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 20:43:21 ] >>847 XP卒論ですか 新しいな
851 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:14:42 ] 院なら別に共著って普通じゃねえ?
852 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 00:40:02 ] >>847 二人で作業したからといって、労力が半分になるわけでもないし、 二人で作業したからといって、二倍の完成度になるわけでもない。 むしろ独りよがりな内容にならなくて良いんじゃないか。まさにXPだな。
853 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 12:19:14 ] >>851 普通一人一本じゃないか?
854 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 22:42:45 ] え?
855 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 22:47:26 ] お菓子を食べながら卒論を書くんですね わかります
856 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 23:04:21 ] いいえビールです
857 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 00:27:09 ] 早く終えて生ハムメロンでも食べなはれ
858 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 01:37:06 ] 何だか腹減ってきた
859 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 10:09:29 ] >>855 シュークリーム分は大事ですよ?
860 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 18:40:17 ] ArrayListのテンプレート版はないの?
861 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 19:07:11 ] System.Collections.Generic 名前空間の List<T>
862 名前:デフォルトの名無しさん [2008/04/22(火) 17:02:02 ] C#のおかげで少しだけC++のテンプレートが解ったような気がした
863 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 17:06:17 ] >>862 そりゃ気のせいだな、ぶっちゃけ別物できる事の範囲が違いすぎる、つかなんだこのスレ 昔の重複スレの残骸?
864 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:30:32 ] 「すこしだけわかったような気がした」って言っただけなのに・・・
865 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 00:33:40 ] 気にスンナ