| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 830 人关注过本帖
标题:delphi 下的 dll 调用,改为 vfp 调用,如何做?
只看楼主 加入收藏
kyleyuan
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-10-14
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
delphi 下的 dll 调用,改为 vfp 调用,如何做?
procedure TForm1.Button1Click(Sender: TObject);
var
  OldPassWord,TemStr:string;
  RTurn,State,CardNo,LssjCount,Balance,butiemoney,butietime , yj,todayxfje,todayxftime,GB,Checkjh,CheckLimit,Isclear,i:Integer;
  LimitDate,Name,mima:PChar;
begin

    GetMem(Name,20);
    GetMem(mima,10);
    GetMem(LimitDate,20);
    RTurn:=ReadAllInfo(6,10,'FFFFFFFFFFFF',State,CardNo,Name,LimitDate,LssjCount,Balance,butiemoney,todayxfje,todayxftime,butietime,GB,yj,Checkjh,CheckLimit,Isclear , mima);

   IF    RTurn=1 then begin
           edit1.Text:=    Format('%.5d',[CardNo]);
    end ;
    TemStr:=    IntToStr(Balance)     ;

    Application.MessageBox(PChar('卡上余额:'+TemStr),'提示',64) ;
    edit2.Text:=     TemStr     ;
end;

=====================================以上是delphi================================

DECLARE _ReadAllInfo@76 IN "ICXF.DLL"  AS ReadAllInfo  ;
    INTEGER port,         INTEGER AreaNumber,     STRING MM,             INTEGER state,         INTEGER cardno, ;
    STRING @ chinaxm,     STRING @ LogOutDate,         INTEGER LssjCount,     INTEGER balance,     INTEGER butiemoney, ;
    INTEGER todayxfje,     INTEGER todayxftime,     INTEGER butietime,     INTEGER GB,         INTEGER yj, ;
    INTEGER Checkjh,     INTEGER CheckLimit,     INTEGER Isclear ,     STRING @ Mima

State=0
CardNo=0
chinaxm=Replicate(CHR(0), 20)
LogOutDate= Replicate(CHR(0), 10)
LssjCount=0
balance=0
butiemoney=0
todayxfje=0
todayxftime=0
butietime=0
GB=0
yj=0
Checkjh=0
CheckLimit=0
Isclear =0
mima=Replicate(CHR(0), 20)

ReadAllInfo(6,10,"FFFFFFFFFFFF",State,CardNo,;
    @ chinaxm,@ LogOutDate,LssjCount,balance,butiemoney,;
    todayxfje,todayxftime,butietime,GB,yj,;
    Checkjh,CheckLimit,Isclear ,@ Mima)
   
MESSAGEBOX(CardNo)

===================================以上是改为 vfp===============
问题:ReadAllInfo 这个调用失败 (执行到这个函数时)
错误:
  declare DLL call caused an exception
搜索更多相关主题的帖子: procedure 如何 
2014-10-14 20:04
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:10 
http://kqt007.blog.
2014-10-14 20:15
kyleyuan
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-10-14
收藏
得分:0 
上面的网址给我没用,这个dll文件,有很多调用函数,别的都OK,就是这个不行,不知是什么原因?
是不是参数有问题呢?
2014-10-14 20:20
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10551
专家分:42996
注 册:2014-5-20
收藏
得分:10 
试下:
DECLARE _ReadAllInfo@76 IN "ICXF.DLL" AS ReadAllInfo ......
改为:
DECLARE LONG _ReadAllInfo@76 IN "ICXF.DLL" AS ReadAllInfo ......
2014-10-14 20:39
kyleyuan
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-10-14
收藏
得分:0 
还是一样的
2014-10-14 20:44
kyleyuan
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-10-14
收藏
得分:0 
ic卡初始的密码是 "FFFFFFFFFFFF" ,一共12个 F,我都没有改密码

如果
ReadAllInfo(6,10,"FFFFFFFFFFFF",State,CardNo,; 这里把密码改到,可以执行,但是取不到数据
2014-10-14 20:46
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10551
专家分:42996
注 册:2014-5-20
收藏
得分:0 
"FFFFFFFFFFFF",这字串改用地址传送试过未?
Delphi的字串与VFP有点不同,特别是Delphi的short字串,第一个字节表示串长。
2014-10-14 22:13
快速回复:delphi 下的 dll 调用,改为 vfp 调用,如何做?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017857 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved