SoloCodigo

Programación General => Pascal => Mensaje iniciado por: Ferdinandum en Lunes 17 de Enero de 2005, 13:54

Título: Como Saber Los Archivos De Una Carpeta
Publicado por: Ferdinandum en Lunes 17 de Enero de 2005, 13:54
Hola,

He hecho un programa q le un fichero de una carpeta determinada. Pero si no existe dicho Fichero la aplicacion casca.

Hay alguna forma de listar el directorio y hacer un control de errores con los archivos existentes??


tx.
Título: Re: Como Saber Los Archivos De Una Carpeta
Publicado por: Enko en Lunes 17 de Enero de 2005, 15:05
No recuerdo que haya una funcion similar a Dir de DOS pero hay varias de estas andando por la red, si es lo que necesitas.

Otra solucion seria 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.
Código: Text
  1.  
  2. Assign(Archivo, 'Archivo.dat');
  3.  {$I-}
  4.    Reset(Archivo);
  5.    if IOResult <> 0 then {archivo no existe}
  6.    begin
  7.      WriteLn('No se encuentra el archivo');
  8.      WriteLn('Desea crear uno nuevo');
  9.      res := ReadKey;
  10.      if (res = 's') or (res = 'S') then ReWrite(Archivo);
  11.    end;
  12.  {$I+}
  13. end;
  14.  
  15.  
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.
Título: Re: Como Saber Los Archivos De Una Carpeta
Publicado por: Ferdinandum en Lunes 17 de Enero de 2005, 19:44
Tx, haber como lo inserto en mi programa
Título: Re: Como Saber Los Archivos De Una Carpeta
Publicado por: FSR en Martes 8 de Febrero de 2005, 00:57
Para saber si existe algún archivo en particular...

Código: Text
  1. Function FileExist(P :PathStr) :Boolean;
  2.     Var
  3.         Ch :File;
  4.         OK :Boolean;
  5.     Begin
  6.         Assign(Ch, P);
  7.         {$I-}
  8.              Reset(Ch, 1);
  9.              OK := (IOResult=0);
  10.              Close(Ch);
  11.         {$I+}
  12.         FileExist := OK;
  13.     End; {FileExist}
  14.  

Espero que te sea de utilidad. Saludos  ;)
Título: Re: Como Saber Los Archivos De Una Carpeta
Publicado por: JrcsDev en Sábado 8 de Julio de 2006, 05:27
Código: Text
  1. function FileExist( fname: string ): boolean;
  2. var f: file;
  3. begin
  4.         {$I-}
  5.         assign( f, fname );
  6.         filemode := 0;
  7.         reset(f);
  8.         close(f);
  9.         {$I+}
  10.         FileExist := (IOResult = 0) and (fname <> '');
  11. end;
  12.  

Esta función viene en la ayuda de Turbo Pascal...