/*参数
COMID 串口号
CardID IC卡号;
CardGas 卡内剩余气量 ;
IcNum 为发卡次数
IcMark 为卡片备注
passbuf 为加密信息,128位
*/int __stdcall Bank_Read(int COMID,char * cardid,int *cardgas,int * icnum,int *ic,char *passBuff);
int __stdcall Bank_Write(int COMID,char * cardid,int cardgas,char * passbuf);
**********以上是厂家给的C代码,动态库函数的调用方法**********//以下 是我尝试写的Delphi7调用的代码。function HYYTReadCard(COMID: Integer; CardID: PAnsiChar; var CardGas: Integer; var IcNum, IcMark: Integer; password: PAnsiChar): Integer; stdcall;
function HYYTWriteCard(COMID: Integer; CardID: PAnsiChar; var CardGas: Integer; password: PAnsiChar): Integer; stdcall;
function HYYTReadCard; external 'HYYT_Card.dll' name 'Bank_Read';
function HYYTWriteCard; external 'HYYT_Card.dll' name 'Bank_Write';procedure TYzqtMainForm.btn2Click(Sender: TObject); //---读卡
var
gStat1:integer;
COMID: integer; //串口号,1送0
CardID: array[1..10] of char; // 卡号
CardGas: integer; // 卡内余量
IcNum: integer; //发卡次数
IcMark: integer; //备注信息
password: array[1..128] of char; //卡密
begin
gStat1:=HYYTReadCard(COMID,@CardID,CardGas,IcNum,IcMark,@password);
if gStat1=0 then
begin
showmessage('读卡成功!');
//showmessage(inttostr(ICErroy)+':'+trim(ErroyMsg)) ;
showmessage('@串口号comm:@'+inttostr(COMID)+'@');
showmessage('@用户卡编号@'+CardID+'@');
showmessage('@卡内余量@'+inttostr(CardGas)+'@@');
showmessage('@发卡次数@'+inttostr(IcNum)+'@@');
showmessage('@发卡备注@'+inttostr(IcMark)+'@@');
edt1.Text:= trim(password);
end;
end;
出现的问题是,除了 password: array[1..128] of char; //卡密 这一项获取了数据,其他字段都没数据,都为0或者为空。CardID这个参数的用法应该是和卡密的一样,但是也没有数据。 CardGas, IcNum,IcMark的定义是不是有问题。不太清楚指针的准确定义。希望得到指教。如何翻译一下厂家的两行代码。
COMID 串口号
CardID IC卡号;
CardGas 卡内剩余气量 ;
IcNum 为发卡次数
IcMark 为卡片备注
passbuf 为加密信息,128位
*/int __stdcall Bank_Read(int COMID,char * cardid,int *cardgas,int * icnum,int *ic,char *passBuff);
int __stdcall Bank_Write(int COMID,char * cardid,int cardgas,char * passbuf);
**********以上是厂家给的C代码,动态库函数的调用方法**********//以下 是我尝试写的Delphi7调用的代码。function HYYTReadCard(COMID: Integer; CardID: PAnsiChar; var CardGas: Integer; var IcNum, IcMark: Integer; password: PAnsiChar): Integer; stdcall;
function HYYTWriteCard(COMID: Integer; CardID: PAnsiChar; var CardGas: Integer; password: PAnsiChar): Integer; stdcall;
function HYYTReadCard; external 'HYYT_Card.dll' name 'Bank_Read';
function HYYTWriteCard; external 'HYYT_Card.dll' name 'Bank_Write';procedure TYzqtMainForm.btn2Click(Sender: TObject); //---读卡
var
gStat1:integer;
COMID: integer; //串口号,1送0
CardID: array[1..10] of char; // 卡号
CardGas: integer; // 卡内余量
IcNum: integer; //发卡次数
IcMark: integer; //备注信息
password: array[1..128] of char; //卡密
begin
gStat1:=HYYTReadCard(COMID,@CardID,CardGas,IcNum,IcMark,@password);
if gStat1=0 then
begin
showmessage('读卡成功!');
//showmessage(inttostr(ICErroy)+':'+trim(ErroyMsg)) ;
showmessage('@串口号comm:@'+inttostr(COMID)+'@');
showmessage('@用户卡编号@'+CardID+'@');
showmessage('@卡内余量@'+inttostr(CardGas)+'@@');
showmessage('@发卡次数@'+inttostr(IcNum)+'@@');
showmessage('@发卡备注@'+inttostr(IcMark)+'@@');
edt1.Text:= trim(password);
end;
end;
出现的问题是,除了 password: array[1..128] of char; //卡密 这一项获取了数据,其他字段都没数据,都为0或者为空。CardID这个参数的用法应该是和卡密的一样,但是也没有数据。 CardGas, IcNum,IcMark的定义是不是有问题。不太清楚指针的准确定义。希望得到指教。如何翻译一下厂家的两行代码。
解决方案 »
- 请教:sql server 2000 中的 bigint ,是 8 位长度,是吗?在delphi 是哪个类型和它对应?谢谢!
- f1book1在delphi6.0的安装?
- AciveForm技术是否已经过时了?
- 怎末这个论坛这末商业化啊?如果新手的分用完了,不是不用再问了?
- 烦人的问题
- 怎么使dbGrid 的列宽自动适应 显示内容的宽度???下班前结贴
- TTreeView控件的使用??
- ★★★★如何:将多个文件存放到一个字段内,然后读出并分离★★★★
- 能不能用maskedit来限制小数输入啊,比如格式为0.111,该怎么控制这个格式
- 写了一个简单的Web Service程序,运行时出现500错误,为什么?
- dsoframer用在delphi中打开一个word文档,编辑word文档的时候发现复制粘贴不能用。
- 求比较好用的PDF控件,用于delphi7的。
function HYYTWriteCard(COMID: Integer; CardID: PAnsiChar; CardGas: Integer; password: PAnsiChar): Integer; stdcall; external 'HYYT_Card.dll' name 'Bank_Write';
procedure TYzqtMainForm.btn2Click(Sender: TObject); //---读卡
var
gStat1:integer;
COMID: integer; //串口号,1送0
CardID: array[0..9] of char; // 卡号
CardGas: integer; // 卡内余量
IcNum: integer; //发卡次数
IcMark: integer; //备注信息
password: array[0..127] of char; //卡密
begin
gStat1:=HYYTReadCard(COMID,CardID,CardGas,IcNum,IcMark,password);
if gStat1=0 then
begin
showmessage('读卡成功!');
//showmessage(inttostr(ICErroy)+':'+trim(ErroyMsg)) ;
showmessage('@串口号comm:@'+inttostr(COMID)+'@');
showmessage('@用户卡编号@'+CardID+'@');
showmessage('@卡内余量@'+inttostr(CardGas)+'@@');
showmessage('@发卡次数@'+inttostr(IcNum)+'@@');
showmessage('@发卡备注@'+inttostr(IcMark)+'@@');
edt1.Text:= trim(password);
end;
end;