Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Вот сегодня потратил 3 часа пытаясь выяснить, где же я накосячил.
Вот исходники показывающие эту багу.
http://cp.people.overclockers.ru/cgi-bi ... hi_bug.rar И так. У Delphi есть функции , выдающие текущую дату и время
Date(), Now(), Time(), все они используют GetLocalTime(). И всегда работали без проблем! Теперь что у меня вышло. У меня есть .dll в которой есть процедура (в архиве все исходники) которая загружает d3d8.dll, потом берет адрес Direct3DCreate8, создает интерфейс IDirect3D8, потому создает IDirect3DDevice8 и производит некоторые вычисления (их я выкинул из тестового проекта, так как они не влияют на ошибку) и высвобождает интерфейсы.
И далее в программе на Delphi. Подгружается .dll, вызывается экспортируемая функция, затем выгружается .dll.
Так вот, после этих действий, функции Date и Now сходят с ума и выдают безобразные значения!
В исходниках на delphi я вывожу данные из этих функций в Memo используя их как float. Так вот, Date() всегда обязан выдавать результат как ЦЕЛОЕ число. А после вызова CheckValues из .dll, функция Date выдает еще и дробную часть, а такого быть не может.
Что не так в работе .dll?
Ошибка проявляется после вызова вот этой строки
Тут создается экземпляр IDirect3DDevice8 , причем в реальной программе эта процедура пашет как надо, все что надо создается и работает.
Но почему у основной программы , написанной на Delphi, сносит крышу ?
Жду мыслей. Я лично отчаялся найти причину, может не туда смотрю ?
Member
Статус: Не в сети Регистрация: 14.01.2004 Откуда: Киев, Украина
Гениально У меня тоже этот баг проявляеться.
Ну как варианты:
- попробовать подключать dll не динамически
- посмотреть последние ошибки системы(может работа с сервисом глючит)
- переписать DirectX SDK под Delphi
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
- попробовать подключать dll не динамически - Не помогает
- посмотреть последние ошибки системы(может работа с сервисом глючит) - Что именно и где???
- переписать DirectX SDK под Delphi - У меня есть SDK под Дельфи, но мне он там совсем не нужен, в данной задаче вызовы должны быть в .dll написанной на Си
_______
Народ я скоро повешусь Не может же быть такого бага
Member
Статус: Не в сети Регистрация: 14.04.2003 Откуда: Минск, Беларусь
Да ты посмотри что пд-сы с сопроцессором вытворяют - они PC (Precision Control) сбивают с 2 (округление до Extended) до 0 (Округление до Single). И маски нахуа меняют? Чувствуешь всю прелесть ситуации? А лечилово простое:
var
SaveCW:Word;
.....
SaveCW:=Default8087CW;
CheckValues(handle);
Set8087CW(SaveCW);
Но я... простите руки за такое отрывать надо.
Добавлено спустя 1 минуту, 40 секунд: О! Оказывается автоцензурирование на форуме работает! Что есть правильно!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения