Compiler-Direktiven für Strings

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Mit Strings arbeiten


Die folgenden Delphi-Compiler-Direktiven wirken sich auf Zeichen- und String-Typen aus:

Compiler-Direktiven für Strings:

Direktive Beschreibung

{$H+/-}

Mit der Compiler-Direktive $H legen Sie fest, ob das reservierte Wort string einen kurzen oder einen langen String repräsentiert. Standardmäßig {$H+} repräsentiert string einen langen String. Sie können den Typ ShortString aktivieren, indem Sie die Direktive {$H-} verwenden.

{$P+/-}

Die Direktive $P ist nur von Bedeutung, wenn der Quelltext mit der Direktive {$H-} compiliert wird. $P dient der Abwärtskompatibilität. $P steuert die Bedeutung von var-Parametern, wenn die Direktive {$H-}und das Schlüsselwort string verwendet wird. Bei {$P-} werden mit dem Schlüsselwort string deklarierte Parameter als normale var-Parameter interpretiert, bei der Direktive {$P+} dagegen als offene String-Parameter. Unabhängig von der Einstellung der Direktive $P kann der Bezeichner OpenString immer zur Deklaration offener String-Parameter verwendet werden.

{$V+/-}

Die Direktive $V steuert die Typprüfung für kurze Strings, die als var-Parameter übergeben werden. Mit {$V+} wird eine strenge Typprüfung durchgeführt: Formale und tatsächliche Parameter müssen identische String-Typen aufweisen. Mit {$V-} kann dagegen jede Variable des Typs ShortString als tatsächlicher Parameter verwendet werden, auch wenn die deklarierte Maximallänge nicht mit der des formalen Parameters identisch ist. Dieses Vorgehen kann jedoch zu Speicherfehlern führen. Beispiel: var S: string[3];.

 
 procedure Test(var T: string);
 begin
   T := '1234';
 end;
 begin
   Test(S);
 end.

{$X+/-}

Die Compiler-Direktive {$X+} aktiviert die Unterstützung für nullterminierte Strings durch Verwendung der speziellen Regeln für den integrierten Typ PChar und Zeichen-Arrays mit der Basis Null. Diese Regeln ermöglichen den Einsatz von Arrays mit der Basis Null und von Zeichenzeigern mit den Funktionen Write, Writeln, Val, Assign und Rename der Unit System.

See Also