读书人

delphi调用ocx传出参数的有关问题

发布时间: 2012-09-27 11:11:17 作者: rapoo

delphi调用ocx传出参数的问题
ocx中的函数原型是这样的

long Base64Decode(short * in, short * out, short len)

代码如下:

MS := TMemoryStream.Create;
TBlobField(ADOQuery1.FieldByName('zw')).SaveToStream(MS);
MS1 := TMemoryStream.Create;
wpalm1.Base64Decode(PSmallint(MS.Memory)^,PSmallint(MS1.memory)^,MS.Size);

这里总会报错,应该是是因为MS1没有初始化内存吧,
debug的时候也发现PSmallint(MS1.memory)^是Inaccessible value,MS1.memory是nil
这个应该怎么处理 小弟完全不会delphi的 请各位指点 谢谢

[解决办法]
设置 MS.Position := 0 试试
[解决办法]
还没解决呀?
第2个可以不用MS1了,
var
OutBuf : PAnsiChar;
begin
...
GetMem(OutBuf , MS.Size * 2);
FillChar(OutBuf^ , MS.Size*2 , 0);
wpalm1.Base64Decode(PSmallint(MS.Memory)^,PSmallint(OutBuf)^,MS.Size);
//这个函数应该有返回值才对,返回长度,
//根据这个长度,取OutBuf,就得到结果,

FreeMem(OutBuf);
end;

读书人网 >.NET

热点推荐