我正在尝试使用事件创建自动化服务器。此服务器将匹配已开发的客户端。这是处理客户端的* _TLB.Pas文件的一部分的事件。
ILocationMapServiceEvents = interface(IDispatch)
['{F03C34F5-CDD3-4558-8895-1A81C535CD8F}']
procedure OnFormClosed; safecall;
procedure OnMapCaptured(const mapState: WideString; mapImage: PSafeArray); safecall;
end;
ILocationMapServiceEventsDisp = dispinterface
['{F03C34F5-CDD3-4558-8895-1A81C535CD8F}']
procedure OnFormClosed; dispid 1;
procedure OnMapCaptured(const mapState: WideString;
mapImage: {NOT_OLEAUTO(PSafeArray)}OleVariant); dispid 2;
end;
但是当我尝试生成事件支持的代码时(通过单击“在Delphi自动化对象中生成事件支持代码”对话框),它只生成dispinterface
。
ILocationMapServiceEventsDisp = dispinterface
['{F03C34F5-CDD3-4558-8895-1A81C535CD8F}']
procedure onFormClosed; dispid 1;
procedure onMapCaptured(const mapState: WideString;
mapImage: {NOT_OLEAUTO(PSafeArray)}OleVariant); dispid 2;
end;
如何让Delphi(Mine XE5)生成带有接口和dispinterface的事件支持代码。
我真正的问题是我可以通过dispinterface发送PSafeArray。
更新:
此链接显示具有完全相同问题的其他人。但答案也不起作用。
https://www.experts-exchange.com/questions/21466789/COM-events-with-out-using-dispinterface.html