![]() |
Textdatei mit Sonderzeichen auslesen
HI!
Ich hab ein paar Probleme damit, eine Textdatei auszulesen. Das liegt wohl daran, dass sie Sonderzeichen und Co. enthlt. Mein Test-Code sieht so aus:
Delphi-Quellcode:
Wenn ich Button1 nun mehmals klicke werden allerdings immer nur lckenhafte Bruchstcke 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\Cster\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 mchtest...
|
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 drften 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. :?
BFMEREPLEGG*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 ` . @DD A . D *D B 5 6`DμD A@ # . ;E |D A% & V ' ( . ]yD`D A* . ʦDZD A+ 2 # m 2 4 . NDBD A6 g ; . DDB< | ؍=EcD A6< A A . IDAxD HBC . 3HD.uD HBF # 7 F I . bDnD AM N <{D,*D A S T U Z . ޜDVD Bc # i ] c d . *DZD 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 fr 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 :(
BFMEREPLEGG*GG.
7+!d kI.d kI.d S als Widestring zu deklarieren, hat nix gendert. 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 binr 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 |
Re: Textdatei mit Sonderzeichen auslesen
Zitat:
Danke an alle |
Re: Textdatei mit Sonderzeichen auslesen
und was war jetzt das problem?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:14 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