Independientemente de lo comentado por
vtdeleon Comprueba esto:
doble clic a tu tabla tuser. En algún campo tienes la propiedad Required a True?, en delphi.
Si lo tienes, (casi seguro que si) entonces el error de clave duplicada es un EdatabaseError, por eso no entra en el except que tienes puesto.
Puedes poner a ese campo el Required a false, y dejar en tu base de datos Required a True; así si funcionará con el código actual.
Otro tema más grave, es que estas capturando cualquier error de tipo EDBEngineError. El error concreto de violacion de claves es: Integrity Violation
9729 : Key violation.
(en internet buscando por "BDE ERROR CODES", seguro que encuentras el listado completo).
La comprobación correcta será:
Código Delphi
[-]
if (E is EDBEngineError) then
with EDBEngineError(E).Errors[0] do
if ErrorCode = 9729 then
begin
end
else
raise;
Edito: Faltaba poner .Errors[0] para acceder a ErrorCode, Gracias carlos
Saludos