![]() |
Textdatei mit Sonderzeichen auslesen
HI!
Ich hab ein paar Probleme damit, eine Textdatei auszulesen. Das liegt wohl daran, dass sie Sonderzeichen und Co. enthält. Mein Test-Code sieht so aus:
Delphi-Quellcode:
Wenn ich Button1 nun mehmals klicke werden allerdings immer nur lückenhafte Bruchstücke der Datei in mein Memo geschrieben. Wie erhalte ich den gesamten Text der Datei?
var
Form1: TForm1; F: TextFile; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var S: string; begin ReadLn(F, S); Memo1.Lines.Add(S); end; procedure TForm1.FormCreate(Sender: TObject); const Path = 'C:\Users\Cöster\AppData\Roaming\Meine Die Schlacht um Mitte' + 'lerde-Dateien\Replays\to be watched\gvsM,Fangorn,Uruks.rep'; begin AssignFile(F, Path); Reset(F); end; procedure TForm1.FormDestroy(Sender: TObject); begin CloseFile(F); end; |
Re: Textdatei mit Sonderzeichen auslesen
Was verstehst du unter Sonderzeichen? Und wie ist die Codierung der Datei?
|
Re: Textdatei mit Sonderzeichen auslesen
bring doch mal 'n bespielinhalt der datei ... welche du einlesen möchtest...
|
Re: Textdatei mit Sonderzeichen auslesen
Meine Glaskugel sagt mit das es sich um eine Unicode-Codierte Textdatei handelt. Mit Elpack (TLMDWideStringList), TNTWare (TNTWideStringList), oder dem JCL (TWideStringList) sollte sich das lesen lassen. Im Forum dürften auch einige Beispiel zum einlesen von Unicode-Textdateien finden.
|
Re: Textdatei mit Sonderzeichen auslesen
Dies ist der Anfang der Textdatei:
Code:
Die Stelle, die mich interessiert, ist ";S=Hlaurentlefou,54652BC4,10643,FT,1,4,-1,0,1:Huruksofzillegem,5386925B,12808,FT,5,6,-1,1,1". Mit meinem Code kriege ich sie aber nicht in mein Memo. :?
BFMEREPLE÷GG*úGG. d L a a t s t e h e r h a l i n g × 5 ÈV e r s i e 1 . 0 3 N o v 2 8 2 0 0 5 1 7 : 1 5 : 1 0 pË
7¦+!d M=000maps/map mp fangorn;MC=0;MS=0;SD=22162;S=Hlaurentlefou,54652BC4,10643,FT,1,4,-1,0,1:Huruksofzillegem,5386925B,12808,FT,5,6,-1,1,1:X:X:X:X:X:X:; 1 ë a a a ` . ºƒ@D‚¥D ÈA é ¾ é – ÿÿÿÿ . ƒùD *òD ´ B é … 5 Ü6`DƒÎ¼D ÈAäË@ ë é Ä é – # . ý;E î|D ÈA% é Ì & é V ' é ³ ( . ]ÂyD`¾D ÈA* . ʦ©DàZÂD A+ ÿÿÿÿ 2 # m ¦ 2 é Ì ¨ 4 . •NDBü¨D ÈA6 é g ; . Š˜›DŠíDü˜B< | Ø=EcãèD ÈA6À< ë A é ¨ A . ªIDAØxD HBC . Ô3HDª.uD HBF # 7 ’ F é ³ I . Ðb®Dn¾D AM é Ê N Ê <ƒ{D,ü*D ÈA S T ë U é Ì Z . Þœ¥DV¬D ˜Bc # ó i ] Æ c é ³ d . ¤*DZÛÂD Ae I |
Re: Textdatei mit Sonderzeichen auslesen
Bist Du Dir sicher, dass es sich um eine Textdatei handelt?
|
Re: Textdatei mit Sonderzeichen auslesen
Code:
Die Leerstellen deuten auf Unicode hin. Dabei ist ein Zeichen nicht 1, sondern 2 Byte lang (IMHO! Vllt. verwechsle ich das auch mit UTF-8 oder so...). Sprich, es ist so aufgebaut: XX 00. Wenn Delphi den Code jetzt als Ansi-String einliest, trifft es auf die 00 und schneidet dort den Stringt ab.
L a a t s t e h e r h a l i n g
Versuch mal, es mit einem Filestream einzulesen und dann die Stelle herauszukopieren. Vllt. kannst du es auch direkt in einen WideString kopieren, aber mit WideStrings habe ich noch nie gearbeitet, von daher kann ich das nicht sicher sagen. |
Re: Textdatei mit Sonderzeichen auslesen
Danke schonmal für eure Antworten.
Zitat:
Wenn ich bei 5mal Button 1 klicke steht im Memo:
Code:
Teils wird die Datei also richtig gelesen, nur andere Teile werden leider total übersprungen :(
BFMEREPLE÷GG*úGG.
7¦+!d kI.„d kI.„d ²È S als Widestring zu deklarieren, hat nix geändert. Mit TFileStream komm ich auch nicht viel weiter Zitat:
|
Re: Textdatei mit Sonderzeichen auslesen
Warum willst du es überhaupt in ein Memo laden? Lad es mit einem Filestream oder ähnlichem und lies die Bytes aus.
|
Re: Textdatei mit Sonderzeichen auslesen
wie wird die datei eigentlich erstellt? mit welchem progy?
ps: was du machen kannst, ist die datei binär einzulesen und die sichtbaren zeichen auszufiltern und im memo darzustellen also im groben
Delphi-Quellcode:
<HTH>
if (b>$27) and (b<127) then
begin //lesbar |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:15 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-2025 by Thomas Breitkreuz