![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Кто это может объяснить? [D6, Win2k]
sndanil © (2002-05-20 15:05:00)Тут такая ситуация... ну в общем кто-нить объясните плз. что не так... заодно скажите, что у вас получилось...
procedure TForm1.Button1Click(Sender: TObject);
var x,y :integer;
begin
y:=0;
try
x:=1 div y;
ShowMessage("2");
except
ShowMessage("4");
end;
end;
для тех у кого вывелось окошко с номером 4 сообщаю: у меня выводится только 2... то же самое происходит и когда использую тип реал с нормальным делением... исключение генерится только когда делаю например так...
y:=0;
try
IntToStr(1 div y);
ShowMessage("2");
except
ShowMessage("4");
end;
McSimm (2002-05-21 10:26:00) [1]>оптимизацию убирал...
После смены этой настройки надо делать Build
>переменная дальше используется...
смотря как используется. Используется ли ее значение, присваиваимое при делении?
Обрати внимание на синие точки после компиляции. На строке с делением ее нет. Это значит, что оптимизатор просто исключил этот код из-за бессмысленности.
Совет Andrey007 (20.05.02 16:25) пробовал? Сразу получишь желанный Exception.
sndanil (2002-05-21 10:09:00) [2]оптимизацию убирал... переменная дальше используется...
sndanil (2002-05-21 10:07:00) [3]Так в том-то и дело, что убирал я оптимизацию... не помогло... и переменная дальше используется...
Andrey007 (2002-05-20 16:25:00) [4]2 sndanil: вместо ShowMessage("2"); попробуйте ShowMessage(IntToStr(x));
Shaman_Naydak (2002-05-20 16:11:00) [5]x ты нигде дальше не используешь..
вырожденную переменную компилятор убил..
Хочешь, отключи оптимизацию в настройках компиляции.
Честно говоря, я не вижу смысла в том, что писать заведомо бессмысленный код.
sndanil (2002-05-20 15:34:00) [6]И чему равен этот Х?... и если можно подробней плз. ... и почему выражение не вычисляется?
McSimm (2002-05-20 15:18:00) [7]В данном случае выражение просто не вычисляется из-за оптимизации.
MBo (2002-05-20 15:14:00) [8]это уже обсуждалось. x вычисляется на этапе компиляции