![]() |
TextFile auslesen
Hi,
ich stehe gerade aufm Schaluch. Ich habe ein TextFile wo ich die Strings zwischen den Zeichen auslesen will. Die Zeichen(Delimiter) kommen öfters vor. Hab schon mit PosEx usw. Probiert aber bekomme als den Strign doppelt,dreifach raus. Das Zeichen wäre %05 (das kommt sehr oft vor im File) und nun will ich alle String zwischen den Zeichen auslesen von dem Kompletten Textfile. Hat da jemand ne Idee wie ich das geschickt machen kann? Danke. |
Re: TextFile auslesen
Ganze Textfile als String und dann mit PosEx() oder mit Hilfe von Regulären Ausdrücken
|
Re: TextFile auslesen
Das File hab i in einem String aber i bekom mdie Pos nicht immer sauber.
Gibts ne Function wo einem die anzahl der Zeichen in dem String liefert? Danke |
Re: TextFile auslesen
Length(). Aber zeig mal Deinen Code, PosEx() sollte eigentlich funktionieren.
|
Re: TextFile auslesen
Hi,
also hier mal der Code, allerdings bekom i ab und zu doppelte einträge. Denke die Schleife ist noch nciht sauber. Der Komplette String ist ca. 4000 Zeichen lang.
Delphi-Quellcode:
function Str_offset(const s, s1, s2: String;posanf:integer): String; //return a string between two other strings
var iPos, iPosLeft, iPosRight: Integer; begin Result := ''; iPos := Posex(s1, s,posanf); if iPos >= posanf then begin iPosLeft := iPos + Length(s1); iPos := PosEx(s2, s, Succ(iPosLeft)); if iPos > posanf then begin iPosRight := iPos; Result := MidStr(s, iPosLeft, iPosRight - iPosLeft); end; end; end;
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var F: Textfile; s, Info: String; anf_2,len:integer; I: Integer; begin AssignFile(f, TXTFile); {Assigns the Filename} Reset(f); {Opens the file for reading} Memo2.Lines.clear; ReadLn(f, s); len:=length(s); anf_2:=0; for I := 0 to 5000 do begin if ((Pos('%05', s) > 0) and (Pos('%05', s) < len)) then begin strl Info := Str_offset(s, '%05','%05',anf_2); Memo2.Lines.add(Info); anf_2:=anf_2+Length(Info); if anf_2 > Length(s) then break; end ; end; CloseFile(f); end; |
Re: TextFile auslesen
Warum die Zählschleife?
|
Re: TextFile auslesen
Moin, Moin.
Wie schaut die Textdatei denn aus? Hat sie folgende Struktur? hallo%05dies%05ist%05ein%05Text hallo%05dies%05ist%05ein%05Text hallo%05dies%05ist%05ein%05Text Dann gibt es u.A. folgende Möglichkeit:
Delphi-Quellcode:
procedure TfoTest15.ReadTextFile;
var f : Textfile; str : String; begin memo1.clear; assignfile(f,~~~); {$I-} reset(f); {$I+} if ioresult<>0 then showmessage('error') else begin while not(eof(F)) do begin readln(f,Str); memo1.lines.add(str); end; closefile(f); memo1.text:=stringreplace(memo1.Text,'%05',#13#10,[rfReplaceALL]) end end; |
Re: TextFile auslesen
Hi,
cool danke. Man sooo einfach .da könnt ma doch drauf kommen. Es geht nun vielen Dank. |
Re: TextFile auslesen
Gern geschehen!
Ist eben so: Man denkt manchmal viel zu kompliziert :zwinker: |
Re: TextFile auslesen
Delphi-Quellcode:
Ist kürzer :zwinker:.
procedure TfoTest15.ReadTextFile;
begin Memo1.Lines.BeginUpdate; try memo1.Lines.LoadFromFile(Dateiname); memo1.text:=stringreplace(memo1.Text,'%05',#13#10,[rfReplaceALL]); finally Memo1.Lines.EndUpdate; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:11 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 by Thomas Breitkreuz