Мистика... на одном компе программа работает, на другом - Floating point overflow
Исходник один. Компилятор - CB 5.0, настройки вроде бы одинаковые (стандартные). Другое дело, на втором компе совместно с CB 5.0 стоит MSVC .NET, но разве это может как-то повлиять на работу программы?..
Мистика... на одном компе программа работает, на другом в ходе ее работы происходит Floating point overflow.
Исходник один. Компилятор - CB 5.0, настройки вроде бы одинаковые (стандартные). Другое дело, на втором компе совместно с CB 5.0 стоит MSVC .NET, но разве это может как-то повлиять на работу программы?..
код в студию, но заранее проверь что является разделителем в системе по умолчанию на компах.
код в студию, но заранее проверь что является разделителем в системе по умолчанию на компах.
Вдогонку - как собрана программа: standalone или использует библиотеки выполнения?
Такая ошибка, зачастую, выдаеться если на той машине где ты собирал программу стои в качестве раздилителя целой и дробной части точка, а там где ты запускаешь - запитая
Нет. Invalid floating point operation - это скорее ошибка памяти или разрушение стека. А при проблемах с точкой и запятой возникает XXXX is not valid floating point value
Исходник о-о-очень большой, да и смысле нет его приводить, т.к. даже САМ .EXE, скомпилированный на том компе, где все работает, не работает на другом компе!!! Все тот же Floating point overflow...
Разделитель в системах один, я его еще в конструкторе формы определяю.
А клинит программу на таком участке кода:
2 smartsoft
В смысле? Использует ли она runtime packages и dynamic rtl? Или что вы имели в виду? В любом случае прога на одном компе работает (w98), а на другом не работает (wxp).
Причем, ВНИМАНИЕ: раньше этот же кусок кода, на котором происходит overflow нормально работал на обеих системах. И он не менялся... В чем же тогда собака зарыта???
Разделитель в системах один, я его еще в конструкторе формы определяю.
ИМХО, если где-то в программе производится ввод данных, это не совсем корректно с точки зрения конечного пользователя. Но, не будем спорить по данной теме. Мы на работе стараемся писать программы таким образом, чтобы они работали независимо от локальных настроек разделителей.
А клинит программу на таком участке кода:
А каковы значения на данном участке кода? Надо их вывести и проанализировать. Возможно, действительно происходит переполнение при вещественном умножении или делении.
Кстати, чем определяются данные для вычисления данного выражения? Читаются из локальной базы или файла?
В смысле? Использует ли она runtime packages и dynamic rtl? Или что вы имели в виду? В любом случае прога на одном компе работает (w98), а на другом не работает (wxp).
Да, это. Возможно, на разных платформах по-разному работает один и тот же код. Хотя, тут приходят веселые мысли об "ошибке в процессоре/сопроцессоре".
Причем, ВНИМАНИЕ: раньше этот же кусок кода, на котором происходит overflow нормально работал на обеих системах. И он не менялся... В чем же тогда собака зарыта???
Если ничего не поможет, придется тебе привести код ассемблера для данной строки (результат работы компилятора). Кстати, на используемых машинах одинаковые процессоры или нет?