Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];
Внизэксепшены в D7 Найти похожие ветки
← →
anonymous (2003-09-23 17:08) [0]Вы конечно будете смеятся, но почему в D7 деление на ноль не вызывает ошибки, и в результате не работает следующий код :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure handlezerodivide ;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var s, l : integer ;
r: real ;
begin
s:=4;
l:=0;
try
r:=s/l;
except
on EZeroDivide do handlezerodivide ;
end;
end;
procedure TForm1.handlezerodivide;
begin
Button1.caption:="warning: zero divide";
end;
end.
← →
pasha_golub (2003-09-23 17:11) [1]Потому как теперь это ошибкой не считается, а считается машинной бесконечностью. В хелпе есть
← →
anonymous (2003-09-23 17:22) [2]???
Не нашел...
А зачем тады писать :
EZeroDivide is the exception class for floating-point divide-by-zero errors... и т.д. и т.п.
(Delphi help)
?
← →
icWasya (2003-09-23 17:28) [3]при включеной оптимизации этот код вообще не исполняется
напиши так
procedure TForm1.Button2Click(Sender: TObject);
var s, l : integer ;
r: single ;
begin
s:=4;
l:=0;
try
r:=s/l;
Button1.caption:=FloatToStr(r);
except
on EZeroDivide do handlezerodivide ;
end;
end;
и всё сломается!!
← →
VMcL (2003-09-23 17:29) [4]Ну я так понимаю, раз переменная "r" вычисляется, но не используется далее, "умный" компилятор выкидывает код для вычисления выражения в трубу.
← →
pasha_golub (2003-09-23 18:12) [5]Точно, про это совершенно забыл.
ЗЫ Посыпаю голову пеплом
← →
Nikolay M. (2003-09-23 18:15) [6]Был тут один, десять постов мне доказывал, что подобный код должен исполняться, потому что у него галочка оптимизации в опциях снята :) Каждый остался при своем мнении...
← →
willys (2003-09-23 18:24) [7]при снятой галочке оптимизации подобный код выполняется... специально не поленился проверить:
program Project1;
var
A, B, C: Double;
begin
A := 4;
B := 0;
C := A / B;
end.
получается Runtime error 200. (Delphi 5).
← →
oomneeq (2003-09-23 20:04) [8]>Nikolay M. © (23.09.03 18:15) [6]
>Был тут один,
А я и сейчас тут. :=)
Ты тогда нервничал сильно, переживал что приходится очевидности втолковывать, не удосужившись запустить код,
базируясь лишь на приобретенных тобой знаниях и считая, что понял о чем речь, увидев знакомую букву.
Милый вы наш премудрый теоретик.
Все у тебя будет хорошо, не переживай.
Желаю тебе крепкого здоровья.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c