Ich muss hier doch noch mal eine Post aufmachen.
Mit der Rekursion und dem setzen des Bool'schen Parameters, das bekomme ich noch nicht so ganz hin.
Delphi-Quellcode:
procedure TForm_Main.TransferToDB(Sender : TObject);
begin
FFinished := False;
FindAllFiles(FOrdner, '*.' + FTyp, FRekursion);
end;
procedure TForm_Main.FindAllFiles(RootFolder: String; Mask: String = '*.*'; Recurse: Boolean = true);
var
wfd : TWin32FindData;
hFile : THandle;
begin
while not FCancelled or not FFinished do
begin
FFinished := True;
if (AnsiLastChar(RootFolder)^ <> '\') then
RootFolder := RootFolder + '\';
if Recurse then
begin
hFile := FindFirstFile(PChar(RootFolder + '*.*'), wfd);
if (hFile <> INVALID_HANDLE_VALUE) then
begin
FFinished := False;
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
FFinished := True;
Windows.FindClose(hFile);
end;
end; (* of if *)
end; (* of if *)
hFile := FindFirstFile(PChar(RootFolder + '*.*'), wfd);
if (hFile <> INVALID_HANDLE_VALUE) then
begin
FFinished := False;
try
repeat
if (wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <> FILE_ATTRIBUTE_DIRECTORY) then
begin
//Bearbeitung
if (LowerCase(ExtractFileExt(wfd.cFileName)) = Copy(Mask, 2, Length(Mask) - 1)) then
AddFileInfo(RootFolder + wfd.cFileName);
Application.ProcessMessages;
end; (* of if *)
until FindNextFile(hFile, wfd) = False;
finally
FFinished := True;
Windows.FindClose(hFile);
end;
end; (* of if *)
end;
end;
Wenn eine Datei gefunden wurde, setze ich FFinished auf False, bei dem FindClose wieder auf True.
Nach Beginn setze ich FFinished auch auf True, für denn Fall, dass gar keine Datei gefunden wird.
Und vor dem Aufruf von FindAllFiles setze ich es auf False, damit die Schleife durchlaufen wird.
Allerdings liest der Code die Dateien immer von vorne ein, wenn ich einen Ordner durchsucht habe, könnt ihr mir da bitte nochmal helfen?
Vielen Dank und freundliche Grüße
Lorenz
Ich habe viel von meinem Geld für Alkohol, Weiber und schnelle Autos ausgegeben ... Den Rest habe ich einfach verpraßt.
George Best - 22.05.1946 - 25.11.2005 - nordirischer Fußballspieler