ОБСУЖДЕНИЕ

Olevariant и Dll

1 ответов 6,6 тыс.
Автор темы
Проблема такая
Есть глобальная переменная Типа OleVariant и функция, инициализирующая эту переменную

Код:
var PCX:OleVariant;

function Initialize(Param:Pchar): Pchar;
begin
PCX:= CreateOleObject('cft.winpcx.1');
result:= '';
end;

В проекте(WinForm) все работает нормально, но когда компилю dll и вызываю эту функцию программа виснет.
Если сделать переменную локальной все работает нормально. То есть зависание судя по всему происходит при присвоении глобальной переменной ссылки, возвращаемой CreateOleObject.
Также пробовал хранить в глобальной переменной ссылка на сам интерфейс Dispatch
Код:
var PCX:IDispatch;
...
 
Проблема такая
Есть глобальная переменная Типа OleVariant и функция, инициализирующая эту переменную

Код:
var PCX:OleVariant;

function Initialize(Param:Pchar): Pchar;
begin
PCX:= CreateOleObject('cft.winpcx.1');
result:= '';
end;
В проекте(WinForm) все работает нормально, но когда компилю dll и вызываю эту функцию программа виснет.
Если сделать переменную локальной все работает нормально. То есть зависание судя по всему происходит при присвоении глобальной переменной ссылки, возвращаемой CreateOleObject.
Также пробовал хранить в глобальной переменной ссылка на сам интерфейс Dispatch
Код:
var PCX:IDispatch;
...

Мало информации...
Initialize это функция экспротируемая длл-кой? или просто внутри где-то юзается?
А var PCX вы пытаетесь приложению отдать для работы? или опять же для внутреннего (DLL) использования?
А кто такой cft.winpcx.1? может ему Окно нужно в качестве парента? для инициализации?
Или может это модальный объект?
А DLL у вас динамически грузится?