access violation at address rtl70.bpl
场景:"Access violation at address 400068E2 in module 'rtl70.bpl'."该怎么解决
"Access violation at address 400068E2 in module 'rtl70.bpl'."
我在做明华射频卡时出现的错误:"Access violation at address 400068E2 in module 'rtl70.bpl'."
程序代码:
snr:=0;
sector:=7; //第8扇区
block:=28; //第8扇区的第一个块
loadmode:=0; //密码验证方式 0-2是选择A套密码,4-6是B套密码
icdev := rf_init(sReaderComValue,115200); // 初始化串口
if icdev<0 then begin
Result:=-1;
rf_exit(icdev);
UWarningMsgBox('初试化IC卡失败');
exit;
end;
st:= rf_beep(icdev,10);
if st <>0 then begin
Result := -1;
rf_exit(icdev);
Exit;
end;
st:=rf_get_status(icdev,@status);
if st<>0 then begin
Result:=-1;
rf_exit(icdev);
UWarningMsgBox('请插入IC卡-->1');
exit;
end;
st:=rf_load_key_hex(icdev,loadmode,sector, 'ffffffffffff');
if st<>0 then begin
ShowMessage('load key error');
rf_exit(icdev);
Exit;
end;
st:=rf_card(icdev,1,@snr);
if st<>0 then begin
ShowMessage('rf_card error');
rf_exit(icdev);
Exit;
end;
st:=rf_authentication(icdev,loadmode,sector);
if st<>0 then begin
ShowMessage('rf_authentication error');
rf_exit(icdev);
Exit;
end;
st:=rf_write_hex(icdev,block,'A1A2A3A4A5A6A7A8A1A2A3A4A5A6A7A8');
if st<>0 then begin
ShowMessage('rf_write_hex error');
rf_exit(icdev);
Exit;
end;
st:=rf_check_writehex(icdev,snr,loadmode,block,'A1A2A3A4A5A6A7A8A1A2A3A4A5A6A7A8');
if st<>0 then begin
ShowMessage('rf_check_writehex error');
rf_exit(icdev);
Exit;
end;
st:=rf_write_hex(icdev,block+3,'ffffffffffffff078069ffffffffffff'); //写密码,当控制字节为默认值'FF 07 80 69'时,核对KEYB是无效的,改为'7F 07 88 69'时,可用KEYB。
if st<>0 then begin
ShowMessage('rf_write_hex error');
rf_exit(icdev);
Exit;
end;
st:=rf_read_hex(icdev,block,@s);
if st<>0 then begin
ShowMessage('rf_read_hex error');
rf_exit(icdev);
Exit;
end;
st:=rf_halt(icdev);
if st<>0 then begin
ShowMessage('load key error');
rf_exit(icdev);
Exit;
end;
st:=rf_reset(icdev,10);
if st<>0 then begin
ShowMessage('load key error');
rf_exit(icdev);
Exit;
end;
rf_exit(icdev);
程序我跟踪了,发现只要一到"Exit"后就会提示这个错误!有劳高人指点迷津!!
------解决方案--------------------
程序里那么多Exit
是每个Exit都这样吗?
------解决方案--------------------
------解决方案--------------------
那应该是其它原因。
------解决方案--------------------
你写的例子如果是按钮事件响应函数中直接调用的话,不存在出入栈,所以不出错。如果把调用放入别的方法,然后按钮的事件响应函数再调用,这时肯定出错。
"Access violation at address 400068E2 in module 'rtl70.bpl'."
我在做明华射频卡时出现的错误:"Access violation at address 400068E2 in module 'rtl70.bpl'."
程序代码:
snr:=0;
sector:=7; //第8扇区
block:=28; //第8扇区的第一个块
loadmode:=0; //密码验证方式 0-2是选择A套密码,4-6是B套密码
icdev := rf_init(sReaderComValue,115200); // 初始化串口
if icdev<0 then begin
Result:=-1;
rf_exit(icdev);
UWarningMsgBox('初试化IC卡失败');
exit;
end;
st:= rf_beep(icdev,10);
if st <>0 then begin
Result := -1;
rf_exit(icdev);
Exit;
end;
st:=rf_get_status(icdev,@status);
if st<>0 then begin
Result:=-1;
rf_exit(icdev);
UWarningMsgBox('请插入IC卡-->1');
exit;
end;
st:=rf_load_key_hex(icdev,loadmode,sector, 'ffffffffffff');
if st<>0 then begin
ShowMessage('load key error');
rf_exit(icdev);
Exit;
end;
st:=rf_card(icdev,1,@snr);
if st<>0 then begin
ShowMessage('rf_card error');
rf_exit(icdev);
Exit;
end;
st:=rf_authentication(icdev,loadmode,sector);
if st<>0 then begin
ShowMessage('rf_authentication error');
rf_exit(icdev);
Exit;
end;
st:=rf_write_hex(icdev,block,'A1A2A3A4A5A6A7A8A1A2A3A4A5A6A7A8');
if st<>0 then begin
ShowMessage('rf_write_hex error');
rf_exit(icdev);
Exit;
end;
st:=rf_check_writehex(icdev,snr,loadmode,block,'A1A2A3A4A5A6A7A8A1A2A3A4A5A6A7A8');
if st<>0 then begin
ShowMessage('rf_check_writehex error');
rf_exit(icdev);
Exit;
end;
st:=rf_write_hex(icdev,block+3,'ffffffffffffff078069ffffffffffff'); //写密码,当控制字节为默认值'FF 07 80 69'时,核对KEYB是无效的,改为'7F 07 88 69'时,可用KEYB。
if st<>0 then begin
ShowMessage('rf_write_hex error');
rf_exit(icdev);
Exit;
end;
st:=rf_read_hex(icdev,block,@s);
if st<>0 then begin
ShowMessage('rf_read_hex error');
rf_exit(icdev);
Exit;
end;
st:=rf_halt(icdev);
if st<>0 then begin
ShowMessage('load key error');
rf_exit(icdev);
Exit;
end;
st:=rf_reset(icdev,10);
if st<>0 then begin
ShowMessage('load key error');
rf_exit(icdev);
Exit;
end;
rf_exit(icdev);
程序我跟踪了,发现只要一到"Exit"后就会提示这个错误!有劳高人指点迷津!!
------解决方案--------------------
程序里那么多Exit
是每个Exit都这样吗?
------解决方案--------------------
------解决方案--------------------
那应该是其它原因。
------解决方案--------------------
你写的例子如果是按钮事件响应函数中直接调用的话,不存在出入栈,所以不出错。如果把调用放入别的方法,然后按钮的事件响应函数再调用,这时肯定出错。