質問

RAD Studio 2009のにC ++ Builderプロジェクトをアップグレードするとき、私はこのコード行を見つけます:

mProcessLength->Text.printf("%d",mStreamLength);
しかし、このラインの意図するものであるとよりよい同等のものです、2009年にコンパイルされませんか? mProcessLength->Textが今wchar_t*であることを考える。

役に立ちましたか?

解決

私は、あなたがこれらのエラーを取得していることを疑うます:

E2034 Cannot convert 'const char *' to 'const wchar_t *'
E2342 Type mismatch in parameter 'format' (wanted 'const wchar_t *', got 'const char *')

それはあなたがミスマッチしているのprintfに渡すパラメータです。 それを変更します:

mProcessLength->Text.printf(L"%d",mStreamLength);

を正しい形にあなたの文字列リテラルを変更します。

他のヒント

チャンスはwcharですが、UnicodeStringのVCL列型として扱われることをいいます。これは、文字列へのポインタを除き、標準のprintfの引数を取るprintf関数を持っています。 UnicodeStringに自身がフォーマットされた文字列で満たされます。

のUnicodeStringのprintf

UnicodeStringには、自動的にスタック上に作成され、printfのメソッドが呼び出されるので、

、ポインタは、その後のwcharに背中を詰めされます。

あなたはおそらくwsprintfをしたい...のように見えますが、おそらくちょうどwvsprintfにそのパラメータを渡すことを、printfの名前のメンバ関数で、もともといくつかのクラスだった。

サイドノートでは、テキストと仮定すると、新しい値を持つプロパティをupateれませんその上のprintf()を呼び出す、プロパティです。以下に等しくC ++ Builderのすべてのバージョンでは、代わりに使用することができるようにAnsiString型とUnicodeStringの両方が、数値をフォーマットするためのコンストラクタを有する

mProcessLength->Text = mStreamLength; 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top