RE:IORESULT es una función que devuelve valor logi
hola Lorenzo.
cuando se activa la directiva {$f-} el control de Errores del Sistema se le pasa a
IORESUL incluso errores tipo dos de pila desbordamiento etc .dando un valor del error exacto , - IORESULT no es un boolean -
los codigos de error te los muestra la propia ayuda si buscas IORESUL.
acuerdate de poner {$f+} despues del tratamiento pue si no sabes controlar el error ,el Sistema puede quedar inestable.
IORESUL se utiliza cuando sabemos que realmente se va a producir un fallo
digamos que poseemos el control de los errores pero debemos cederselo a la maquina otra vez para que los trate automáticamente.
En TP7 muestra una ayuda en igles pero muy facil de leer , no siendo así si
usas freee pascal pues creo que no hay ayuda.
Para TP7 hay ayuda en castellano , que deberas cambiar por la del TP usa el google si te interesa ,yo la tuve un dia pero no me dio tiempo a probarlo pues
no hice copia.
De todas manera ahi va el CODE casero y completo, mas de lo que necesitas,.
lo del dispositivo Null era para otra cosa , abrir un fichero en el dispositivo nul
es por si redireges la salida estandar , pero creo que eso se sale del tema.
De todas maneras si tienes dudas poste aquí.
saluD.O.S
{$f-}
function existe(nombre:string):boolean;
{ * ENTRADA:nombre del archivo como STRING
* SALIDA :TRUE si existe el archivo,sino FALSE
* FUNCION:comprueba si existe un archivo y devuelve la
expresion booleana correspondiente }
var fxper:file;
errorio:byte;
atributo_cero:word;
atributo_original:word;
begin
atributo_cero:=0;
{$i-}
errorio:=ioresult;
assign(fxper,nombre);
reset(fxper);
close(fxper);
errorio:=ioresult ;
{$i+}
{ MUY IMPORTANTE: gracias gracias gracias !!! }
{ ioresult da el mismo error para archivo no encontrado y para }
{ archivo de solo lectura deberemos quitar los atributos y }
{ comprobar que realmente no existe el archivo para dar por echo }
{ que realmente no existe el fichero cuando ioresul<>0 }
if errorio<>0 then begin
getfattr(fxper,atributo_original);
setfattr(fxper,atributo_cero);
{$i-}
assign(fxper,nombre);
reset(fxper);
close(fxper);
errorio:=ioresult ;
{$i+}
setfattr(fxper,atributo_original);
end;
if (errorio=0) and (nombre<>'')then existe:=true else existe:=false;
end;
{$f+}
{////////////////////////////////////////////////////////////////////////////}