- Код: Выделить всё
Var
aObject: BObjectClass;
aManager: BManagerClass;
aForm: BFormStatusClass;
Begin
aObject := nil;
aManager := nil;
With CurrentThread Do
Begin
If HasParam('Activity') Then
Begin
aObject := ActivityManager.ChangeActivity(ByInteger('Activity'));
aManager :=ActivityManager;
End;
(aObject As IStatus).SetStatus(bsWork);
aObject.Burn; // <- Ошибка
End;
Если мы уберем строку (aObject As IStatus).SetStatus(bsWork); - исключение не поднимется. Если мы опишем:
- Код: Выделить всё
Var
aObject: BObjectClass;
aManager: BManagerClass;
aForm: BFormStatusClass;
Begin
aObject := nil;
aManager := nil;
With CurrentThread Do
Begin
If HasParam('Activity') Then
Begin
aObject := ActivityManager.ChangeActivity(ByInteger('Activity'));
aManager :=ActivityManager;
End;
BActivityClass(aObject).SetStatus(bsWork);
aObject.Burn; // <- теперь ошибки нет
End;
то опять же, код выполнится замечательно. Что происходит с aObject после (aObject As IStatus).SetStatus(bsWork);?