Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Festplatte durchsuchen lassen??? (https://www.delphipraxis.net/42735-festplatte-durchsuchen-lassen.html)

Bernd29bln 23. Mär 2005 10:08

Re: Festplatte durchsuchen lassen???
 
hab ich gemacht aber die listbox bleibt leer. :roll:

Delphi-Quellcode:

procedure FindAllFiles(var FileList: TStrings; RootFolder: string; Mask: string =
  '*.*'; Recurse: Boolean = True);

var
  SR: TSearchRec;
begin
  IncludeTrailingPathDelimiter(RootFolder);

  if Recurse then
    if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then
    try
      repeat
        if SR.Attr and faDirectory = faDirectory then
            // --> ein Verzeichnis wurde gefunden
            //   der Verzeichnisname steht in SR.Name
            //   der vollständige Verzeichnisname (inkl. darüberliegender Pfade) ist
            //       RootFolder + SR.Name
          if (SR.Name <> '.') and (SR.Name <> '..') then
            FindAllFiles(FileList, RootFolder + SR.Name, Mask, Recurse);
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then
  try
    repeat
      if SR.Attr and faDirectory <> faDirectory then
      begin
          // --> eine Datei wurde gefunden
          //   der Dateiname steht in SR.Name
          //   der vollständige Dateiname (inkl. Pfadangabe) ist
          //       RootFolder + SR.Name
        Form1.ListBox1.Items.Add(RootFolder + SR.Name);
      end;
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;
end;
:wall:

alcaeus 23. Mär 2005 10:09

Re: Festplatte durchsuchen lassen???
 
Ich zitiere mal die Mieze:
Zitat:

Das ganze noch mal ohne das hardgecodete Memo in der Prozedur und somit besser allgemein verwendbarer
Einfach ein bisschen runterscrollen im ersten Beitrag, dann kommt der allgemeine Code, dem man ein TStrings-Objekt übergeben kann.

Greetz
alcaeus

Bernd29bln 23. Mär 2005 10:14

Re: Festplatte durchsuchen lassen???
 
hi,

na den code hab ich doch da steht doch schon form1.listbox1.items.add
gucks du

Delphi-Quellcode:

procedure FindAllFiles(var FileList: TStrings; RootFolder: string; Mask: string =
  '*.*'; Recurse: Boolean = True);

var
  SR: TSearchRec;
begin
  IncludeTrailingPathDelimiter(RootFolder);

  if Recurse then
    if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then
    try
      repeat
        if SR.Attr and faDirectory = faDirectory then
            // --> ein Verzeichnis wurde gefunden
            //   der Verzeichnisname steht in SR.Name
            //   der vollständige Verzeichnisname (inkl. darüberliegender Pfade) ist
            //       RootFolder + SR.Name
          if (SR.Name <> '.') and (SR.Name <> '..') then
            FindAllFiles(FileList, RootFolder + SR.Name, Mask, Recurse);
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then
  try
    repeat
      if SR.Attr and faDirectory <> faDirectory then
      begin
          // --> eine Datei wurde gefunden
          //   der Dateiname steht in SR.Name
          //   der vollständige Dateiname (inkl. Pfadangabe) ist
          //       RootFolder + SR.Name
        Form1.ListBox1.Items.Add(RootFolder + SR.Name);
      end;
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;
end;

mirage228 23. Mär 2005 10:17

Re: Festplatte durchsuchen lassen???
 
Scroll im oben verlinken Thread mal runter. Da findest Du den (meinen) Code, den alcaeus gemeint hat, auch.

Guckst Du:
Delphi-Quellcode:
procedure FileList(const APath, AExt: string; ARecurse: Boolean;
  AList: TStrings);
var
  F   : TSearchRec;
  Path : string;
begin
  Path := IncludeTrailingPathDelimiter(APath); // nur für Delphi 4 und höher! 
  if (ARecurse) and
    (FindFirst(Path + '*.*', faAnyFile, F) = 0) then
  try
    repeat
      if (F.Name <> '.') and (F.Name <> '..') and
        ((F.Attr and faDirectory) = faDirectory) then
        FileList(Path + F.Name, AExt, ARecurse, AList);
    until FindNext(F) <> 0;
  finally
    FindClose(F);
  end;
  if FindFirst(Path + AExt, faAnyFile, F) = 0 then
  try
    repeat
      if (F.Name <> '.') and (F.Name <> '..') and
        ((F.Attr and faDirectory) <> faDirectory) then
        AList.Add(Path + F.Name);
    until FindNext(F) <> 0;
  finally
    FindClose(F);
  end;
mfG
mirage228

alcaeus 23. Mär 2005 10:17

Re: Festplatte durchsuchen lassen???
 
Zitat:

Zitat von Bernd29bln
Delphi-Quellcode:
Form1.ListBox1.Items.Add(RootFolder + SR.Name);

Ändere das wieder zurück in
Delphi-Quellcode:
FileList.Add(RootFolder + SR.Name);
und rufe die Funktion so auf:

Delphi-Quellcode:
procedure FindAllFiles(Form1.ListBox1.Items, <DeinPfad>, <DeineMask);
Das sollte dann klappen. Den zweiten Source musst du eben nicht anpassen, da er ja allgemein ist. Du musst einfach nur übergeben, wohin er die Strings kopieren soll.

Greetz
alcaeus

Bernd29bln 23. Mär 2005 10:24

Re: Festplatte durchsuchen lassen???
 
:hi: ich glaub ich lass es lieber ich bekomme es nicht auf die reihe dank euch trozdem.

gruss

Bernd29bln 23. Mär 2005 10:31

Re: Festplatte durchsuchen lassen???
 
die listbox bleibt troz allem leer kann nicht mal jemand die procedure posten für ne listbox.

für ganz doofe :wall:

Matze 23. Mär 2005 11:02

Re: Festplatte durchsuchen lassen???
 
Erst willst du aufgeben, 7 Minuten später doch nicht mehr.

Pushen ist auch innerhalb von 24 Stunden nicht gestattet.

Mach es so, das geht 100%
Delphi-Quellcode:
procedure FindAllFiles(RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True);
var
  SR: TSearchRec;
begin
  RootFolder := IncludeTrailingPathDelimiter(RootFolder);

  if Recurse then
    if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then
      try
        repeat
          if SR.Attr and faDirectory = faDirectory then
            if (SR.Name <> '.') and (SR.Name <> '..') then
              FindAllFiles(RootFolder + SR.Name, Mask, Recurse);
        until FindNext(SR) <> 0;
      finally
        FindClose(SR);
      end;
  if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then
    try
      repeat
        if SR.Attr and faDirectory <> faDirectory then
        begin
          Form1.ListBox1.Items.Add(RootFolder + SR.Name);
        end;
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  FindAllFiles('f:\mp3s\', '*.mp3', true);
end;
Um mehrere Dateiendungen zu durchsuchen kannst du das ja hintereinander aufrufen.

Bernd29bln 23. Mär 2005 11:11

Re: Festplatte durchsuchen lassen???
 
hi Martze ,

danke dir muss ich noch was beachten wen ich den code einfüge ?

gruss bernd, :spin2:

Matze 23. Mär 2005 11:17

Re: Festplatte durchsuchen lassen???
 
Zitat:

Zitat von Bernd29bln
Martze

:shock: :mrgreen:

Zitat:

Zitat von Bernd29bln
danke dir muss ich noch was beachten wen ich den code einfüge ?

Ein Delphi-Tutorial wäre nicht schlecht für dich, das sind die Grundlagen.

Nein, du musst nichts beachten, alles in den implementation-Abschnitt. Eine ListBox auf's Formular.

Und aufrufen muss du das natürlich nicht über einen Button, war nur ein Beispiel.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19 Uhr.
Seite 2 von 3     12 3      

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