![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
OLE Automation [D7, WinXP]
GanibalLector © (2006-07-18 00:42:00)Предположим я создал OLE Automation(сервер автоматизации в виде exe) и работаю с ним.
Например так :
var Q:Variant;
begin
Q:=CreateOleObject('This.Alk');
try
Q.Port:=StrToInt(Combobox1.Text);
Q.Baud:=StrToInt(Combobox2.Text);
I:=Q.GetSales(1,2000);
if I=0 then
begin
...
end;
finally
Q:=UnAssigned;
end;
//!!!
if I<>0 then ShowMessage(IntToStr(I));
Так вот,последняя строка выполняется при "не скрытом" сервере. Я так полагаю,что нужно сделать некий метод типа Destroy.
Но !!! Что в нем писать-то ??? Делал Главная_форма.Close не помогло :(
Заранее спасибо!
umbra (2006-07-19 17:59:00) [1]2 StriderMan © (19.07.06 17:47) [9]
> вобщем-то Release от Free отличается тем, что форма закроется
> только когда обработает все сообщения.
именно это я и имел в виду :)
StriderMan (2006-07-19 17:47:00) [2]
> umbra © (19.07.06 17:42) [8]
вобщем-то Release от Free отличается тем, что форма закроется только когда обработает все сообщения.
procedure TCustomForm.Release;
begin
PostMessage(Handle, CM_RELEASE, 0, 0);
end;
procedure TCustomForm.CMRelease;
begin
Free;
end;
umbra (2006-07-19 17:42:00) [3]По-моему,
Form1.Release, все же, лучший вариант
StriderMan (2006-07-19 17:35:00) [4]
> Form1.Destroy;// вместо Close
тогда уж Form1.Free
Elen (2006-07-19 07:45:00) [5]
> Form1.Destroy;// вместо Close
ИМХО Close не удаляет из памяти а только типа "сворачивает", а Destroy удаляет. т.е. после Close можно вызвать Show и работать будет, а после Destroy вылезет ошибка
GanibalLector (2006-07-18 23:35:00) [6]Сделал так :
...
type
TMyTest = class(TAutoObject, IMyTest)
protected
...
procedure Disconnect; safecall;
end;
implementation
uses ComServ,Unit1;
procedure TMyTest.Disconnect;
begin
Form1.Destroy;// вместо Close
end;
и заработало. Странно!!! Кто-нибудь может объяснить в связи с чем такой сабж?
GanibalLector (2006-07-18 21:47:00) [7]2 Elen © (18.07.06 07:53) [2]
> у тебя должен быть предусмотрен метод Q.DisConnect в СОМ
Вот...я про это и спрашиваю. Что в нем писать???
Slym (2006-07-18 08:23:00) [8]А так:
Q:=UnAssigned;
Sleep(1000);
Elen (2006-07-18 07:53:00) [9]
> Q:=UnAssigned;
Если ты хочеш отключиться от сервера, то у тебя должен быть предусмотрен метод Q.DisConnect в СОМ;
Elen (2006-07-18 07:51:00) [10]Удалено модератором
Примечание: Offtopic