Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.05.2013, 21:02
qwerty192837 qwerty192837 вне форума
Прохожий
 
Регистрация: 28.05.2013
Сообщения: 2
Версия Delphi: xe2
Репутация: 10
По умолчанию Сравнение времени локального Zip архива с Zip архивом на FTP

Доброго времени суток
Нужна помощь!!!
Нужно сравнить время локального Zip архива с Zip архивом на FTP и скачать его если дата и время локального Zip архива различаются на 5 минут с Zip архивом на FTP. Как сделать сравнение времени до 5 мин.
Сделал до 1 часа:
Код:
Procedure TFormFtp.CheckAndDownloadNewZip (Sender: TObject);
const
 Hour = 3600000/MSecsPerDay;
var
 k,n, n_zip, i:integer;
 ListZips:TStrings;
 size_zip_file:int64;
 FZipRemoteDate,FZipLocalDate:TdateTime;
 size_zip:array of Int64;
 FZipName: string;
begin
 n:=0;
 k:=0;
 Sum_size_zip:=0;
 ListZips:=TStringList.Create;
 ButtonStart.Enabled:=false;
 ButtonStop.Enabled:=True;
 StopFlag := false;

 i:=0;
 down_size:=0;

 ListZips:=FindFileInFolder(FormMain.LabelCreat.Caption+'\'+'SUB_'+FormMain.LabelNumber.Caption+'\');

 MemoFind.Clear;
 MemoNotFound.Clear;
 SetLength(size_zip,ListZips.Count+1);

 while ((StopFlag=false) AND (k<ListZips.Count)) do
// for k:=0 to ListZips.Count-1 do
  begin
   Panel1.Caption:='Идет проверка обновления для файла '+ListZips.Strings[k];
   Application.ProcessMessages;
   CheckDateZipFile(ListZips.Strings[k],size_zip_file,FZipRemoteDate);
   FZipRemoteDate:=FZipRemoteDate+7*Hour; // +7 часов т.к. фтп в GMT

   FZipLocalDate:=FileDateToDateTime(
                  FileAge(
                  FormMain.LabelCreat.Caption+'\'+'SUB_'+
                  FormMain.LabelNumber.Caption+'\'+
                  ListZips.Strings[k]));

   if size_zip_file>0 then
    if MinutesBetween(FZipRemoteDate,FZipLocalDate)>5 then
     begin
      MemoFind.Lines.Add(ListZips.Strings[k]);
      size_zip[n]:=size_zip_file;
      Sum_size_zip:=Sum_size_zip+size_zip_file;
      Label3.Caption:='Необходимо будет скачать = '+MakeMemSize(Sum_size_zip);
      n:=n+1;
      Application.ProcessMessages;
     end
    else
     begin
      MemoNotFound.Lines.Add(ListZips.Strings[k]);
      Application.ProcessMessages;
     end;
   k:=k+1;
  end;
Админ: Пользуемся тегами для оформления кода!

Последний раз редактировалось Admin, 28.05.2013 в 21:23.
Ответить с цитированием
  #2  
Старый 28.05.2013, 21:41
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Если правильно понял, то определение возраста файла на FTP должно происходить так
Код:
Const
Hour = 3600000/MSecsPerDay;
Minute = 60000/MSecsPerDay;
Second = 1000/MSecsPerDay;
...

 FZipRemoteDate:=FZipRemoteDate + 7*Hour + Minute;   // +7 часов т.к. фтп в GMT
...

З.Ы. Это был плохой совет...

Последний раз редактировалось Alegun, 28.05.2013 в 21:55.
Ответить с цитированием
  #3  
Старый 28.05.2013, 22:33
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Alegun
З.Ы. Это был плохой совет...
Если учесть, что нет гарантии того, что сервер не установит свою дату/время. Померший нынче "Народ" всегда так делал.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #4  
Старый 28.05.2013, 22:43
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от angvelem
...Померший нынче "Народ" всегда так делал.
RIP, "Народ"

Странно, но вообще этот код - рабочий, сравнение возраста 2х локальных файлов (проверил вырезку про MinutesBetween) идёт на ура, и правда наверное что-то с серверным временем, надо бы это проверить.
Ответить с цитированием
  #5  
Старый 29.05.2013, 07:12
qwerty192837 qwerty192837 вне форума
Прохожий
 
Регистрация: 28.05.2013
Сообщения: 2
Версия Delphi: xe2
Репутация: 10
По умолчанию

Спасибо всем проблема решена!!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:42.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter