Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Unterverzeichnisse durchsuchen (https://www.delphipraxis.net/51071-unterverzeichnisse-durchsuchen.html)

Kompon Ente 5. Aug 2005 10:02


Unterverzeichnisse durchsuchen
 
Hallo,

momentan arbeite ich an einem Programm, dass ein vom User bestimmtes Verzeichnis durchsucht (alle Dateien - nicht Ordner - liest) und dann in den jeweiligen Dateien durchguckt, ob das gesuchte Wort drin ist.

Zur Zeit ist das Programm so aufgebaut, dass immer nur die Dateien des aktuellen Verzeichnis durchsucht werden..

Ich möchte aber, dass auch Unterordner des gewählten Verzeichnisses durchsucht werden.

Hat da jemand eine Hilfestellung? Kein Lösungansatz, nur eine kleine Anregung...?

Komme da atm nicht weiter..

Matze 5. Aug 2005 10:05

Re: Unterverzeichnisse durchsuchen
 
FindAllFilesFindAllFiles: Recurse auf true setzen.


Nachtrag: Immer diese Tags...

yankee 5. Aug 2005 10:17

Re: Unterverzeichnisse durchsuchen
 
Ich habe demletzt für mich sowas ähnliches geschrieben. Es läd eine ganze Ordnerstruktur in ein Menü rein:
Delphi-Quellcode:
procedure TMainForm.addDir(dirinfo: TOrdnerInfo);
var temp: TMenuItem;
    procedure addItems(const pfad,filter: string; const Attr: integer; MenParent: TMenuItem);
    var sr: TSearchRec;
        temp: TMenuItem;
    begin
        if FindFirst(pfad + filter, attr, sr) =0 then
        repeat
            if (sr.Name ='.') or (sr.Name ='..') then continue;
            temp :=TMenuItem.Create(popupmenu1);
            temp.Caption :=sr.Name;
            if sr.Attr =faDirectory then addItems(pfad + sr.Name + '\', filter, Attr, temp)
            else temp.OnClick :=DateiClick;
            MenParent.Add(temp);
        until FindNext(sr) <> 0;
    end;
begin
    temp :=TMenuItem.Create(PopupMenu1);
    temp.Caption :=dirinfo.ItemNamed['label'].Value;
    addItems(IncludeTrailingPathDelimiter(dirinfo.ItemNamed['pfad'].Value), dirinfo.ItemNamed['filter'].Value, dirinfo.ItemNamed['Attr'].IntValue, temp);
    with Popupmenu1.Items.Find('Verzeichnisse') do
    begin
        Add(temp);
        Visible :=true;
    end;
end;
dirinfo ist hier einfach nur ein xml-Element, aus dem ich pfad, filter usw. auslese. Da kannst du natürlich auch was "normales" reinschrieben.

alf.stefan 5. Aug 2005 10:45

Re: Unterverzeichnisse durchsuchen
 
hallo

müsste das nicht irgendwie so gehen

Delphi-Quellcode:
function getDir(path: string):TStrings;
var
  sr : TSearchRec;
  newPath : string;
begin
    result := TStringList.Create;
    if FindFirst(includeTrailingPathDelimiter(path)+'*.*', faAnyFile, sr) = 0 then
    repeat
      if sr.Attr = faDirectory then
      begin
          if (sr.name<>'..') and (sr.name<>'.') then
          begin
            newPath := includeTrailingPathDelimiter(path)+sr.Name;
            result.Append(newPath+sr.Name);
            result.AddStrings(getDir(newPath));
          end;
      end;
    until FindNext(sr) <> 0;
    FindClose(sr);
end;
gruß

stefan

Kompon Ente 5. Aug 2005 10:54

Re: Unterverzeichnisse durchsuchen
 
Hi!

Hier mal meine aktuelle Funktion:

Delphi-Quellcode:
function TFrmMain.sucheWort(aDatei: String): Boolean;
var
  F: TextFile;
  line: String;
begin
  Result := False;

  try
    AssignFile(F, FPfad + aDatei);
    {$I-}
      Reset(F);
    {$I+}
    if not (IOResult <> 0) then
      while (not Eof(F)) do
      begin
        Readln(F, line);
        if (pos(UpperCase(FSuche), line) > 0) or (pos(FSuche, line) > 0) then
        begin
          Result := True;
          Break;
        end;
      end;
  finally
    {$I-}
      CloseFile(F);
    {$I+}
  end;
end;
Was muss ich denn ändern, damit auch die Dateien der Unterverzeichnisse angezeigt werden?

dahead 5. Aug 2005 11:00

Re: Unterverzeichnisse durchsuchen
 
@komponente:

der link den dir matze genannt hat, bietet dir alles was du brauchst.

Zitat:

Was muss ich denn ändern, damit auch die Dateien der Unterverzeichnisse angezeigt werden?
1.) alle dateien mit o. g. funktion suchen, bspw. in TStringList od. Array speichern.
2.) for schleife dieser dateien an deine suchewort prozedur senden.
3.) fertig

TeronG 5. Aug 2005 11:13

Re: Unterverzeichnisse durchsuchen
 
Zitat:

Zitat von Matze
FindAllFilesFindAllFiles: Recurse auf true setzen.

Kann ich nur empfehlen .. klappt recht gut und man hat alles geich in einer schönnen/handlichen TStringlist :thumb:

Kompon Ente 5. Aug 2005 13:38

Re: Unterverzeichnisse durchsuchen
 
:gruebel: .............. :wiejetzt:

Sorry, ich versteh Euch, aber ich weiß nicht wie ich's lösen kann :|

turboPASCAL 5. Aug 2005 14:39

Re: Unterverzeichnisse durchsuchen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Kann es sein das du eine KomponEnte suchst ?


Hier eine Fertiglösung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz