Bei mir klappts mit D2005, sowohl mit als auch ohne Überlaufprüfung.
Hab' gerade mal ein bisschen Disassembliert und dabei gesehen, dass Delphi je nach Einstellung eine der Instruktionen
imul (ohne Überlaufprüfung) oder
mul (mit Überlaufprüfung) erzeugt.
Code:
; Mit Prüfung ; Ohne Prüfung
mov ecx,$3b9aca00 mov eax,$3b9aca00
mov ebx,$00000004 mov edx,$00000004
mov eax,ebx imul edx
mul ecx
jnb @cont
call @IntOver
@cont:
Vielleicht kann das einer mit 'ner anderen Delphi-Version mal nachvollziehen?
Also: Breakpoint auf die Multiplikation und wenn Delphi hält dann Ansicht -> Debug Fenster -> CPU.
Vielleicht erzeugen andere Delphi-Versionen bei Optimierung
und Überlaufprüfung die falsche CPU-Instruktion -
imul setzt nämlich das Carry-Flag, das bei "jnb @cont" überprüft wird,
mul hingegen nicht.