1 名前:デフォルトの名無しさん [2005/09/11(日) 23:54:01 ] おそらく、.NET開発でデファクトスタンダードに最も近い であろうC++/CLIについて語ろうぜ!
835 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 00:26:19 ] ちょっと理解できてきたみたいです //16進数を受け付ける UInt64 hoge =Convert::ToUInt64(textBox1->Text,16); //10進数を受け付ける UInt64 hoge = UInt64::Parse(textBox1->Text); textBox2->Text = hoge.ToString(); やっと16進数の入力を考えれるようになりましたが UInt64 hoge =Convert::ToUInt64(textBox1->Text,16); textBox2->Text = hoge.ToString(); で出力すると、ご丁寧にも16進数から10進数に変換されています ヮ(゚д゚)ォ!
836 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 00:28:58 ] 16進で出力すればいいじゃん。 何言ってんだ?
837 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 01:07:29 ] やっとできました、どうも皆さん アリガタマキン ( ´∀`)ノ⌒ω)Д`)ブニュ UInt64 hoge =Convert::ToUInt64(textBox1->Text,16); wchar_t foo[16]; memset(foo, 0, 16*sizeof(wchar_t)); _i64tow_s (hoge,foo,16,16); String ^tmp = gcnew String(foo); textBox2->Text = tmp; しかし、例外処理が超難関だな(;´д`)トホホ… try {}catch( )の構文前からスマートでかっこいいと思っていたので 覚えたいと思っていたんだがな、ムズそうだな・・・・ 今更泥臭くMessageBoxで条件判定するのも、なんだかなぁー
838 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 01:19:03 ] 学生さん?
839 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 04:30:32 ] >>837 textBox2->Text = Convert::ToUInt64(textBox1->Text, 16).ToString("x"); ちゅうかうざい。
840 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 07:57:43 ] ToString が書式指定できることを知らんと言うのもありがちで、MSDNを見れば・・・ だが、Express の配布で C++/CLI を使う初心者がこんな感じに騒いだらこの先恐ろしいな
841 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 08:43:29 ] L"..."を template引数で使うとconst wchar_t*にならない? (generic,overloadだとStringになった) void call_overload(String^ s){Console::WriteLine("String");} void call_overload(const wchar_t* w){Console::WriteLine(L"const wchar_t*");} template <typename T> void call_template(T t){Console::WriteLine( (T::typeid)->Name );} generic <typename T> void call_generic(T t){Console::WriteLine( (T::typeid)->Name );} call_overload(L"123");//String call_template(L"123");//Char* call_generic(L"123"); //String
842 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 11:11:27 ] 仕様にそう書いてあった template では const char* や const wchar_t* が渡されたら、char や wchar_t の配列として 扱い、ジェネリック関数は型引数で const char* や const wchar_t* が渡された場合には String として型推論するというルールだって call_template(gcnew String("123")); とやると、String としてちゃんと帰ってきた
843 名前:デフォルトの名無しさん [2006/03/06(月) 13:16:33 ] MFCはどうなるんでつか? STL.CLIみたく、MFC.CLIが出るんでつか?
844 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 13:20:15 ] つ CWinFormsControl
845 名前:デフォルトの名無しさん [2006/03/06(月) 13:27:29 ] Microsoft .NET Framework の Windows フォームを使用したペインティング テクニック www.gotdotnet.com/japan/team/windowsforms/windowsformspainting.aspx これを参考に、C++/CLI からのグラフィックスの基礎を勉強しています。 最後の TextClipping というアプリケーションの例で、 protected override void OnPaintBackground(PaintEventArgs e) という C# における記述が出てくるのですが、 同様の記述を C++/CLI でやってみたところ、 override 仕様にも基本クラスで OnPaintBackground は virtual じゃないよ、って言われます。 .NET Framework 2.0 で何か変更になったのでしょうか?
846 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 14:19:42 ] 自分のメソッドの宣言で virtual は書いたけど override 指定していない方に つI
847 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 14:49:30 ] 汚い文法だなぁ
848 名前:デフォルトの名無しさん [2006/03/06(月) 15:17:51 ] >>864 OnPaintBackground つーのは、規定クラス System::Windows::Forms で virtual で宣言 されている「はず」だったんですが・・・ んじゃ、OnPaint とかを乗っ取る事はできないのかなぁ。
849 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 15:28:57 ] fつべvうぇ45wvw34
850 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 15:57:19 ] >848 まぁ、漏れあてなんだろうけど、C++/CLI では暗黙のオーバーライドは禁止されている ちゃんと virtual void OnPaintBackGround(...) override ←これ { ... } と記述してる? これ書いても上書きできていないの?
851 名前:デフォルトの名無しさん [2006/03/06(月) 17:32:02 ] >>850 忘れてました orz
852 名前:デフォルトの名無しさん [2006/03/06(月) 21:01:39 ] >>100 本買ってまで勉強する必要はないんじゃない?
853 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 18:46:38 ] private: void button1_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ ){ hoge = ""; 〜 } private: 内で定義した変数って、よそのプロシージャーでは当然使えませんよね グローバル変数で定義すれば、いいのだろうけど NETで ※どんなアルゴリズムでも、グローバル変数なしで 記述できることが証明されています。 グローバル変数は後述するように、非常に強力な反面、 大きな危険性を秘めています。 とはいえ、絶対に知っておくべき事柄です。 らしい、button1で発生した変数を、button2のイベントが起きたときに 継承させる方法を 、グローバル変数無しで実現できるの?
854 名前:デフォルトの名無しさん [2006/03/07(火) 19:41:37 ] >>853 まずもってプロシージャってのが C++ にあるか ってのは置いといて、そのフォームのメンバ変数は button1_Click() からでも button2_Click() からでも アクセスできるじゃん。
855 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 20:40:47 ] そんなことはないやろ、 private: void button1_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ ){ hoge = ""; 〜 } private: void button2_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ ){ textBox2->Text=hoge; 〜 } : error C2065: 'temp' : 定義されていない識別子です。
856 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 20:57:37 ] >>855 それ別の位置でコンパイルエラー出てるだけじゃないか? そのコードの中にtempなんて識別子は出てないのだが
857 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 21:14:41 ] >856 この人が言ってるの、auto 変数のことじゃない? メソッド内部で宣言したローカル変数にアクセスしたがってるんだよ
858 名前:デフォルトの名無しさん [2006/03/07(火) 21:20:23 ] >>857 そんなもん、VB でもできんわ・・・ プロシージャとかいってるからたぶん VB使いかな?とか思った。
859 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 21:53:50 ] やっぱり、無理やな
860 名前:デフォルトの名無しさん [2006/03/07(火) 21:55:54 ] >>853 の頭の中には、ローカル変数とグローバル変数しか内のだろうか。
861 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 21:56:09 ] プロシージャが WinProc のことなら、Form 間でのアクセスのことかも 何にしても、そんな状態でC++/CLIに手を出すのはやめた方がいいと思う
862 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 22:24:46 ] そもそもC++/CLIでなくてもC#でもなんでもやめたほうがいいな。
863 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 22:51:56 ] >>862 も人生をやめたほうがいいな。
864 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 02:13:35 ] C++/CLI がこんなにも複雑なのがいけないと思います!
865 名前:デフォルトの名無しさん [2006/03/08(水) 02:40:33 ] まぁ何でもあり(?)なのが C++/CLI だしなぁ。 複雑さを避けたいなら、C#だよな。 あ、VB.NET って手もあるか。
866 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 02:58:40 ] >>865 > まぁ何でもあり(?)なのが C++/CLI だしなぁ。 まさにC++から派生した、って感じだな
867 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 07:35:51 ] 言語仕様を拡張せずに .NET 対応は出来なったのかなぁ。 managed_ptr<Object> obj = managed_new<Object>(); みたいな。
868 名前:デフォルトの名無しさん [2006/03/08(水) 07:39:15 ] >>867 managed C++ であんまりうまくいかなかったから、 結局言語使用の拡張に踏み切ったんだろ。
869 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 08:18:59 ] >867 逆に、どこまでが既存の C++ でどこからが CLI 拡張かわかりやすくていいと思うよ mc++ の混乱ぷりから考えるに、MSが出した仕様にしてはさっぱりしすぎて不思議 時代が変わっても、フレームワークをさくっと切り替えるだけで対応できるし、VES も 簡単に交換可能なところが夢があると思われ また、C++ 自体の拡張の邪魔にならないところとかもいい Sun も JNI の仕様をこれにしないかな。そしたら、JVM も使う気になるのに
870 名前:デフォルトの名無しさん [2006/03/08(水) 08:24:21 ] Java をネイティブ拡張したものがが仮にあったとして、 C++/CLI とどっちを使う??
871 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 08:38:56 ] その仮とやらの質による。存在しないものと比較しても仕方がない
872 名前:デフォルトの名無しさん [2006/03/08(水) 09:48:43 ] おい!!!! だれだよ、俺のプロジェクトで勝手に /clr:pure にした奴は! おかげで全部 __clrcall になっててリンクできずに 一晩悩んだじゃないか! さて、そろそろ帰るか。
873 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 19:50:08 ] >>870 Javaをネイティブ拡張したもの≒C#
874 名前:デフォルトの名無しさん [2006/03/08(水) 20:04:29 ] Java = C++-- C# = Java++ = C++--++
875 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 21:20:07 ] >>873 ネイティブじゃナインじゃん
876 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 21:26:46 ] String^ arg_1 = abc; String^ arg_2 = def; textBox1->Text = arg_1 + arg_2; としたら abcdef と出力出来ますが textBox1->Text = arg_1 + endl + arg_2; : error C2679: 二項演算子 '+' : 型 'overloaded-function' の右オペランドを扱う演算子が見つかりません (または変換できません)。 となり、期待していた abc def が出来ません 誰かrg_1とarg_2の間に改行を入れて abc def となる様にしてください。 オナガイシマス
877 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 21:33:42 ] System::Environment::NewLine
878 名前:デフォルトの名無しさん [2006/03/08(水) 21:34:09 ] textBox1->Text = arg_1 + endl + arg_2; じゃなくて textBox1->Text = arg_1 + "\n" + arg_2; でいいじゃん。 std::endl はマニピュレータで、、 マネージド型である String に対して + 演算子がオーバーロードされているなんてことはまずない。
879 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 21:36:40 ] "\r\n"にしないとだめではないか?
880 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 21:45:08 ] 変だな? textBox1->Text = arg_1 + "\n" + arg_2; としたら コンパイルも通ったんだけど textBox1に表れた文字が abc・def 全角文字の・に似た記号が出ます(多分全角の・とは違う気がするが、定かではない) 秀丸に貼り付けると abc def と改行されてるんだが、なぜ?
881 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 21:47:30 ] >>880 サンクスできましたが、解説もオナガイシマス なんで "\n"では駄目で"\r\n"なの?
882 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 21:54:42 ] Windowsの改行コードは"\r\n"だから。 UNIXとかのコンソールプログラムでは\nで Macは"\r"
883 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 21:56:39 ] そしてC/C++は\nを使い、テキストモードでの入出力時には環境固有の改行コードと\nとで変換をしている。
884 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 21:57:50 ] ウィンドウズはそういうもん。 Unix : 円 n Windows : 円 r 円 n 旧 mac : 円 r コンソールアプリは透過的に 円 n ⇔ 円 r 円 n やってくれるが テキストボックスとかはやってくれない。 秀丸じゃなくってノートパッドならやっぱりナカテンが出ると思う。
885 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 21:58:49 ] みんなでケコーン OS X は ¥n になったよ ... 関係ないですが。
886 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 22:01:40 ] >>882->>885 >>881 です ご丁寧にありがとうございました、よく理解できました しかし皆さん本当に良く知ってますね
887 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 22:01:47 ] >>884 どっちかと言うと円記号よりもバックスラッシュ。
888 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 22:16:41 ] 完璧な回答を出しているのにスルーされてる>>877 がカナシス
889 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 22:31:06 ] >>887 さん ありがとう スマソ、やっぱりC++/CLIならこうですよね (゚д゚)(。_。)(゚д゚)(。_。) ウンウン msdnでよく調べます
890 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 18:13:54 ] String型の変数arg_1を書き込みたいのですが、 下記のコードでコンパイルも通りるのですがアプリケーションのコンポーネントで、 ハンドルされていない例外が発生しました〜後略 別のプロセスで使用されているため、プロセスはファイル'C*\hoge.txt'に アクセスできません。 となってしまいます、どこがおかしいのでしょうか? protected: void button3_Click(Object^ /*sender*/, System::EventArgs^ /*e*/){ using ::System::Windows::Forms::DialogResult; Stream^ myStream ; SaveFileDialog^ saveFileDialog1 = gcnew SaveFileDialog(); saveFileDialog1->Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ; saveFileDialog1->FilterIndex = 2 ; saveFileDialog1->RestoreDirectory = true ; if(saveFileDialog1->ShowDialog() == DialogResult::OK) { if((myStream = saveFileDialog1->OpenFile()) != nullptr) { // Code to write the stream goes here. System::IO::StreamWriter^ sw = gcnew System::IO::StreamWriter(saveFileDialog1->FileName); sw->Write(arg_1); sw->Close(); myStream->Close(); } } }
891 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 18:29:48 ] なんでSaveFileDialog->OpenFileで開いてるのにさらにStreamWriterで開き直す? すでに開いているストリームに対してStreamWriterを使うのならStream^を渡す。
892 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 18:50:37 ] 最近よう、気のせいか初心者歓迎スレに変わってきてないか? なんか、聞けばいいと思っている輩が増えてきた気がするんだが
893 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 18:53:25 ] >>891 SaveFileDialog->OpenFileに書き込むには どうしたらいいですか?
894 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 19:15:18 ] System::IO::StreamWriter^ sw = gcnew System::IO::StreamWriter(myStream); 初心者はC#かVBからはじめるのがいいよ。MSDNの見方くらい覚えような。
895 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 20:52:02 ] >>894 ありがd
896 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 01:26:35 ] C++/CLI みたいなマニアな言語を使おうとする奴が なぜこんなところで教えてくんしてるのか判らん。 (マニア、というのは、それでないと書けないほどのアプリを 書かないといけないはめになっていないと使わないだろう、 ぐらいの意味。) MSDN 読めるぐらいでないと C++/CLI 手を出さないと思うんだが、 どうなってんだろう?
897 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 03:18:05 ] しらんがな。
898 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 08:44:22 ] >>896 少しはC++をやっていて、新しい言語に手を付けずに.Netが使えるぞと思っているんだよ、きっと。 実際はC++とC++/CLIとは別物だということを知らず。
899 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 09:08:02 ] つーか、自然な流れだと思うぞ。 一般的にC++が普及してた。 ライブラリはMFCやらWin32APIやらATLを使ってたであろう。 そして、MSの次期スタンダードなライブラリが、.NETになった。 じゃあ、C++から.NETを使おうか。 こんな感じでしょ。 間違いだとも思わない。
900 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 09:11:06 ] ええっと、言語間の違いよりも、 ライブラリ間の違いのほうが余程大きいと思うんですが...
901 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 09:18:01 ] 一般的に旧VBが普及してた。 PC以外で死滅気味だった言語が台頭。サーバーサイドJavaや組み込みC++。 サーバーサイドや組み込みに足を踏み入れるドトネトとC丼を強制。 ブビ厨氏滅&ドトネト氏産。 オネガイC++からドトネト使ってトンでも言語mc++ → C++/STL.CLI
902 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 09:22:57 ] >>901 日本語でおk
903 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 09:44:39 ] 899=線能されてる C++の文法複雑+マネージドの理解+旧COMの理解を要するなんてサイアクじゃん。 で、C++のBoostなんかは使えないという利点が無いオマケ月。
904 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 09:51:19 ] >>903 ネイティブな領域では普通に Boost 使えてるけど? たとえば Boost.Serialization で既存のデータを読み込んで、 Windows Forms で表示したり ADO.NET で DB に投入したりできる。
905 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 09:54:30 ] >>904 書いてて自分の文章の複雑さに気付かない?
906 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 09:56:50 ] pc8.2ch.net/test/read.cgi/tech/1139313234/115 こういうこともあるみたいだけど。
907 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 10:01:59 ] >>904 ネイティブな領域では普通に Boost 使えてるけど? なんだ、丸々大ウソか。 さすが線能されてるだけある。 M$もCOMでC++を汚しきったが、mc++で文法破壊、CLIでライブラリ破壊だね。
908 名前:904≠899 mailto:sage [2006/03/10(金) 10:16:42 ] >>906 それ書いたの俺。で、そのオチが >>872
909 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 10:20:06 ] >>908 >だれだよ、俺のプロジェクトで勝手に /clr:pure にした奴は! PUREでない混合だと激遅になるドトネトに何の意味があるのかと小一時間。
910 名前:904≠899 mailto:sage [2006/03/10(金) 10:24:15 ] >>909 pure でやるなら、既存のライブラリの多くを あきらめるってことなので、俺なら C# を選択する。
911 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 10:28:38 ] >あきらめるってことなので、俺なら C# を選択する。 ソースコードの価値ってのは既存コードだったり、 環境変わってもコンパイルしたりすると動くことだったりするのに、 馬の骨C丼に何の価値があるのかと。
912 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 10:29:34 ] ttp://pc8.2ch.net/test/read.cgi/tech/1141828033/1 ,. -‐'''''""¨¨¨ヽ (.___,,,... -ァァフ| あ…ありのまま 今 起こった事を話すぜ! |i i| }! }} //| |l、{ j} /,,ィ//| 『.NET framework 2.0を入れたと思ったら i|:!ヾ、_ノ/ u {:}//ヘ 何故かノータッチデプロイメントがぶっ壊れた』 |リ u' } ,ノ _,!V,ハ | /´fト、_{ル{,ィ'eラ , タ人 な… 何を言ってるのか わからねーと思うが /' ヾ|宀| {´,)⌒`/ |<ヽトiゝ おれも 何をされたのか わからなかった… ,゙ / )ヽ iLレ u' | | ヾlトハ〉 |/_/ ハ !ニ⊇ '/:} V:::::ヽ 頭がどうにかなりそうだった… // 二二二7'T'' /u' __ /:::::::/`ヽ /'´r -―一ァ‐゙T´ '"´ /::::/-‐ \ 移植や修正が必要だとか / // 广¨´ /' /:::::/´ ̄`ヽ ⌒ヽ そんなチャチなもんじゃあ 断じてねえ ノ ' / ノ:::::`ー-、___/:::::// ヽ } _/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::... イ もっと恐ろしいものの 片鱗を味わったぜ…
913 名前:904≠899 mailto:sage [2006/03/10(金) 10:31:16 ] >>911 だから今俺は C++/CLI 使ってるんだってば。
914 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 10:37:16 ] >>913 で、C++/CLI複雑じゃない?それだけ価値あるということ?
915 名前:904≠899 mailto:sage [2006/03/10(金) 10:38:48 ] >>914 使わざるを得ない場面があるということ。 あと、マゾにはたまらないって言うこと。
916 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 11:13:29 ] 自分で判断できないような人はC#やっといた方がいい。 C++/CLIは必要があって使うもの。
917 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 11:29:40 ] 既存のライブラリの多くを諦める事になるからC♯って意味分からん。 C♯だったら、多くを諦めるどころか、全部諦めにゃならんだろw ヤケクソやってんのか?w
918 名前:904≠899 mailto:sage [2006/03/10(金) 11:45:23 ] >917 そんなこといってないじゃん。 既存のライブラリを使いたいから /clr:pure あきらめて C++/CLI つかってます、って書いてんのに。
919 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 11:56:18 ] ヒント;M$ジレンマ
920 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 13:48:25 ] >>918 君は正しい。ただあんまり一生懸命レスすること無い。疲れるだけだから。
921 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 19:38:26 ] 昔:VB-VC-Windwos 今:.NET Framework-C++/CLI-Windows
922 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 20:36:09 ] 伸びてると思ったら不毛な議論が続いてたようだな。 アンチが何したいのかわからんがこんなところで騒いでも無駄ですよ
923 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 09:58:42 ] 皆さんはやっぱり、C++/CLIでもファイルの入出力とか自作のライブラリー等 作成されてるのですか?Stream オブジェクトとか、MSDN見る限り、素人目には 既に完成されていると思うのですが、個人的にパラメータを渡して読み込み、書き込み モードで開いたりとかテキストモードで開いたり、バイナリモードで開いたりとか、やったほうがもっと楽でミスも少なくて、いいのかなぁーと思ったりするのですが、 いかがなものでしょう?
924 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 10:07:31 ] 逆に聞くが>>923 は今まで入出力に自作のライブラリを使っていたのか?
925 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 10:10:33 ] >>923 C++/CLI でも、っていうか、マネージドの領域では .NET Framework べったりのプログラミングしてます。 C++/CLI 使うメリットはネイティブとの橋渡しができる ことだと思ってるんで、ネイティブの領域では 従来通りの自作のライブラリーを多用しています。
926 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 10:36:50 ] >>923 何言っているんだかわからん。 Streamのどこが気に入らなくて、どういうことをやっているわけ?
927 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 10:47:06 ] >>926 抽象化されていないもっとファイルシステムべったりの いじり方をしたいのでは、と推測するけど、まぁそういうことが したけりゃ Windows API 叩くのも C の標準ライブラリ 叩くのも低レベルファイルアクセス関数群叩くのも C++ の標準 I/O ストリーム使うのも自由、としか言いようがないな。
928 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 20:59:39 ] テキストボックスに 0 1 2 3 4 5 6 7 8 9 と表示したいけど for( int i = 0 ; i < 10 ; i++ ){ String^arg = Convert::ToString(i); textBox1->Text = arg + "\r\n"; } これだと 9 しか表示できないんですよね(;´∀`) うーんわからん
929 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 21:03:49 ] これはひどい
930 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 21:04:01 ] > textBox1->Text = arg + "\r\n";
931 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 21:05:39 ] >>928 そりゃ、Text に最後に設定されるのが "9\r\n" だからだろ。 arg = じゃなくて arg += とかじゃないの? と、試しもせずにカキコ
932 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 21:09:22 ] >>931 で、そのargはどこに行くんだ
933 名前:928 mailto:sage [2006/03/11(土) 21:17:24 ] >>930 さん >>931 さん 残念ですが巧くいきません、同じ結果です
934 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 21:27:42 ] textBox1->Add(arg);
935 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 21:31:10 ] StringBuilder^ builder = gcnew StringBuilder(); for(int i = 0;i < 10; i ++) { builder->AppendFormat("{1}{0}",System::Environment::NewLine,i.ToString()); } this->textBox1->Text = builder->ToString();