关于dll调用的问题

ganfang 2016-10-21 09:57:23
以前在DELPHI7 下调用的函数

function rdInfo_SSCID(t_sscinfo:pwidechar;cardid:pwidechar;ComputerID:pwidechar;Name:pwidechar;IDCard:pwidechar;sex:pwidechar):longint;stdcall; external 'HDSSSE32.dll';

调用的过程
procedure TForm1.Button1Click(Sender: TObject);
var
t_sscinfo:pchar;
cardid:pchar;
ComputerID:pchar;
Name:pchar;
IDCard:pchar;
sex:pchar;
i:longint;
begin
t_sscinfo := StrAlloc(MAX_PATH);
cardid := StrAlloc(MAX_PATH);
ComputerID := StrAlloc(MAX_PATH);
Name := StrAlloc(MAX_PATH);
IDCard := StrAlloc(MAX_PATH);
sex := StrAlloc(MAX_PATH);

i:=rdInfo_SSCID(t_sscinfo,cardid,ComputerID,Name,IDCard,sex);
end
在DELPHI7下调用正常

最近升到DELPHIXE7下调用,返回全是乱码。请指导
...全文
256 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ganfang 2016-10-26
  • 打赏
  • 举报
回复
感谢各位,用delphi7开发动态库 ,之后调用就可以,没有办法的办法
mdejtod 2016-10-26
  • 打赏
  • 举报
回复
用pansichar, 7下面的PCHAR就是PANSICHAR,而7之后的版本,pchar=pwidechar;你的动态库函数应该是要ansichar的
尤里二世 2016-10-26
  • 打赏
  • 举报
回复
請問樓主你的貼http://bbs.csdn.net/topics/390498148 問題解決了嗎?
YueLingYueLiang 2016-10-25
  • 打赏
  • 举报
回复
我也遇到过,delphi7开发的程序调用xe8的动态库,都是乱码,后面搞了很久还是不行,最后还是用delphi7开发动态库
SupermanTm 2016-10-25
  • 打赏
  • 举报
回复
直接用 GetMem 取内存缓冲区
Frank6600 2016-10-21
  • 打赏
  • 举报
回复
这个函数返回longint, 怎么才能返回全是乱码? 我觉得你需要说清楚问题。
ganfang 2016-10-21
  • 打赏
  • 举报
回复
我改过,还是不行
  • 打赏
  • 举报
回复
把那些pchar都改成pwidechar
ganfang 2016-10-21
  • 打赏
  • 举报
回复
cardid返回值: #$08C2'退邐邐'#$FFFE#$FFFF sex返回值:sex '䗇ﻼ'#$FFFF''#$FFFF#$08C2'退邐邐'#$FFFE#$FFFF
ganfang 2016-10-21
  • 打赏
  • 举报
回复
应该是字符的问题,我按照您的方法 t_sscinfo := WideStrAlloc(MAX_PATH);也不行,困扰我一天了
  • 打赏
  • 举报
回复
那应该是StrAlloc的问题。 可以: var t_sscinfo:pwidechar; ... t_sscinfo := WideStrAlloc(MAX_PATH);

16,748

社区成员

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

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