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 2  1 2      
EWeiss
(Gast)

n/a Beiträge
 
#1

string 0 terminiert?

  Alt 28. Okt 2017, 01: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, 02: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, 02: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 02: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, 02: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, 02: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, 02: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
Ydobon

Registriert seit: 3. Mär 2006
264 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: string 0 terminiert?

  Alt 28. Okt 2017, 10: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
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: string 0 terminiert?

  Alt 28. Okt 2017, 22:10
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?
nein,ja,nein,nein

die Shortstrings bestehen aus einem Längenbyte und 255 CharBytes.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.747 Beiträge
 
Delphi 2007 Professional
 
#9

AW: string 0 terminiert?

  Alt 29. Okt 2017, 09:22
Normale Delphi-Strings (also AnsiString/UnicodeString) haben eine 0 hintendran, damit der PChar-Cast ohne Speicherallozierung etc. funktioniert.
Wenn du willst, kannst du das natürlich mit irgendwelcher Low-level-Bitschubserei hinter Delphis Rücken torpedieren.
Aber bei String-Verkettung und so bleibt die 0-Terminierung erhalten.
Uli Gerhardt
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: string 0 terminiert?

  Alt 29. Okt 2017, 10:40
Das ist wieder ein Thema wo unterschiedliche Meinungen kursieren.
Es muss doch möglich sein vom Standard abzuleiten.

Der eine Ja, der andere Nein, der nächste Ja.. was denn nu ist Korrekt und wird in der Sprache (Delphi) verwendet.

gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:41 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 by Thomas Breitkreuz