eXeLab
eXeL@B DVD 2016 !

Курс видеоуроков программирования и крэкерства 5.0
(актуальность: январь 2017)
Свежие инструменты, новые видеоуроки!

  • 300+ видеоуроков
  • 800 инструментов
  • 80 свежих книг и статей

УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь
Русский / Russian English / Английский

Сейчас на форуме: dutch, redlord (+4 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Основной форум —› Inexact floating-point result
Посл.ответ Сообщение
vnekrilov

Ранг: 320.0 (мудрец)
Статус: Участник

Создано: 6 декабря 2016 09:11:10 New!
· Личное сообщение · #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. Как можно победить эту проблему???
TrueLies


Ранг: 192.7 (ветеран)
Статус: Участник
The ONE

Создано: 6 декабря 2016 10:03:51 New!
· Личное сообщение · #2

а не в этом ли дело?
vnekrilov

Ранг: 320.0 (мудрец)
Статус: Участник

Создано: 6 декабря 2016 10:32:31 New!
· Личное сообщение · #3

TrueLies

К сожалению - не помогло. Все также генерируется куча исключений...
DrVB_5_6

Ранг: 20.4 (новичок)
Статус: Участник

Создано: 6 декабря 2016 10:40:51 New!
· Личное сообщение · #4

Microsoft в msvbvm60.dll даже для 7-ки изменения делали, а уж msvbvm50.dll вряд ли кто-то трогал. Скорей всего дело в ней.
В таком случае только VM с XP и никаких проблем!
vnekrilov

Ранг: 320.0 (мудрец)
Статус: Участник

Создано: 6 декабря 2016 11:24:12 New!
· Личное сообщение · #5

DrVB_5_6

На Windows XP в папку с программой я положил msvbvm60.dll, и программа прекрасно работает. А вот под Windows 10 она генерирует исключение. Можно, конечно, ставить виртуалку с XP, но это не является решением проблемы...
difexacaw

Ранг: 57.9 (постоянный)
Статус: Участник

Создано: 6 декабря 2016 11:26:02 New!
· Личное сообщение · #6

Так вам не знатоки нужны, ну вот я знаю прилично архитектуру и что дальше. Я не бог и не могу предсказать без описания причину фолта, это невозможно. Вы не описали проделанную работу, это даже не описание вопроса, это описание проблемы. А проблемы нас не интересуют
DrVB_5_6

Ранг: 20.4 (новичок)
Статус: Участник

Создано: 6 декабря 2016 11:33:53 New!
· Личное сообщение · #7

vnekrilov пишет:
На Windows XP в папку с программой я положил msvbvm60.dll, и программа прекрасно работает.

Да, но использует msvbvm50.dll (если это VB5), которая лежит где-то в стандартных местах. Или в импортах прописана msvbvm60.dll? Вообще-то они не совсем совпадают!!!
dosprog

Ранг: 228.1 (наставник)
Статус: Участник

Создано: 6 декабря 2016 12:19:14 · Поправил: dosprog New!
· Личное сообщение · #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
Эта тема закрыта. Ответы больше не принимаются.

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS