Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.21;
Скачать: CL | DM;

Вниз

Как уничтожить OLE-объект ?   Найти похожие ветки 

 
Dok_3D ©   (2002-03-05 12:46) [0]

Здравствуйте,
хочу создать Ole-объект и поработать с ним
Для этого пишу -
var MyInterface : IMyInterface;
begin
MyInterface:=CreateOleObject("OleServer.ServerName") AS IMyInterface;
MyInterface.CoolAction(maza,faka);
end;

Все работает в лучшем виде, но:
на этапе выполнения мне вдруг захотелось осводить память от моего Ole-объекта,
Как мне сделать что-то вроде MyInterface.Free ?


 
serg ©   (2002-03-05 12:52) [1]

MyInterface:=Unassigned;


 
Romkin ©   (2002-03-05 12:56) [2]

MyInterface := nil; //это указатель
А вообще-то перед end Delphi сама все освободит


 
Dok_3D ©   (2002-03-05 12:58) [3]

2Serg,
а вот ничего подобного :(((
такая штука прокатит только если
var MyInterface : Variant;

А если я так и делаю (то есть использую позднее связывание), то все равно память после моего злосчастного OLE-объекта не освобождается.

Как быть ? Я в тупике.


 
Digitman ©   (2002-03-05 12:58) [4]

MyInterface := nil;


 
Dok_3D ©   (2002-03-05 13:10) [5]

2Digitman
2Romkin

Хотите верьте, хотите нет...
Не помогает MyInterface := nil , сто процентов не помогает.
Делал уже так..., и еще раз только что попробовал...

Не помогает.


 
Romkin ©   (2002-03-05 15:16) [6]

Значит, неправильно написан сам объект, не освобождается про refcount = 0. МОжно попробовать MyInterface._Release, но это уже чернуха - при MyInterface := nil Delphi сама эту процедуру вызывает, так что вряд ли поможет


 
drpass ©   (2002-03-05 15:57) [7]

Нет, все-таки что-то в этом коде не так. Если ты используешь переменную-интерфейс, то попробуй создавать объект прямо через CoCreateInstance, и высвобождать по nil. А если ты пользуешься CreateOleObject, то и указатель на него бери типа Variant, высвобождая по Unassigned. Так, кажется, должно сработать. А, кстати, у твоего объекта нет какого-нибудь метода типа "Quit"?


 
Набережных С.   (2002-03-05 16:02) [8]

Сервер - DLL или EXE? Написан тобой или сторонний? Если EXE, то либо он блокируется в памяти(например, вызывается LockServer), либо у него ошибка в механизме подсчета ссылок. Если DLL, то поробуй CoFreeUnusedLibraries.



Страницы: 1 вся ветка

Текущий архив: 2002.03.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
1-66906
Alexey Frolov
2002-03-06 11:51
2002.03.21
Как передать указатель на структуру из DLL


3-66723
volodya_
2002-02-20 11:43
2002.03.21
Помогите с кодировкой


14-66974
Alibaba
2002-02-06 17:25
2002.03.21
Простая страничка


3-66734
gegc
2002-02-20 09:37
2002.03.21
Как и чем создать DBF чтобы он открывался в экселе и аксесе И чтобы руссие буквы были похожи на русские буквы? (BDE не предлагать!)


3-66733
Revo
2002-02-15 14:01
2002.03.21
Как конвертировать базу данных из dBase в InterBase?