1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
// Conversion
Function SizeToStr( Size : Int64 ) : string;
begin
if Size >= $10000000000 then
Result := Format('%.2f To', [Size / $10000000000])
else if Size >= $40000000 then
Result := Format('%.2f Go', [Size / $40000000])
else if Size >= $100000 then
Result := Format('%.2f Mo', [Size / $100000])
else if Size >= $400 then
Result := Format('%.2f Ko', [Size / $400] )
else
Result := Format('%d Octets', [Size] );
end;
// Recherche fichier
Function RechFile(Root, Extension: String; Item: TListItem; List: TListview) : String;
var
Rec: TSearchRec;
ToSize : Int64; // <---
begin
ToSize := 0; // <--- ( MON PROBLEME )
Root := IncludeTrailingPathDelimiter(Root);
Application.ProcessMessages;
if FindFirst(Root + Extension, faAnyFile - faDirectory, Rec) = 0 then
try
repeat
Item := List.Items.Add;
with Item do
begin
Caption := (Root); // Chemin
SubItems.Add (Rec.Name); // Nom du fichier
ToSize := ToSize + Rec.Size; // <--- ( Addition )
SubItems.Add(SizeToStr(Rec.Size)); // Taille du fichier
end;
until FindNext(Rec) <> 0;
finally
FindClose(Rec);
end;
if FindFirst(Root + '*.*', faDirectory, Rec) = 0 then
try
repeat
if ((Rec.Attr and faDirectory) <> 0) and (Rec.Name <> '.') and
(Rec.Name <> '..') then
RechFile(Root + Rec.Name, Extension, Item,List);
until FindNext(Rec) <> 0;
finally
FindClose(Rec);
end;
Result := SizeToStr(ToSize); // <--- ( Conversion )
end;
// List2 = Liste des extensions
// *.ini
// *.pas
// *.txt
// ...
procedure TForm1.Button1Click(Sender: TObject);
var
Item1: TListItem;
I : Integer;
begin // List2 = Liste des extensions
for I := 0 to List2.Items.Count -1 do
if List2.Items[I].Checked = true then
begin
ToSize.Caption := RechFile('C:\',List2.Items[I].Caption,Item1,List1);
end;
end; |
Partager