关于用delphi编写的Active Form的问题(50分)

  • 主题发起人 主题发起人 阿韬
  • 开始时间 开始时间

阿韬

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾,我用delphi编写了一个Active Form,用来跟后台通讯程序进行通讯,其中提供
了一个函数,函数定义如下:
function TTcpOcx.SendText(const SText: WideString
out RText: WideString;
const ServerIP: WideString
ServerPort, STimeOut,
RTimeOut: Integer): WideString;
我愿意是想用SText参数来传入我要发的包,用RText传出我从服务器接收到的包。可是我
在页面中使用javascript或者vbscript调用这个Active Form的SendText函数时,却达不
到我要的效果。
用javascript这样调用如下:
SText = "send text";
ret = TcpOcx.SendText(SText,RText,"172.27.0.199",6000,1,10);
alert(RText);
运行后,RText并没有传出我要的结果,alert(RText)出现的对话框是undefined。

用vbscript调用如下:
SText = "send text"
ret = TcpOcx.SendText(SText,RText,"172.27.0.199",6000,1,10)
msgbox(RText)
运行后,RText也没有传出我要的结果,TcpOcx.SendText根本就运行出错,如果把RText改
成一个字符串,比如"RText",就可以运行通过。

后来我没有办法,只好修改Active Form,我将RText要返回的东西用SendText的返回值返
回就可以实现了。

不知道这是为什么,是脚本不能实现传出参数吗?能不能解决。谢谢!
 
怎么没有人回答。。。。大虾们帮帮忙。
 
对不起,我也不会:(
哪儿有关于active方面的书呀,
请介绍几本。
 
需要使用safecall?
 
注意大小写
 
我的大小写没有错误呀
 
我也是要问这个
 
函数接口声明部分要加上Safecall;
 
proman, 在函数的定义部分加上Safecall就可以了吗?
 
对啊,比如:function getname(Avalue:integer):String;safecall;
The safecall convention must be used for declaring dual-interface methods. The pascal convention is maintained for backward compatibility. For more information on calling conventions, see Program control.
也可能是用stdcall代替safecall.
 
恐怕有难度,好象我原来发现ActiveForm和浏览器是完全隔离了的,都不能访问对方。
 
ActiveForm 和 TWebBrowser 并没有隔离,可以互访。
 
接受答案了.
 
后退
顶部