Ir al contenido


Foto

RemoveDir en FTP


  • Por favor identifícate para responder
No hay respuestas en este tema

#1 ifrit

ifrit

    Advanced Member

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

Escrito 03 noviembre 2010 - 07:27

Hola foro amigos estoy utilizando la siguiente funcion para eliminar un directorio en ftp , funciona pero con errores, me da una exepcion de: fuera de indice de la lista. No se que sera pero en modo debug , se nota que algo falta o sobra, aun no se que es. Espero me puedan ayudar a buscar el error y si hay un codigo de como borrar un dir de ftp espero me lo puedan facilitar. gracias y saludos


cpp
  1. // get las folder from ftp path
  2. String getLastFTPDir( String Dir )
  3. {
  4.  
  5. // eliminando el caracter / final
  6. if ( Dir[Dir.Length( )] == '/' )
  7. Dir.Delete( Dir.Length( ), 1 );
  8.  
  9. while ( Dir.Pos( '/' ) != 0 )
  10. Dir = Dir.Delete( 1, Dir.Pos( '/' ) );
  11. return Dir;
  12. }
  13.  
  14. //remove dir
  15. void removeFTPDir (String Dir, TIdFTP *ftp){
  16. static int counter = 0;
  17.  
  18. //ir a la carpeta que se desea eliminar
  19. while (Dir.Pos('/')!=0){
  20. ftp->ChangeDir(Dir.SubString(1,Dir.Pos('/')));
  21. if(Dir.Pos('/')!=Dir.Length())
  22. Dir = Dir.Delete(1,Dir.Pos('/'));
  23. else
  24. Dir = Dir.Delete(Dir.Pos('/'),Dir.Length());
  25. }
  26.  
  27. //listar ftp
  28. ftp->List("",true);
  29.  
  30. //obtener si es file or folder
  31. int listCount = ftp->DirectoryListing->Count;
  32. String fileName;
  33.  
  34. if(listCount > 0){
  35. for(int i = 0; i < listCount; i++){
  36. //get item
  37. TIdFTPListItem *listItem = ftp->DirectoryListing->Items[i];
  38. fileName = listItem->FileName;
  39.  
  40. //file
  41. if(listItem->ItemType == ditFile){
  42. ftp->Delete(fileName);
  43. if(listCount - 1 == i){
  44. ftp->ChangeDirUp();
  45. if(counter>0)counter--;
  46. Dir = getLastFTPDir(Dir);
  47. removeFTPDir(Dir,ftp);
  48. }
  49. }
  50. if(listItem->ItemType == ditDirectory){
  51. counter++;
  52. ftp->ChangeDir(fileName);
  53. Dir = fileName;
  54. removeFTPDir(Dir,ftp);
  55. }
  56. }
  57. }else{
  58. if(counter > 0){
  59. ftp->ChangeDirUp();
  60. counter--;
  61. ftp->RemoveDir(Dir);
  62. Dir=getLastFTPDir(ftp->RetrieveCurrentDir());
  63. removeFTPDir(Dir,ftp);
  64. }else{
  65. ftp->ChangeDirUp();
  66. ftp->RemoveDir(Dir);
  67. }
  68. }
  69. }


  • 0




IP.Board spam blocked by CleanTalk.