用DELPHI建的自动化对象,ASP语句应该怎么写(参数引用的问题)(200分)

N

NoSound

Unregistered / Unconfirmed
GUEST, unregistred user!
用delphi做了一个ActiveX Library,里面有一个自动化对象,用来
压缩和解压缩数据:

IPack = interface(IDispatch)
['{B89D910B-EBE8-44F5-BDCB-2AB986D332D1}']
function Compress(OrgData: OleVariant
out CRC: LongWord): OleVariant
safecall;
function Decompress(CompressedData: OleVariant): OleVariant
safecall;
end;

生成DLL后,放到Web服务器的C:/WINNT/System32下,用regsvr32注册成功。
然后先用Delphi编了一段测试代码,测试这个对象,一切正常。
试着用ASP来调用时,就不行了。(ASP代码如下)

<%
'data为一个Variant类型的的变量,里面已经包含了数据
Dim tmp, crc
Set pack = Server.Create("MyPack.Pack") '这句执行成功了,对象成功建立
'以下无论用哪种方式,都在运行时刻错,错误提示要不是
'参数类型不对,就是参数的个数不对,实在不知应该怎么写

tmp = pack.Compress(data, crc) '错
Call pack.Compress(data, crc, tmp) '错
Call pack.Compress(data, tmp, crc) '还是错
%>

  请问这种涉及到引用调用的方法,应该怎么写?非常感谢

 
tmp = pack.Compress(data, crc) '错
Call pack.Compress(data, crc, tmp) '错
Call pack.Compress(data, tmp, crc) '还是错
修改为:set tmp = pack.Compress(data, crc)
如果返回记录集时加set
 
加了Set还是错,返回的并不是数据集,而是一个Variant,准确地说,是一个VarArray
 
把這個 Set pack = Server.Create("MyPack.Pack")
改成 Set delphipack = Server.Create("MyPack.Pack") 試一下
最好不要用相同的名稱!
/// Call pack.Compress(data, crc, tmp)
把call去掉! pack.Compress(data, crc, tmp) 把pack改成上面的delphipack
試一下,不行的話把錯誤信息帖出來!大家一起研究一下!

 
顶部