AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Unterordner eines Ordners suchen

Ein Thema von Van HelF · begonnen am 27. Okt 2005 · letzter Beitrag vom 27. Okt 2005
Antwort Antwort
Van HelF

Registriert seit: 24. Okt 2005
Ort: Karlsbrunn
195 Beiträge
 
Delphi 7 Personal
 
#1

Unterordner eines Ordners suchen

  Alt 27. Okt 2005, 12:39
Ich habe ein problem, und zwar will ich ein programm schreiben, dass mir alle UNTERORDNER (und auch deren) anzeigt.
Ich möchte darauf hinweisen, dass ich sehr wohl die forumsuche und google dazu genutzt habe entsprechende beispiele zu finden, bisher jedoch ohne erfolg. Prinzipiell wurde dann immer auf "dateien in unterordnern suchen" verwiesen, aber das will ich ja nicht.
Ich bräuchte ein beispiel, wie man sich nur die unterordner(und deren) eines ordners in einer listbox ausgeben lassen kann.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Unterordner eines Ordners suchen

  Alt 27. Okt 2005, 12:52
Du kannst mir nicht erzählen, dass dir die Suche nicht Delphi-Referenz durchsuchenFindFirst ausgespuckt hat . Besonders der zweite Parameter dürfte interessant sein. Wie man die Funktion (+ FindNext und FindClose) verwendet, siehst du zum Beispiel bei FindAllFilesFindAllFiles.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von St.Pauli
St.Pauli

Registriert seit: 26. Dez 2004
351 Beiträge
 
Delphi 7 Personal
 
#3

Re: Unterordner eines Ordners suchen

  Alt 27. Okt 2005, 12:56
Man muss sich ja nicht mit FindFirst / FindNext rumschlagen. In der Codelib sind ja auch Beiträge zum suchen von Dateien, die dann einfach ein bisschen umschreiben...

Delphi-Quellcode:
procedure GetFilesInDirectory(Directory: String; const Mask: String;
                              List: TStrings;
                              WithSubDirs, ClearList: Boolean);

procedure ScanDir(const Directory: String);
var
  SR: TSearchRec;
  Dir : string;
begin
  if FindFirst(Directory + Mask, faAnyFile, SR) = 0 then try
    repeat
      Application.ProcessMessages;
      IF (Dir <> Directory) THEN
        begin
          List.Add(Directory);
          Dir := Directory;
        end;
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;

  if WithSubDirs then begin
    if FindFirst(Directory + '*.*', faAnyFile, SR) = 0 then try
      repeat
        Application.ProcessMessages;
        if ((SR.attr and faDirectory) = faDirectory) and
           (SR.Name <> '.') and (SR.Name <> '..') then
          ScanDir(Directory + SR.Name + '\');
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  end;
end;

begin
  List.BeginUpdate;
  try
    if ClearList then
      List.Clear;
    if Directory = 'then Exit;
    if Directory[Length(Directory)] <> '\then
      Directory := Directory + '\';
    ScanDir(Directory);
  finally
    List.EndUpdate;
  end;
end;
Aufruf:

GetFilesInDirectory('C:\', '*.*', ListBox1.Items, True, True); Natürlich ist die Methode etwas zeitintensiv....

Edit1: Application.ProcessMessages...
Gruß St.Pauli
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Unterordner eines Ordners suchen

  Alt 27. Okt 2005, 12:56
Wenn alle Stricke reißen - die DirectoryListBox aus der Palette "Win 3.1" kann vielleicht schon alles, was du willst.

Grüße vom marabu
  Mit Zitat antworten Zitat
Van HelF

Registriert seit: 24. Okt 2005
Ort: Karlsbrunn
195 Beiträge
 
Delphi 7 Personal
 
#5

Re: Unterordner eines Ordners suchen

  Alt 27. Okt 2005, 13:00
Sicher kenne ich findfirst ich habe auch schon versucht eine function hier im forum umzubasteln (durch ändern von faanyfile, in fadirectory) hat jedoch nicht den gewünschten effekt erbracht. Hat mir trotzdem noch dateien angezeigt.

Zur directorylistbox: die verwende ich monentan, nur es haben sich einige probleme damit ergeben, deswegen suche ich einen anderen weg
  Mit Zitat antworten Zitat
Benutzerbild von St.Pauli
St.Pauli

Registriert seit: 26. Dez 2004
351 Beiträge
 
Delphi 7 Personal
 
#6

Re: Unterordner eines Ordners suchen

  Alt 27. Okt 2005, 13:09
Zitat von Van HelF:
Sicher kenne ich findfirst ich habe auch schon versucht eine function hier im forum umzubasteln (durch ändern von faanyfile, in fadirectory) hat jedoch nicht den gewünschten effekt erbracht. Hat mir trotzdem noch dateien angezeigt.
Look @ meine Funktion. Einfach die Parameter Attribute belassen und mim String altes und neues Directory vergleichen...
Gruß St.Pauli
  Mit Zitat antworten Zitat
Van HelF

Registriert seit: 24. Okt 2005
Ort: Karlsbrunn
195 Beiträge
 
Delphi 7 Personal
 
#7

Re: Unterordner eines Ordners suchen

  Alt 27. Okt 2005, 13:12
Ich verstehe nicht ganz was du meinst, bzw damit bezweckst ...
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Unterordner eines Ordners suchen

  Alt 27. Okt 2005, 13:16
Hier das ganze in Grün - aber mit TreeView zur Visualisierung:

Delphi-Quellcode:
procedure AllFolders(root: string; nodes: TTreeNodes; tnParent: TTreeNode);
var
  sr: TSearchRec;
  tn: TTreeNode;
begin
  root := IncludeTrailingPathDelimiter(root);
  if FindFirst(root + '*.*', faAnyFile, sr) = 0 then
  try
    repeat
      Application.ProcessMessages;
      if (sr.Name <> '.')
      and (sr.Name <> '..')
      and ((sr.Attr and faDirectory) = faDirectory) then
      begin
        tn := nodes.AddChild(tnParent, sr.Name);
        AllFolders(root + sr.Name, nodes, tn);
      end else
        Continue;
    until FindNext(sr) <> 0;
  finally
    FindClose(sr);
  end;
end;

procedure TDemoForm.ListButtonClick(Sender: TObject);
begin
  with TreeView do
  begin
    Items.Clear;
    Items.BeginUpdate;
    AllFolders('C:\DATEN', Items, nil);
    Items.EndUpdate;
  end;
end;
marabu
  Mit Zitat antworten Zitat
Van HelF

Registriert seit: 24. Okt 2005
Ort: Karlsbrunn
195 Beiträge
 
Delphi 7 Personal
 
#9

Re: Unterordner eines Ordners suchen

  Alt 27. Okt 2005, 13:28
Ich danke, habe es auf eine listbox umgeschrieben und es funktioniert ...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:39 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