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 1 von 3  1 23      
EWeiss
(Gast)

n/a Beiträge
 
#1

string 0 terminiert?

  Alt 28. Okt 2017, 00:16
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
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: string 0 terminiert?

  Alt 28. Okt 2017, 01:10
Kommt auf den Kontext und die Sprache an. Delphi Strings sind standardmäßig nicht nullterminiert. PAnsi/WideChar ist nullterminiert, aber hier müsstest du erklären, wie genau du die "Erweiterung" vornimmst. Wenn du einfach zwei PAnsi/WideChar Variablen mit + konkatenierst, wird die abschließende 0 automatisch hinzugefügt. In anderen Szenarien muss das nicht zwingend der Fall sein.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: string 0 terminiert?

  Alt 28. Okt 2017, 01:20
Ich habe einen String der aus einer JSon Datei aus dem Internet gefüllt wird.
Den will ich jetzt erweitern.

ltempBuf := ltempBuf + ',"';

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

gruss

Geändert von EWeiss (28. Okt 2017 um 01:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: string 0 terminiert?

  Alt 28. Okt 2017, 01:35
Wenn du den String vor Verwendung nach 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
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: string 0 terminiert?

  Alt 28. Okt 2017, 01:39
Wenn du den String vor Verwendung nach 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
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
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: string 0 terminiert?

  Alt 28. Okt 2017, 01:46
Wenn du den String vor Verwendung nach 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
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 PAnsi/WideChar allerdings grundsätzlich auch, weil die 0 dann durch einen entsprechenden Cast automatisch hinzugefügt werden würde.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: string 0 terminiert?

  Alt 28. Okt 2017, 01:51
Ja ist ein normalen Delphi String.
Ich war mir nur nicht sicher.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

AW: string 0 terminiert?

  Alt 28. Okt 2017, 01:54
Ja ist ein normalen Delphi String.
Okay, ne dann musst du die 0 nicht hinzufügen. Bei Delphi Strings stehen vor S[1] noch zusätzliche Informationen, wie der RefCount und auch die Länge.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: string 0 terminiert?

  Alt 28. Okt 2017, 01:58
Ja ist ein normalen Delphi String.
Okay, ne dann musst du die 0 nicht hinzufügen. Bei Delphi Strings stehen vor S[1] noch zusätzliche Informationen, wie der RefCount und auch die Länge.
Ok Danke
Neues Icone im Profil ... LOL.

gruss
  Mit Zitat antworten Zitat
Ydobon

Registriert seit: 3. Mär 2006
261 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: string 0 terminiert?

  Alt 28. Okt 2017, 09:45
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?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 00:33 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