Сейчас на форуме: -Sanchez- (+7 невидимых) |
eXeL@B —› Основной форум —› Inexact floating-point result |
Посл.ответ | Сообщение |
|
Создано: 06 декабря 2016 09:11 · Личное сообщение · #1 Inexact floating-point result Добавлено спустя 8 минут Вопрос к знатокам!!!! Столкнулся с такой проблемой. Имеется программа, написанная на VB5, и защищенная Obsidium. Протектор я снял достаточно легко, восстановил оригинальные секции файла, импорт. Под Windows XP программа нормально запускается без каких-либо проблем, и нормально работает. При попытке запуска программы под Windows 10 (без отладчика), она запускается, но при загрузке asycfilt.dll генерирует огромное количество исключений "Inexact floating-point result". Но при дальнейшей работе операционная система закрывает эту программу. При запуске же программы под отладчиком (OllyDbg 2.01), программа нормально работает, генерируя огромное количество исключений с выдачей сообщений в журнале LOG отладчика - Inexact floating-point result - passed to application. Как можно победить эту проблему??? |
|
Создано: 06 декабря 2016 10:03 · Личное сообщение · #2 |
|
Создано: 06 декабря 2016 10:32 · Личное сообщение · #3 |
|
Создано: 06 декабря 2016 10:40 · Личное сообщение · #4 |
|
Создано: 06 декабря 2016 11:24 · Личное сообщение · #5 |
|
Создано: 06 декабря 2016 11:26 · Личное сообщение · #6 |
|
Создано: 06 декабря 2016 11:33 · Личное сообщение · #7 |
|
Создано: 06 декабря 2016 12:19 · Поправил: dosprog · Личное сообщение · #8 То есть проблемы проявляются просто при запуске программы, даже если в неё не вводить никаких данных? В посте #2 верно сказано, что библиотека работает с дурацкими настройками локализации в системе, с этим уже бывали проблемы неоднократно. Причём побороть их системными настройками не удавалось, криво работает всё это хозяйство. Если программа глючит без ввода данных, а уже при запуске, то могу предположить, что при старте там выполняются какие-то внутренние преобразования, условно говоря <sprintf()+sscanf()>, и в процессе sprintf() получается строка с десятичной точкой, тогда как sscanf() тут же ожидает десятичную запятую, и(или) наоборот. Если всё дело действительно в этом несоответствии "точки" и "запятой" в sprintf() и sscanf(), то тогда можно попробовать сделать врезку в вызов sprintf(), которая будет насильно менять в строке-результате её работы тупо все запятые на тупо точки. Тогда системные настройки "точка/запятая" будут касаться только sscanf() и всё это хозяйство кое-как заработает. Хотя, конечно, это костыльное решение. ..ну, это "верхний уровень".. --Добавлено-- А вот что пишут - The rounded result of an operation is not exact because a value is modified (rounded) to fit in a receiver operand and nonzero fraction digits are lost. - The occurrence of a floating-point overflow condition when that condition is masked and the result is no longer exact because it is set to infinity. .. Кстати, а программа запускается под разными системами на одной и той же машине? - Если нет, то, может, попробовать на машине с Win10 (где программа глючит) загрузить WinXP с флеш-карты и запустить программу под этой WinXP? .. |
eXeL@B —› Основной форум —› Inexact floating-point result |
Эта тема закрыта. Ответы больше не принимаются. |