Der obere Code sollte funktionieren, da hier zufällig keine "Funktionen" verwendet werden, welche die #0 nicht mögen.
String-Konstante mit #0 ist möglich
Concat (String := String + String) ist möglich
'ne einfache Zuweisung (String := String) ist möglich
und Übergabe als Parameter geht auch
Der Delphi-String benutzt ein LängenenByte (Integer) und ließt nicht die länge anhand einer abschließenden #0 aus ... es gibt aber leider viele Funktionen, welche nach dem C-Standard als PChar arbeiten und auch die oft genutzen WinAPIs arbeiten so C-mäßig.
Also
wenn man weiß, was man tut, kann man in einem String alle möglichen Steuerzeichen (auch #0) verwenden.
(mach ich sehr gern, da ich so das automatische Aufräumen mit ausnutzen kann
)
Das Problem ist hier vermutlich DELPHI und seine kranke
Unicode-Unterstützung und wegen der #0 an 2. Stelle denkt es wäre ein UnicodeString.
Schalte das String-Checking ab und gut ist, außerdem wird dadurch das Programm etwas schneller/schlanker.
http://www.delphipraxis.net/internal...076095#1076095
http://www.delphipraxis.net/internal...075246#1075246
FMessage: AnsiString; //Nix Unicode
das interessiert Delphi2009/2010 nicht, prüft es ständig nach und ändert es dann einfach