El siguiente programa implementa una función que verifica si el archivo físico pasado como parámetro existe y es accesible desde el programa que llama la función.
La definición del registro del archivo es la misma que he implementado al inicio de estos ejemplos.
program exisarch; uses crt;
const
NombreFisico='agenda.dat';
type TStr30=String[30]; TStr50=String[50];
TFecha=record
Ano, Mes, Dia:Byte;
end; { TFecha }
TRegistro=record
Nombre, Apellido: TStr30;
Edad: byte;
Direccion: TStr50;
FechaCumple: TFecha;
end; { TRegistro }
TFileOfRegistro= File of TRegistro;
var
Archivo: TFileOfRegistro;
Registro: TRegistro;
UltimoError: Integer; { Para almacenar el último error dado por IOResult }
{ Verifica que el archivo físico pasado como parámetro exista y sea accesible
Devuelve true si es accesible, false en caso contrario }
function ExisteArchivo(NF:String): boolean;
begin
Assign(Archivo, NF); { Asigna el nombre físico al lógico }
{$i-} { Deshabilita el control autom tico de errores de entrada/salida }
Reset(Archivo); { Trata de abrir el archivo }
{$i+} { Habilita el control de errores de E/S }
UltimoError:=IOResult; { Se almaceda el último error de E/S }
If UltimoError = 0 then { Si es igual a cero, el archivo existe y es accesible }
begin
Close(Archivo); { Cierro el archivo para no interferir en próximas utilizaciones}
{ del archivo}
ExisteArchivo:=true; { Devuelvo true a la función }
end
else ExisteArchivo:=false; { Devuelvo false a la función }
end; { ExisteArchivo }
begin
if ExisteArchivo(NombreFisico) then
begin
WriteLn('El archivo ',NombreFisico,' está presente en el directorio actual.');
end
else
begin
Write('No se pudo abrir el archivo ',NombreFisico,'.');
Writeln('El número de error es ', UltimoError);
end;
ReadKey; { Espera a que se presione una tecla }
end.
Esta función la trasladaré a nuestra unidad DEFIN.PAS para poder usarla más adelante.