Normalerweise würdest du an der Stelle "W1024: Combining signed and unsigned types - widened both operands (Delphi)" bekommen. Tjo, nur leider gibts kein Int128, auf den beide erweitert werden können.
Wie BUG schon richtig erwähnte, versucht Delphi natürlich das Vorzeichen zu behalten. Witzigerweise läuft da nicht alles so richtig ab:
Delphi-Quellcode:
var
i1: Uint64;
i2: UInt64;
i3: Int64;
i4: Uint64;
begin
i1 := High(Int64);
i4 := i1 * 2;
Assert(i4 = High(UInt64) - 1); // läuft...
i2 := 2;
i4 := i1 * i2;
Assert(i4 = High(UInt64) - 1); // läuft auch...
i3 := 2;
i4 := i1 * i3; // BOING! range check error?!
Vermutlich eine der vielen Stellen, wo UInt64 einfach buggy ist.