Einzelnen Beitrag anzeigen

Benutzerbild von robinWie
robinWie

Registriert seit: 26. Okt 2005
Ort: Lippcity
404 Beiträge
 
Delphi 2005 Personal
 
#12

Re: Dateigröße als String ausgeben

  Alt 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
  Mit Zitat antworten Zitat