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
public
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.