Zitat von
Robert Marquardt:
L vor dem String ist C Syntax fuer ein
Unicode String Literal. Die String-Konstante wird von Compiler nicht als C-String-Typ sondern als
Unicode-String-Typ gehandelt.
Interessanterweise scheint die Zuweisungsart über die Compilerbehandlung zu entscheiden:
Code:
WideString s1 = L"\x043F\x043E\x0442\x0435\x0440\x0438\x0442\x0435\x043F\x043B\x0430"
L"\x043F\x043E\x0442\x0435\x0440\x0438 \x0442\x0435\x043F\x043B\x0430"
L"\x043F\x043E\x0442\x0435\x0440\x0438 \x0442\x0435\x043F\x043B\x0430";
läßt kein späteres
Code:
s1 = s1 + "hallo"; //bzw.
s1 = s1 + L"\x0641";
zu (Out of Memory). Übergebe ich von hinten durch die Brust ins Auge
Code:
s1 = (WideString(wchar_t(0x0641)))+(WideString(wchar_t(0x0442)))+(WideString(wchar_t(0x043F)))+(WideString(wchar_t(0x043B)));
, kann ich diese Syntax s1 = s1 + irgendwas verwenden. Die Zuweisung läßt wiederum keinen Zeilenumbruch in der
IDE zu.
Die Übergabe als Literal scheint also zur Behandlung als Literal mit einer festen Länge zu führen, während die Widestringvariante das Stringarray offen hält.
Ich habe mein Problem leider mit beidem nicht lösen können: beliebig lange Widestrings in der BCB6-
IDE zuweisen und als WideString behandeln zu können.
Grüße, Messie