所以这里是:
当我手动点击按钮(它打开门)时,一种效果很好的方法:
procedure TForm1.Button3Click(Sender: TObject);
begin
try
Screen.Cursor := crHourGlass;
try
intf.ExecuteControllerCommand(162, 1); //<--- THIS IS THE METHOD IM TALKING ABOUT
finally
Beep();
Screen.Cursor := crDefault;
end;
except
on e: Exception do
HandleException(e);
end;
end;
但是,当我想在某些程序事件中调用上述方法时会抛出异常(它关于门打开的可能性 - 它没有打开门):
procedure TForm1.HandlerOnMonitoringEvent(ASender: TObject;
date: TDateTime; time: TDateTime; networkID: Integer;
readerID: Integer; userID: Integer; groupID: Integer;
eventCode: Integer; zoneID: Integer; TandAID: Integer;
const strEvent: WideString; const strAccessPoint: WideString;
const strUserSource: WideString; const strGroup: WideString;
const strNetwork: WideString; const strZone: WideString;
const strTandAMode: WideString);
begin
ListBox1.Items.Add(DateToStr(date) + ' ' + TimeToStr(time) + '; ' + strEvent +
'; ' + strAccessPoint + '; ' + strUserSource + '; ' + strGroup + '; ' + strNetwork +
'; ' + strZone + '; ' + strTandAMode);
try
Screen.Cursor := crHourGlass;
try
intf.ExecuteControllerCommand(162, 1); //<--- THIS IS THE METHOD
finally
Beep();
Screen.Cursor := crDefault;
end;
except
on e: Exception do
HandleException(e);
end;
end;
此外,当我尝试从过程事件(在上面的过程中)中调用按钮单击时:
Form1.Button3Click(Button3);
它抛出同样的异常!我再说一遍:手动点击按钮一切都没问题。有什么问题?!
intf
是IPRMasterAutomation
类的实例。其初始化的ALWAYS(100%肯定)在另一个程序中如下:intf := CoPRMasterAutomation.Create()
。
我找到了一些可能是小费的内容:intf
已与prma
相关联。 prma
是TPRMasterAutomation
的一个实例。过程事件(在prma初始化之后声明如下:prma.OnMonitoringEvent := HandlerOnMonitoringEvent
(来自第一篇文章的事件);
然后连接:prma.ConnectTo(intf)
;