Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Borrar todos los archivos de carpeta FTP (https://www.clubdelphi.com/foros/showthread.php?t=94433)

Carmelo Cash 08-02-2020 02:40:59

Borrar todos los archivos de carpeta FTP
 
Buenas noches:

necesito borrar todos los archivos de una carpeta FTP


Estoy trabajando con Delphi 7 e Indy 10

Uso el componente TidFTP para conectarme, crear carpetas, copiar archivos, borrar archivos y borrar carpetas. (Aclaro que no me deja borrar la carpeta sino está vacía.)

Y no encuentro la forma de leer todos los archivos y borrarlos.

probé con:

FTP.Delete('*.*');

Pero me dice "file not found"

Encontré en internet un método:

Código Delphi [-]
procedure TF_ftpServidores.btBorrarTodosClick(Sender: TObject);
var
  i:Integer;
  flist: TStringList;
  numDeleted: Integer;

begin
   FTP.List(flist,'*.*',true); //cargar en lista, los archivos segun la mascara '*.*', todos los archivos
   for i:=0 to FTP.DirectoryListing.count-1 do begin//recorrer el directorio
      try
        FTP.Delete(FTP.DirectoryListing[i].FileName); //borro cada elemento de la lista
      except
          memerrores.Lines.Add('Error al tratar de eliminar:  ' + FTP.DirectoryListing[i].FileName+ ' en carpeta destino' );
      end;
   end;

 //  ftp.Delete('*.*');

end;

Pero acá...
FTP.List(flist,'*.*',true); //cargar en lista, los archivos segun la mascara '*.*', todos los archivos

me dice ...
"cannot assign tstringlist to a tf_ftpServidores"

Bueno... dejo hecha la consulta.

Desde ya gracias por participar de foro.

Saludos

Casimiro Noteví 08-02-2020 11:14:54

Más o menos así:
Código Delphi [-]
mftp.ChangeDir( cDirName );
mftp.List;
for iX:=0 to mftp.DirectoryListing.Count-1 do
begin
  cFile := mftp.DirectoryListing[iX].FileName;
  if cFile<>'' then
    mftp.Delete( cFile );
end;

Carmelo Cash 10-02-2020 19:34:26

Gracias Casimiro, pero....
 
Gracias Casimiro:

Pero hay algo raro, porque

mftp.DirectoryListing.Count-1

siempre me devuelve cero. :(

Casimiro Noteví 10-02-2020 19:56:36

Si devuelve cero es que estás leyendo un directorio donde no hay nada.

Carmelo Cash 10-02-2020 20:55:44

El código completo es:

Código Delphi [-]
var
  i: integer;
begin
    FTP.ChangeDir( edCarpeta.text );
    memlista.lines.add(ftp.RetrieveCurrentDir);
    FTP.List;
    for i := 0 to FTP.DirectoryListing.Count-1 do
    begin
       memlista.lines.add(FTP.DirectoryListing[i].FileName);
    end;

cuando hago:

memlista.lines.add(ftp.RetrieveCurrentDir);

Muestra el directorio correcto.

Pero por alguna razón FTP.DirectoryListing.Count-1 es cero.

Sin embargo en esa carpeta hay un montón de archivos.. :confused:

Casimiro Noteví 10-02-2020 21:11:04

Pero qué valor tiene edCarpeta.Text, qué devuelve RetrieveCurrentDir y qué directorio estás leyendo realmente del servidor FTP, ten en cuenta que normalmente puedes definir un directorio "virtual" asociado a un directorio "real", por ejemplo el directorio real: c:\fotos y el "virtual" del servidor ftp es "\". Sin embargo, si tú lees "fotos", estarás leyendo realmente "\", y no encontrarás tus fotos.

Carmelo Cash 10-02-2020 21:40:00

Chanfle !! :eek:

Gracias colega.
Entonces ..
Cómo selecciono el directorio ftp real ?

porque hago

Código Delphi [-]
FTP.ChangeDir( 'prueba2');
y luego copio un archivo
Código Delphi [-]
FTP.Put( Archivo, ExtractFileName( Archivo ), False );

y lo copia en prueba2.

Carmelo Cash 11-02-2020 02:03:59

Resolvido !!!!!
 
Bueno, listo.

No pude hacer funcionar el metodo de Casimiro, pero hice esto.

Código Delphi [-]
    FTP.List(edFiltro.Text, false);
    memDir.Text := FTP.ListResult.Text;

El parámetro false/true te trae o no el detalle de los archivos.

Saludos Foro y Gracias Casimiro, no te ví, del Barrio Bella Vista, calle Juan B. Justo, Dpto. 9° B. :cool:


La franja horaria es GMT +2. Ahora son las 01:57:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi