Erro idFTP e ModifiedDate (Delphi 2010 ou XE)

Delphi

08/07/2011

Galera

Não estou conseguindo utilizar o idFTP para pegar a data de modificação dos arquivos da FTP.
Preciso disso pois estou desenvolvendo um atualizador automático.

Algué já passou por esse problema.

Abaixo vou colocar o código para ajudar entender, a data que vem e sempre 30/12/1899 para qualquer arquivo que esteja na FTP.

 
procedure TForm1.btVerificarFTPClick(Sender: TObject);
Var
   indice: Integer;
   DataLocal, DataServidor, Arquivo: String;
begin
   try
      ListBox1.Clear;
      
      if IdFTP1.Connected then
         IdFTP1.Disconnect;

      IdFTP1.Connect();
      IdFTP1.ChangeDir('public_html/atualizador');

      IdFTP1.List(ListBox1.Items, '*.*', false);

      if ListBox1.Items.Count = 0 then
      begin
         Abort;
      end;

      for indice := 0 to ListBox1.Items.Count - 1 do
      begin
         Arquivo := IdFTP1.DirectoryListing.Items[indice].FileName;
         DataLocal := '';
         DataServidor := '';
         if FileExists('C:\' + Arquivo) then
         begin
            DataLocal := FormatDateTime('dd/mm/yyyy hh:mm', FileDateToDateTime(FileAge('C:\' + Arquivo)));

            DataServidor := DateToStr(IdFTP1.DirectoryListing.Items[0].ModifiedDate);  // retorna sempre 30/12/1899

         end;

         if (not FileExists('C:\' + Arquivo)) or (DataLocal <> DataServidor) then
         begin
            //if MessageDlg('Nova versão disponível! Deseja baixá-la?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
            //begin
               Application.ProcessMessages;
               try
                  if not FileExists('C:\' + ListBox1.Items.Strings[indice]) then
                  begin
                     ListBox1.Selected[indice] := true;
                     bytesToTransfer := IdFTP1.Size(ListBox1.Items.Strings[indice]);
                     IdFTP1.Get(ListBox1.Items.Strings[indice], 'C:\' + ListBox1.Items.Strings[indice], true);
                  end;
               except
                  on e: exception do
                     showmessage(e.Message);
               end;
            //end;
         end;
      end;
   finally
      IdFTP1.Disconnect;
   end;
end;


Espero que alguem já passou por isso
Huelbert Oliveira

Huelbert Oliveira

Curtidas 0

Respostas

José

José

08/07/2011

Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0
POSTAR