Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2017, 19:51   #11
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

У вас HTTP2WorkBegin и HTTP2Work объявлены, но не соединены с компонентом.
Во-первых их надо сделать членами класса. А во вторых пописать в событиях.

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
IdHTTP1.OnWorkBegin:=IdHTTP1WorkBegin;
IdHTTP1.OnWork:=IdHTTP1Work;

end;

procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
 ProgressBar1.Position := 0;
 ProgressBar1.Max := AWorkcountMax;
end;

procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
 ProgressBar1.Position := AWorkCount;
end;
И ещё рекомендуют применять компонент IdAntiFreeze1.

Что касается потока. Антивирус обычно ругается когда программа себя обновляет. Поэтому программы стоит разделять одна основная другая для скачки. Сами понимаете при такой схеме потоки не нужны.

Что касается таймера, то он работать он не будет. Пока всё не скачаете. Тут только если антифриз поможет. Или если допустимо внутри IdHTTP1Work добавить строчку Application.ProcessMessages;.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .

Последний раз редактировалось Pavia; 16.04.2017 в 19:55.
Pavia вне форума Ответить с цитированием
Старый 16.04.2017, 20:06   #12
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Я вообще думал что этот IdHTTP1 модуль как компонент добавлен на форму но потом да увидел создание, тогда да нужно объявлять.

Да и вообще ProgressBar1 должен по идеи и без этих объявлений работать так как есть функция
Код:
procedure TimerTimer(Sender: TObject);
begin
ProgressBar.Position:=Stream.Position;
end;
У Вас кстати OnTimer не объявлена тоже

Timer:=TTImer.Create(nil);
Timer.OnTimer:= TimerTimer; не хватает этой строки
Timer.Interval:=500;
Timer.Enabled:=True;

Последний раз редактировалось Aliens_wolfs; 16.04.2017 в 20:33.
Aliens_wolfs вне форума Ответить с цитированием
Старый 16.04.2017, 20:58   #13
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
горю!!! Помогите пожалуйста, завтра программу сдавать нужно на работе
Как это знакомо...
Приходит вот такой "специалист" наниматься на работу.
- Это знаешь?
- Да как два пальца...
- А это?
- Да как два пальца...
- И это знаешь?
- Да как два пальца...
- Ну ладно, берем...

И тут начинается - вместо работы над поставленным заданием - бесконечное сидение на форумах с одной только просьбой "ПАМАГИТИ НИ ХРЕНА НЕ ПАНЕМАЮ ЗДЕЛАЙТИ ЗА МИНЯ МАЮ РАБОТУ"...

Помогальщики! Вам не стыдно?
kropotkina-alice вне форума Ответить с цитированием
Старый 16.04.2017, 21:34   #14
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Цитата:
Помогальщики! Вам не стыдно?
МНЕ НЕ СТЫДНО
Для этого и нужны такие форумы что бы набираться знаний и по возможности помогать, даже тем кто не может понять свое творение, ткнуть носом на ошибки что бы понял и набрался опыта.

Тем более он свое творение показал, а не просит написать ему готовую программу, вот тем кто с нуля просит таким и не нужно помогать.

Последний раз редактировалось Aliens_wolfs; 17.04.2017 в 08:24.
Aliens_wolfs вне форума Ответить с цитированием
Старый 17.04.2017, 11:10   #15
ApxaHGe1
 
Регистрация: 15.07.2009
Сообщений: 8
По умолчанию

Цитата:
Сообщение от kropotkina-alice Посмотреть сообщение
Как это знакомо...
Приходит вот такой "специалист" наниматься на работу.
- Это знаешь?
- Да как два пальца...
- А это?
- Да как два пальца...
- И это знаешь?
- Да как два пальца...
- Ну ладно, берем...

И тут начинается - вместо работы над поставленным заданием - бесконечное сидение на форумах с одной только просьбой "ПАМАГИТИ НИ ХРЕНА НЕ ПАНЕМАЮ ЗДЕЛАЙТИ ЗА МИНЯ МАЮ РАБОТУ"...

Помогальщики! Вам не стыдно?
Я не прошу за меня написать что то, я прошу помочь, и ткнуть меня носом в ошибки, как сказал Aliens_wolfs ....
и твой пост не несет какой то смысловой нагрузки... лишь стёб....

А так, спасибо огромное Aliens_wolfs.
Тему можно закрывать
ApxaHGe1 вне форума Ответить с цитированием
Старый 18.04.2017, 12:07   #16
ApxaHGe1
 
Регистрация: 15.07.2009
Сообщений: 8
По умолчанию

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

Код:
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');
Все работает, все хорошо

Только вот одно НО, Прогресс бар не много не так работает как хотелось бы ) нет плавного хода прогресса )
ApxaHGe1 вне форума Ответить с цитированием
Старый 18.04.2017, 22:29   #17
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Зачем два раза
Код:
HTTP:=TIdHTTP.Create(nil);
Такая плавность? Что не хочешь загружать архив с обновлением? Например использовать 7z?
Вложения
Тип файла: zip Delphi.zip (1.12 Мб, 9 просмотров)
Shouldercannon вне форума Ответить с цитированием
Старый 19.04.2017, 12:35   #18
ApxaHGe1
 
Регистрация: 15.07.2009
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Зачем два раза
Код:
HTTP:=TIdHTTP.Create(nil);
Такая плавность? Что не хочешь загружать архив с обновлением? Например использовать 7z?
Не внимательность, да именно так
ApxaHGe1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать собственный модуль и программу, использующую этот модуль. Oraner Паскаль, Turbo Pascal, PascalABC.NET 2 02.12.2012 13:15
Модуль Graph или графический модуль Seferus Паскаль, Turbo Pascal, PascalABC.NET 0 11.12.2011 13:15
Скрипт автообновления Glavar PHP 1 08.01.2011 14:06
Типизированные файлы, модуль Crt, Модуль Graph Kate_Fleur Помощь студентам 1 06.05.2010 17:43
Автообновления xap4o PHP 5 13.02.2010 22:37