Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
15. Mär 2006
Mit der Länge stimme ich dir ja "fast" zu .. die #0 :zwinker:
Aber wenn der String vorher länger als "1" war, dann ist der Inhalt sehr wohl definiert, er besteht nämlich aus dem ersten Zeichen der Daten, welche vorher drin waren :roll:
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
14. Mär 2006
Es geht auch kurz, :tongue:
s = ''
oder wenn man unbedingt will
Pointer(s) = nil
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
14. Mär 2006
Genaugenommen wird mir SetLength(S, 1) ein Array mit der Länge 2 erstellt, da dem String aus Kompatibilitätsgründen zu PChar noch eine #0 anhängt wird.
Und das bei LongStrings (AnsiString, WideString) ebenfalls mit der Zählung bei 1 beginnen, obwohl es das Längenbyte nicht mehr gibt, sollte ebenfalls allen bekannt sein - ist ja wegen der Kompatitär zu den "alten" ShortStrings.
Hier nochmal...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
13. Mär 2006
Hab jetzt nicht alles durchgelesen, aber die Länge muß nicht erst berechnet werden, denn im String-Header steht die Länge schon drin.
S = '' und S <> '' sind dennnoch die schneller, denn diese sind intern nur Vergleiche auf
Pointer(S) = nil und Pointer(S) <> nil, wärend Length ein Funktionsaufrus ist, wo also nicht nur Verglichen, sondern ja auch erstmal zu der Funktion hin und wieder...