Главная страница
    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.019 c
15-1152685483
Gurion
2006-07-12 10:24
2006.08.06
глюки WinXP


2-1153045175
Ильдар
2006-07-16 14:19
2006.08.06
Добавление файлов из подкаталога


8-1139150998
guitarist
2006-02-05 17:49
2006.08.06
ScreenMate


15-1152095029
igrek23
2006-07-05 14:23
2006.08.06
компоненты для работы с топографическими картами


2-1152864598
yurick1
2006-07-14 12:09
2006.08.06
компоненты





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский