Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi String lässt sich nicht in die Datei schreiben... (https://www.delphipraxis.net/13055-string-laesst-sich-nicht-die-datei-schreiben.html)

Ricane 10. Dez 2003 11:08


String lässt sich nicht in die Datei schreiben...
 
Moin,

ich will einen String in eine TIniFile schreiben.

Das Problem: Der String hat an der fünften Stelle einen "'". Daher werden immer nur die ersten vier Stellen weggeschrieben und nicht der ganze Rest.

Also dachte ich mir das ich mit StringReplace das ganze modifizieren könnte ... und zwar so:

Delphi-Quellcode:
Inhalt := StringReplace(Inhalt, '''', 'NEW', [rfIgnoreCase + rfReplaceAll])
Klappt nur leider nicht. Er ersetzt das "'" nicht, bzw. nicht an allen Stellen. Den mit den anderen StringReplace Funktionen die es hier gibt, werden zwar einige ersetzt, aber nicht alle. Also habe ich mir den String nochmal in einem HEX Editor angeguckt und da steht an der fünften Stelle statt "'" nur " ". Der Ascii Code dafür ist 00, also kein "echtes" Leerzeichen. In Delphi zeigt er aber ein "'" an...

Was also tun?!


Grüsse,

Ricane

Akut-Programming 10. Dez 2003 11:19

Re: String lässt sich nicht in die Datei schreiben...
 
Hi!

Kann man in Delphi überhaupt mit "" arbeiten?? :gruebel: Der arbeitet doch glaube nur mit einzelnen Anführungszeichen. ('') Oder verwechsle ich es jetze?? :roll:

Akut-Programming 10. Dez 2003 11:24

Re: String lässt sich nicht in die Datei schreiben...
 
Hab ma n bissl die DP durchsucht, schau dir dochma das Thema an. Vielleicht hilfts ja. ;o)

Greetz,

Sourcemaker 10. Dez 2003 11:34

Re: String lässt sich nicht in die Datei schreiben...
 
Hi,

also du hast statt einem Leerzeichen #20 ein #0 dann ersetzt halt mit:

Delphi-Quellcode:
Inhalt := StringReplace6(Inhalt, #20, 'NEW', [rfIgnoreCase + rfReplaceAll])
Gruß

Frank

scp 10. Dez 2003 12:59

Re: String lässt sich nicht in die Datei schreiben...
 
Zitat:

Zitat von Sourcemaker
Hi,

also du hast statt einem Leerzeichen #20 ein #0 dann ersetzt halt mit:

Delphi-Quellcode:
Inhalt := StringReplace6(Inhalt, #20, 'NEW', [rfIgnoreCase + rfReplaceAll])
Gruß

Frank

Ein Leerzeichen hat einen dezimalen Wert von 32, als Char also
Code:
#32
, der Hexwert ist 20, den müsste man in Delphi aber als Char so schreiben:
Code:
#$20

Sourcemaker 10. Dez 2003 13:25

Re: String lässt sich nicht in die Datei schreiben...
 
Klar hast recht ich habs verdreht.

Gruß

Frank

maximov 10. Dez 2003 13:27

Re: String lässt sich nicht in die Datei schreiben...
 
Ganz davon abgesehen wollte Ricane das '-zeichen ersetzen -> #39

Desweiteren denke ich, das dies hier nicht stimmt: [rfIgnoreCase + rfReplaceAll]

siehe definition: TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);

womit [rfIgnoreCase + rfReplaceAll] sowas wie 0+1 ist, also nur 1 bei rauskommt -> also nur rfIgnoreCase!

mach es einfach so:

Delphi-Quellcode:
Inhalt := StringReplace(Inhalt, #39, 'NEW', [rfIgnoreCase , rfReplaceAll])
mfg.
maximov

Sourcemaker 10. Dez 2003 13:58

Re: String lässt sich nicht in die Datei schreiben...
 
Hi Maximov,

ich denke es ging um #32 bzw. #0 was er ja mit Hex-Editor gefunden hat.
Mit der StringReplace-Syntax hast du sicherlich recht habe ich auch nur von Ricane ohne Prüfung übernommen.

Gruß

Frank

maximov 10. Dez 2003 14:17

Re: String lässt sich nicht in die Datei schreiben...
 
Seh ich auch gerade :shock: ...hauptsache wir konnten ihm hilfen.(?)

nur-ein-weiterer-thunder 13. Mär 2004 19:38

Re: String lässt sich nicht in die Datei schreiben...
 
Hmm, ich glaub eher, es war eher folgendes gemeint:
(mein Problem, daß ich grad hab - sry, daß ich damit störe :oops: )

Delphi-Quellcode:
showmessage(StringReplace(#100#98#0#85#105#122#151#100,#0,'',[rfReplaceAll]));
Hintergrund: Ich hab mir ne Datei in einen Filestream gelesen und wollte jetzt mittels StringReplace Ersetzungen darin vornehmen. Solange in der Datei kein hexadezimaler Nullwert (#0) auftaucht, ist das auch absolut kein Problem mit StringReplace, leider verweigert mir die Funktion die Zusammenarbeit, sobald sie im FileStream auf #0 trifft. :(
Was kann ich tun?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:07 Uhr.
Seite 1 von 2  1 2      

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