|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.04.2017, 20:24 | #1 |
Регистрация: 15.07.2009
Сообщений: 8
|
Модуль автообновления
Добрый вечер, горю!!! Помогите пожалуйста, завтра программу сдавать нужно на работе... Продажи "стоят" Но вот незадача, не работает модуль автообновления...
модуль писал сам, без него никуда!!! Пользователи "тяжелые" и объяснять им про обновления тяжело будет очень.. Много лишнего в нем, спору нет, но не суть... сам факт, мне нужно что бы он работал... точнее, он работает!! и прекрасно работает... но нет отображения процесса загрузки файлов обновления... прогресс бар молчит ( Сам процесс обновления соответственно в отдельном потоке ... Код:
|
15.04.2017, 20:43 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Хорошо, что вообще поток работает. Но это временно)) Нельзя напрямую к vcl из потока обращаться. Или синхронизируй или форме сообщения посылай из потока
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
15.04.2017, 21:02 | #3 |
Регистрация: 15.07.2009
Сообщений: 8
|
|
15.04.2017, 21:23 | #4 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 902
|
что то у вас непонятно что это
ProgressBar.Max:=StrToInt (UpdateList.Strings[FCount+1]); наверное лучше так иначе неправильно определяет максимальное значение ProgressBar.Max:= UpdateList.Count; да и вообще код какой то мудреный да и к Log.Lines лучше обращаться из потока через функцию в synchronize для правильной работы с визуальными инфо данными, как вам уже подсказали примерно так Код:
Да и это UpdateForm.Canvas.Create; для чего Последний раз редактировалось Aliens_wolfs; 15.04.2017 в 21:40. |
15.04.2017, 22:02 | #5 |
Регистрация: 15.07.2009
Сообщений: 8
|
UpdateList - список файлов обновления
ProgressBar.Max - Максимальное значение берется для каждого отдельного файла, из списка UpdateList Код мудренный, спору нет, я сам уже начинаю в нем путаться. Меня интересует, процесс загрузки каждого файла... поэтому ProgressBar.Max:=StrToInt (UpdateList.Strings[FCount+1]); |
15.04.2017, 22:05 | #6 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 902
|
Я так понял что у вас в UpdateList.Strings просто список файлов, а не числовые значения, а там нужно кроме имен файлов и их размер писать потом это размер подставлять ProgressBar.Max
Список должен быть примерно такого содержания ИмяФайла size=1267 Код:
Код:
Последний раз редактировалось Aliens_wolfs; 16.04.2017 в 10:43. |
16.04.2017, 11:26 | #7 | |
Регистрация: 15.07.2009
Сообщений: 8
|
Цитата:
123.exe 7777 // размер файла |
|
16.04.2017, 11:35 | #8 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 902
|
У вас тогда в потоке последовательность неправильная нужно так
ProgressBar.Max:=StrToInt (UpdateList.Strings[FCount+1]); Timer.Enabled:=True; HTTP2.Get(Server+UpdateList.Strings[FCount],Stream); // Она работает в ожидании, все что за ней отработает после получения данных Stream.SaveToFile(ExtractFilePath(P aramStr(0))+'\'+UpdateList.Strings[FCount]+'_'); Последний раз редактировалось Aliens_wolfs; 16.04.2017 в 11:38. |
16.04.2017, 19:28 | #9 |
Регистрация: 15.07.2009
Сообщений: 8
|
Спасибо,но почему то
Код:
Так... все идет как надо.. пока не скачается файл, надпись о заказчке следующег оне появляется... но вот не отображается и все ((( Последний раз редактировалось ApxaHGe1; 16.04.2017 в 19:31. |
16.04.2017, 19:51 | #10 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
У вас HTTP2WorkBegin и HTTP2Work объявлены, но не соединены с компонентом.
Во-первых их надо сделать членами класса. А во вторых пописать в событиях. Код:
Что касается потока. Антивирус обычно ругается когда программа себя обновляет. Поэтому программы стоит разделять одна основная другая для скачки. Сами понимаете при такой схеме потоки не нужны. Что касается таймера, то он работать он не будет. Пока всё не скачаете. Тут только если антифриз поможет. Или если допустимо то внутри IdHTTP1Work сделать Application.ProcessMessages;
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 16.04.2017 в 19:54. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создать собственный модуль и программу, использующую этот модуль. | 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 |