![]() |
Re: FindFirstFile: Wie suche ich auch in Unterordnern?
Und jetzt das ganze noch ohne TStrings und somit ohne die Unit Classes.pas:
Delphi-Quellcode:
type
TStringDynArray = array of string; var FileCount: Cardinal = 0; Files : TStringDynArray = nil; function FindAllFiles(RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True): TStringDynArray; var wfd : TWin32FindData; hFile : THandle; begin if AnsiLastChar(RootFolder)^ <> '\' then RootFolder := RootFolder + '\'; if Recurse then begin hFile := FindFirstFile(PChar(RootFolder + '*.*'), wfd); if hFile <> INVALID_HANDLE_VALUE then try repeat if wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = FILE_ATTRIBUTE_DIRECTORY then if (string(wfd.cFileName) <> '.') and (string(wfd.cFileName) <> '..') then FindAllFiles(RootFolder + wfd.cFileName, Mask, Recurse); until FindNextFile(hFile, wfd) = False; finally windows.FindClose(hFile); end; end; hFile := FindFirstFile(PChar(RootFolder + '*.*'), wfd); if hFile <> INVALID_HANDLE_VALUE then try repeat if wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <> FILE_ATTRIBUTE_DIRECTORY then begin FileCount := length(Files)+1; Setlength(Files, FileCount); Files[FileCount - 1] := RootFolder + String(wfd.cFileName); end; until FindNextFile(hFile, wfd) = False; finally Windows.FindClose(hFile); end; end; procedure TForm1.Button1Click(Sender: TObject); var i : Integer; begin Files := nil; FindAllFiles('d:\Dokumente', '*.*', True); for i := 0 to length(Files) - 1 do begin Listbox1.Items.Add(Files[i]); end; end; |
Re: FindFirstFile: Wie suche ich auch in Unterordnern?
Die Prozedur kommt ja wie gerufen...
|
Re: FindFirstFile: Wie suche ich auch in Unterordnern?
perfekt luckie, danke :???:
|
Re: FindFirstFile: Wie suche ich auch in Unterordnern?
Zitat:
Oder welchen sinn macht es das Extension (Mask) zu übergeben ? Ich will schon alle Dateien addieren aber nur die welche dem Extension entsprechen.. Denke dann wäre es so richtig Oder ?
Delphi-Quellcode:
gruss Emil
hFile := FindFirstFile(PChar(RootFolder + '*.*'), wfd);
if hFile <> INVALID_HANDLE_VALUE then try repeat if wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <> FILE_ATTRIBUTE_DIRECTORY then begin if ExtractFileExt(String(wfd.cFileName)) = Mask then begin FileCount := length(Files)+1; Setlength(Files, FileCount); Files[FileCount - 1] := RootFolder + String(wfd.cFileName); end; end; until FindNextFile(hFile, wfd) = False; finally Windows.FindClose(hFile); end; |
Re: FindFirstFile: Wie suche ich auch in Unterordnern?
Das ist so damit der Fragesteller auch noch etwas machen muss und nicht einfach nur copy & paste machen kann :)
|
Re: FindFirstFile: Wie suche ich auch in Unterordnern?
Zitat:
Siehe Berichtigung meinerseits. Denke auch wenn man schon code bereitstellt dann sollte er auch funktionieren ;) kann es sein das einige Leute hier immer unfreundlicher werden ? gruss Emil |
Re: FindFirstFile: Wie suche ich auch in Unterordnern?
Mein Code funktioniert immer - nur eben manchmal nicht so, wie er soll. :mrgreen:
|
Re: FindFirstFile: Wie suche ich auch in Unterordnern?
Zitat:
Was macht es für einen sinn ein Extension innerhalb der Funktion zu übergeben wenn es nicht ausgewertet wird. Ansonsten ja er funktioniert. :) War auch nicht bös von mir gemeint .. hab mich halt nur gewundert. gruss Emil |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 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-2025 by Thomas Breitkreuz