powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ищу ошибку при работе с Extended
4 сообщений из 4, страница 1 из 1
Ищу ошибку при работе с Extended
    #38831682
При работе старого приложения возникли проблемы с точностью Extended: "не хватает точности".

Выяснилось, что это случилось после подключения моего модуля (.dll), использующего Fib+.

Ковыряюсь.

После загрузке клиентской библиотеки Firebird (fbClient.dll) в Fib+ вызывается такой код:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
procedure InitFPU;
var
  Default8087CW: Word;
begin
  asm
    FSTCW Default8087CW
    OR Default8087CW, 0300h
    FLDCW Default8087CW
  end;
end;



А потом, после загрузки библиотеки, в процессе работы (перед обращением к методам fbclient.dll) сплошь и рядом - вызывается
Код: pascal
1.
   Set8087CW(Default8087CW);



Кроме того, в процессе работы я еще однократно загружаю fbclient.dll сам ( LoadLibrary(имя_файла) ), безо всяких инициализаций 8087, чтобы потом обратиться к fb_shutdown перед завершением работы моей .dll (т.к. используемый fbclient.dll - это у меня embedded 2.5 на самом деле со всеми вытекающими).
...

Всё... дальше мысли закончились... :(

Ткните, пожалуйста, в направлении блюдечка с молоком...
Спасибо.
...
Рейтинг: 0 / 0
Ищу ошибку при работе с Extended
    #38831735
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Адский тормоз,

Note that some DLLs change the FPU control word. You can call SysUtils.SafeLoadLibrary, which ensures that the FPU control word is restored to Default8087CW after loading the library.
...
Рейтинг: 0 / 0
Ищу ошибку при работе с Extended
    #38831752
kdvАдский тормоз,

Note that some DLLs change the FPU control word. You can call SysUtils.SafeLoadLibrary, which ensures that the FPU control word is restored to Default8087CW after loading the library.

Так что, простая загрузка fbclient (который fbembed).dll меняет FPU control word?

Сейчас попробую.
...
Рейтинг: 0 / 0
Ищу ошибку при работе с Extended
    #38831895
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fbclient меняет флаг обработки floating-point exception, насколько я помню
точнее - включает его
клиент от 2.5 при каждом вызове API сохраняет FPU CW, ставит своё, потом восстанавливает
но, надо сказать, что это не потокобезопасно
лучше решения пока нет, да и пользователей имеющих из-за этого проблемы - 1-2 за всё время что я помню
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ищу ошибку при работе с Extended
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]