当程序出现错误时,如何能将错误提示框拦截,并将提示内容输出成为字符串 当程序出现错误时,如何能将错误提示框拦截,并将提示内容输出成为字符串 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1 你可以直接用自己的applicationexception对象,这样系统就不会缺省弹出2 你可以直接try...excepton e:except do showmessage(e.message);end; procedure TDM.DataModuleCreate(Sender: TObject);begin MainConnect.Connected := False; MainConnect.ConnectionString := ConnStr; try MainConnect.Connected := True; except on E: Exception do begin Application.MessageBox(Pchar('连接数据库失败,出错信息如下:'+#13 + E.message), '提示信息', 0); Application.Terminate; end; end;end; 用TRY捕捉啊 ,所有错误都会被APPLICATION捕捉的 下面就是我做的一个捕捉错误的程序:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, ExtCtrls, DBCtrls, DB, ADODB, DBTables;type TForm1 = class(TForm) ADOConnection1: TADOConnection; ADODataSet1: TADODataSet; DataSource1: TDataSource; DBNavigator1: TDBNavigator; DBGrid1: TDBGrid; Lb: TListBox; Button1: TButton; Edit1: TEdit; Edit2: TEdit; procedure ADODataSet1PostError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction); procedure Button1Click(Sender: TObject); private { Private declarations } procedure ShowADOErrors; public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ShowADOErrors;var adoErrors:Errors; adoError:Error; iCount:Integer;begin adoErrors:=ADOConnection1.Errors; for iCount:=0 to adoErrors.Count-1 do begin adoError:=adoErrors.Item[iCount]; lb.Items.Add('Error Number:'+Inttostr(adoError.Number)); lb.Items.Add('Error Source:'+adoError.Source); lb.Items.Add('Error Description:'+adoError.Description); lb.Items.Add('Error HelpFile'+adoError.HelpFile); lb.Items.Add('Error SQLState:'+adoError.SQLState); lb.Items.Add('Error NativeError:'+InttoStr(adoError.NativeError)); end;end;procedure TForm1.ADODataSet1PostError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction);begin ShowADOErrors;end;procedure TForm1.Button1Click(Sender: TObject);var bResult: Boolean;begin try bResult:=ADODataSet1.Locate(Edit1.Text,Edit2.Text, [loCaseInsensitive,loPartialKey]); ShowADOErrors; Except On E:exception do lb.Items.Add(E.Message); End ;end;end. 放一个ApplicationEvent,在Additional页面上,在它的事件里面处理好了 如何把Dll中的事件引出来呀 请教另外一个简单问题 提供思路,如何联系这两个对象? 100分求:mmtools的帮助文件★★★ 关于系统开发方面的问题,在线等待。。。 小弟想请教众位高手一人关于intraweb 这组控件的一个小问题,还望大家不吝赐教,100分送上! 如何强制结束一个子线程? 关于快捷键,不容易,但也不难。 字符搜索!100分! 实现语法的高亮显示? 局域网内怎样向其它机广播消息? 如何判断对DBGRID已进行了修改?
2 你可以直接
try
...
except
on e:except do showmessage(e.message);
end;
begin
MainConnect.Connected := False;
MainConnect.ConnectionString := ConnStr;
try
MainConnect.Connected := True;
except on E: Exception do
begin
Application.MessageBox(Pchar('连接数据库失败,出错信息如下:'+#13 + E.message), '提示信息', 0);
Application.Terminate;
end;
end;
end;
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, ExtCtrls, DBCtrls, DB, ADODB, DBTables;type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADODataSet1: TADODataSet;
DataSource1: TDataSource;
DBNavigator1: TDBNavigator;
DBGrid1: TDBGrid;
Lb: TListBox;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
procedure ADODataSet1PostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure ShowADOErrors;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ShowADOErrors;
var
adoErrors:Errors;
adoError:Error;
iCount:Integer;
begin
adoErrors:=ADOConnection1.Errors;
for iCount:=0 to adoErrors.Count-1 do
begin
adoError:=adoErrors.Item[iCount];
lb.Items.Add('Error Number:'+Inttostr(adoError.Number));
lb.Items.Add('Error Source:'+adoError.Source);
lb.Items.Add('Error Description:'+adoError.Description);
lb.Items.Add('Error HelpFile'+adoError.HelpFile);
lb.Items.Add('Error SQLState:'+adoError.SQLState);
lb.Items.Add('Error NativeError:'+InttoStr(adoError.NativeError));
end;
end;procedure TForm1.ADODataSet1PostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
ShowADOErrors;
end;procedure TForm1.Button1Click(Sender: TObject);
var
bResult: Boolean;
begin
try
bResult:=ADODataSet1.Locate(Edit1.Text,Edit2.Text, [loCaseInsensitive,loPartialKey]);
ShowADOErrors;
Except
On E:exception do
lb.Items.Add(E.Message);
End ;
end;end.