Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

Re: Length zerstört AnsiString

  Alt 15. Sep 2009, 17:30
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
$2B or not $2B
  Mit Zitat antworten Zitat