El caso es que Firebird añade información al mensaje de error, así que no queda más remedio que buscar texto y eliminar lo que no te hace falta.
El código intuyo que sería algo así:
Código Delphi
[-]
on E: EUniError do begin
posAt := pos ('At', E.Message);
Texto := Copy( E.Message, 1, posAt );
ShowMessage( Texto) ;end;
Creo también aparecerá el texto "exception 1 NO_Borrar" en el mensaje... es que no tengo Delphi a mano para probar y hace mucho que no las uso.
Si se te complica demasiado, en el texto de la excepción en Firebird, defínela como : Exception 1 = '##No puede borrar algo de sistema @@';
Así ya sabes que tienes que copiar solo entre las ## y las @@ ... por ejemplo.