![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Доброго времени суток
Нужна помощь!!! Нужно сравнить время локального 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
|
||||
|
||||
|
Если правильно понял, то определение возраста файла на 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
|
||||
|
||||
|
Цитата:
|
|
#4
|
||||
|
||||
|
Цитата:
Странно, но вообще этот код - рабочий, сравнение возраста 2х локальных файлов (проверил вырезку про MinutesBetween) идёт на ура, и правда наверное что-то с серверным временем, надо бы это проверить. |
|
#5
|
|||
|
|||
|
Спасибо всем проблема решена!!
|