ちょっとの質問

解決


清原  2006-05-04 20:40:57  No: 61680  IP: 192.*.*.*

Windows XP
Visual C++.NET   Managed C++


VC.Netの問題ですが、よろしくお願いします…

__wchar_t[] と  char[]  お互いに変更する方法がありますか?


ディレクトリ  の名前を変更する方法がありますか?
DirectoryEntryクラスのRenameメソッド使ったけど、
エラー発生しました、

コード:
System::DirectoryServices::DirectoryEntry* dir  =  
                            new DirectoryEntry(S"F:\\Justin");
dir->Rename(S"Hello");


************** 例外テキスト **************
System.Runtime.InteropServices.COMException (0x80005000): 不明なエラー (0x80005000

よろしくお願いします

編集 削除
Blue  2006-05-04 22:17:24  No: 61681  IP: 192.*.*.*

ディレクトリ名を変更するということならば、

IO::Directory::Move( S"F:\\Justin", S"F:\\Hello" );

で良いのでは?

> __wchar_t[] と  char[]  お互いに変更する方法がありますか?
こっちの質問はよくわからない。説明が必要です。

編集 削除
清原  2006-05-05 19:56:30  No: 61682  IP: 192.*.*.*

>ディレクトリ名を変更するということならば、
>IO::Directory::Move( S"F:\\Justin", S"F:\\Hello" );
>で良いのでは?

成功しました、Blueさんのいう通りです。どうもありがとうございました。

> __wchar_t[] と  char[]  お互いに変更する方法がありますか?
>こっちの質問はよくわからない。説明が必要です。

詳しく説明してなく申し訳ありません。

unsigned char __gc[] を __wchar_t[]    に変換したり、
__wchar_t[]  を  unsigned char __gc[]  に変換したり
などの場合が多いと思いますけど、
そういう場合が来ると、どうすればいいか分からなくて、
NET  にはそういう変換する方法があると思いますが…

編集 削除
回答じゃないけど…  2006-05-05 20:02:44  No: 61683  IP: 192.*.*.*

質問内容のわかるタイトルをつけましょう

編集 削除
Blue  2006-05-05 21:03:38  No: 61684  IP: 192.*.*.*

.NET FrameworkではString型はすべてUnicode(wchar_t型)で扱われます。
エンコードはきちんとしたクラスがあります。(System::Text::Encoding)

.NET関係なく
マルチバイト文字列←→ワイド文字列の変換には WideCharToMultiByte,MultiByteToWideCharを使います。
VCならば、wcstombs,mbtowc関数を調べてみてください。

編集 削除
Blue  2006-05-05 21:32:43  No: 61685  IP: 192.*.*.*

> エンコードはきちんとしたクラスがあります。(System::Text::Encoding)
適当なサンプル

// String*型から wchar_t __gc []の取得
String* s = S"あいうえお";
wchar_t ws __gc[] = s->ToCharArray();


// String*型から Shift_JISコードの char __gc []の取得
String* s = S"あいうえお";
char mbs __gc[] = Text::Encoding::GetEncoding( S"Shift_JIS" )->GetBytes( s );


// wchar_t __gc [] から Shift_JISコードの char __gc []の取得
char mbs __gc[] = Text::Encoding::GetEncoding( S"Shift_JIS" )->GetBytes( ws );


// Shift_JISコードの char __gc [] から String*型文字列の取得
String* s = Text::Encoding::GetEncoding( S"Shift_JIS" )->GetString( mbs );


// Shift_JISコードの char __gc [] からwchar_t __gc []の取得
wchar_t ws __gc[] = Text::Encoding::GetEncoding( S"Shift_JIS" )->GetString( mbs )->ToCharArray();

編集 削除
清原  2006-05-06 20:45:31  No: 61686  IP: 192.*.*.*

Blue様

助かりました、
お素速い応答、大変ありがとうございました
m(__)m

これからも  よろしくお願いします

編集 削除