Hola, no se si viene a cuento o no, pero yo para saber exáctamente que error da, uso lo siguiente:
Código Delphi
[-]
try
except
on e:exception do GrabaLog(e.message);
end;
GrabaLog es un procedimiento que graba en un fichero de texto una linea con la fecha y hora exacta de la edición del fichero, junto con el mensaje del error, ocurrido. Así mis usuarios, me mandan el fichero log y yo analizo que tipo de error ocurre según el mensaje, que en mi caso suele ser muy genérico.
Saludos