Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Laufwerkinhalt in ein treeview? (https://www.delphipraxis.net/88259-laufwerkinhalt-ein-treeview.html)

Amo 12. Mär 2007 17:42


Laufwerkinhalt in ein treeview?
 
Hi coder :-D

ich habe folgendes Problemchen: ich komme nicht drauf wie ich es schaffen könnte die Struktur oder den Inhalt zB meines C: Laufwerks in ein Treeview auszugeben. Ich möchte nähmlich ordner, unterordner und die dateien sehen können.
Dazu habe ich schon diesen Thread gefunden: Ordnerinhalt in eine Listbox , aber wirklich geholfen hat das nicht...

elundril 12. Mär 2007 17:47

Re: Laufwerkinhalt in ein treeview?
 
einfach ein laufwerk rekuriv durchsuchen. jedes mal wenn der Ordner aufgerufen wird ein neues Subitem aufrufen. und für jede Datei ein Item erstellen.

lg el

Amo 12. Mär 2007 18:00

Re: Laufwerkinhalt in ein treeview?
 
Hm... laufwerk durchsuchen klingt nicht gerade easy und mit aussortieren..
ich habe hier etwas möglicherweise hilfreiches gefunden. Könnte ich damit etwas erreichen für mein ziel?

Delphi-Quellcode:
procedure FindAllFiles(FileList: TStrings; RootFolder: string; Mask: string ='*'; Recurse: Boolean = True; AddFolderNames: Boolean = False; IgnoreMaskAtFolderNames: Boolean = True);
  procedure LFindAllFiles(AParentFolder: String);
  var LSearchRec: TSearchRec;
  begin
    if FindFirst(AParentFolder + '*', faAnyFile, LSearchRec) = 0 then
    begin
      repeat
        if (LSearchRec.Name <> '.') and (LSearchRec.Name <> '..') then
        begin
          if LSearchRec.Attr and faDirectory = faDirectory then
          begin
            if AddFolderNames and
               (IgnoreMaskAtFolderNames or Like(AnsiLowerCase(LSearchRec.Name), Mask)) then
              FileList.AddObject(AParentFolder + LSearchRec.Name, TObject(True));
            if Recurse then
              LFindAllFiles(AParentFolder + LSearchRec.Name + '\');
          end
          else if Like(AnsiLowerCase(LSearchRec.Name), Mask) then
            FileList.AddObject(AParentFolder + LSearchRec.Name, TObject(False));
        end;
      until FindNext(LSearchRec) <> 0;
      FindClose(LSearchRec);
    end;
  end;
begin
  Mask := AnsiLowerCase(Mask);
  LFindAllFiles(IncludeTrailingPathDelimiter(RootFolder));
end;

marabu 12. Mär 2007 18:59

Re: Laufwerkinhalt in ein treeview?
 
Hallo,

du könntest in deinem Programm auch einfach die Komponente TShellTreeView verwenden - einfach von der Palettenseite "Beispiele" auf deine Form ziehen und "C:\" als Root eintragen. Dann geht alles wie von selbst.

Grüße vom marabu

Amo 12. Mär 2007 19:22

Re: Laufwerkinhalt in ein treeview?
 
Huyyy, coole Sache, diese Komponente kannte ich noch gar nicht :thumb:

Jetzt nur noch eine Sache: wie kann ich das was angezeigt wird abspeichern, sodass ich es auf einem anderen PC sehen kann (wie es auf dem anderen war)? ist das möglich?

ghost007 12. Mär 2007 19:31

Re: Laufwerkinhalt in ein treeview?
 
nochmal wegen dem nach dateien "scanen" der code sollte auch gehn:
Delphi-Quellcode:
var
 count:integer

....

procedure GetAllFiles(mask: string);
var
  search: TSearchRec;
  directory: string;
begin
  directory := ExtractFilePath(mask);

  //alle dateien suchen
  if FindFirst(mask, $23, search) = 0 then
  begin
    repeat
      // add the files to the listbox
      Form1.ListBox1.Items.Add(directory + search.Name);
      Inc(Count);
    until FindNext(search) <> 0;
  end;

  //Unterverzeichnisse
  if FindFirst(directory + '*.*', faDirectory, search) = 0 then
  begin
    repeat
      if ((search.Attr and faDirectory) = faDirectory) and (search.Name[1] <> '.') then
        GetAllFiles(directory + search.Name + '\' + ExtractFileName(mask));
    until FindNext(search) <> 0;
    FindClose(search);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  directory: string;
  mask: string;
begin
  Count := 0;
  Listbox1.Items.Clear;

  directory := 'C:\temp\'; //verzeichnis, ab dem er suchen soll
  mask := '*.*';

  Screen.Cursor := crHourGlass;
  try
    GetAllFiles(directory + mask);
  finally
    Screen.Cursor := crDefault;
  end;
  ShowMessage(IntToStr(Count) + ' Files found');
end;
Nur der vollständigkeit halber ;)

MfG - Ghost007

Amo 12. Mär 2007 19:45

Re: Laufwerkinhalt in ein treeview?
 
Hey das ist cool! und ich kanns auch nachvollziehen :zwinker:
Finde ich guuut, da wird die struktur nähmlich auch klar mit den unterordnern!

fetten THANKS :cheers: jetzt kanns weitergehen :coder: :zwinker:

ghost007 12. Mär 2007 20:48

Re: Laufwerkinhalt in ein treeview?
 
freut mich dir geholfen zu haben =)

viel spaß und glück ;)

MfG - Ghost

Amo 20. Mär 2007 19:31

Re: Laufwerkinhalt in ein treeview?
 
Yoooooo, ich bräuchte da noch einen kleinen tipp zur Erweiterung oder Änderung :?
nähmlich:
Was müsste ich da jetzt ändern wenn ich die versteckten dateien / ordner mit aufgelistet haben will?

nochmal danke im voraus :)

marabu 20. Mär 2007 19:42

Re: Laufwerkinhalt in ein treeview?
 
Hallo,

hier etwas Hilfe zur Selbsthilfe: Die Delphi Online Hilfe zeigt dir für die Funktion FindFirst() zwei Dinge - welche Attribute du für die Suche verwenden kannst und wo (Unit SysUtils) du deren Deklaration findest. Beim Suchen nach Dateien verwendest du $23 als Attribut-Kombination, was soviel wie (faArchive or faHidden or faReadOnly) bedeutet. Welche Änderung du bei den Verzeichnissen noch machen musst, das findest du jetzt bestimmt selbst heraus - oder?

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:08 Uhr.
Seite 1 von 2  1 2      

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