![]() |
Textdatei nach bestimmten Begriff durchsuchen
Update weiter unten!
Hi, Ich versuche 100 Textdateien nach einem bestimmten Begriff zu durchsuchen. Ich hab dann mal die Forensuche bedient und folgenden Code gefunden und angepasst.Die Dateien liegen im Format 1.txt, 2.txt, 3.txt usw vor. Allerdings funktioniert das nicht so wie ich will.
Delphi-Quellcode:
Die Fehlermeldungen sagen mir nicht viel, was mach ich falsch? Und wozu brauche ich Endewort?
procedure TForm5.SuchestartenClick(Sender: TObject);
var StringList : TStringList; posi : integer; s : string; i : byte; begin for i := 0 to 100 do begin StringList := TStringList.Create; try StringList.LoadFromFile('\\Server\Datenbank\' + inttostr(i) + '.txt); [b]// [Fehler] Unit5.pas(45): Nicht abgeschlossener String[/b] s := StringList.Text; [b]// [Fehler] Unit5.pas(46): ')' erwartet, aber Bezeichner 's' gefunden[/b] delete(s, 1, pos(edit1.text, s) + length(edit1.text) - 1); memo1.lines.add (copy(s, 1, pos('<Endewort>', s) - 1)); finally StringList.free; end; end; end; Originalthread ist übrigens ![]() Ach ich sehe gerade, der Ersteller des anderen Threads sucht eine Möglichkeit um den Inhalt zwischen zwei Wörter herauszusuchen. Naja, viel Unterschied wird in den Verfahren nicht sein. Ich will eigentlich nur den Namen der Textdatei in der Memobox ausgeben, wenn ein bestimmter Begriff in dieser Datei gefunden wurde. |
Re: Textdatei nach bestimmten Begriff durchsuchen
Delphi-Quellcode:
Hinter '.txt fehlt das abschließende '. Genau das sagt auch die Fehlermeldung, und die "kaputte" Formatierung des Quelltextes hier im Forum lässt das doch prima erkennen. Der 2. Fehler ist lediglich eine Folge des ersten.
StringList.LoadFromFile('\\Server\Datenbank\' + inttostr(i) + '.txt);
\\Edit: Und für dein Vorhaben reicht eine einfach Suche mittles ![]() |
Re: Textdatei nach bestimmten Begriff durchsuchen
LoL ... der is ma geil :lol: ... :wall:
Ausserdem durchläufst du die Schleife 101 mal ... "for i := 0 to 100 do" ... "for i := 1 to 100 do" oder "for i := 0 to 99 do" würde 100x die Schleife durchlaufen |
Re: Textdatei nach bestimmten Begriff durchsuchen
Okay, der erste Teil war vielleicht etwas verwirrend oder sogar komplett falsch ^^
Also nochmal: Ich habe 100 Text-Dateien, es geht von 1 los und endet bei Datei Nr 100. Ich möchte jede dieser Dateien nach einem bestimmten Begriff durchsuchen und anschliesend den Dateinamen in einem Memofeld ausgeben. Das klappt jetzt sogar, allerdings unterscheidet die Funktion pos zwischen Groß und Kleinschreibung wie mir scheint.
Delphi-Quellcode:
procedure TForm5.SuchestartenClick(Sender: TObject);
var StringList : TStringList; s : string; i : byte; begin memo1.clear; for i := 1 to 100 do begin StringList := TStringList.Create; try StringList.LoadFromFile('\\Server\Datenbank\' + inttostr(i) + '.txt'); s := StringList.Text; if pos(edit1.text, s) > 0 then memo1.lines.add (inttostr(i)); finally StringList.free; end; end; end; Könnte mir noch einer verraten wie ich die Unterscheidung ausschalte? ^^ |
Re: Textdatei nach bestimmten Begriff durchsuchen
Ja, pos ist case sensitiv.
Du kannst mit upperCase oder lowerCase den Text in Groß- oder Kleinbuchstaben wandeln und dann mit pos abfragen. Grüße Klaus |
Re: Textdatei nach bestimmten Begriff durchsuchen
Hm, also mit lower und uppercase könnte ich zwar Den Text in groß und klein wandeln, aber was ist denn wenn es gemisch ist? cg, CG oder Cg.
Gibts nicht noch ne andere Lösung bzw Suchmethode? |
Re: Textdatei nach bestimmten Begriff durchsuchen
SameText() oder CompareText()
|
Re: Textdatei nach bestimmten Begriff durchsuchen
Hallo,
vielleicht solltest Du Dir einmal klar werden was Du willst. Eine case sensitive Behandlung des Textes, also mit Unterscheidung von cg, CG oder Cg. Das mach pos von Hause aus. Eine case insensitive Behandlung des Textes, keine Unterscheidung von cg, CG odewr Cg. Dann heißt es vor der Prüfung mit pos alles gleichzumachen. Grüße Klaus |
Re: Textdatei nach bestimmten Begriff durchsuchen
Ahhh tschuldigung Klaus01, ich glaub ich hab nur die Hälfte von deinem Vorschlag erkannt. Jetzt gleiche ich Text und Suchbegriff vor dem Vergleich auf lowercase an und es funktioniert! :)
Danke ncohmal an alle :) Richtiger Quellcode ist also:
Delphi-Quellcode:
procedure TForm5.SuchestartenClick(Sender: TObject);
var StringList : TStringList; s : string; i : byte; begin memo1.clear; for i := 1 to 100 do begin StringList := TStringList.Create; try StringList.LoadFromFile('\\Server\Datenbank\' + inttostr(i) + '.txt'); s := lowercase(StringList.Text); if pos(lowercase(edit1.text), s) > 0 then memo1.lines.add (inttostr(i)); finally StringList.free; end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:01 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-2025 by Thomas Breitkreuz