Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 249219 (10655)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Text-Zeilen durchsuchen
Horst Horn
| Datum:25.01.02 16:10 (info@web-treffpunkt.de) |
Hallo an Alle Suche Ratschläge... Ich möchte mehrere normale Text-Dateien hintereinander nach einem bestimmten Begriff durchsuchen und dann in einer Listbox anzeigen lassen, in welcher Datei der Begriff steht. Bisher klappt es nur mit der ersten Eingabe der jeweiligen Textzeile. Wie kann ich die Suchfunktion dahingehend erweitern, dass jede Textzeile von Anfang bis Ende durchsucht und der Begriff bei Vorhandensein angezeigt wird ? mfG horst
Jörg Sellmeyer
| Datum:25.01.02 17:55 (joerse@gmx.de) |
Hallo Horst, Wenn Du die Textdatei mit reset zum lesen öffnest, kannst Du das Ganze folgendermaßen lösen: declare Zeile$,Suchtext$
    Proc SucheText
    	Parameters sZeile$,sSuch$
    	declare Position%,gefunden%
    	Position%=InStr(sSuch$,sZeile$)
    	whilenot Position%=0
    		inc gefunden%
    		sZeile$=Mid$(sZeile$,Position% + Len(sSuch$),Len(sZeile$) - Position%)'Zeile reduzieren auf Reststring
    		Position%=InStr(sSuch$,sZeile$)
    	Wend
    	return gefunden%
    EndProc

    cls
    Zeile$="Dies ist ein Text der einen Begriff nämlich ein Text zweimal enthält"
    Suchtext$="ein Text"
    'hier natürlich in einer Schleife die Datei einlesen und für jede Zeile ausführen
    SucheText Zeile$,Suchtext$

    print "In diesem Satz:"
    print Zeile$
    Print "kommt <" + Suchtext$ + "> " + str$(@%(0)) + "-mal vor"
    WaitInput
Allerdings ist es schwierig Zeilen übergreifende Vorkommen (also mit chr$(13) ) zu finden. Die Zweite Möglichkeit ist, die Datei mit openrw und blockread einzulesen und die Bereichsvariable mit mempos zu durchsuchen. Dann erhälst Du allerdings nicht ohne weiteres die Zeilennummern. Ich hoffe das hilft Dir weiter Jörg
Horst Horn
| Datum:25.01.02 18:31 (info@web-treffpunkt.de) |
Hallo Jörg Danke für die schnelle Antwort - Die Lösung klappt prima Im Moment 'müssen' 63 *.txt-Dateien mit jeweils ca. 50 Zeilen durchsucht werden und das funktioniert bestens ;o) mfG horst
Jörg Sellmeyer
| Datum: 25.01.02 19:49 (joerse@gmx.de) |
Hallo Horst, Hab' nochmal etwas gegrübelt. Wenn Du nur die Anzahl der Vorkommen in der Zeile brauchst ohne die Positionen, kannst Du es auch mit zwei Definitionen erledigen. Dann brauchst Du nur noch eine Programmzeile pro Textzeile: Def CharCount(2) int(Sub(Len(@$(1)),Len(translate$(@$(1),@$(2),"")))) Def StringCount(2) CharCount(@$(1),@$(2)) / len(@$(2)) print StringCount(Zeile$,Suchtext$) Gruß Jörg

| Zurück zur Übersicht