LeftStr/RightStr in C++ Builder 2010
-
Hallo C++ Freunde,
Ich habe meine Entwicklungsumgebung von Borland 6 auf Embarcardero C++ Builder 2010 geupdatet. Nun stellen sich aber noch kleine Probleme beim Konvertieren von Projekten ein. z.B. hier bei LeftStr bzw RightStr kommt immer diese Fehlermeldung (Pfade mal entfernt)
[BCC32 Fehler] E2015 Mehrdeutigkeit zwischen '_fastcall Strutils::LeftStr(const System::AnsiStringT<0>,const int) und '_fastcall Strutils::LeftStr(const System::WideString,const int)
Normalerweise habe ich im bcb6 mit Indy Komponenten ein ähnliches Problem gehabt und dies so gelößt:
ShowMessage(Strutils::LeftStr("test",2));
Doch wie geht das im C++ Builder 2010?
-
Der Code in der Fehlerzeile wäre mal informativ, so nebenbei erwähnt. Wie soll jemand helfen wenn man nicht mal sieht was du machst.
-
ich rufe das hier auf (wie oben beschrieben):
ShowMessage(Strutils::LeftStr("test",2));
bzw das hier
ShowMessage(LeftStr("test",2));
-
Könnte es sein, dass ShowMessage() im 2010er einen Unicode-String erwartet?
-
Der Compiler weiss nicht ob "test" ein AnsiString oder WideString ist
und hat nun Probleme welche von den beiden Funktionen er verwenden soll.Strutils::LeftStr(const System::AnsiStringT<0>,const int)
Strutils::LeftStr(const System::WideString,const int)Willst du das dein "test" ein WideString ist dann schreibe L"test"
falles es ein AnsiString sein soll dann caste auf (AnsiString)"test"
-
Danke an VergissEs!
Diese Lösung läuft:ShowMessage(LeftStr((AnsiString)"test", 2));
-
Ist der Cast wirklich sinnvoll, oder notwendig? Ich hätte statt eines Casts den Konstruktor von AnsiString verwendet, also
ShowMessage(LeftStr(AnsiString("test"), 2));
[/quote]