1 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 20:45:59 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 前スレ C♯, C#相談室 Part34 pc8.2ch.net/test/read.cgi/tech/1157549657/ 過去スレは>>2-5 あたり。 ※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。
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(); にでもしとけ。