Dat is'n Problem des DelphiCompilers ... es wird oftmals nicht wirklich darauf geachtet, ob signed, oder unsigned Integerroutinen verwendet werden.
die Überlaufkontrollen sind fast überall nur als signed Integer-Routinen engebunden, wodurch dann natürlch auf die Charakeristik des Integers geprüft wird.
Am Meißten gibt's da ja bei den 64-Bit-Struckturen massive Probleme.
Und in diesem Fall würde es nichtmal was bringen, wenn du direkt einen bestimmten Typ angibst:
Delphi-Quellcode:
Function CmC: LongWord;
Var c1: LongWord;
c2: LongWord;
Begin
c1 := 1000000000;
c2 := 4;
Result := c1 * c2
End;
Also entweder läßt du dir Überlaufprüfung komplett weg, oder du schaltest sie halt in diesem speziellen Fall ab - ich glaub mit {$O-} und dnach dann natürlich wieder an.
Notfalls und wenn erwünscht mußt di dann halt selber die Überlaufprüfung Programmieren.
Einen anderen Weg gibt's wohl nicht ... du kannst dir natürlich auch 'ne Delphi-Version suchen, wo es richtig implementiert ist.