Delphi - nº de ficheros en un diirectorio

 
Vista:

nº de ficheros en un diirectorio

Publicado por Tino (18 intervenciones) el 25/10/2001 14:32:16
Hola ,por lo que he mirado la forma para sacar el numero de ficheros que hay en un directorio tiene que ser algo asi ,pero no me sale ya que siempre me da uno.
Alguien me puede decir porque o como deberia de ser????

procedure TForm1.Button1Click(Sender: TObject);
function CuentaFicheros(psDir: string): integer;
var
vBusqueda: TSearchRec;
begin

{Inicializar resultado.}
result := 0;

if (FindFirst(psDir, faAnyFile, vBusqueda)=0) then
Inc(result);

while FindNext(vBusqueda) = 0 do
Inc(result);

end;

begin
x:=CuentaFicheros('c:\Fotos');
edit1.text:=inttostr(x);
end;
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:nº de ficheros en un directorio

Publicado por Ernesto D'Spirito (706 intervenciones) el 25/10/2001 19:27:44
Lo que ocurre es que al llamar la función como lo estás haciendo, busca todos los archivos llamados "Fotos" en la unidad "C:\", y por eso encuentra sólo uno (el directorio).

Por ejemplo, si quieres todos los archivos dentro del dicrectorio C:\Fotos, usa 'C:\Fotos\*'.

Aparte de eso, hay unos errores en tu función. Por ejemplo no cierras la búsqueda con FindClose, y además con faAnyFile cuentas no solamente archivos, sino también directorios (incluyendo '.' y '..'). He aquí una versión mejorada:

function CuentaFicheros(FileSpec: string): integer;
var
vBusqueda: TSearchRec;
begin
result := 0; // Inicializar resultado
if FindFirst(FileSpec, faAnyFile and not faDirectory, vBusqueda)=0 then begin
repeat
Inc(result);
until FindNext(vBusqueda) <> 0;
FindClose(vBusqueda);
end;
end;

Espero que te sirva.

Ernesto
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