Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-18586
Radionov Alexey
2003-09-18 06:33
2003.10.06
Одно неосторожное движение и.... :(


9-18216
scout
2003-03-30 18:21
2003.10.06
Загруска и выгруска моделей в GLScene


11-18282
blackalex
2003-01-27 13:24
2003.10.06
При закрытии модальных окон не выполняется OnClose


1-18472
Pohil
2003-09-24 13:12
2003.10.06
Где найти формат RES файлов


1-18392
Windman
2003-09-22 13:48
2003.10.06
Работа с Excel через COM интерфейс





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский