Delphi-PRAXiS
Seite 1 von 3  1 23      

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)

EWeiss 28. Okt 2017 00:16

string 0 terminiert?
 
JA sollte eigentlich so sein.
Die Frage die sich mir stellt.

Ich muss einen String erweitern ist dieser dann immer noch Null terminiert oder nicht?
Oder vorsichtshalber ein #0 anhängen.

gruss

Zacherl 28. Okt 2017 01:10

AW: string 0 terminiert?
 
Kommt auf den Kontext und die Sprache an. Delphi Strings sind standardmäßig nicht nullterminiert.
Delphi-Quellcode:
PAnsi/WideChar
ist nullterminiert, aber hier müsstest du erklären, wie genau du die "Erweiterung" vornimmst. Wenn du einfach zwei
Delphi-Quellcode:
PAnsi/WideChar
Variablen mit
Delphi-Quellcode:
+
konkatenierst, wird die abschließende 0 automatisch hinzugefügt. In anderen Szenarien muss das nicht zwingend der Fall sein.

EWeiss 28. Okt 2017 01:20

AW: string 0 terminiert?
 
Ich habe einen String der aus einer JSon Datei aus dem Internet gefüllt wird.
Den will ich jetzt erweitern.

Delphi-Quellcode:
ltempBuf := ltempBuf + ',"';


Die frage wäre ist es überhaupt nötig den NULL terminierten Char anzuhängen?
Delphi-Quellcode:
ltempBuf := ltempBuf + ',"' + #0;


gruss

Zacherl 28. Okt 2017 01:35

AW: string 0 terminiert?
 
Wenn du den String vor Verwendung nach
Delphi-Quellcode:
PAnsi/WideChar
castest, bzw. die Variable eh schon diesen Typ hat, dann musst du die 0 nicht manuell anhängen. Wenn du irgendwelche "Pointer Magie" betreibst, dann unter Umständen schon :-D

EWeiss 28. Okt 2017 01:39

AW: string 0 terminiert?
 
Zitat:

Zitat von Zacherl (Beitrag 1384387)
Wenn du den String vor Verwendung nach
Delphi-Quellcode:
PAnsi/WideChar
castest, bzw. die Variable eh schon diesen Typ hat, dann musst du die 0 nicht manuell anhängen. Wenn du irgendwelche "Pointer Magie" betreibst, dann unter Umständen schon :-D

Nein es ist ein String und das bleibt er bis zum Ende ;)
Wenn ich dich dann richtig verstanden habe kann ich mir das sparen.

gruss

Zacherl 28. Okt 2017 01:46

AW: string 0 terminiert?
 
Zitat:

Zitat von EWeiss (Beitrag 1384388)
Zitat:

Zitat von Zacherl (Beitrag 1384387)
Wenn du den String vor Verwendung nach
Delphi-Quellcode:
PAnsi/WideChar
castest, bzw. die Variable eh schon diesen Typ hat, dann musst du die 0 nicht manuell anhängen. Wenn du irgendwelche "Pointer Magie" betreibst, dann unter Umständen schon :-D

Nein es ist ein String und das bleibt er bis zum Ende ;)
Wenn ich dich dann richtig verstanden habe kann ich mir das sparen.

An welche Funktion übergibst du den String den letztenendes? Wenn die Funktion einen normalen Delphi String erwartest, kannst du dir die 0 definitiv sparen. Im Falle von
Delphi-Quellcode:
PAnsi/WideChar
allerdings grundsätzlich auch, weil die 0 dann durch einen entsprechenden Cast automatisch hinzugefügt werden würde.

EWeiss 28. Okt 2017 01:51

AW: string 0 terminiert?
 
Ja ist ein normalen Delphi String.
Ich war mir nur nicht sicher.

gruss

Zacherl 28. Okt 2017 01:54

AW: string 0 terminiert?
 
Zitat:

Zitat von EWeiss (Beitrag 1384390)
Ja ist ein normalen Delphi String.

Okay, ne dann musst du die 0 nicht hinzufügen. Bei Delphi Strings stehen vor
Delphi-Quellcode:
S[1]
noch zusätzliche Informationen, wie der RefCount und auch die Länge.

EWeiss 28. Okt 2017 01:58

AW: string 0 terminiert?
 
Zitat:

Zitat von Zacherl (Beitrag 1384391)
Zitat:

Zitat von EWeiss (Beitrag 1384390)
Ja ist ein normalen Delphi String.

Okay, ne dann musst du die 0 nicht hinzufügen. Bei Delphi Strings stehen vor
Delphi-Quellcode:
S[1]
noch zusätzliche Informationen, wie der RefCount und auch die Länge.

Ok Danke ;)
Neues Icone im Profil ... LOL.

gruss

Ydobon 28. Okt 2017 09:45

AW: string 0 terminiert?
 
Zitat:

Zitat von Zacherl (Beitrag 1384385)
Delphi Strings sind standardmäßig nicht nullterminiert.

Waren die nicht kurzen Strings nicht schon von Anfang an eine Chimäre, also sowohl Längen- und Referenzzähler aber zusätzlich auch noch ein bis zwei Nullbyte zum Abschluss?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:33 Uhr.
Seite 1 von 3  1 23      

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