Jump to content


Photo

List en FTP


  • Please log in to reply
1 reply to this topic

#1 ifrit

ifrit

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 105 posts
  • LocationLa Habana, Cuba

Posted 30 October 2010 - 12:17 PM

Hola foro estoy intentando dos cosas al trabajar con un ftp y el componente TIdFTP:
1-Eliminar un directorio con subcarpetas y ficheros dentro, aun intento hacer una funcion, lo que me dio como resultado
2-Sabe si el elemento obtenido es carpeta o fichero. Si es carpeta buscar dentro de esta, si es fichero eliminar
para eso busque informacion y encontre lo siguiente.



cpp
  1. //Añadimos la cabecera:  #include<memory>
  2.  
  3. IdFTP1->Host = "ftp.rediris.es";
  4. IdFTP1->Connect();
  5. if (IdFTP1->Connected())
  6. {
  7.     std::auto_ptr<TStringList> sl(new TStringList);
  8.     IdFTP1->List(sl.get());
  9.     for (int i = 0; i < IdFTP1->DirectoryListing->Count; ++i)
  10.     {
  11.         TIdFTPListItem* listItem = IdFTP1->DirectoryListing->Items[i];
  12.         String FileName = listItem->FileName;
  13.         int    Size    = listItem->Size;
  14.         TDate  Date    = listItem->ModifiedDate;
  15.         //String Attr    = listItem->PermissionDisplay;
  16.         //bool  IsDir    = listItem->ItemType == ditDirectory;
  17.         //...
  18.     }
  19.     IdFTP1->Disconnect();
  20. }



pero no me funciona , asi que hice el siguiete cambio:
remplace esta linea:


cpp
  1. std::auto_ptr<TStringList> sl(new TStringList);
  2. IdFTP1->List(sl.get());



por esta


cpp
  1. TStringList *sl = new TStringList();
  2. IdFTP1->List(sl, "*", false);


y todo anda sin problemas, pero cuando me lista y trato de obtener el tipo, es decir fichero o directorio me dice siempre que 1 es decir fichero y eso no es cierto , alguna ayuda me podrian brindar por favor gracias
  • 0

#2 ifrit

ifrit

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 105 posts
  • LocationLa Habana, Cuba

Posted 01 November 2010 - 07:36 AM

Hola amigos anteriormente les dije que todo habia funcionado perfectamnete, pero no. cuando el parametro a list(es false) no se ven todos los detalles de las lista obtenida, por lo que hay que poner List(true). Aun asi me soltaba un error de List no Pares. Bueno buscando por internet decia que El ftp de indy necesitaba los tipos de parse para utilizar el correcto ya que algunos ftp devuelven las listas de distintas formas. Y resolvi incluyendo  lo siguiente



cpp
  1. #include "IdFTPListParseWindowsNT.hpp"
  2. #include "IdAllFTPListParsers.hpp"
  3. #include "IdFTPListParseUnix.hpp"
  4. #include "IdFTPListParseWinQVTNET.hpp"
  5. #include "IdFTPListParseBase.hpp"
  6. #include "IdFTPListParseDistinctTCPIP.hpp"



hay muchos mas y tuve que hacer la tediosa tarea de ir probando y hasta a qui llegue con todo bien.
Supuestamente con incluir solamente :#include "IdAllFTPListParsers.hpp" debia haber resuelto pero no.
Un saludo y gracias
  • 0




IP.Board spam blocked by CleanTalk.