在ActiveX中使用WideString与String时出现的问题(80分)

  • 主题发起人 主题发起人 zhaozhao
  • 开始时间 开始时间
Z

zhaozhao

Unregistered / Unconfirmed
GUEST, unregistred user!
在ActiveXfrom中定义了一个函数:
function aa(instr:widestring):widestring;
var str:string;
begin
...
str:='111';
Result:=str;
end;

执行到“str:='111'”都正常,下一步当返回结果结束后,浏览器会提示非法操作,然后浏览器就关闭了。
如果在“Result:=str”后面加上messagebox,将str显示一下的话就不会提示非法操作了,且可以正常运行,这是为何?
 
string和widestring在内存格式上完全不同,string是Delphi才有的字符串指针。而widestring本质上讲是unicode(宽字节字符集),象API一样,它是各个语言都能识别的。
所以string和widestring不能简单的相互传递或附值的。
至于你所说的加messagebox就不出现非法操作的情况,我也遇到过,我想这应该是一个不大不小的BUG,不用过多的去想它。[^]
 
那我应该如何解决呢

我在工程文件中加sharemem以后,控件下载时会提示非法操作,然后这个程序就能正常运行了。但如果去掉sharemem,也返回数据,但是乱码
 
后退
顶部