[PASCAL]Text aus einer Datei suchen!

bLizz1337

Grünschnabel
Hi...
Ich hab ne kurze frage...
es geht darum wie ich Text aus einer textdatei suchen kann!
In der textdatei selber sind mehrere einträge in zeilen!
Beispiel:

Eis - Eiskalt - kalt wie Eis
Warm - heiß - Sommer
Benz - Auto - teuer

so steht das in meiner textdatei (listen.txt)
jetzt will ich zum beispiel im programm wenn ich aufgefordert werde den suchbegriff anzugeben, die ganze zeile ausgegeben bekommen!

Beispiel!
Bitte gib einen Suchbefehl ein: Warm
Hier die gefundenen Einträge:
Warm - heiß - Sommer

Beispiel2:
Bitte gib einen Suchbefehl ein: Benz
Hier die gefundenen Einträge:
Benz - Auto - teuer

Und noch was zur suche...
Wenn man jetzt anstatt "Warm" "arm" eingibt, sollte er trotzdem die zeile noch ausgeben.
Genauso als wenn es mehrere zeilen gibt die zum suchbegriff passen sollte er alle ausgeben.

Weiß da jemand weiter vielleicht?
ihr könnt mich auch unter icq: 177266990 kontaktieren

thx im vorraus!
 
Man kann hier durchaus untercshiedlich vorgehen.
1. Simples Vorgehen
Lade die komplette Textdatei in eine StringList mit LoadFromFile. Du kannst dann alle Einträge der Stringlist einzeln mit Pos() nach dem Suchbegriff oder Teilen davon durchsuchen.

2. Wenn die Datei zu groß ist, müßtest Du eine Suchfunktion schreiben, die die Datei blockweise liest blockread() und die einzelnen Blöcke entsprechend durchsucht. Dabei mußt Du die Nahtstellen der Blöcke beachten, falls das Wort gerade durch die Blockgrenze getrennt wird.

3. Evtl. solltest Du aber überlegen, ob die von Dir gewählte Stragie evtl. generell zu überdenken ist. Je nach gewünschter Anwendung kann bspw. eine Datenbank besser geeignet sein.

Hoffe es hilft Dir etwas weiter
vop
 
Hallo,

geht es bei dem Problem um Delphi oder Pascal?

Im Falle von Delphi ist die von vop vorgeschlagene Methode sicherlich die einfachste.

Geht es um Pascal stehen dir Objekte vom Typ TStringList leider nicht zur Verfügung.
Da die Suchbegriffe scheinbar in einer Zeile stehen, würde ich die Datei mit Assign() und Reset() öffnen und mit WriteLn() zeilenweise einlesen. Mit einer for-Schleife könnte man dann die Zeile Position für Position nach dem Suchbegriff scannen.

Ich hoffe, ich erinnere mich noch richtig, ist soooo lang her. Mit Delphi gibt's wesentlich bessere Möglichkeiten. ;)

Grüße
Thomas
 

Neue Beiträge

Zurück