Hallo Moony,
Über das Netzwerk ist es tatsächlich so, dass die Zeiten deutlich länger sind als auf Lokalen Festplatten des Rechners.
Deinen Algo würde ich erstmal so anpassen wie auch schon von anderen vorgeschlagen:
Delphi-Quellcode:
procedure ListFiles(Path, Ext: string; FileList: TStrings; Attr: integer);
var
SR : TSearchRec;
CheckAttrAndNotRefreshAll : Boolean; // neu
begin
if Length(Path) > 0 then
Path := IncludeTrailingBackslash(Path);
//Ext := UpperCase(Ext); // neu
CheckAttrAndNotRefreshAll := (fmPhoto.ImageSet.CheckAttr) and (not fmPhoto.DoRefreshAll); // neu
if FindFirst(Path + '*' + Ext, faAnyFile, SR) = 0 then // Stern eingefügt
begin
FileList.BeginUpdate;
try
repeat
if (SR.Attr and faDirectory) = 0 then
begin
if CheckAttrAndNotRefreshAll then
begin
if (SR.Attr and Attr) = 0 then
Continue;
end;
// Brauchst du das Hier wirklich?
//if UpperCase(ExtractFileExt(SR.Name)) = Ext then
//begin
FileList.Add(SR.Name);
//end;
end;
until FindNext(SR) <> 0;
finally
FileList.Endupdate;
end;
SysUtils.FindClose(SR);
end;
end;
Wobei ich nicht ganz verstehe, wie du die MEthode aufrufst. Bei mir würde meine Version so aussehen:
Listfiles('X:\TestVieleDateien', '.jpg', ListBox1.Items, 0);
Somit wird auch der Vergleich auf die Variable Ext unnötig. Oder hab ich das jetzt was falsch verstanden?
Greez, Chris
[EDIT]Quelltext angepasst wegen Beitrag #9, #11, #13. Danke DeddyH und himitsu[/EDIT]