delphi写asp组件时返回类型造成的问题

   在做asp组件时,遇到了一个令人困惑的问题。我有个函数,里面是把一些字符串进行转换,asp中调用该函数,输入字符串后返回处理后的字符串,就是这么一个函数,在application中调试得很正常,但是在asp组件中调用居然有些错误有些正确。在刚刚试验完可以调试asp组件后,通过跟踪,发现了一些很奇怪的问题,在函数里面所有过程得到的值都正确,但是到返回给asp后就有某些字符串被截断了!组件中的函数输入是bstr类型,输出是OleVariant *。后来我干脆用了个中间量tmpvalue,函数结尾先输出tmpvalue,再令result:=tmpvalue,然后再输出tmpvalue, 这时奇迹出现了,输出的结果中result的值居然在尾部有几个字符发生了变化。(为了看得清楚点,我把字符转成16进制数显出出来了)
[code]
DBGPrint('tmpvalue:'+strtohexstr(tmpvalue));
   result:=tmpValue;
   DBGPrint('result value:'+strtohexstr(result));
[/code]

结果是:
     tmpvalue:758BC6413F4ED3220ED0D52BAF3EF222
 result value:758BC6413F4E3F0ED0D52B3F3F

我倒,看来是OleVariant 在字符串赋值时自动给我做了手脚了,害我调试找原因找了N久!

现在的解决办法看来可能可以是把结果以二进制的buf返回又或者返回十六进制字符给asp,然后asp中再把十六进制转回字符串。想尝试用别的类型来做,但是试了几个都不成功。:(

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值