Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.012 c
15-1152265095
Jeer
2006-07-07 13:38
2006.08.06
бизнес не удовлетворен уровнем подготовки выпускников вузов


15-1152640667
ArtemESC
2006-07-11 21:57
2006.08.06
Где можно заказать/купить пульт...


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


15-1152703463
Prohodil Mimo
2006-07-12 15:24
2006.08.06
Есть ли в HTML маски?


1-1150816843
Klopan
2006-06-20 19:20
2006.08.06
strip_tags





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский