C++ Builder プロジェクトを RAD Studio 2009 にアップグレードするときに、次のコード行を見つけました。
mProcessLength->Text.printf("%d",mStreamLength);
2009年にはコンパイルされませんが、この行の意図は何ですか?また、より適切な同等のものは何ですか? それを考えると、mProcessLength->Text
今はwchar_t*
.
C++ Builder プロジェクトを RAD Studio 2009 にアップグレードするときに、次のコード行を見つけました。
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);
文字列リテラルを正しい型に変更します。
補足として、 Text がプロパティであると仮定すると、それに対して printf() を呼び出しても、プロパティは新しい値で更新されません。AnsiString と UnicodeString の両方に、数値をフォーマットするためのコンストラクタがあるため、C++Builder のすべてのバージョンで同等に、代わりに以下を使用できます。
mProcessLength->Text = mStreamLength;