[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 17:12 / Filesize : 240 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【.NET】 C++/CLI について語ろうぜ 【最適】



1 名前:デフォルトの名無しさん [2005/09/11(日) 23:54:01 ]
おそらく、.NET開発でデファクトスタンダードに最も近い
であろうC++/CLIについて語ろうぜ!

818 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:25:28 ]
文字列を数値にするのには次のものがある。

Cのato〜とstrto〜。そしてそれぞれワイド文字版の_wto〜(非標準)とwcsto〜がある。sscanf/swscanf類もある。
C++のistringstream類。
.Net FrameworkのConvert::To〜と〜::Parce。

数値を文字列にするのには次のものがある。
Cの_〜toa、_〜tow(非標準)。sprintf/swprintf。この行のは全てVC8の_s版(全て非標準)もある。
C++のostringstream類。
.Net FrameworkのConvert::ToStringとObject::ToString。

ちなみにそれぞれ対称性がある。

C++のstream以外は全て数値の型により関数名などが異なっている。
だからunsigned longを使うかunsigned long longを使うかで違いが出てくる。

819 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:28:41 ]
というか、unsigned long long int って型はまだ標準じゃないよな

820 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:31:17 ]
>>819
C++にはまだないが、C++/CLIには存在する。
signe.japan.webmatrixhosting.net/ecma372/12_type.aspx

821 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:44:23 ]
>820
それは知ってるが、標準関数が対応してないってこと
ってそこ直リンすんなよ

822 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:46:10 ]
>>821
だからC/C++のunsigned long longが関係するところは全て非標準だな。

823 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 21:49:23 ]
そだな。非標準の型は全部 CLI 型表記にした方がわかりやすいと思うんだが
変に今までと一緒なもんだから、間違えやすいんじゃないかな

824 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:01:51 ]
それよりも混乱する原因はC、C++、.Net Frameworkのクラス・関数が入り乱れているからのほうが大きいと思う。
答えているほうだって、あれ使え、いやこれ使えって具合だし。

そもそも一旦十六進法の文字列へ変換するまではともかく、その後文字列へ変換する必要性がわからない。
そのままtextBox2->Text = textBox1->Text;でいいと思うのだが。
大文字小文字を揃えたいだけならtextBox1->Text->ToUpper()で十分だし。

825 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:01:55 ]
>>817さん
どうもです
>>なんでわざわざ wchar_t の配列に変換するのかな
>>814さんの書いたとおり
std::wcstoulと_ultow_sの呪縛に囚われていました
こうやって見ましたが

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
  {
    UInt64 hoge = 0LL;
    if ( UInt64::TryParse(textBox1->Text))
      hoge = UInt64::Parse(textBox2->Text);
    String^ tmp = hoge.ToString();
  }

if ( UInt64::TryParse(textBox1->Text))ここで
: error C2661: 'System::UInt64::TryParse' : 1 個の引数を伴うオーバーロードされた関数はありません。
こうなるのですが・・・


826 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:04:35 ]
>>825
MSDN見ろ。
TryParseは2つ目に結果を格納する引数がある。



827 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:26:47 ]
>>826さんどうもです
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

UInt64 hoge = 0LL;
  if ( UInt64::Parse(textBox1->Text))
    hoge = UInt64::Parse(textBox2->Text);
  else
    String^ tmp = hoge.ToString();
  }
こうしたら、できましたが、実行すると
アプリケーションのコンポーネントで、ハンドルされていない例外が発生しまし。
中略
入力文字列の形式が正しくありません。

ust-In-Time (JIT) デバッグを呼び出すための詳細については、
ダイアログ ボックスではなく、このメッセージの最後を参照してください。
中略
************** JIT デバッグ **************
Just-In-Time (JIT) デバッグを有効にするには、このアプリケーション、
またはコンピュータ (machine.config) の構成ファイルの jitDebugging
値を system.windows.forms セクションで設定しなければなりません。
アプリケーションはまた、デバッグを有効にしてコンパイルされなければ
なりません。



828 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:28:57 ]
>825
勘違いしたんじゃ、ないぞ。MSDNを見るようわざと間違えたんだからな
決して、名前だけで bool 値を返すんだろとか考えて適当に書いた訳じゃ、ないんだからな

829 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:30:52 ]
>>827
MSDN見ろ。1つめの引数の文字列の書式が書いてある。UInt64::Parseは十進法しか受け付けない。
Convert::ToUInt64なら基数が指定できるけど、Try版がないから例外を受けるしかないと思う。

830 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:30:54 ]
スマソ
Try外していました
しかし、TryParseの問題を解決しても
例外エラーは出そうな感じがするんだが

831 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:39:02 ]
>827
だから、MSDN で UInt64 のメソッドぐらいチェックしろと

そろそろ何をしたいのかがわからんのだが。自分が書いているコードの意味がわかってる?

textBox2 に textBox1 の内容をコピーしたいのなら >824 が言ってるとおり
textBox2->Text = textBox1->Text;
だけでいいはずだし、いったん、数字にしてなんかの検証をしたいのなら
なぜ、いきなり textBox2->Text から数値を取ってるんだ?

マジに書くと
if ( !String::IsNullOrEmpty() )
{
  try
  {
    UInt64 hoge = UInt64::Parse(textBox1->Text);
    textBox2->Text = hoge.ToString();
  }
  catch( ... )
  {
  }
}
まぁ、例外処理は除いたが、いったん数値にして、別のテキスト・ボックッスに文字列として
代入するならこんな感じだろ

832 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 22:40:02 ]
あ、
if ( !String::IsNullOrEmpty() ) →if ( !String::IsNullOrEmpty(textBox1->Text) )
だったorz

833 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 23:06:15 ]
そもそも、目的はbutton1を押すとtextBox1に入力した
16進数の入力判定を行い、(条件として、空でないこと、16進数16桁であること)
button2を押したら、openFileDialogを呼び出しファイルを選択してOKを押したら
textBox2に選択したファイルを読み込ませ(ここは既に実装できています)
最後にbutton3を押したらtextBox1とtextBox2を結合し、saveFileDialogで
名前を付けて保存するという、単純なものなのですが16進数変換と入力判定の所で
どつぼにはまってしまいました。

文字入力

16進数変換&入力チェック

外部ファイル読み込み

16進数+外部ファイル結合

名前を付けて保存


834 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 23:24:16 ]
とりあえず判定は829のように例外が投げられるかどうか調べるしかないと思う。

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 つかってます、って書いてんのに。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<240KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef