Hi,
ich muss einen Verzeichnisbaum einlesen und dabei Dateinamen, Dateigröße und Erstellungsdatum einlesen und mit einer Datenbank abgleichen. Tatsächlich handelt es sich nur um 2 Verzeichnisebenen. Allerdings immer über Netzwerk.
Zur Zeit nutze ich FindFirst/FindNext, und das dann recursiv. Es handelt ich ca. um 37000 Dateien.
Leider dauert das verhältnismäßig lange im Vergleich zur danach folgenden Datenbankoperation.
Gibt es schon signifikant schnellere Möglichkeiten, oder ist da nicht mehr viel rauszuholen?
Delphi-Quellcode:
procedure TThreadLoadBilderArchivieren.BilderEinlesen(
Pfad: string);
var
sr: TSearchRec;
b: TBild;
begin
if self.Terminated then Exit;
if FindFirst(Pfad+'*.*', faAnyFile, sr)=0 then
repeat
if (sr.Name<>'.') and (sr.Name<>'..') and (LowerCase(sr.Name)<>'thumbs.db') then
begin
if sr.Attr and faDirectory = faDirectory then
begin
BilderEinlesen(Pfad+sr.Name+'\');
end else begin
if ExtractFileExt(sr.Name)<>'.tmb' then
begin
b:=TBild.Create;
b.lfdnr:=0;
b.Pfad:=Pfad+sr.Name;
b.Dateidatum:=FileDateToDateTime(sr.Time);
b.Groesse:=sr.size;
FBildList.Add(b);
end;
end;
end;
if self.Terminated then Break;
until FindNext(sr)<>0;
sysutils.FindClose(sr);
end;