Форум: "Начинающим";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.019 c