本人正在做一个二次开发,刚学delphi不久。有一些二次开发的资料。是一个.dll动态库,附加了其中一些函数的说明,其中的写类型的函数本人找了一些参照研究了之后还能凑合着用用,就是一些关于读记录的函数可能我的用法就有问题了,代码贴出来让各位路过的高手帮帮忙,看看到底是什么地方出问题了。
{ReadCardSN
Function ReadCardSN(Devno:Integer; Var CardSn:Integer):Integer
功能说明:读卡号。
参数说明: DevNo 为设备号(0——254),255 为广播号 CardSN 返回卡号
返回值:调用成功,返回1,否则,返回0。}
以上括号部分是其中一个函数的说明
我在程序中调用的时候是在implementation下面这样调用的。
Function ReadCardSN(Devno:Integer; Var CardSn:Integer):Integer;stdcall;external 'YET-100Comm.dll';//读取控制器当前状态
procedure TForm1.Button6Click(Sender: TObject);
var
Com:string;
jh,hc,BR,CtrNo,rs,CardSn:Integer;
begin
com:=com1
jh:=100
BR:=9600;
hc:=OpenCommPort(PChar(Com),BR);
if hc=-1 then
begin
showmessage('打开通信端口失败');
CloseCommPort(hc);
exit;
end else
begin
rs:=ReadCardSN(jh,CardSn);
if rs=1 then
begin
showmessage('成功')
edit1.text:=inttostr(CardSn);//我的目的是调用成功后返回它的卡号
end;
else
showmessage('失败');
CloseCommPort(hc);
end;
end;
请问路过的各位高手是不是我的调用的写法上有很严重的问题啊,望赐教,谢谢~
{ReadCardSN
Function ReadCardSN(Devno:Integer; Var CardSn:Integer):Integer
功能说明:读卡号。
参数说明: DevNo 为设备号(0——254),255 为广播号 CardSN 返回卡号
返回值:调用成功,返回1,否则,返回0。}
以上括号部分是其中一个函数的说明
我在程序中调用的时候是在implementation下面这样调用的。
Function ReadCardSN(Devno:Integer; Var CardSn:Integer):Integer;stdcall;external 'YET-100Comm.dll';//读取控制器当前状态
procedure TForm1.Button6Click(Sender: TObject);
var
Com:string;
jh,hc,BR,CtrNo,rs,CardSn:Integer;
begin
com:=com1
jh:=100
BR:=9600;
hc:=OpenCommPort(PChar(Com),BR);
if hc=-1 then
begin
showmessage('打开通信端口失败');
CloseCommPort(hc);
exit;
end else
begin
rs:=ReadCardSN(jh,CardSn);
if rs=1 then
begin
showmessage('成功')
edit1.text:=inttostr(CardSn);//我的目的是调用成功后返回它的卡号
end;
else
showmessage('失败');
CloseCommPort(hc);
end;
end;
请问路过的各位高手是不是我的调用的写法上有很严重的问题啊,望赐教,谢谢~
解决方案 »
- 谁能给我介绍一个好看一点主要是免费的程序皮肤!
- 如何实现IP映射?急
- IdUDPClient的问题,在线等,解决即给分。
- DBgrid 右键选中记录的问题!
- 接着散分!面对她,我可以脱离单身,但是我现在一直在犹豫......因为我家比较穷!
- 做过银行系统的请进!请教关于数据的安全传输的问题!
- 关于异常
- 我想让tmemo控件在win2000下能实现从右到左的阅读顺序,就是实现win2000下右键菜单的那个“从右到左的阅读顺序”这个菜单项的功能,怎么
- 关于界面显示的问题
- 如何通过RegisterHotKey函数动态注册热键?
- 哥发的不是分,是烦恼
- IE里面触发DownloadBegin事件之后,怎么停止download呢?
一般返回参数会传送地址
showmessage('成功')
edit1.text:=inttostr(CardSn);//我的目的是调用成功后返回它的卡号
这两句顺序换一下,不知道执行后提示成功还是失败?
Form1: TForm1;implementation function OpenCommPort(port:pchar;baudrate:integer):integer;stdcall;external 'YET-100Comm.dll';
function CloseCommPort(hc:integer):integer;stdcall;external 'YET-100Comm.dll';
function WriteTime(hc:integer;devno:integer;DT:string):integer;stdcall;external 'YET-100Comm.dll';
function AddList(hc,devno:integer;CardNo:integer;Name:string;GH:string;PW:string;LT:string;D1,D2:integer):integer;stdcall;external 'YET-100Comm.dll';
Function SetShowTitle(hc,Devno:Integer; StrTitle:String):Integer;stdcall;external 'YET-100Comm.dll';
Function SetDevNo(hc,OldDevno,NewDevno:Integer):Integer;stdcall;external 'YET-100Comm.dll';
Function OpenDoor(hc,Devno,CtrNo:Integer):Integer;stdcall;external 'YET-100Comm.dll';//软件开门
Function WriteBackLight(Devno,intSetup:Integer):Integer;stdcall;external 'YET-100Comm.dll';
Function DevReset(hc,Devno:Integer):Integer;stdcall;external 'YET-100Comm.dll';
Function ReadCardSN(Devno:Integer; Var CardSn:Integer):Integer;stdcall;external 'YET-100Comm.dll';
{$R *.dfm}以上是我引用的函数,就是这个读类型的函数不行
把Function ReadCardSN(Devno:Integer; Var CardSn:Integer):Integer;stdcall;external 'YET-100Comm.dll';
改为Function ReadCardSN(Devno:Integer; CardSn:pchar):Integer;stdcall;external 'YET-100Comm.dll';rs:=ReadCardSN(jh,CardSn);
改为rs:=ReadCardSN(jh,@CardSn);
Function ReadCardSN(Devno:Integer; Var CardSn:Integer):Integer
功能说明:读卡号。
参数说明: DevNo 为设备号(0——254),255 为广播号 CardSN 返回卡号
返回值:调用成功,返回1,否则,返回0。ReadDevAbout
Function ReadDevAbout(Devno:Integer; Var strAbout:ShortString):Integer
功能说明:读取设备厂商信息。
参数说明: DevNo 为设备号
strAout 返回设备厂商信息
返回值:调用成功,返回1,否则,返回0。ReadDevSN
Function ReadDevSN(Devno:Integer; Var strSn:ShortString):Integer
功能说明:读设备序列号
参数说明: DevNo 为设备号(0——254),255 为广播号 strSN 返回设备序列号返回值:调用成功,返回1,否则,返回0。以上是关于这个库的其中三个读类型的函数说明。我先试试楼上的说法,谢谢~