有关ActiveX控件事件的问题

有关ActiveX控件事件的问题 VCL组件开发及应用
http://www.delphi2007.net/DelphiVCL/html/delphi_20061221000855234.html
我在ActiveForm里面添加了一个事件OnCall,参数为BSTR类型,  
  然后添加了一个Button,当单击Button的时候引发OnCall事件,  
  我传了一个String进去.  
  在JavaScript中我用一个简单的显示事件参数的函数来实现这个事件的回调.  
  结果运行时点击Button提示  
  "Access   violation   at......".  
  高手们指教啊

建议用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;  
  一点击这个按钮就出错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值