Tambien puedes desactivar temporalmente la verificacion de la entrada/salida y comprobar tu mismo los errores con IOResult.
Para desactivar la verificacion de I/O: {$I-}
Para activar la verificacion de I/O: {$I+}
Nota que {$Letra,+/-} son directivas de compilacion y no comentarios
y luego tenes a la funcion IOResult que es distinto de 0 si algo paso mal
Lo que hace este codigo es resetear  un Archivo de  NOmbre Archivo, si este no existe crea uno nuevo.
-   
-  Assign(Archivo, 'Archivo.dat'); 
-   {$I-} 
-     Reset(Archivo); 
-     if IOResult <> 0 then {archivo no existe} 
-     begin 
-       WriteLn('No se encuentra el archivo'); 
-       WriteLn('Desea crear uno nuevo'); 
-       res := ReadKey; 
-       if (res = 's') or (res = 'S') then ReWrite(Archivo); 
-     end; 
-   {$I+} 
- end; 
-   
-   
La funcion IOResult devuelve varios valores además de cero con distintos mensajes de error, lo que si, es que no tengo ahora la tabla de los errores. 
