Pascal/Turbo Pascal - Función que verifique existencia de archivo texto

 
Vista:

Función que verifique existencia de archivo texto

Publicado por LorenzoSantiagoQuirózRodríguez (9 intervenciones) el 10/01/2006 13:06:42
Tengo problema al iniciar el programa que maneja archivos de texto, ya que primero se requiere agregar información antes de manejar los datos.

Quería saber si existe una función que me permita chequear si existe el archivo de texto antes de iniciar búsquedas de datos en el mismo.

Por ejemplo, si puedo comprobar si tiene información, osea que no esté vacío el archivo, o que si tiene registros o datos, como el comando FILESIZE() en archivos de registros de pascal o algo parecido.

Gracias...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Función que verifique existencia de archivo tex

Publicado por micropais (209 intervenciones) el 12/01/2006 19:44:21
mira IORESUL haces un reset del fichero y si te da error es que no existe
mira tambien el dispositivo NUL .

ahora no puedo ayudarte si necesitas mas informacion postea aquí
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

IORESULT es una función que devuelve valor logico?

Publicado por LorenzoSantiagoQuirózRodríguez (9 intervenciones) el 13/01/2006 13:42:59
Ok, ya voy entiendiendo. Ahora, IORESULT es una función que creo devuelve un resultado logico (Verdadero ó Falso) si existe o no el archivo, estoy en lo cierto?

Bueno, el dispotivio NUL se emplea para que? Será para comprobar si el archivo contiene datos?

DE todas formas gracias MICROPAIS.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:IORESULT es una función que devuelve valor logi

Publicado por micropais (209 intervenciones) el 13/01/2006 19:25:30
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+}
{////////////////////////////////////////////////////////////////////////////}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ERROR anterior

Publicado por micropais (209 intervenciones) el 13/01/2006 19:34:25
En el post anterior cometí un fallo en lo que me referia a $F era para $i , $f es para otra cosa , esto pasa por usar mis propios prgramas antiguos y NO releerlos , pero tranqui que funcionan.
_______________________________________

ahí va otro ejemplo más facil
_______________________________________

function Exist(FileName: string): Boolean;

{ Checks to see if filename exits or not }
var f: file;
begin
{$I-}
Assign(f, FileName);
Reset(f);
Close(f);
{$I+}
Exist := (IOResult = 0) and
(FileName <> '');
end;

SALUDOS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar