Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ausgeben bestimmter informationen aus txt datei (https://www.delphipraxis.net/53071-ausgeben-bestimmter-informationen-aus-txt-datei.html)

Scumi 9. Sep 2005 14:43


ausgeben bestimmter informationen aus txt datei
 
Hallo!

Bin noch relativ neu in Delphi.
Folgendes: Ich habe mehrere txt-Dateien. Im Inhalt derer befinden sich sich wiederholende Zeichenketten, welche auch nur eine Zeile lang sind. Nun möchte ich eine der Dateien auslesen und die verschiedenen Zeichenketten suchen lassen und in mehreren Feldern darstellen. Die Zeichenketten sind aber zT an unterschiedlichen Positionen, sodass ich keine bestimmte Zeile definieren kann.

Beispiel:

-[o]- --- > Start of Transmission < --- -[o]-

|| Status: Mission 1 ||
|| Mission: Neuanfang ||
|| Teilmission 2: Piraterie ||
|| Geheimhaltungsstufe: rot ||

Ich habe mehrere Labels erstellt mit Status, Mission, etc und nun soll darunter/dahinter "Mission 1, Neuanfang, etc" eingetragen werden. Wie geht das genau?

Danke schonmal für eure antworten.
gruß

mr.unbekannt 9. Sep 2005 15:37

Re: ausgeben bestimmter informationen aus txt datei
 
hi scumi!

weißt du wie du aus dateien ausliest?

Delphi-Quellcode:
var f:textfile;
begin
assignfile(f,file.txt');
reset(f);
//weitertext unten beschrieben
closefile(f);
das ist erstmal das öffnern der datei
zum lesen nimmst du
Delphi-Quellcode:
readln(f,such);
wobei such eine string variable ist in der die zeile kommt!

so, um einen bestimmte zeichenfolge zu suchen musst du:
Delphi-Quellcode:
pos('was',wo);
machen. reicht dir das?

mfg mr.unbekannt

p.s. bei // dürfte der text eigentlich nur blau sein der rest nicht

Scumi 9. Sep 2005 15:44

Re: ausgeben bestimmter informationen aus txt datei
 
Dachte mit openfromfile, aber das wär ja öffnen und net auslesen. *merk* Ich kanns so erstmal versuchen, aber so richtig durchsteigen tu ich noch nicht :)

trotzdem danke...

mr.unbekannt 9. Sep 2005 15:48

Re: ausgeben bestimmter informationen aus txt datei
 
na was brauchstn noch?

Delphi-Quellcode:
assignfile(f,'help.txt'); //datei der variable f zuordnen
reset(f); //datei zum lesen öffnen bei schreiben wäre es rewrite
readln(f); //eine zeile lesen
closefile(f); //datei schließen
noch fragen?

Mr_G 9. Sep 2005 15:49

Re: ausgeben bestimmter informationen aus txt datei
 
Vielleicht meinst du LoadFromFile von TStringList?
Damit kannst du auch recht einfach mit Textdateien umgehen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var List: TStringList;
begin
  List := TStringList.Create;
  List.LoadFromFile('C:\text.txt');
  List.Add('Zeile hinzugefügt');
end;

mr.unbekannt 9. Sep 2005 15:50

Re: ausgeben bestimmter informationen aus txt datei
 
er will ja den string zerschnippeln und das geht dann denke ich net so gut

Mr_G 9. Sep 2005 16:06

Re: ausgeben bestimmter informationen aus txt datei
 
Ist doch alles kein Problem:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var List: TStringList;
begin
  List := TStringList.Create;
  List.LoadFromFile('C:\text.txt');
  ...
  List.IndexOf('suchtext');
  ...
end;
Außerdem bietet die TStringList noch so tolle Sachen wie DelimitedText oder die Sortierfunktion.

mr.unbekannt 9. Sep 2005 16:09

Re: ausgeben bestimmter informationen aus txt datei
 
jaja naja wa solls

Scumi 9. Sep 2005 16:58

Re: ausgeben bestimmter informationen aus txt datei
 
Danke ich versuchs ma übers WE aufm Laptop. Melde dann das Ergebnis ^^

gruß

Scumi 13. Sep 2005 16:02

Re: ausgeben bestimmter informationen aus txt datei
 
Okay, hier klappt garnix :) Wenn ich das Programm starte zeigt es weder im Memo, noch per showmessage irgendetwas.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var List: TStringList;
begin
 List := TStringList.Create;
 List.LoadFromFile('D:\zug.txt');
 List.Add('|| Status: Mission 1 ||');
 List.IndexOf('|| Status: Mission 1 ||');
 ShowMessage ( List[0] );
 Memo1.Text:= List[0];
end;
Ausserdem würde mir das nicht viel weiter helfen, da ich zB nur "Mission 1" ausgeben möchte, wenn vom Programm "Status:" gefunden wurde. Aber er zeigt ja noch nichtmal so etwas.

mr.unbekannt 13. Sep 2005 16:21

Re: ausgeben bestimmter informationen aus txt datei
 
