Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Мистика... на одном компе программа работает, на другом - Floating point overflow

389
11 марта 2004 года
Dmitri
69 / / 20.08.2000
Мистика... на одном компе программа работает, на другом в ходе ее работы происходит Floating point overflow.

Исходник один. Компилятор - CB 5.0, настройки вроде бы одинаковые (стандартные). Другое дело, на втором компе совместно с CB 5.0 стоит MSVC .NET, но разве это может как-то повлиять на работу программы?..
519
11 марта 2004 года
VaGon
134 / / 26.03.2003
Цитата:
Originally posted by Dmitri
Мистика... на одном компе программа работает, на другом в ходе ее работы происходит Floating point overflow.

Исходник один. Компилятор - CB 5.0, настройки вроде бы одинаковые (стандартные). Другое дело, на втором компе совместно с CB 5.0 стоит MSVC .NET, но разве это может как-то повлиять на работу программы?..

код в студию, но заранее проверь что является разделителем в системе по умолчанию на компах.

10
11 марта 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by VaGon
код в студию, но заранее проверь что является разделителем в системе по умолчанию на компах.


Вдогонку - как собрана программа: standalone или использует библиотеки выполнения?

293
12 марта 2004 года
SEDEGOFF
586 / / 06.10.2002
Такая ошибка, зачастую, выдаеться если на той машине где ты собирал программу стои в качестве раздилителя целой и дробной части точка, а там где ты запускаешь - запитая
10
12 марта 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by SEDEGOFF
Такая ошибка, зачастую, выдаеться если на той машине где ты собирал программу стои в качестве раздилителя целой и дробной части точка, а там где ты запускаешь - запитая


Нет. Invalid floating point operation - это скорее ошибка памяти или разрушение стека. А при проблемах с точкой и запятой возникает XXXX is not valid floating point value

389
13 марта 2004 года
Dmitri
69 / / 20.08.2000
2 VaGon

Цитата:
код в студию, но заранее проверь что является разделителем в системе по умолчанию на компах.



Исходник о-о-очень большой, да и смысле нет его приводить, т.к. даже САМ .EXE, скомпилированный на том компе, где все работает, не работает на другом компе!!! Все тот же Floating point overflow...

Разделитель в системах один, я его еще в конструкторе формы определяю.

А клинит программу на таком участке кода:

 
Код:
a[o+1]=b*(c[n]-d[i+1])/(5.0*e);


2 smartsoft

Цитата:
Вдогонку - как собрана программа: standalone или использует библиотеки выполнения?



В смысле? Использует ли она runtime packages и dynamic rtl? Или что вы имели в виду? В любом случае прога на одном компе работает (w98), а на другом не работает (wxp).

Причем, ВНИМАНИЕ: раньше этот же кусок кода, на котором происходит overflow нормально работал на обеих системах. И он не менялся... В чем же тогда собака зарыта???

10
13 марта 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by Dmitri

Разделитель в системах один, я его еще в конструкторе формы определяю.


ИМХО, если где-то в программе производится ввод данных, это не совсем корректно с точки зрения конечного пользователя. Но, не будем спорить по данной теме. Мы на работе стараемся писать программы таким образом, чтобы они работали независимо от локальных настроек разделителей.

Цитата:
Originally posted by Dmitri
А клинит программу на таком участке кода:

 
Код:
a[o+1]=b*(c[n]-d[i+1])/(5.0*e);


А каковы значения на данном участке кода? Надо их вывести и проанализировать. Возможно, действительно происходит переполнение при вещественном умножении или делении.
Кстати, чем определяются данные для вычисления данного выражения? Читаются из локальной базы или файла?

Цитата:
Originally posted by Dmitri
В смысле? Использует ли она runtime packages и dynamic rtl? Или что вы имели в виду? В любом случае прога на одном компе работает (w98), а на другом не работает (wxp).


Да, это. Возможно, на разных платформах по-разному работает один и тот же код. Хотя, тут приходят веселые мысли об "ошибке в процессоре/сопроцессоре".

Цитата:
Originally posted by Dmitri
Причем, ВНИМАНИЕ: раньше этот же кусок кода, на котором происходит overflow нормально работал на обеих системах. И он не менялся... В чем же тогда собака зарыта???


Если ничего не поможет, придется тебе привести код ассемблера для данной строки (результат работы компилятора). Кстати, на используемых машинах одинаковые процессоры или нет?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог