AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

string 0 terminiert?

Ein Thema von EWeiss · begonnen am 28. Okt 2017 · letzter Beitrag vom 30. Okt 2017
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#21

AW: string 0 terminiert?

  Alt 29. Okt 2017, 22:03
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.
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von Luckie (29. Okt 2017 um 22:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: string 0 terminiert?

  Alt 29. Okt 2017, 22:05
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)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#23

AW: string 0 terminiert?

  Alt 29. Okt 2017, 23:59
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
Die frage wäre ist es überhaupt nötig den NULL terminierten Char anzuhängen?
lautet: Nein, ist nicht nötig.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#24

AW: string 0 terminiert?

  Alt 30. Okt 2017, 10:10
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.

Also, noch mal im Klartext: Die Antwort auf die ursprüngliche Frage
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:42 Uhr.
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