![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Invalid floating point operation [D7]
kostyas © (2007-09-14 11:49:00)Почему происходит эта ошибка, у меня в проекте возникает такая ошибка, сделал приблизительный код, если присваивать lw1 нулевое значение, то возникает эта ошибка, любое другое число спокойно записывается, а что с этим?
TMyData = record
lw1: LongWord;
db1:Double;
db2: Double;
end;
procedure test1(var MyData: TMyData);
begin
MyData.db1 := 0;
MyData.db2 := 0;
MyData.lw1 := 0;
end;
DrPass (2007-09-14 16:03:00) [1]
> Но почему эта ошибка означает ошибку деления на нуль?
Эта ошибка означает ошибку, произошедшую в математическом сопроцессоре. Деление вещественных чисел выполняется сопроцессором
ЮЮ (2007-09-14 12:20:00) [2]> Деление было приблизительно так:
>
> db1 := db2 / lw1;
Что не наблюдаю такой строчки в кодеprocedure test1(var MyData: TMyData);
отладчик для чего дан? чтобы 20 минут искатьdb1 := db2 / lw1;?
>Но почему эта ошибка означает ошибку деления на нуль?
Потому, что искать ошибку надо там, где она вызывает исключение, а не где светлее.
kostyas (2007-09-14 12:03:00) [3]Так, похоже нашел ошибку. Проблема была при делении на 0. Но почему эта ошибка означает ошибку деления на нуль?
Деление было приблизительно так:
db1 := db2 / lw1;
kostyas (2007-09-14 11:58:00) [4]Ошибка появилась даже так:
TMyData = record
lw1: LongWord;
db1:Double;
db2: Double;
end;
procedure test1(var MyData: TMyData);
begin
MyData.db1 := 0;
MyData.db2 := 0;
end;
var
MyDta: TMyData;
begin
MyDta.lw1 := 0;
test1(MyDta);
kostyas (2007-09-14 11:54:00) [5]Обычный вызов.
var
MyDta: TMyData;
begin
test1(MyDta);
ЮЮ (2007-09-14 11:52:00) [6]а вызов? Что переданщь в качестве фактического параметрв?