unit sync;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdFTP, StdCtrls, RzButton;type
  TForm1 = class(TForm)
    FTPClient: TIdFTP;
    RzBitBtn1: TRzBitBtn;
    procedure RzBitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
const
  Model = 'yyyy/mm/dd,hh:mm:ss';
var
  Form1: TForm1;implementation{$R *.dfm}
procedure FindRemoteDir(var idFTP: TIdFtp; RemoteDir: string; var filename,
  filesize, filetime: Tstrings);
var
  i, DirCount: integer;
  sName: string;
begin
  idFTP.RetrieveCurrentDir;
  idFTP.ChangeDir(RemoteDir);
  idFTP.List(nil);
  DirCount := idFTP.DirectoryListing.Count;
  if DirCount = 0 then
  begin
    idFTP.ChangeDirUp;
    idFTP.List(nil);
    Exit;
  end;
  for i := 0 to DirCount - 1 do
  begin
    if DirCount <> idFTP.DirectoryListing.Count then
    begin
      repeat
        idFTP.ChangeDirUp;
        idFTP.List(nil);
        Application.ProcessMessages;
      until DirCount = idFTP.DirectoryListing.Count;
      Exit;
    end;
   if  idFTP.DirectoryListing.Items[i].ItemType = ditDirectory then//这句编译不过,提示ditDirectory未定义
       Remotefindall(idFTP, idFTP.RetrieveCurrentDir + '\' + idFTP.DirectoryListing.Items[i].FileName, filename, filesize, filetime)
    else
    begin
       sName := RemoteDir + '\' + idFTP.DirectoryListing.Items[i].FileName;
      sName := MidStr(sName, iwidth + 1, length(sName) - iwidth + 1);
      filename.add(sName);
      filesize.add(inttostr(idFTP.DirectoryListing.Items[i].Size));
      filetime.Add(FormatDateTime(Model, idFTP.DirectoryListing.Items[i].ModifiedDate));
    end;
  end;
  Application.ProcessMessages;
  if i = DirCount - 1 then
  begin
    idFTP.ChangeDirUp;
    idFTP.List(nil);
  end;end;procedure TForm1.RzBitBtn1Click(Sender: TObject);
begin
  FTPClient.Username := 'Login=tranuser';
  FTPClient.Password := '8653635';
  FTPClient.Port := 21;
  FTPClient.Connect();
end;end.