Nachdem in Windows eine Datei maximal Int64 gross sein kann sollten double unnötig sein.
(s.a.
https://docs.microsoft.com/en-us/win...eattributesexa)
Warum so kompliziert? Wenn man die UINT64-Beschränkung akzeptiert, kann man zB dies verwenden
Delphi-Quellcode:
function CalculateSize(Bytes, Multiplier: UInt64): UInt64;
var
i: integer;
begin
Result := Bytes;
for i:=1 to Multiplier do Result := Result*1024;
end;
Wenn man R/O-Checks eingeschaltet hat, erhält man eine Überschreitung frei Haus, ansonsten ist noch eine Zeile mehr notwendig. Man kann auch Multiplier beschränken, aber das nützt nicht viel, weil ja Bytes*1024 schon ein Overflow werfen könnte.
Danke. Wollte auch was mit Integer vorschlagen (eher mit einer Tabelle).
Bei so etwas wo es nur um Integer geht etwas mit Fließkomma zu verwenden ist einfach nur
(Vor allem wenn man weiß, dass da intern mit Exponentialfunktion und Logarithmus gearbeitet wird.)