Einzelnen Beitrag anzeigen

Benutzerbild von kwhk
kwhk

Registriert seit: 25. Mär 2009
Ort: Dresden
168 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Ausgabe der FileGröße

  Alt 3. Jun 2013, 12:00
Wie hast Du die FileSize ermittelt ? Für Dateien > 2 GB braucht man INT64 und das bekommt man, wenn man die Dateigröße (64 Bit = 8 Bytes) aus dem Directory-Eintrag holt, andernfalls bekommst Du nur die unteren 4 Bytes und da wird das oberste Bit zum Vorzeichen.
Die AbfrageaFilesize > 1E12 wird FALSE, wenn aFileSize negativ ist, dann kommst Du zu BYTE mit der negativen Zahl.
Siehe auch hier http://www.delphipraxis.net/24331-da...ermitteln.html
Longint besitzt nur 32 Bit und kann die FileSize nur für kleinere Dateien darstellen.
Statt der Division FileSize/ 1024 sollte man lieber SHR benutzen
Delphi-Quellcode:
FileSize shr 10 // KBytes
FileSize shr 20 // MBytes
FileSize shr 30 // GBytes
FileSize shr 40 // TBytes
Cardinal statt LongInt ist auch nur für kleinere Dateien anwendbar, da damit ebenfalls nur die unteren 32 Bit der tatsächlichen FileSize (64 Bit) abbildbar sind.

Die Dezimalzahl 2.147.483.648 entspricht einer Hex 80 00 00 00, das ist bereits in einer 32Bit Variablen das Minuszeichen, ab dieser Größe wird Longint negativ (reichlich 2 GB).
Hartmut

Geändert von kwhk ( 3. Jun 2013 um 12:28 Uhr)
  Mit Zitat antworten Zitat