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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 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');

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

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


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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