Alte Platten habe ich noch. Aber ein IDE Port? Ich musste schon mein DVD-Laufwerk abgklemmen, da zwei SATA-Ports mit dem M.2-Port verschaltet sind

Alte Platten habe ich noch. Aber ein IDE Port? Ich musste schon mein DVD-Laufwerk abgklemmen, da zwei SATA-Ports mit dem M.2-Port verschaltet sind
Hi!
Code: Alles auswählen
procedure TForm1.CountFiles(path: string; var dirs, files: integer);
var sr : TSearchRec;
i : integer;
begin
i := FindFirst(path + DirectorySeparator + AllFilesMask, faAnyFile, sr);
while (i = 0) do
begin
if (sr.name <> '.') and (sr.Name <> '..') then
begin
if (sr.Attr and faDirectory <> 0) then
begin
inc(dirs);
CountFiles(path + DirectorySeparator + sr.Name, dirs, files);
end else
begin
inc(files);
end;
end;
i := FindNext(sr);
end;
FindClose(sr);
end;
Code: Alles auswählen
function TForm1.TreeCount(StartDir: String): integer;
var search : TSearchRec;
DirAttr : integer;
begin
{$IFDEF LINUX} DirAttr := 48;
{$ELSE} DirAttr := faDirectory;
{$ENDIF}
result := 0;
if startDir[length(startDir)] <> DirectorySeparator then
startDir := startDir + DirectorySeparator;
if findFirst(startDir + AllFilesMask, faAnyFile, search) = 0 then
begin
repeat
if (search.name = '.') or (search.name = '..') then Continue;
if (search.Attr = DirAttr) then result := result + TreeCount(startDir+search.Name) else
inc (result);
until FindNext(search) <> 0;
end;
findClose(search);
end;
Code: Alles auswählen
procedure TForm1.runFindAllFiles;
var
ResultFiles: TStringList;
StartTime, EndTime : QWord;
row:integer;
begin
ResultFiles := TStringList.Create;
try
StartTime := GetTickCount64;
FindAllFiles(ResultFiles, DirectoryEdit1.Text, AllFilesMask, true);
EndTime := GetTickCount64;
row := StringGrid1.RowCount;
StringGrid1.RowCount := row + 1;
StringGrid1.Cells[0,row]:='FindAllFiles';
StringGrid1.Cells[1,row]:=inttostr(ResultFiles.Count);
//StringGrid1.Cells[2,row]:=inttostr(dirs);
StringGrid1.Cells[3,row]:=IntToStr (EndTime-StartTime);
finally
ResultFiles.Free;
end;
end;
Code: Alles auswählen
if (search.Attr = DirAttr) then result := result + TreeCount(startDir+search.Name) else
inc (result);
Aber immerhin kann man sagen, dass keine der getesteten Methoden signifikant schneller ist, als die anderen?charlytango hat geschrieben: ↑Fr 12. Mär 2021, 19:11Aber trotzdem gibt es da Unterschiede im ErgebnisScreenshot 2021-03-12 190241.png
Aus meiner Sicht nicht wirklich, denn solange alle drei Methoden unterschiedliche Zähl-Ergebnisse liefern ist die Zeit nur im Verhältnis zu Dateizahl zu vergleichen.
danke f die Erklärungfliegermichl hat geschrieben: ↑So 14. Mär 2021, 13:16Bei mir zählt der Explorer genausoviele Ordner und Dateien wie meine Version.
Weshalb bei Winni weniger rauskommen, hatte ich ja oben schon geschrieben.