procedure TfrmMain.AppException(Sender: TObject;E: Exception);
Var
strSql,strTime: string;
intLength: integer;
NowTime: TSystemTime;
begin
intLength := Length(E.Message);
strSql := 'select * from error_hint where error=''' + E.Message +'''';
With WzDataModule.goQuery do
begin
Active := False;
SQL.Clear;
SQL.Add(strSql);
Active := True;
FetchAll;
end;
if WzDataModule.goQuery.RecordCount=1 then
begin
strSql := WzDataModule.goQuery.FieldByName('hint').AsString;
ShowMessage(strSql);
end
else
begin
GetSystemTime(NowTime);
strSql := 'insert into error_hint(error,length,remark)';
strSql := strSql + 'Values(''' + E.Message + ''',';
strSql := strSql + IntToStr(intLength) + ','''+ DateToStr(SystemTimeToDateTime(NowTime))+''')';
With WzDataModule.goQuery do
begin
Active := False;
SQL.Clear;
SQL.Add(strSql);
ExecSql;
end;
strSql := '这是一个新异常,系统尚未记录!'+#13+'请记下位置交程序员处理。';
Application.MessageBox(PChar(strSql),'提示信息',1);
end;
WzDataModule.goQuery.Close;
WzDataModule.goQuery.SQL.Clear;
end;
然后在主form.OnCreate 中
Application.OnException := TfrmMain.AppException
其它同我上面的回答