Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1226754
  • 博文数量: 788
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 7005
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-19 15:52
文章存档

2017年(81)

2011年(1)

2009年(369)

2008年(337)

分类:

2009-01-04 16:55:46



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



--------------------------
盛大招聘.Net开发工程师

新闻:2008年开源软件10大胜利
导航:博客园首页  知识库  新闻  招聘  社区  小组  博问  网摘  找找看
阅读(1117) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~