Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi string 0 terminiert? (https://www.delphipraxis.net/194204-string-0-terminiert.html)

Luckie 29. Okt 2017 21:03

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.

himitsu 29. Okt 2017 21:05

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)

Namenloser 29. Okt 2017 22:59

AW: string 0 terminiert?
 
Zitat:

Zitat von himitsu (Beitrag 1384512)
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.

Endlich sagt es mal einer.

Also, noch mal im Klartext: Die Antwort auf die ursprüngliche Frage
Zitat:

Zitat von EWeiss (Beitrag 1384386)
Die frage wäre ist es überhaupt nötig den NULL terminierten Char anzuhängen?

lautet: Nein, ist nicht nötig.

Bernhard Geyer 30. Okt 2017 09:10

AW: string 0 terminiert?
 
Zitat:

Zitat von Namenloser (Beitrag 1384531)
Zitat:

Zitat von himitsu (Beitrag 1384512)
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.

Endlich sagt es mal einer.

Das wurde schon oft genug gesagt und auch der Link
http://docwiki.embarcadero.com/RADSt...e_String-Typen
zeigt das sehr gut.

Zitat:

Zitat von Namenloser (Beitrag 1384531)
Also, noch mal im Klartext: Die Antwort auf die ursprüngliche Frage
Zitat:

Zitat von EWeiss (Beitrag 1384386)
Die frage wäre ist es überhaupt nötig den NULL terminierten Char anzuhängen?

lautet: Nein, ist nicht nötig.

Und das wurde auch von Zacherl in seinen ersten Posts gesagt.
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 02:49 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz