Ver Mensaje Individual
  #3  
Antiguo 22-09-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
marilinspi,

Cita:
Empezado por marilinspi
...necesito chequear que un directorio en la web esta vacío...


Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses IdFTP, IdFTPList;

function IsFtpDirectoryEmpty(Host, Directory, UserName, Password : String): Integer;
var
   FTP: TIdFTP;
   FileList : TStringList;
   MsgUser : String;

begin

   try

      try

         FTP:= TIdFTP.create(nil);
         FTP.Host:= Host;
         FTP.Username:= UserName;
         FTP.Password:= Password;
         FTP.Connect(True, 5000);
         FTP.ChangeDir(Directory);
         FileList :=  TStringList.Create;
         FTP.List(FileList);

         if (FTP.DirectoryListing.Count = 2)
         and (FTP.DirectoryListing.Items[0].FileName = '.')
         and (FTP.DirectoryListing.Items[1].FileName = '..') then
            Result := 0
         else
         if FTP.DirectoryListing.Count = 0 then
            Result := 0
         else
            Result := 1;

      except

         MsgUser := Format('Error de I/O en Conexión al Directorio %s',[Directory]);
         MessageDlg(MsgUser,mtError,[mbOK],0);
         Result := -1;

      end;

   finally

      FTP.Quit;
      FTP.Free;

   end;

end;

procedure TForm1.Button1Click(Sender: TObject);
var
   Host, Directory, Username, Password : String;

begin

   Host  := 'ftp.files.com';
   Directory := 'Files';
   UserName  := 'User';
   Password  := '1234';

   case IsFtpDirectoryEmpty(Host, Directory, Username, Password) of
      1 : MessageDlg(Format('El Directorio %s No Esta Empty',[Directory]),mtInformation,[mbOK],0);
      0 : MessageDlg(Format('El Directorio %s Esta Empty',[Directory]),mtError,[mbOK],0);
   end;

end;

end.
El código anterior en Delphi 7 con Indy 9 bajo Windows 7 Professional x32, permite verificar si un directorio tipo Windows o Unix a nivel local o en Internet contiene archivos o por el contrario esta vació.

Nota: El código del ejemplo fue probado en Internet y a nivel local con directorios tipo Unix y Windows.

Espero sea útil

Nelson.
Responder Con Cita