procedure TForm1.Button3Click(Sender: TObject);
var
s:String;
i:integer;
begin
buf[0]:=$79;
buf[1]:=$78;
buf[2]:=$4A;
buf[3]:=$2E;
buf[4]:=0;
buf[5]:=0;
buf[6]:=0;
buf[7]:=0;
Ret:=SystemInitialization_EX(@buf); //设置读取参数
if Ret<>1 then
begin
CheckErr(Ret); //出错检测
Exit;
end; Ret:=ReadSystemPas_EX(@buf); //读客户参数
if Ret<>1 then
begin
CheckErr(Ret); //出错检测
Exit;
end;
//------------------------------------------------------------
//以十六进制数进行字符串显示保存
//------------------------------------------------------------
s := '';
for i:=0 to 8 do
begin
s:= s+IntToHex(buf[i],2);
end; TSystemPas.Text := s;
LSystemPas.Caption := s; Button4.Enabled:=true;
Button3.Enabled:=false;
end;procedure TForm1.Button4Click(Sender: TObject);
begin Ret:=SystemInitialization_EX(@buf); //设置客户参数
if Ret<>1 then
begin
CheckErr(Ret); //出错检测
Exit;
end;
我只知道这是一段门锁管理系统读写授权卡的代码,谁能给我具体解释下
另外我还想知道
1、红色代码@buf什么意思啊?Delphi里@和$是什么意思?
2、我不想每次制卡都读取授权卡参数设置才能制卡,我想直接制卡,怎样把我读取的客户参数直接写进去,跳过读参数这部分呢
请高手赐教。万分感谢!
var
s:String;
i:integer;
begin
buf[0]:=$79;
buf[1]:=$78;
buf[2]:=$4A;
buf[3]:=$2E;
buf[4]:=0;
buf[5]:=0;
buf[6]:=0;
buf[7]:=0;
Ret:=SystemInitialization_EX(@buf); //设置读取参数
if Ret<>1 then
begin
CheckErr(Ret); //出错检测
Exit;
end; Ret:=ReadSystemPas_EX(@buf); //读客户参数
if Ret<>1 then
begin
CheckErr(Ret); //出错检测
Exit;
end;
//------------------------------------------------------------
//以十六进制数进行字符串显示保存
//------------------------------------------------------------
s := '';
for i:=0 to 8 do
begin
s:= s+IntToHex(buf[i],2);
end; TSystemPas.Text := s;
LSystemPas.Caption := s; Button4.Enabled:=true;
Button3.Enabled:=false;
end;procedure TForm1.Button4Click(Sender: TObject);
begin Ret:=SystemInitialization_EX(@buf); //设置客户参数
if Ret<>1 then
begin
CheckErr(Ret); //出错检测
Exit;
end;
我只知道这是一段门锁管理系统读写授权卡的代码,谁能给我具体解释下
另外我还想知道
1、红色代码@buf什么意思啊?Delphi里@和$是什么意思?
2、我不想每次制卡都读取授权卡参数设置才能制卡,我想直接制卡,怎样把我读取的客户参数直接写进去,跳过读参数这部分呢
请高手赐教。万分感谢!
$表示16进制,$79表示16进制的79也就是十进制的121
我现在读出来
TSystemPas.Text := s;
显示出来的一排数字和字母应该就是参数
怎么直接利用这个参数呢,而不用每次都先读取授权卡才能制卡
对了~是用ReadSystemPas函数从"授权卡"中读取参数 ,然后把所读到的参数放入SystemInitialization参数中的。
http://topic.csdn.net/u/20101025/21/80a0054a-58a3-4d29-afd9-69b97089421f.html
ReadSystemPas具体是怎么操作的?读与写是否有关联(例如写函数要用的变量,需要在读函数中赋值)?
如果有关联,那么你不能省略读操作。
举个例子。
var
myParameter:string; procedure TForm1.Button1Click(Sender: TObject);
var
para:string;
begin
para:='myparameters'; //获取参数
ReadPara(para); //读取参数
setPara; //保存参数到button(把button想象成卡)
//想不调用读操作是不可能的,因为所需要的myParameter在读操作里才有。
//即使你不调用读操作,那你也必须将关键的赋值,自己手动补上。
{
para:='myparameters';
myParameter:=para; //其实依然做了读操作的工作。
setPara;
}
end;
procedure TForm1.ReadPara(para:string);
begin
myParameter:=para;
end;
procedure TForm1.setPara;
begin
button1.caption:=myParameter;
end;
除非读写操作无关联,否则不能跳掉读操作,可一般不太可能出现这样的情况。
试问,你不读哪里来的写。
正如上面那个例子,怎么都要对myparameter赋值,你才能将正确值写入button中。
Function ReadSystemPas(Password:Pointer): SmallInt; stdcall;external 'Card.dll';
反正我是觉得,得看读函数和写函数的代码怎么写的,估计可以吧。
你那dll没源代码的吧,这样太难了。
帮不到你。抱歉啊。
我读出来的参数显示出来
s := '';
for i:=0 to 8 do
begin
s:= s+IntToHex(buf[i],2);
end; TSystemPas.Text := s;
是一串十六进制数字,我想可不可以把它直接放在SystemInitialization_EX(那串16进制数字)里
另外代码里@buf是不是16进制的数字?