各层TRY EXCEPT其间的关系
各层TRY EXCEPT之间的关系.
DLL内部有一函数,用Try Except 拦截异常并用Messagebox()提示,在调用此函数时也用了Try Except拦截异常并用showmessage()提示.
在调试DLL时,函数内部的Try有拦截到异常并提示,但在编译成DLL后,再调用此DLL,函数内部的Try messagebox()异常没有显示.调用此函数处的try showmessage()有提示.想请教如何函数内部的messagebox()显示出来.
------解决方案--------------------
还要注意一点,dll的参数不要用string,改为PChar
procedure tstockjc_6.ExcelToSql(filename:string); //部品导入
procedure Tstockjc_6.N5Click(Sender: TObject);
var
dialog:TOpenDialog;
sql,filename:string;
begin
try
with ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('delete bp_pd');
ExecSQL;
end;
dialog:=TOpenDialog.Create(Self);
dialog.FileName:='*.xls';
dialog.Filter:='*.xls';
if not dialog.Execute then Exit;
filename:=dialog.FileName;
ExcelToSql(filename);
with ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('update bp_pd set zsl=cksl');
ExecSQL;
end;
with ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select * from bp_pd order by bppf');
Open;
end;
MessageBox(handle,'打开浏览数据完成.','提示',64);
except on e: exception do//将实际的报错显示出来看下
MessageBox(handle,PChar('数据出错.' +#13#10+ e.message),'错误(部品)B',16);
Exit;
end;
------解决方案--------------------
用断言+TRY结合来用
DLL内部有一函数,用Try Except 拦截异常并用Messagebox()提示,在调用此函数时也用了Try Except拦截异常并用showmessage()提示.
在调试DLL时,函数内部的Try有拦截到异常并提示,但在编译成DLL后,再调用此DLL,函数内部的Try messagebox()异常没有显示.调用此函数处的try showmessage()有提示.想请教如何函数内部的messagebox()显示出来.
------解决方案--------------------
还要注意一点,dll的参数不要用string,改为PChar
procedure tstockjc_6.ExcelToSql(filename:string); //部品导入
procedure Tstockjc_6.N5Click(Sender: TObject);
var
dialog:TOpenDialog;
sql,filename:string;
begin
try
with ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('delete bp_pd');
ExecSQL;
end;
dialog:=TOpenDialog.Create(Self);
dialog.FileName:='*.xls';
dialog.Filter:='*.xls';
if not dialog.Execute then Exit;
filename:=dialog.FileName;
ExcelToSql(filename);
with ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('update bp_pd set zsl=cksl');
ExecSQL;
end;
with ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select * from bp_pd order by bppf');
Open;
end;
MessageBox(handle,'打开浏览数据完成.','提示',64);
except on e: exception do//将实际的报错显示出来看下
MessageBox(handle,PChar('数据出错.' +#13#10+ e.message),'错误(部品)B',16);
Exit;
end;
------解决方案--------------------
用断言+TRY结合来用