Hmm, ich habe natürlich Min/Max als UInt64 überladen, damit alles UInt64 ist und auch bleibt.
Delphi-Quellcode:
function Min(const A, B: UInt64): UInt64; overload;
function Max(const A, B: UInt64): UInt64; overload;
function Min(const A, B: UInt64): UInt64;
begin
if A < B then
Result := A
else
Result := B;
end;
function Max(const A, B: UInt64): UInt64;
begin
if A > B then
Result := A
else
Result := B;
end;
@himitsu: Offensichtlich lässt sich der Code bei Dir im Delphi2009 aber kompilieren ohne das Setzen der Grenzwerte von StrToU64(). Das ist ja schon mal eine Verbesserung! Aber Du hast recht, Val geht auch nicht in Delphi2007. Die
RTL kennt nur eine Implementierung für Int64 ...
function _ValInt64(const s: AnsiString; var code: Integer): Int64;
... welche dann bei Aufruf mit StrToU64('$FFFFFFFFFFFFFFFF', ..) eine Bereichsüberschreitung ergibt.
Irgendwie ist das echter Mist, wenn man keine unsigned 64 Werte verarbeiten kann