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. 
