| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2547 人关注过本帖
标题:VFP如何使用外部dll
只看楼主 加入收藏
laibinhua
Rank: 2
等 级:论坛游民
威 望:1
帖 子:283
专家分:38
注 册:2010-12-23
结帖率:58.97%
收藏
 问题点数:0 回复次数:8 
VFP如何使用外部dll
请教老师:在C# 可以下面代码正常使用这个dll,请问VFP里要怎么用它
        public const string path = @"ICCInter_HZ.dll";

        [DllImport(path)]
        public static extern void GetVer(IntPtr VerInfo);

        [DllImport(path)]
        public static extern int ICC_Transaction(int TransID, IntPtr DataIn, IntPtr DataOut);
VFP,我这样写,不对!?
表单LOAD事件
l_dll = MYPATH+ "\ICCInter_HZ.dll"
IF !FILE(l_dll)
   MESSAGEBOX("缺少文件"+l_dll+",阅读失败!",16,"提示")
   RETURN
ENDIF
Declare INTEGER ICC_Transaction IN (l_dll) int TransID,string DataIn,string @DataOut
表单Button1 click事件
LOCAL lma1
lma1=SPACE(200)
lma1=ICC_Transaction(1113,'12345')

thisform.edit1.Value=STRTRAN(ALLTRIM(lma1),CHR(0),[])


附:a)函数:ICC_Transaction
int ICC_Transaction (int TransNum, char *DataIn, char *DataOut)

说明:
应用系统卡交易处理入口。
具体交易定义请参见交易代码定义表。
参数:
TransNum       输入交易代码(见交易代码定义表)。
DataIn            输入数据字符串。
DataOut            输出数据字符串,注意分配足够存储空间。
返回:
0       成功。
< 0       错误(见错误代码定义表)。

[此贴子已经被作者于2019-1-15 15:48编辑过]

搜索更多相关主题的帖子: VFP dll 代码 int 定义 
2019-01-15 15:43
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:638
专家分:2472
注 册:2018-3-13
收藏
得分:0 
?ICC_Transaction(1113,'12345', @lma1)

这家伙很懒,啥也没留下
2019-01-15 16:08
laibinhua
Rank: 2
等 级:论坛游民
威 望:1
帖 子:283
专家分:38
注 册:2010-12-23
收藏
得分:0 
你好,谢谢回复:
它提示 Too many arguments
表单Init不知有没有写错
l_dll = MYPATH+ "\ICCInter_HZ.dll"
IF !FILE(l_dll)
   MESSAGEBOX("缺少文件"+l_dll+",阅读失败!",16,"提示")
   RETURN
ENDIF
Declare INTEGER ICC_Transaction IN (l_dll) int TransID,string DataIn,string @DataOut
表单button1 click
LOCAL lma1
lma1=SPACE(200)
lma1=ICC_Transaction(1113,'12345', @lma1)
2019-01-15 16:11
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:638
专家分:2472
注 册:2018-3-13
收藏
得分:0 
看错啦

[此贴子已经被作者于2019-1-15 16:14编辑过]


这家伙很懒,啥也没留下
2019-01-15 16:12
laibinhua
Rank: 2
等 级:论坛游民
威 望:1
帖 子:283
专家分:38
注 册:2010-12-23
收藏
得分:0 
你好,改成你这样了还是一样的提示:
它提示 Too many arguments

表单Init改成如下
l_dll = MYPATH+ "\ICCInter_HZ.dll"
IF !FILE(l_dll)
   MESSAGEBOX("缺少文件"+l_dll+",阅读失败!",16,"提示")
   RETURN
ENDIF
Declare INTEGER ICC_Transaction IN (l_dll) int TransID,string DataIn,string, @DataOut
2019-01-15 16:15
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:638
专家分:2472
注 册:2018-3-13
收藏
得分:0 
Declare INTEGER ICC_Transaction IN (l_dll) int TransID,string DataIn,string @DataOut
这种用法没试过,先改成绝对路径试试

这家伙很懒,啥也没留下
2019-01-15 16:21
laibinhua
Rank: 2
等 级:论坛游民
威 望:1
帖 子:283
专家分:38
注 册:2010-12-23
收藏
得分:0 
改成 这样了,还是一样的提示:
Declare INTEGER ICC_Transaction IN "C:\dxyybsoft\ICCInter_HZ.dll" int TransID,string DataIn,string @DataOut
2019-01-15 16:24
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10539
专家分:42927
注 册:2014-5-20
收藏(1)
得分:0 
函数原形:
int ICC_Transaction (int TransNum, char *DataIn, char *DataOut)
试试VFP声明:
Declare LONG ICC_Transaction IN "C:\dxyybsoft\ICCInter_HZ.dll" LONG, STRING@, STRING@
VFP调用:
nTransNum = 1113
cDataIn = "12345"
cDataOut = REPLICATE(0h00,200)
ret = ICC_Transaction(nTransNum, @cDataIn, @cDataOut)
if ret==0
    ? left(cDataOut, at(0h00,cDataOut)-1)
else
    ?"失败"
endif
2019-01-15 17:29
laibinhua
Rank: 2
等 级:论坛游民
威 望:1
帖 子:283
专家分:38
注 册:2010-12-23
收藏
得分:0 
回复 8楼 吹水佬
老大出手不一般,搞定
2019-01-15 19:00
快速回复:VFP如何使用外部dll
数据加载中...
 
   



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

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