| Сейчас на форуме: -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 | 
| Эта тема закрыта. Ответы больше не принимаются. | 






 Для печати