![]() |
AW: string 0 terminiert?
Und wenn man pragmatisch einfach generell eine #0 dran hängt? OK. Kann nur Probleme bereiten wenn es um PChar Listen geht. Also diese Multilien-Dinger aus der Registry zum Bespiel: Trennung der einzelnen Eintrage durch #0 und abschließen der Liste mit #0#0.
|
AW: string 0 terminiert?
LongStrings von Delphi (AnsiString, UnicodeString usw.) und der WideString haben zwar eine Längenangabe, aber auch jeweil implizit ein #0#0 am Ende, für schnelle Casts zu PChar.
Nur der ShortString (der String-Typ bis Delphi 1) haben ausschließlich das LängenByte auf Position 0. (drum fangen die LongStrings auch mit 1 an zu zählen, obwohl sie kein Längenbyte an dieser Stelle haben) |
AW: string 0 terminiert?
Zitat:
Also, noch mal im Klartext: Die Antwort auf die ursprüngliche Frage Zitat:
|
AW: string 0 terminiert?
Zitat:
![]() zeigt das sehr gut. Zitat:
Ich denke die ganze Verwirrung kommt von Satz "Delphi Strings sind standardmäßig nicht nullterminiert." her. Das ist falsch. Auch wenn die Delphi primär auf die Längenangabe im String schaut, ist der #0 am Ende immer dabei. Man kann damit auch den (Ansi)String "mißbrauchen" um ihn als Buffer für Binärdaten zu nutzen. Hatte vor Jahren mit Delphi 2 so gemacht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz