1

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

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

2009年にはコンパイルされませんが、この行の意図は何ですか?また、より適切な同等のものは何ですか? それを考えると、mProcessLength->Text今はwchar_t*.

4

4 に答える 4

3

次のエラーが発生していると思われます。

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);

文字列リテラルを正しい型に変更します。

于 2010-03-05T17:39:11.723 に答える
0

補足として、 Text がプロパティであると仮定すると、それに対して printf() を呼び出しても、プロパティは新しい値で更新されません。AnsiString と UnicodeString の両方に、数値をフォーマットするためのコンストラクタがあるため、C++Builder のすべてのバージョンで同等に、代わりに以下を使用できます。

mProcessLength->Text = mStreamLength; 
于 2010-06-10T23:13:53.060 に答える