首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2012-09-27 
delphi调用ocx传出参数的问题ocx中的函数原型是这样的long Base64Decode(short * in, short * out, short

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;

热点排行