Generell ist es nervig, wenn Entwickler Code schreiben bei dem durch 0 dividiert wird und sie das Problem ignorieren, weil "man ja das Exception-Handling deaktivieren kann". Vermutlich ist es in C default-mäßig nicht aktiv - ich meine mal gelesen zu haben, dass in C eine Division durch 0 zu undefiniertem Verhalten führt.
Genau da habe ich so ein Klassiker, da würde überhaupt nichts passieren, wen cnt 0 wäre. Und dadurch w undefiniert wäre.
Code: Alles auswählen
uses
crt;
procedure Print(y,cnt: integer);
var
w, i: integer;
begin
w := 80 div cnt;
for i := 0 to cnt - 1 do begin
GotoXY(w * i + 1, y);
WriteLn('X');
end;
end;
begin
Print(4, 10);
Print(5, 5);
Print(6, 4);
Print(7, 0); // runtime error 200
end.
Generell ist es nervig, wenn Entwickler Code schreiben bei dem durch 0 dividiert wird und sie das Problem ignorieren, weil "man ja das Exception-Handling deaktivieren kann". Vermutlich ist es in C default-mäßig nicht aktiv - ich meine mal gelesen zu haben, dass in C eine Division durch 0 zu undefiniertem Verhalten führt.
Genau in C ist es deaktiviert, ansonsten würde GTK nicht ohne SetExceptionMask laufen.
Ich habe gerade noch etwas festgestellt, bei die xlmlib kommt eine ganz andere Fehlermeldung als bei meinem obigen Beispiel
Code: Alles auswählen
An unhandled exception occurred at $000070F9A6CF7D8B:
EInvalidOp: Invalid floating point operation