Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   eine bestimmte position in text dateien auslesen (https://www.delphipraxis.net/59208-eine-bestimmte-position-text-dateien-auslesen.html)

Jesus_Hunter 19. Dez 2005 13:15


eine bestimmte position in text dateien auslesen
 
Also ich häng jetzt schon seit einigen tagen an einem Fehler ihr seind meine letzte Rettung.

Ich will eine bestimmte text passage aus einer text datei auslesen z.B. erste zeile fünftes bis neuntes zeichen. Und nur diese 5 Zeichen sollen dann in einem Label angezeigt werden. Bis jetzt konnte ich nur bestimmte zeilen anzeigen lassen aber nicht ein einelnes wort oder eine zahlenfolge.
Das problem ist das ich auch nicht einfach nach der stelle suchen kann weil die zeichenfolge zufällig generiert wird. Sie ist jedoch immer gleich lang und an der selben Stelle.

Wäre nett wenn ihr ne Lösung für mein Problem hätter.

marabu 19. Dez 2005 13:33

Re: eine bestimmte position in text dateien auslesen
 
Herzlich willkommen in der Delphi-PRAXiS.

Wenn du deine Zeile eingelesen hast und iStart und iEnd die Stellenangaben sind, dann sollte es so funktionieren:

Delphi-Quellcode:
var
  line: string;
begin
  DeinLabel.Caption := Copy(line, iStart, Succ(iEnd - iStart));
end;
Grüße vom marabu

chrisw 19. Dez 2005 13:41

Re: eine bestimmte position in text dateien auslesen
 
Oder Du nimmst diese Funktion !
Delphi-Quellcode:
function GetString (Zeile,StartIndex,Anzahl : Integer; filename : String) : String;
var list : TstringList;
begin
  Result := '';
  list := TStringList.Create;
  try
    list.LoadFromFile(filename);
  except
  end;
  Result := copy(list[zeile-1],StartIndex,Anzahl);
  list.Free;
end;
//Aufruf mit z.Bsp:
Label1.Caption := GetString(2,12,10,'c:\meintext.txt');
//für die 2 Zeile ab 12 Zeichen 10 Zeichen lang aus der Datei 'c:\meintext.txt

Tyrael Y. 19. Dez 2005 13:51

Re: eine bestimmte position in text dateien auslesen
 
Moin, ....ist ungetestet, aber ich würde es eher so machen..

Delphi-Quellcode:
function ReadString(AFile: string; ABeginPos, AEndPos: Integer): string;
var LFs: TFileStream;
begin
  LFs := TFileStream.Create(AFile, fmOpenRead);
  try
    LFs.Position := ABeginPos;
    SetLength(result, (AEndPos-ABeginPos));
    LFs.Read(Pointer(result)^, (AEndPos-ABeginPos));
  finally
    LFs.Free;
  end;
end;

Edit: Sry, grad erst mitgekriegt, daß du die Zeile auch angeben möchtest...erst Zeile...dann Position

Khabarakh 19. Dez 2005 13:56

Re: eine bestimmte position in text dateien auslesen
 
Zitat:

Zitat von chrisw
Delphi-Quellcode:
try
  list.LoadFromFile(filename);
except
end;

Geniales Exception-Handling :roll: . Gerade für einen Anfänger sollte man nicht solch einen Code posten, das ist nur kontraproduktiv. Und dass "Zeile" nicht nullindiziert ist, verwirrt auch eher, als dass es einem Anfänger hilft.

@Tyrael: Wenn die Zeilenlängen nicht konstant sind, muss man die CRLFs ohne TStringList einzeln herausfischen, da ja nur die Zeilennummer bekannt ist.

DP-Maintenance 19. Dez 2005 13:59

DP-Maintenance
 
Dieses Thema wurde von "sakura" von "Projekte" nach "Sonstige Fragen zu Delphi" verschoben.

Tyrael Y. 19. Dez 2005 14:02

Re: eine bestimmte position in text dateien auslesen
 
Zitat:

Zitat von Khabarakh
@Tyrael: Wenn die Zeilenlängen nicht konstant sind, muss man die CRLFs ohne TStringList einzeln herausfischen, da ja nur die Zeilennummer bekannt ist.

Schon klar,...hatte es zuerst anders verstanden...dachte er möchte von einer bestimmten bekannten Position bis zu einer zweiten Position alles lesen...

StringListen bieten sich natürlich in diesem Zusammnehang eher an

Jesus_Hunter 19. Dez 2005 15:46

Re: eine bestimmte position in text dateien auslesen
 
Es Geht!!! Ihr habt mir echt geholfen ;D ThX


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 Uhr.

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