Як дізнатися живий ще OLE - об'єкт або його вже хтось прибив?
Доброго всім дня.
Як дізнатися живий ще OLE - об'єкт або його вже хтось прибив?
Приклад такої:
створюється
MSWord: Variant;
.
MSWord: = CreateOleObject ( "Word.Application");
.
Виникає необхідність дізнатися: об'єкт створений CreateOleObject ще існує або користувач його вже закрив?
Невже ніхто не знає?
if VarIsEmpty (MSWord) then
по-моєму так
пробував я так. Це працює якщо об'єкт ще не створювався. А якщо він був створений і знищений то це не проходить :-(.
А звернутися до якогось його властивості або методу, який гарантовано повинен працювати якщо об'єкт живий і зловити виняток? Начебто я так робив колись.
Так я теж пробував. Якщо об'єкт вбили то чомусь Exception в try
.
except
.
end;
А що, якщо об'етов вбили, то якась агресивна дія між try except нормально виконується.
Хто ж його виконав, якщо об'єкт вбили?
Ви мене не зовсім так зрозуміли.
приклад:
try
tmp: = MSWord.Selection.Start; // Якщо об'єкт ще живий то це працює без помилки якщо немає то повинен з'явиться OleError.
Він з'являється. Правда замість того щоб передати управління на секцію except з'являється message про помилку.
except
.
end;
приведу шматочок з файлу wordauto.pas, що входить до складу дельфи як приклад.
У цій процедурі створюється об'єкт word-a і заходная перевіряється - НЕ гримнув його хто-небудь. А взагалі запустіть приклад word8auto.dpr і вам стане ясно.
procedure TForm1.NewDocButtonClick (Sender: TObject);
begin
# 032; try
# 032; # 032; WordObject.NewDoc ( "");
# 032; except
# 032; # 032; ShowMessage ( "It seems like somebody killed Word and didn" "t tell me about it.");
# 032; # 032; if Assigned (WordObject) then begin
# 032; # 032; # 032; LaunchButton.Enabled: = True;
# 032; # 032; # 032; CloseButton.Enabled: = False;
# 032; # 032; # 032; NewDocButton.Enabled: = False;
# 032; # 032; # 032; TypeTextButton.Enabled: = False;
# 032; # 032; # 032; WordObject.Free;
# 032; # 032; # 032; WordObject: = nil;
# 032; # 032; end;
# 032; end;
end;
WordObject. TWordObject;
Це для TWordObject. А для OLE?
Пам'ять: 0.73 MB
Час: 0.033 c