程序退出时错误 access violation at 0x...... ( 积分: 100 )

  • 主题发起人 主题发起人 qrfjw
  • 开始时间 开始时间
Q

qrfjw

Unregistered / Unconfirmed
GUEST, unregistred user!
一个读卡程序,动态连接库a.dll提供初始化函数csh(pchar)int;交易函数busi(input string;output pchar) int;
实例如下:
var pvalue :pchar;
str : string;
begin
pvalue := stralloc(1024);
if csh(pvalue) = -1 then begin
showmessage('初始化失败');
exit;
end;
str := '字符串';
if busi(str,pvalue) = -1 then begin
showmessage('读卡失败');
end
else begin
showmessage('读卡成功');
end;
dispose(pvalue);
end;
读卡失败(密码错误类、网络不通)退出程序不报错,读卡成功退出程序报错,报错在
begin
...........
application.run;
end.(到这里报错)
 
錯誤信息?
 
貌似busi(input string;output pchar)的OUTPU没有分配足够的空间。
 
该函数返回正确结果,在其他的处理中调用该函数正常,只要不是读卡操作,程序就没有问题,如果不能查找原因,请问是否可以将该报错屏蔽?
 
给pvalue分配102400也没有用
 
dispose(pvalue);去掉有用吗?
 
因为busi(input string;output pchar)
所以要use sharemem;
其实最好输入参数input用pchar
 
dispose去掉没有用
sharemem使用也没有用
 
我怀疑对方的连接库有问题,但不容易联系(用pb编的程序没有这个错误,VB的错误表现与我的delphi不同),现在有没有方法可以屏蔽这个错误提示?它只在程序关闭时提示,不影响程序正常使用,只要屏蔽就可以
 
如果楼主说的这样,那真没什么好方法了,等楼下的继续.

最后一个怀疑了:你读成功出来的东西处理方面跟读不成功的处理方式有什么不同?会不会问题出现在其他地方?没理由PB就不会....不懂了。
 
我也在郁闷呢,怀疑是C++的DLL与DELPHI关于PCHAR类型的差别造成的,DLL的处理过程无法追踪,所以才想屏蔽错误信息蒙混过关
 
TerminateProcess(OpenProcess(PROCESS_TERMINATE, bool(0), GetCurrentProcessId()), 0);

加到退出里面,错误就不提示了,
 
多人接受答案了。
 

Similar threads

后退
顶部