Einzelnen Beitrag anzeigen

sharkx

Registriert seit: 24. Feb 2003
Ort: St. Ingbert
211 Beiträge
 
Delphi 7 Enterprise
 
#1

filesize summieren und von byte nach Mb rechnen

  Alt 21. Nov 2003, 22:17
Hallöle ..

Ich weiß das..
8 Bit = 1 Byte
1024 byte = 1KB
1024KB = 1Mb
sind, aber nun habe ich heute im Netz gelesen, das man mit Delphi nicht mit diesen zahlen rechnen soll, sondern 1Kb = 1000Byte nehmen soll, warum auch immer?!


nun zu dem eigentlichen problem.

Delphi-Quellcode:

// Result = byte
function GetFileSize(FileName: String): Integer;
var
  SR: TSearchRec;

begin
  if FindFirst(Filename, faAnyFile, SR) = 0 then
    begin
      Result := SR.Size;
    end
  else
    begin
      Result := -1;
    end;
  FindClose(SR);
end;


// Complete Bar enthällt nicht die tatsächliche Grösse aller in der SFV File befindlichen dateien
Function Status(Wert: Integer; FileSize: Integer): String;
Var
  I: Integer;

Begin
  If Wert = sfvfile.count then
    Result := '[AA] - ( ' + IntToStr(sfvfile.count) + 'F ' + IntToStr(FileSize div 1024 div 1024) + 'M - COMPLETE ) - [AA]'
  else
    Begin
      Result := '[';
        for i := 0 to (((Wert * sfvfile.count) div 100) div 10)-1 do
          Result := Result + '#';
        for i := (((Wert * sfvfile.count) div 100) div 10)+1 to 10 do
          Result := Result + '-';
          Result := Result + '] - ' + IntToStr((Wert * sfvfile.count) div 100) + '% Complete - [AA]';
    end;
  OldStatus := Result;
End;


// und so zähle ich die filesize hoch ...
var
  FSize : Integer;
  dir : String; // enthällt den Pfad zur Datei
  filen : String; // der Dateinamen

begin
...

  FSize := FSize + GetFileSize(dir + filen);

end;

Als beispiel habe ich einen ordner mit Gesammtgrösse der Dateien von 4,6GB genommen. Als Ergebniss in dem Statusbalken bekomme ich aber 52MB raus.

Wo liegt das Problem bzw was hab ich da falsch gemacht?
Programming today is a race between Software Engineers striving to build bigger and better idiot-proof Programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning!
  Mit Zitat antworten Zitat