![]() |
Dateien suchen + bearbeiten
Hi.
Ich hab ein Programm geschrieben das bestimmte Strings aus einem RichEdit-Feld herausfiltert und in einer ListBox anzeigt. Es sind HTML-Dateien aus denen das Prog die Strings sucht. Jetzt zu meiner Frage. Ich will das das Prog ein Verzeichnis (C:\, D:\...) nach HTML-Dateien durchsucht und die HTML-Dateien irgendwie im Hintergrund oder wie auch immer öffnet und nach bestimmten Strings durchsucht und die mir dann in der ListBox anzeigt. Quasi ohne das ich die Datei selber öffnen muss. Ist das möglich? Bin noch ein Anfänger. |
Re: Frage ob folgendes funktionieren könnte?
Ich habe Deine Frage erst gar nicht gelesen.
Bitte ändere erstmal Deinen Titel zu was aussagekräftigem. Danach schau ich nochmal drüber :zwinker:. |
Re: Frage ob folgendes funktionieren könnte?
Servus sniffy!
Verzeichnisse nach Html-Dateien durchsuchen kannst du mit dieser Prozedur:
Code:
Aufruf:
procedure SearchFiles(Ext,StartDir: string;Recursive: Boolean; List: TStrings);
var Rec: TSearchRec; i: integer; Dir : string; begin Dir := StartDir; if AnsiLastChar(Dir) <> '\' then Dir := Dir + '\'; i := FindFirst(StartDir+'*',faAnyFile,Rec); while i = 0 do begin Application.ProcessMessages; //optional if Pos(Ext,Rec.Name) > 0 then List.Add(Dir+Rec.Name); if ((Rec.Attr and faDirectory) > 0) and (Rec.Name <> '.') and (Rec.Name <> '..') and Recursive then begin if AnsiLastChar(Rec.Name) <> '\' then Rec.Name := Rec.Name + '\'; SearchFiles(Ext,StartDir+Rec.Name,Recursive,List); end; i := FindNext(Rec); end; FindClose(Rec); end;
Code:
Grüße Flo
procedure TForm1.Button1Click(Sender: TObject);
begin begin SearchFiles('.html','C:\',true,ListBox1.Items); end; |
Re: Frage ob folgendes funktionieren könnte?
Danke für deine Bemühungen Wuaegner!
So weit war ich auch schon. Ich will wenn ich ein Verzeichnis durchsuche das dann wenn eine Datei gefunden wird, sofort die Datei geöffnet wird (irgend was vielleicht mit exklusivem öffnen zu tun?) und dann automatisch nach einem bestimmten String durchsucht wird! :!: Quasi alles in einem Durchgang. Und zuletzt soll das Prog mir in der ListBox die gefundenen Strings anzeigen. |
Re: Frage ob folgendes funktionieren könnte?
Würdest du bitte noch dein Topic gemäß den Forenregeln anpassen, wie es dir schon gesagt wurde?
|
Re: Dateien suchen + bearbeiten
erledigt! 8)
|
Re: Dateien suchen + bearbeiten
Mit dem erledigt meinte ich das ich den Namen des Themas gändert hab.
Ich brauch trotzdem unbedingt HILFE! |
Re: Dateien suchen + bearbeiten
Zitat:
|
Re: Dateien suchen + bearbeiten
@sniffy: beiträge kann man auch editieren. ;)
Benutze doch mal die Suche in der DP, diese ist wirklich erstklassig: ![]() Edit: Wenn du die Pfade der html-Dateien alle z.B. in einer Stringlist hast, kannst du sie auch alle in einer extra Stringlist öffnen und durchsuchen ( ![]() ![]() ![]() ![]() Also nur mal so als Beispiel, vielleicht nich gerade Resourcenschonend, aber es geht. |
Re: Dateien suchen + bearbeiten
@Luckie
ok. ich versuchs. Momentan sieht das Programm so aus: Ich hab ein Panel für "Datei öffnen", der HTML-Dateien in ein RichEdit öffnet. Und ich hab noch ein Panel für Strings suchen/anzeigen. Der durchsucht die HTML-Datei nach bestimmten Strings und listet die in einer ListBox auf. In meinem Fall alle Strings die mit cd_ und ld_ anfangen. Jetzt will ich aber das das Programm z.B. die C:\ Festplatte nach HTML-Dateien durchsucht. Wenn das Prog die Platte durchsucht hat soll das Prog dann direkt (mit den gefundenen HTML-Dateien)mit den durchsuchen der bestimmten Strings fortfahren ohne die Dateien in ein RichEdit oder sonst wo zu öffnen/laden. Das soll dann irgendwie im Hintergrund oder so gemacht werden. Wenn er dann die Strings gefunden hat soll das Prog dann die gefundenen Strings in eine ListBox anzeigen. Ich hoffe das ich jetzt etwas deutlcher war. |
Re: Dateien suchen + bearbeiten
Deutlich ja. Aber ich verstehe dein Problem nicht. Wie man Dateien findet wurde dir gesagt. Wie du sie in eine StringListe bekommst auch. Wie du eine Datei aus der Stringliste in ein RichEdit bekommst weißt du wohl auch schon. Mit
![]() |
Re: Dateien suchen + bearbeiten
Blos nicht im Richedit in Hintergrund ausgeben, mach's mit einer StringList, das ist deutlich schneller.
Mit den Tipps, die du hier bekommen hast, sollte es für dich kein Problem sein, dies umzusetzen. |
Re: Dateien suchen + bearbeiten
Was ich sagen wollte: Wenn du so ein komplexes Problem hast, zerleg es in überschaubare Teilprobleme und löse die nacheinander.
|
Re: Dateien suchen + bearbeiten
Danke Leute. Werd's versuchen.
:thumb: |
Re: Dateien suchen + bearbeiten
Hi. Klappt alles soweit. Naja nicht wirklich alles, aber ist ja auch egal.
Ich hab jetzt ein anderes Problem. Mein Prog such ja Verzeichnisse nach HTML-Dateien ab. Klappt ja auch eigentlich. Mir ist aber aufgefallen das er nicht in Unsichtbaren ordner suchen kann, spirch in C:\Dokumente und Einstellungen\user\Lokale Einstellungen\Temporary Internet Files\. Da der Ordner Lokale Einstellugen unsichtbar ist kann er folglich im Ordner Temporary Internet Files keine Dateien finden und das sind ja ne menge drin. Hier die Such-Prozedur:
Delphi-Quellcode:
Wäre nett wenn mir jemand sagen könnte das das Programm auch unsichbare Ordner nach HTML-Dateien scannen kann.
procedure GetFiles(const ADirectory: string; Files: TStrings;
SubFolders: Boolean); // Hilfsfunktion, um Schrägstriche zu entfernen bzw. hinzuzfügen, wenn nötig function SlashSep(const Path, S: string): string; begin if AnsiLastChar(Path)^ <> '\' then Result := Path + '\' + S else Result := Path + S; end; var SearchRec: TSearchRec; nStatus: Integer; begin //Zuerst alle Dateien im aktuelle Verzeichnis finden //Anstatt *.* kann auch etwas anderes wie *.jpg oder *.gif eingegeben werden, //um nur Dateien eines bestimmten Typs zu finden. nStatus := FindFirst(PChar(SlashSep(ADirectory, '*.html')), 0, SearchRec); while nStatus = 0 do begin Files.Add(SlashSep(ADirectory, SearchRec.Name)); nStatus := FindNext(SearchRec); end; FindClose(SearchRec); //Als nächstes nach Unterverzeichnissen suchen und wenn benötigt durchsuchen if SubFolders then begin nStatus := FindFirst(PChar(SlashSep(ADirectory, '*.*')), faDirectory, SearchRec); while nStatus = 0 do begin //Wenn es ein Verzeichnis ist, Rekursion verwenden if ((SearchRec.Attr and faDirectory) <> 0) then begin if ( (SearchRec.Name <> '.') and (SearchRec.Name <> '..') ) then GetFiles(SlashSep(ADirectory, SearchRec.Name), Files, SubFolders); end; nStatus := FindNext(SearchRec) end; FindClose(SearchRec); end; end; Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 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