Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi an String anhängen - mal wieder Probleme mit #0 (https://www.delphipraxis.net/101164-string-anhaengen-mal-wieder-probleme-mit-0-a.html)

Martin K 9. Okt 2007 11:10


an String anhängen - mal wieder Probleme mit #0
 
Hallo,

also ich hänge zwei Strings an einen vorhandenen String an.
Delphi-Quellcode:
s := s + neuerString1 + neuerString2;
Soweit so gut, nur sieht z.B. neuerString1 so aus: #6#0#0#0.
Für das Schreiben in eine Datei ist es unbedingt notwendig, dass neuerString1 4 Byte groß ist, aber wenn ich neuerString1 an s anhänge mit dem obigen Quellcode, werden die letzten 3 Bytes abgeschnitten.

Was tun?

Muetze1 9. Okt 2007 11:26

Re: an String anhängen - mal wieder Probleme mit #0
 
Sicher das die bytes nicht später bei einem anderen Aufruf abgeschnitten werden?

SirThornberry 9. Okt 2007 11:28

Re: an String anhängen - mal wieder Probleme mit #0
 
Die Bytes gehen definitiv wo anders verloren.

Martin K 9. Okt 2007 11:32

Re: an String anhängen - mal wieder Probleme mit #0
 
Öhm, nein, es ist schon an der Stelle wie oben der Code, aber habe selbst grade es mit einem String getestet und festgestellt, dass es geht.
In meinem Speziellen Fall funktioniert es aber nicht, wenn neuerString1 wie folgt festgelegt ist:
Delphi-Quellcode:
var neuerString1: array[0..3] of Char;

Luckie 9. Okt 2007 11:33

Re: an String anhängen - mal wieder Probleme mit #0
 
Warum nimmst du nicht gleich einen shortstring:
Delphi-Quellcode:
s: String[4];

Bernhard Geyer 9. Okt 2007 11:35

Re: an String anhängen - mal wieder Probleme mit #0
 
Zitat:

Zitat von Martin K
Öhm, nein, es ist schon an der Stelle wie oben der Code, aber habe selbst grade es mit einem String getestet und festgestellt, dass es geht.
In meinem Speziellen Fall funktioniert es aber nicht, wenn neuerString1 wie folgt festgelegt ist:
Delphi-Quellcode:
var neuerString1: array[0..3] of Char;

Damit begiebst du dich auf die Ebene von C-Kompatiblen Strings und dort ist $#00 das Ende des Strings! Und wenn dein Array eingelsen (nach Delphi-String gewandelt) wird, ist auch #$00 das Ende des Strings.

Martin K 9. Okt 2007 11:36

Re: an String anhängen - mal wieder Probleme mit #0
 
Zitat:

Zitat von Bernhard Geyer
Damit begiebst du dich auf die Ebene von C-Kompatiblen Strings und dort ist $#00 das Ende des Strings! Und wenn dein Array eingelsen (nach Delphi-String gewandelt) wird, ist auch #$00 das Ende des Strings.

Schön und gut, aber wie kann ich ein Array of Char an einen String anhängen, ohne dass mir dabei Bytes verloren gehen?

Muetze1 9. Okt 2007 11:37

Re: an String anhängen - mal wieder Probleme mit #0
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das geht definitiv auch. Getestet mit BDS2006, siehe Anhang (wovon die Turbo's nur eine Ausgliederung sind)

War ein gutes Gegenbeispiel - er schneidet sie genauso ab...

mkinzler 9. Okt 2007 11:37

Re: an String anhängen - mal wieder Probleme mit #0
 
Indem du die Steuerzeichen vorher daraus entfernst oder besser eine String nimmst.

bernau 9. Okt 2007 11:41

Re: an String anhängen - mal wieder Probleme mit #0
 
Was hier noch gar nicht gefragt wurde:

Mit welcher Funktion schreibst du die Daten in die Datei?

Verwendest du einen TFilestream, oder schreibst du mit "writeln" und Konsorten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:54 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