He intentado este codigo y nada:
Código Delphi
[-]
procedure TfrmPrincipal.FormCreate(Sender: TObject);
begin
Application.OnException:= Excepciones;
end;
procedure TfrmPrincipal.Excepciones(Sender: TObject; E: Exception);
var msg: String;
begin
if E.ClassNameIs('EIBInterbaseError') then
if EIBInterbaseError(e).SQLCode = -836 then begin
msg:= RightStr(e.Message, StrLen(PChar(E.Message)) - Pos(Chr(10), PChar(E.Message)));
MessageDlg(msg, mtError, [mbOk], 0);
end
else if EIBInterbaseError(e).SQLCode = -625 then
MessageDlg('Datos de entrada no son validos. Verifique si se ingresó todos los datos requeridos', mtError, [mbOk], 0)
else if EIBInterbaseError(e).SQLCode = -530 then
MessageDlg('Hay registros relacionados, no se puede realizar la operación', mtError, [mbOk], 0)
else if EIBInterbaseError(e).SQLCode = -803 then
MessageDlg('El registro ya existe y no puede repetirse', mtError, [mbOk], 0)
else
MessageDlg('Ha ocurrido el siguiente error: ' + #13 + e.Message + #13 + #13 +
Format('IBErrorCode: %d - SQLErrorCode: %d',
[EIBInterbaseError(e).IBErrorCode, EIBInterbaseError(e).SQLCode]), mtError, [mbOk], 0)
else
ShowMessage(E.Message);
end;
Probablemente es por la version de Delphi que utilizo (4), que no posee los componentes IB (interbase), lo que no he podido es adaptar este codigo a la version que utilizo.