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.