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

Вниз

OLE Automation   Найти похожие ветки 

 
GanibalLector ©   (2006-07-18 00:42) [0]

Предположим я создал 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 не помогло :(  

Заранее спасибо!


 
Elen ©   (2006-07-18 07:51) [1]

Удалено модератором
Примечание: Offtopic


 
Elen ©   (2006-07-18 07:53) [2]


> Q:=UnAssigned;

Если ты хочеш отключиться от сервера, то у тебя должен быть предусмотрен метод Q.DisConnect в СОМ;


 
Slym ©   (2006-07-18 08:23) [3]

А так:
Q:=UnAssigned;
Sleep(1000);


 
GanibalLector ©   (2006-07-18 21:47) [4]

2 Elen ©   (18.07.06 07:53) [2]
> у тебя должен быть предусмотрен метод Q.DisConnect в СОМ

Вот...я про это и спрашиваю. Что в нем писать???


 
GanibalLector ©   (2006-07-18 23:35) [5]

Сделал так :

...
type
 TMyTest = class(TAutoObject, IMyTest)
 protected
    ...
    procedure Disconnect; safecall;
 end;

implementation

uses ComServ,Unit1;

procedure TMyTest.Disconnect;
begin
 Form1.Destroy;// вместо Close
end;


и заработало. Странно!!! Кто-нибудь может объяснить в связи с чем такой сабж?


 
Elen ©   (2006-07-19 07:45) [6]


> Form1.Destroy;// вместо Close

ИМХО Close не удаляет из памяти а только типа "сворачивает", а Destroy удаляет. т.е. после Close можно вызвать Show и работать будет, а после Destroy вылезет ошибка


 
StriderMan ©   (2006-07-19 17:35) [7]


>  Form1.Destroy;// вместо Close

тогда уж Form1.Free


 
umbra ©   (2006-07-19 17:42) [8]

По-моему, Form1.Release, все же, лучший вариант


 
StriderMan ©   (2006-07-19 17:47) [9]


> 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:59) [10]

2 StriderMan ©   (19.07.06 17:47) [9]


> вобщем-то Release от Free отличается тем, что форма закроется
> только когда обработает все сообщения.


именно это я и имел в виду :)



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

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

Наверх




Память: 0.49 MB
Время: 0.115 c
2-1153302763
novill
2006-07-19 13:52
2006.08.06
Обработчик один - классы объектов разные, как объявить?


2-1153328997
learner
2006-07-19 21:09
2006.08.06
NamedPipe информация о подсоединившемся клиенте.


15-1152146509
PATRIOT
2006-07-06 04:41
2006.08.06
Проблема с пересылкой файла


3-1148961704
ganda
2006-05-30 08:01
2006.08.06
Организация истории изменения таблицы


15-1152203317
Vlad
2006-07-06 20:28
2006.08.06
Интернет-конференция с В.В.Путиным