プロが教える店舗&オフィスのセキュリティ対策術

Editは、テキストボックスです。
Editには、"12345"の半角文字列が入っています。

これを、C言語の文字列として取得しようとしました。
このときのソースコードは、次の通り。
--------
char *ptr1 = new char[Edit->Text.Length()+1]; //独自領域にセーブ
strcpy(ptr1, Edit->Text.c_str()); //ptr1にアドレスをコピー
--------

このstrcpyの行で、エラーが出てしまい、対処に困っています。
    ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
E2034 'wchar_t *' 型は 'const char *' 型に変換できない
E2342 パラメータ '__src' は const char * 型として定義されているので wchar_t * は渡せない
--------

Edit->Textで取得した文字列を、"12345\0"といった具合で処理をしたいのですが、どのようにしたらいいのでしょうか?

追記
「C++Builder 2009」以前のバージョンでは、難なく取得できていた。
同じソースコードなのに、何故かエラーになる。

A 回答 (2件)

> 処で、こういった変換が幾つもあって、処理に困っています。


> 参考になりそうなWebページがあれば、教えていただけないでしょうか?

Delphiのサイトが中心になりますが、
Delphi 2009 特集のUnicode関係の話
http://totonica.s41.xrea.com/doc/delphi_tiburon/
同サイトのリンク集
http://totonica.s41.xrea.com/doc/delphi_tiburon/ …
が、大変よくまとまっています。

あと、質問はEmbarcadero Discussion Forumsですると、返事がもらえる確率が高いと思います。
https://forums.codegear.com/category.jspa?catego …
    • good
    • 0
この回答へのお礼

ありがとうございます。

参考にさせていただきます。


感謝!

お礼日時:2009/04/16 09:20

C++Builder2009では、文字列型がAnsiStringからUnicodeStringに変わりました。


UnicodeString::c_str()は、wchar_t*を返します。

次のように変更すれば動きます。
wchar_t* ptr1 = new wchar_t[Edit->Text.Length()+1];
wcscpy(ptr1, Edit->Text.c_str());
    • good
    • 0
この回答へのお礼

ありがとうございます!

無事に、エラーを取り除けました。


処で、こういった変換が幾つもあって、処理に困っています。
参考になりそうなWebページがあれば、教えていただけないでしょうか?

お礼日時:2009/04/15 14:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!