delphi调用ocx传出参数的问题

baggiowd 2012-08-17 09:28:17
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的 请各位指点 谢谢
...全文
307 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
baggiowd 2012-08-20
  • 打赏
  • 举报
回复
函数不好用, 换delphi的EncdDecd.DecodeStream试试
baggiowd 2012-08-17
  • 打赏
  • 举报
回复
数据库中的长度也只是MS1中数据的长度,这个函数是base64解码函数,返回的数据长度未知啊
不光是这个函数,这个开发包的所有函数都很烂....
蓝色光芒 2012-08-17
  • 打赏
  • 举报
回复
看一下数据库字段中是否有长度字段,没长度,这个函数写得不好
baggiowd 2012-08-17
  • 打赏
  • 举报
回复
还是不行啊
MS1.Position := 0的 PSmallint(MS1.memory)^依然是Inaccessible value
如果用OutBuf : PAnsiChar的话 又取不回长度了
baggiowd 2012-08-17
  • 打赏
  • 举报
回复
函数原型 long Verify(short * storedata, long length)
功能简介 验证静脉数据.一对一验证在线式.
参数说明 shpvein:当前采集数据;
shsvein:已注册数据.
返回值 0:成功;-1:失败.


原型 long Base64Decode(short * in, short * out, short len)
功能简介 用于将数据进行Base64 解码码
参数说明 In :输入数据(文本)
Out:输出数据(二进制)
Len:输入数据长度.
返回值 0:成功;-1:失败.
上面是用到的两个函数的原型

程序中是这样的:
wpalm1.Base64Decode(in : Smallint,out : Smallint,len : Integer);
result := wpalm1.Verify(in : Smallint , len :Integer );
baggiowd 2012-08-17
  • 打赏
  • 举报
回复
long Base64Decode(short * in, short * out, short len)
的返回值是0成功,-1失败

呵呵 昨天是第一步....
蓝色光芒 2012-08-17
  • 打赏
  • 举报
回复
还没解决呀?
第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;
bdmh 2012-08-17
  • 打赏
  • 举报
回复
设置 MS.Position := 0 试试
baggiowd 2012-08-17
  • 打赏
  • 举报
回复
写错了 是MS的长度 MS1不知道的
我也看到delphi也有base64解码过程了
请问 怎么把EncdDecd.pas 引入到五的工程中 我试了好久 老是报错 can not load dclusr70???
蓝色光芒 2012-08-17
  • 打赏
  • 举报
回复
MS1的长度,不正式我们需要的长度吗?就是OutBuf的长度
蓝色光芒 2012-08-17
  • 打赏
  • 举报
回复
要不直接用Delphi下的Base64过程试一下能不能解码

16,747

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