Главная страница
    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.015 c
15-1152531077
Romkin
2006-07-10 15:31
2006.08.06
Темное пиво


2-1152957810
Лыган
2006-07-15 14:03
2006.08.06
Помогите с MaskEdit !


2-1152859528
T54
2006-07-14 10:45
2006.08.06
Добавление bmp к exe . . .


15-1152680424
начинающий
2006-07-12 09:00
2006.08.06
Можно ли квотировать ICS?


2-1153208432
rebroff
2006-07-18 11:40
2006.08.06
Запрос с извлечением года из даты рождения (InterBase)





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