Ver Mensaje Individual
  #5  
Antiguo 15-05-2015
Mystery Mystery is offline
Miembro
 
Registrado: jul 2007
Ubicación: Santiago de Cuba
Posts: 69
Reputación: 17
Mystery Va por buen camino
Hola a todos...

Muchas gracias a todos....
Que sucede para la próxima doy todos los detalles a pesar de que crea que no son importantes esta vez me equivoque en eso.
Bueno resulta que estoy haciendo una pequeña app que inscribo tareas en mi aplicación y todos los documentos, ficheros y demás respetando la organización jerárquica de los directorios en la PC se copian idénticamente a un servidor FTP.
La parte de copiar esta resuelta con buena rapidez logro realizar esta tarea.
Ahora bien cuando el usuario elimine una de estas tareas de la aplicación, esta debe ser capaz de eliminar el directorio en el FTP asociado a ella, con todo el árbol de directorios dentro del directorio principal. En fin eliminar todo lo asociado a la tarea en el FTP.
Trate de hacerlo con:

Código Delphi [-]
  IdFTP.RemoveDir(IdFTP.DirectoryListing[idx].FileName);
pero esto me dice que si el directorio no esta vacío no puede realizarlo. Busque en este foro sin éxito alguna alternativa y no encontré, tal vez exista pero no lo encontré…entonces me dije una función recursiva que resuelva esto y ya... en este momento estaba trabajando con el FileZilla como servidor ftp en windows.
y salio esta función:
Código Delphi [-]
begin
  IdLeeFTP:=TidFTP.Create(nil);
  IdLeeFTP.Username := 'user';
  IdLeeFTP.Password := 'pass';
  IdLeeFTP.Host := '127.0.0.1';  
  try
    IdLeeFTP.Connect;
  except
  end;
  flist:=TStringList.Create;
  IdLeeFTP.ChangeDir(aURL); 
  IdLeeFTP.List(flist,'*.*',true); 
  for i:=0 to IdLeeFTP.DirectoryListing.count-1 do
    if not delFTP(i) then //esta funcion me borra lo que sea... directorio o archivo
      BorraR(aurl+'/'+IdLeeFTP.DirectoryListing[i].FileName, IdLeeFTP.DirectoryListing[i].FileName);
  IdLeeFTP.ChangeDirUp;
  IdLeeFTP.RemoveDir(dname);
  flist.free;
  IdLeeFTP.free;
end;
esto en windows me trabajo bien pero ahora cuando me pase a servidor de mi aplicación en Linux (ambiente real)
cuando el compilador llega a
Código Delphi [-]
IdLeeFTP.DirectoryListing[i].FileName
me devuelve 0... Busque en súper google y bueno ahí encontré que los indy vienen configurados por defectos para que esta función trabaje en servidores FTP windows que para todos los demás están implementados pero debe habilitarse en la unit principal en el uses... por difícil que parezca he abierto todas las unit de los indy (por cierto trabajo en delphi7) y no he encontrado a lo que se refieren. Ofuscado con esta solución me decidí a poner un breve o casi nada explicación de mi problema.
En el código de ecfisa que por cierto muy bueno pues con el ya solucione el problema. No utiliza la dichosa función y bueno todo resulta OK.
Muchas gracias una vez mas y bueno toda esta extensa explicación es la que debía haber dado al principio jejejee
sorry
sin mas
Mystery
Responder Con Cita