| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1350 人关注过本帖
标题:[求助]函数返回值
只看楼主 加入收藏
running_drea
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-3-16
收藏
 问题点数:0 回复次数:5 
[求助]函数返回值
我调用动态连接库函数,想把函数返回值输出到文本中。
public cardata
public cardnohex
public cardnodec
if thisform.olecontrol1.ReadSpecifyWithPass(1,4,"ffffff",0,1,cardata,cardnohex,cardnodec)=0 *ReadSpecifyWithPass为读IC卡数据函数
MESSAGEBOX('读数据失败',48,'信息提示')
else
thisform.text1.value=cardata
MESSAGEBOX('读数据成功',64,'信息提示')
endif
读数据成功,可文本框里显示F,那为大侠知道为什么?谢谢!
函数说明如下:
带密码读取指定块数据以十六进制字符串返回,并返回十进制卡号和十六进制卡号串
ReadSpecifyWithPass(int jh, int block, BSTR *pass,int ab, int closeorno, BSTR *data, BSTR *cardnohex,BSTR *cardnodec):BOOL
jh机号
block块号
pass密码
ab a密码还是b密码(a为0,b为1)
closeorno是否关卡(关卡为0,不关为1)
data返回的数据
cardnohex返回的十六进制卡号
cardnodec返回的十进制卡号
成功返回TRUE,失败返FALSE;
搜索更多相关主题的帖子: 返回值 函数 
2007-04-05 22:21
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
收藏
得分:0 
失败返回FALSE,当然就是 .F. 了啊!

2007-04-06 07:57
running_drea
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-3-16
收藏
得分:0 
回复:(baichuan)失败返回FALSE,当然就是 .F. 了啊...
那MESSAGEBOX怎么显示“读数据成功”?
2007-04-06 08:47
running_drea
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-3-16
收藏
得分:0 
下面是VB的程序,调试成功。与我用VFP编写的功能一样。懂VB的朋友看看我的程序错在哪里。
Dim Block As Long
Dim JH As Long
Dim AB As Long
Dim Closeorno As Integer
Dim BeepOrno As Integer
Dim pass As String
Dim rdata As String
Dim cardnodec As String
Dim cardnohex As String
Dim cardno As Double
Dim data As String
suc = WMTECH1611.ReadSpecifyWithPass(JH, Block, pass, AB, Closeorno, rdata, cardnohex, cardnodec)
If suc = 1 Then
Txtrece.Text = Txtrece.Text & "读取块" & Block & "成功!" & Chr(13) & Chr(10) & "data:" & rdata & Chr(13) & Chr(10) & "十进制卡号:" & cardnodec & Chr(13) & Chr(10) & "十六进制卡号:" & cardnohex & Chr(13) & Chr(10)
Text12.Text = Mid(cardnohex, 1, 2)
Text13.Text = Mid(cardnohex, 3, 2)
Text14.Text = Mid(cardnohex, 5, 2)
Text15.Text = Mid(cardnohex, 7, 2)
Else
Txtrece.Text = Txtrece.Text & "读取块" & Block & "失败!" & Chr(13) & Chr(10)
End If
2007-04-06 17:14
fown
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:58
帖 子:1229
专家分:171
注 册:2005-5-26
收藏
得分:0 


public Block,JH,AB,Closeorno,BeepOrno,pass,rdata,cardnodec, cardno,data

suc = thisform.olecontrol1.ReadSpecifyWithPass(JH, Block, pass, AB, Closeorno, rdata, cardnohex, cardnodec)
IF SUC=1
THISFORM.EDIT1.VALUE="读取块" + Block + "成功!" +Chr(13)+ "data:" + rdata + Chr(13)+ "十进制卡号:" + cardnodec + Chr(13)+ "十六进制卡号:" + cardnohex
ELSE
THISFORM.EDIT1.VALUE="读取块" + Block + "失败!"
ENDIF

其中VB中的MID()函数的功能为返回
Mid(string, start[, length])
返回 Variant (String),其中包含字符串中指定数量的字符
你的VFP代码中的
thisform.olecontrol1.ReadSpecifyWithPass(1,4,"ffffff",0,1,cardata,cardnohex,cardnodec)=0
不是从IC卡里记取出来的而是你指定的,你最好看一下与VB代码中定义的类型,还有,我不知道你的IC卡中返回0是不是失败,有的是返回1成功,不返回1失败,你看一下IC卡读卡器的说明,如果没有说返回0代表失败,你可以把=0失成<>0试一下,具体没看到你的IC卡读卡器,所以我写的代码不见得能用,只是乱写一下,希望对你有帮助
我不知道定义变量的返回值 的类型,不过看VB代码定义有字符型 也有长整型 ,你试下在吧在VFP里,如果出错你可以转一下字符型

[此贴子已经被作者于2007-4-6 18:22:14编辑过]


有人说VFP不行了,我想说,你连VFP十分之一的功能都不会用,你怎么知道VFP不行?本人拒绝回答学生的问题我回答问题一般情况下只提供思路不提供代码,请理解
2007-04-06 18:20
running_drea
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-3-16
收藏
得分:0 
jh机号,block块号,pass密码,ab a密码还是b密码(a为0,b为1),closeorno是否关卡(关卡为0,不关为1)这4个参数是指定的;
data返回的数据,cardnohex返回的十六进制卡号,cardnodec返回的十进制卡号这3个参数是返回值。
VARTYPE(CARDATA),得到L,看来CARDATA是逻辑型。可是在VB和函数说明里都是字符形呀?!我糊涂了,晕倒!

2007-04-07 09:57
快速回复:[求助]函数返回值
数据加载中...
 
   



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

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