Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: String-Ende mit while finden

  Alt 12. Aug 2020, 13:49
ShortString (der erste Delphi-String hat im Char [0] sein LängenByte)

LongString im Delphi (String, bzw. AnsiString und Nachfahren ala UTF8String, sowie UnicodeString) und auch der WideString (Interne Weiterleitung zur MSDN-Library durchsuchenSysAllocString-API)
gibt es einen Integer vor den Chars (ein Record im negativen Index, mich Length, CodePage, RefereceCount und CharSize)
Und nach dem letzten Char gibt es noch implizit zwei #0.

#0 als StringEnde wird implitzt für "einfache" Castas zu PChar untersützt, aber der String selber reagiert ausschließlich auf die Längenangabe.


Man kann nach PChar casten und APIs ala MSDN-Library durchsuchenStrEnd benutzen.
Oder wenn man einfach nur abschneiden will, dann die impliziten String-Funktionen für PChar->String nutzen.
S := PChar(S);


Zitat:
LongWord/LongInt/Integer
Delphi verwendet überall Integer (LongInt) als Länge und Index.

Leider auch dann, wenn man für 64 Bit kompiliert. (k.A. warum hier jemand auf diese saudämliche Idee gekommen ist)
Ansonsten wäre NativeInt der passende Typ gewesen.
Denn intern ist String eigentlich nur ein aufgemotztes dynamische Array und dessen Length ist als NativeInt deklariert, womit unter 64 Bit diese Typen nicht mehr kompatibel sind.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (12. Aug 2020 um 13:53 Uhr)
  Mit Zitat antworten Zitat