Показать сообщение отдельно
  #14  
Старый 18.04.2017, 12:07
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию

Переписал свой хлам, может кому то будет интересно ...

Код:
procedure Check (Server,FVer,PVer,FList:String);
var
  FVersion:String;
  HTTP:TIdHTTP;
  UpdateForm:TForm;
  ProgressBar:TProgressBar;
  Log:TMemo;
  UpdateList:TStringList;
  Stream:TMemoryStream;
  FCount:integer;
  i:integer;
begin
//Создаем форму и компоненты
//Размещаем и настраиваем компоненты
//На нашей форме
HTTP:=TIdHTTP.Create(nil);
UpdateForm:=TForm.Create(nil);
UpdateForm.Position:=poDesktopCenter;
UpdateForm.Caption:='Обновление ...';
UpdateForm.Height:=275;
UpdateForm.Width:=310;
UpdateForm.BorderStyle:=bsToolWindow;
ProgressBar:=TProgressBar.Create(nil);
ProgressBar.Parent:=UpdateForm;
ProgressBar.Height:=30;
ProgressBar.Width:=295;
ProgressBar.Visible:=True;
Log:=TMemo.Create(nil);
Log.Parent:=UpdateForm;
log.Top:=40;
Log.Width:=295;
Log.Height:=200;
Log.ScrollBars:=ssVertical;
Log.ReadOnly:=True;
Log.TabOrder:=4;
HTTP:=TIdHTTP.Create(nil);
//Запрашиваем версию файлов на сервере
FVersion:=HTTP.Get(server+FVer);
//и сравниваем с версией программы
//Если файлы на сервере более свежей версии
if  FVersion > PVer then
begin
//то отобразим форму
UpdateForm.Show;
//Выведем в ЛОГ сообщение о доступном обновлении
Log.Lines.Add ('----------------Доступно обновление '+FVersion+'----------------');
//Запросим список файлов с сервера и их размер
UpdateList:=TStringList.Create;
UpdateList.Text:=HTTP.Get(server+FList);
//Разберем список файлов обновления
//Формат файла :
//ИМЯ ФАЙЛА.ЕХЕ
//РАЗМЕР ФАЙЛА В БАЙТАХ
//И создадим поток, для загрузки файлов
Stream:=TMemoryStream.Create;
//========> БЛОК РАЗБОРА ФАЙЛОВ <========
for FCount:=0 to UpdateList.Count - 1 do
begin
Application.Initialize;
if FCount mod 2 = 0 then
begin
Application.Initialize;
//Выводим в ЛОГ имя файла и его размер
Log.Lines.Add('-'+UpdateList.Strings[FCount]+' ('+UpdateList.Strings[FCount+1]+')');
//Устанавливаем МАХ значение прогрессбара
ProgressBar.Max:=StrToInt (UpdateList.Strings[FCount+1]);
//Загружаем файл с сервера
HTTP.Get(Server+UpdateList.Strings[FCount],Stream);
//Сохраняем на диск, рядом с ЕХЕ файлом программы
Stream.SaveToFile(ExtractFilePath(ParamStr(0))+'\'+UpdateList.Strings[FCount]+'_');
//Отображаем на прогрессбаре процесс скачивания файла
ProgressBar.Position:=Stream.Position;
end;
//Очищаем поток и прогрессбар
Stream.Position:=0;
ProgressBar.Position:=0;
end;
//========> БЛОК РАЗБОРА ФАЙЛОВ END <========
//Освобождаем поток
Stream.Free;
//Выводим сообщение об удачной загрузке обновления
Log.Lines.Add('Файлы обновления загружены!');
end;

end;


пример использования

Check ('http://**********.ru/','ver.txt','0.9','FileList.txt');

Все работает, все хорошо

Только вот одно НО, Прогресс бар не много не так работает как хотелось бы ) нет плавного хода прогресса )
Ответить с цитированием