also du musst bestimte teile suchen lassen bis zu ienem bestimmten zeichen, am besten ein sonmderzeichen! durch die funktion pos(was,wo); und dann eben copy(wo, von wo, bis wo) musste eben nen biscle stückeln, ich für mich würde es anderes herauslesen, wie ich es dir beschrieben habe!

Mr_G 13. Sep 2005 17:47

Re: ausgeben bestimmter informationen aus txt datei
 
Man könnte es auch so machen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var List: TStringList;
    Zeile: Integer;
begin
  List := TStringList.Create;
  List.LoadFromFile('D:\zug.txt');
  Zeile := List.IndexOf('|| Status: Mission 1 ||');
  if Zeile > -1 then
    Memo1.Lines.Add(List[Zeile]);
end;
Zu beachten ist dabei jedoch was die OH sagt:
Zitat:

Mit IndexOf können Sie das erste Vorkommen eines Strings, der mit dem String S übereinstimmt, ermitteln. Ein String stimmt mit S überein, wenn er mit S identisch ist oder – wenn CaseSensitive false ist – sich nur bezüglich der Groß-/Kleinschreibung von S unterscheidet.

IndexOf gibt den auf Null basierenden Index des Strings zurück. Daraus ergibt sich folgendes Schema: Wenn S mit dem ersten String in der Liste übereinstimmt, gibt IndexOf den Wert 0 zurück. Wenn S der zweite String in der Liste ist, wird –1 zurückgegeben usw. Entspricht S dem zweiten String, gibt IndexOf 1 zurück usw. Existiert keine Fundstelle in der Stringliste, gibt IndexOf -1 zurück.

Scumi 15. Sep 2005 19:10

Re: ausgeben bestimmter informationen aus txt datei
 
Okay, ich bin langsam ein wenig in Delphi drin. Folgendermaßen sieht das grad bei mir aus (erstmal nur für den ersten gesuchten Wert)

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var datei: textfile;
    puffer: string;
    anfang: integer;
    ende: integer;

begin
 assignfile(datei,'D:/zug.txt');
 reset(datei);
 readln(datei, puffer);
 anfang:= pos('Status:', Puffer);
 ende := pos('||', Puffer) + 8;
 Memo1.Lines.Add(copy(Puffer, anfang, ende - anfang + 1));
 delete(Puffer, 1, ende);
 closefile(datei);

end;
Statt das Delphi mir "Mission 1" anzeigt, wie gewollt kommen lediglich die ersten 9 Zeichen aus der ersten Zeile in das Memofeld (-[o]- ---). Bekommte das trotz unzähliger Versuche nicht weg.

Gruß

Mr_G 15. Sep 2005 19:18

Re: ausgeben bestimmter informationen aus txt datei
 
Da die Zeichen "||" mehrmals vorkommen und du mit pos immer nur das erste Vorkommen findest würde ich es eher so machen:
Delphi-Quellcode:
anfang:= pos('Status: Mission 1', Puffer);
ende := anfang + Length('Status: Mission 1');
"Status: Mission 1" könntest du dann z.B. auch durch eine Variable ersetzen...

Scumi 15. Sep 2005 19:22

Re: ausgeben bestimmter informationen aus txt datei
 
Mission 1 ist nicht unbedingt gegeben. Könnte auch Mission 2 sein, das wird ja eigentlich gesucht zwischen "Status:" und dem hinteren "||"

Rastaman 15. Sep 2005 19:28

Re: ausgeben bestimmter informationen aus txt datei
 
Also wie ich das verstehe, willst du Sachen aus einer TXT auslesen.
Dann fragst du ab, ob der String auch so aussieht wie er aussehen soll.
Aber wozu dann die Textdateien?
Wenn der eh nich variabel sein kann der Text, dann benutz doch erst gar keine TextDateien.
Wenn ich was falsch verstanden habe, dann benutz einfach INI Dateien :mrgreen:

Scumi 15. Sep 2005 19:35

Re: ausgeben bestimmter informationen aus txt datei
 
Na der soll doch grade Variabel sein...Nur bestimmte Dinge kommen immerwieder vor.

Beispiel:

|| Status: Mission 1 ||
|| Mission: Neuanfang ||

Hinter "Mission:" könnte auch irgendwas anderes stehen, als "Neuanfang". Es sind jedesmal andere auszulesende Textdateien, weshalb es ja das *.txt Format sein soll (bzw ist).

Gruß

Rastaman 15. Sep 2005 21:25

Re: ausgeben bestimmter informationen aus txt datei
 
Guck dir mal Ini-Files an.
Damit geht das einfacher.
Ansonsten nimm Records.

Zacherl 15. Sep 2005 21:34

Re: ausgeben bestimmter informationen aus txt datei
 
Stimmt. INI Dateien sind (behaupte ich einfach) die einfachste Art Daten in einer Textdatei zu speichern und wieder daraus zu lesen. Warum sich also mit dem Extrahieren einzelner Strings verkünsteln?

Florian


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