全部博文(788)
分类:
2009-01-04 16:55:46
建议用WideString,双字节,或者使用VARIANT
(1)BSTR类型是COM中使用的标准字符串类型。它其实是一个32位指针,保存字符串首字符的地址。既然是指针类型,好的习惯应该是在定义一个BSTR类型变量时立刻初始化为NULL,即使随后立刻就会对其进行赋值。
(2)pLastNode->get_text(BSTR* pstrText)方法内部为返回的字符串分配了内存资源,并将该字符串的地址bsName变量中。
(3)外部使用者pLastNode->get_text方法的调用者必须自己调用SysFreeString(BSTR bstr)方法释放BSTR类型字符串占用的资源。
MSDN中用关于BSTR和其他字符串类型的更详细的叙述。
跟OnCall有关的定义:
procedure OnCall(const Param1: WideString); dispid 209;
TActiveFormXOnCall = procedure(ASender: TObject; const Param1: WideString) of object;
FOnCall: TActiveFormXOnCall;
property OnCall: TActiveFormXOnCall read FOnCall write FOnCall;
procedure TActiveFormX.Button1Click(Sender: TObject);
var
msg: WideString;
begin
msg:='测试';
self.FEvents.OnCall(msg);
end;
一点击这个按钮就出错。