![]() |
Problem mit Dateigrößen-Feststellung bei "kleineren&quo
Hallo,
ich hab folgende zwei Funktionen um die Größe einer Datei festzustellen: 1. GetFileSize
Delphi-Quellcode:
2. FileSize
function GetFileSize(const FileName: String): Int64;
var SearchRec: TSearchRec; begin Result := -1; If FindFirst(FileName, faAnyFile, SearchRec) = 0 then begin try Result := SearchRec.Size; finally FindClose(SearchRec); end; end; end;
Delphi-Quellcode:
Nun hab ich diese zwei Funktionen verglichen:
AssignFile(FromF, OpenDialog1.FileName);
FileMode := fmOpenread; reset(FromF); Label2.Caption := IntToStr(FileSize(FromF));
Delphi-Quellcode:
Ich hab eine Datei die ist 5,12 GB (5.501.142.528 Bytes) groß.
procedure TForm1.Button1Click(Sender: TObject);
var FromF: file of byte; begin If OpenDialog1.Execute then begin Label1.Caption := IntToStr(GetFileSize(OpenDialog1.FileName)); AssignFile(FromF, OpenDialog1.FileName); FileMode := fmOpenread; reset(FromF); Label2.Caption := IntToStr(FileSize(FromF)); end; end; Bei dieser wird mir in beiden Labels ein Wert von 1206175232. Bei einer anderen Datei die eine Größe von 2,97 GB (3.199.247.872 Bytes). Bei dieser Datei wird aber in beiden Labels ein Wert von -1095719424. Wieso ist bei der kleinen Datei ein Minus davor? |
Re: Problem mit Dateigrößen-Feststellung bei "kleineren
Hört sich nach nem Integer-Overflow an.
|
Re: Problem mit Dateigrößen-Feststellung bei "kleineren
Zitat:
kleineren der beiden Dateien. Bei der Größeren wird alles normal (also positiv) angezeigt. |
Re: Problem mit Dateigrößen-Feststellung bei "kleineren
Moin, Moin,
in beiden Fällen reicht der Wertebereich von Integer nicht aus! Auch im ersten Fall liefert SearchRec.Size nur einen Integer zurück, da nutzt das Int64 leider nix |
Re: Problem mit Dateigrößen-Feststellung bei "kleineren
Zitat:
Und wie man's richtig macht, hast du ja schon längst ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz