22:48

DELPHI

Правильно записанное условие - это половина решения Зеленивская Светлана Аполлинариевна
Здравствуйте все.
У меня такая проблемка(мож конечно окажется что я нуб нубом), но все же.

У меня есть программа на DELPHI
Вот ссылка на прогу
file.pro-street.us/download.php?file=56e168deec...
Вот ссылка на процедуру с кодом интересуюшую меня
paste.org.ru/?0d6lmp


Так в вот в чем заключается проблемка.
Когда я ввожу размер матрицы 2 на 2 и больше. Нажимаю нарисовать матрицу. Заполняю ее единичной и нахожу обратную мне надо найти погрешность расчетов(что и делает моя процедурка).
При нажатий показать точность выбивается ошибка 'Invalid floating point operation'. Ругается на строку 36(вставка кода).
При этом на другом компьютере ошибка не возникает... И это не первый раз ругательство при использований такого типа команды
edit1.Text:=FloatToStr(diag);


Подскажите в чем проблема.
Заранее спс=)

Комментарии
25.05.2010 в 22:50

А можно узнать конкретное значение diag (лучше шестнадцатеричное)? Отладчиком умеешь пользоваться?
25.05.2010 в 23:17

Правильно записанное условие - это половина решения Зеленивская Светлана Аполлинариевна
Trotil конечно умею. Значение диаг 0(как и должно быть)
25.05.2010 в 23:19

Нули в double разные бывают. Поэтому я и попросил шестнадцеричное.
25.05.2010 в 23:35

Правильно записанное условие - это половина решения Зеленивская Светлана Аполлинариевна
Значение 0 и в hexadecimal системе...(это ж 16-ричная?)
25.05.2010 в 23:41

Да. Тогда странно. Ну я могу дать несколько шагов по отладке, но они типичные.
Например, задать перед 36-той строкой явно значение diag = 0; (или diag = 1.0) и посмотреть, будет ли вылетать.
У тебя процессор какой в компе? Может, специфически скомпилированный код (что маловероятно, но исключать нельзя) он не понимает. У меня программа не вылетает.
25.05.2010 в 23:46

Правильно записанное условие - это половина решения Зеленивская Светлана Аполлинариевна
Trotil у меня процессор Intel Core 2 Duo
Windows XP SP3
в том то и прикол что на ноуте у одногрупника и на универских компах не ругается. Поэтому и решил спросить, мож кто знает в чем прикол(

Я то сдаю проги не на своем компе(слава богу в этом случае), но было интересно в чем прикол тут.

Спс тебе
25.05.2010 в 23:47

Правильно записанное условие - это половина решения Зеленивская Светлана Аполлинариевна
Только что вставил перед строкой diag = 0;
и оно выбило ту же ошибку. =(
25.05.2010 в 23:50

FloatToStr
Э, стоп. Функция у тебя для типа данных Float, а ты ей кормишь double. Видимо, не может сделать преобразование типов.
25.05.2010 в 23:53

Правильно записанное условие - это половина решения Зеленивская Светлана Аполлинариевна
Trotil ну можно тут повеселиться но если посмотреть весь код то эта команда для добла неплохо работает

Так ведь элементы матрица типа добле, и вывод обратной матрицы через FloatToStr. И прога нормально хавает дабл
25.05.2010 в 23:59

но было интересно в чем прикол тут.

Да мне тоже интересно =)
По идее, не должно вылетать.
Я не знаю, как в Delphi реализовано неявное преобразование типа.
Если время позволяет, напиши короткую программу:

diag:double;
str: string;
diag:=0;
str:=FloatToStr(diag);

И хорошо бы, ассемблерный код, в смысле на какой инструкции падает. (отладчик должен передавать управление)
Я спать.