Registriert seit: 26. Okt 2005
Ort: Lippcity
404 Beiträge
Delphi 2005 Personal
|
Re: Dateigröße als String ausgeben
28. Feb 2009, 15:18
Ich hab die überarbeitete Version von DeddyH mit dem einwand von Lucki kombiniert. Dabei bin ich davon ausgegangen, dass die Methode von Lucki die Größe in Byte liefert. Wenns anders ist bitte schreit
Delphi-Quellcode:
function GetFileSizeAsString(FileName: string; Use1024: Boolean = true): string;
const Sizes1024: array[0..7] of string = ('KiB','MiB','GiB','TiB','PiB','EiB','ZiB','YiB');
Sizes1000: array[0..7] of string = ('KB','MB','GB','TB','PB','EB','ZB','YB');
var
Size: Extended;
_Unit: integer;
S: string;
Divisor: Integer;
fFile: THandle;
wfd: TWin32FINDDATA;
begin
if not FileExists(FileName) then
begin
Result := 'FNE';
Exit;
end;
try
fFile := FindFirstfile(PChar(FileName), wfd);
if fFile = INVALID_HANDLE_VALUE then
begin
Result := 'ERR';
Exit;
end;
if Use1024 then
Divisor := 1024
else
Divisor := 1000;
Size := ((wfd.nFileSizeHigh * (Int64(MAXDWORD) + 1)) + wfd.nFileSizeLow) / Divisor; // Size in Kib or KB
windows.FindClose(fFile);
_Unit := Low(Sizes1024);
while (Size >= Divisor) and (_Unit < High(Sizes1024)) do
begin
Size := Size / Divisor;
Inc(_Unit);
end;
if Use1024 then
S := Sizes1024[_Unit]
else
S := Sizes1000[_Unit];
Result := Format('%.2f %s',[Size,S]);
except
Result := 'ERR';
end;
end;
Robin W. Ein Computer kann (fast) alles.... Man muss es ihm nur beibringen
|
|
Zitat
|