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 TextFile auslesen (https://www.delphipraxis.net/119849-textfile-auslesen.html)

renekr 2. Sep 2008 08:10


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.

mkinzler 2. Sep 2008 08:15

Re: TextFile auslesen
 
Ganze Textfile als String und dann mit PosEx() oder mit Hilfe von Regulären Ausdrücken

renekr 2. Sep 2008 08:31

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

DeddyH 2. Sep 2008 08:32

Re: TextFile auslesen
 
Length(). Aber zeig mal Deinen Code, PosEx() sollte eigentlich funktionieren.

renekr 2. Sep 2008 09:39

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;

mkinzler 2. Sep 2008 09:41

Re: TextFile auslesen
 
Warum die Zählschleife?

taaktaak 2. Sep 2008 10:04

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;

renekr 2. Sep 2008 10:29

Re: TextFile auslesen
 
Hi,

cool danke.
Man sooo einfach .da könnt ma doch drauf kommen.
Es geht nun vielen Dank.

taaktaak 2. Sep 2008 10:32

Re: TextFile auslesen
 
Gern geschehen!
Ist eben so: Man denkt manchmal viel zu kompliziert :zwinker:

DeddyH 2. Sep 2008 10:35

Re: TextFile auslesen
 
Delphi-Quellcode:
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;
Ist kürzer :zwinker:.


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