Даже подойдёт без вложенных папок - потом можно просуммировать.
Сейчас приходится делать обход всех вложенных папок с подсчётом файлов через компонент FileSearch, а это не быстро при больших объёмах.
В основном всё такие решения:
procedure GetAllFiles( Path: string; Lb: TListBox );
var
sRec: TSearchRec;
isFound: boolean;
begin
isFound := FindFirst( Path + ‘\*.*’, faAnyFile, sRec ) = 0;
while isFound do
begin
if ( sRec.Name <> ‘.’ ) and ( sRec.Name <> ‘..’ ) then
begin
if ( sRec.Attr and faDirectory ) = faDirectory then
GetAllFiles( Path + ‘\’ + sRec.Name, Lb );
Lb.Items.Add( Path + ‘\’ + sRec.Name );
end;
Application.ProcessMessages;
isFound := FindNext( sRec ) = 0;
end;
FindClose( sRec );
end;