Главная страница
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.047 c
1-1150972456
Старик
2006-06-22 14:34
2006.08.06
Различные варианты выгрузки приложения из памяти


4-1145342218
max999
2006-04-18 10:36
2006.08.06
Как правильно выбирать шрифты для рисования...


15-1152657553
Alx_
2006-07-12 02:39
2006.08.06
The security log on this system is full


2-1152877100
learner
2006-07-14 15:38
2006.08.06
Установление коннекта между NamedPipe-ми по сети.


2-1152725374
Антибайт
2006-07-12 21:29
2006.08.06
Нарисовать кнопку внутри Edit, как у The Bat!.