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 Textdatei mit Sonderzeichen auslesen (https://www.delphipraxis.net/105524-textdatei-mit-sonderzeichen-auslesen.html)

Cöster 23. Dez 2007 17:51


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:
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;
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?

3_of_8 23. Dez 2007 17:53

Re: Textdatei mit Sonderzeichen auslesen
 
Was verstehst du unter Sonderzeichen? Und wie ist die Codierung der Datei?

grenzgaenger 23. Dez 2007 18:01

Re: Textdatei mit Sonderzeichen auslesen
 
bring doch mal 'n bespielinhalt der datei ... welche du einlesen möchtest...

Bernhard Geyer 23. Dez 2007 18:10

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.

Cöster 23. Dez 2007 18:27

Re: Textdatei mit Sonderzeichen auslesen
 
Dies ist der Anfang der Textdatei:

Code:
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      
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. :?

DeddyH 23. Dez 2007 18:30

Re: Textdatei mit Sonderzeichen auslesen
 
Bist Du Dir sicher, dass es sich um eine Textdatei handelt?

Namenloser 23. Dez 2007 19:17

Re: Textdatei mit Sonderzeichen auslesen
 
Code:
L a a t s t e  h e r h a l i n g
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.
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.

Cöster 23. Dez 2007 20:53

Re: Textdatei mit Sonderzeichen auslesen
 
Danke schonmal für eure Antworten.
Zitat:

Zitat von DeddyH
Bist Du Dir sicher, dass es sich um eine Textdatei handelt?

Naja, sie beinhaltet auch Text. "laurentlefou" und "uruksofzillegem" sind bspw. Spielernamen und die beiden achtstelligen Zahlen zwischen den Kommas sind deren IPs (hexadezimal).

Wenn ich bei 5mal Button 1 klicke steht im Memo:

Code:
BFMEREPLE÷GG*úGG.
7¦+!d
kI.„d
kI.„d
 ²È
Teils wird die Datei also richtig gelesen, nur andere Teile werden leider total übersprungen :(

S als Widestring zu deklarieren, hat nix geändert. Mit TFileStream komm ich auch nicht viel weiter

Zitat:

Zitat von Bernhard Geyer
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.

Ich lad mir gerade die Jedis runter und schau dann mal, wie weit ich komme :)

inherited 23. Dez 2007 21:20

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.

grenzgaenger 23. Dez 2007 22:24

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:
if (b>$27) and (b<127) then
begin //lesbar
<HTH>


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