26 / 26 / 24
Регистрация: 08.07.2013
Сообщений: 125
|
||||||
1 | ||||||
Скачивание файлов из интернета с прогресс-баром при использовании indy08.07.2013, 10:59. Показов 14231. Ответов 36
Метки нет (Все метки)
Доброго времени суток, участники и гости форума.
В моей программе мне нужно реализовать скачивание файлов с прогресс-баром. Использую indy. Маленькие файлы (1-2мб) скачиваются хорошо, а вот если я хочу загрузить большой файл (допустим, 15 мб), то при нажатии на кнопку "Скачать" Delphi выдает мне ошибку, мол я делю на ноль (EDivByZero), хотя никакого деления конкретно в моей программе нет. И главное, что не указывает ни на какую строку с ошибкой. Вот кусок кода:
1
|
08.07.2013, 10:59 | |
Ответы с готовыми решениями:
36
Скачивание файлов по очереди с прогресс баром WebClient скачивание нескольких файлов с общим прогресс баром Переименование файлов с прогресс баром Отправка/получение файлов на FTP с прогресс баром |
4913 / 2782 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
|
|
08.07.2013, 11:04 | 2 |
0
|
26 / 26 / 24
Регистрация: 08.07.2013
Сообщений: 125
|
|
08.07.2013, 11:05 [ТС] | 3 |
0
|
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
|
|
08.07.2013, 11:18 | 4 |
Свойство max установите на кол-во всех байт в файле, свойство position на прогресс скачивания.
0
|
26 / 26 / 24
Регистрация: 08.07.2013
Сообщений: 125
|
|
08.07.2013, 11:27 [ТС] | 5 |
Вы хотите сказать, что у меня это не установлено?
Код
procedure TForm1.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64); begin AdvancedProgressBar1.Position:=AWorkCount; end; procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64); begin AdvancedProgressBar1.Max:=AWorkCountMax; end;
0
|
26 / 26 / 24
Регистрация: 08.07.2013
Сообщений: 125
|
|
08.07.2013, 13:08 [ТС] | 7 |
Не подскажете, как лучше сделать? Я пробовал делить AWorkCount и AWorkCountMax на некое число, но увы, проблема осталасью
0
|
134 / 133 / 22
Регистрация: 29.08.2012
Сообщений: 353
|
||||||||||||||||
08.07.2013, 13:35 | 8 | |||||||||||||||
примерно так
только вот у вас переменные локальные, это выражение нужно присвоить какой-нибудь глобальной переменной:
0
|
26 / 26 / 24
Регистрация: 08.07.2013
Сообщений: 125
|
|
08.07.2013, 16:47 [ТС] | 9 |
Объявил глобальную переменную i с типом int64, присвоил ей значение в процедуре OnWorkBegin, подставил последнюю строчку в OnWork. Теперь немного другая ошибка: EZeroDivide. И еще теперь дебаггер указывает на процедуру TIdComponent.DoWork в IdComponent.pas, конкретно - на последний end.
0
|
134 / 133 / 22
Регистрация: 29.08.2012
Сообщений: 353
|
|
08.07.2013, 17:02 | 11 |
а какое значение дебагер вам показывает у переменной i за шаг до ошибки? пологаю что у вас значение AWorkCountMax местами равно 0, тогда i=0 / 100, ну и соответственно в DoWork выпадает i=0; и сразу станет ясно почему у вас раньше возникала проблеммма с делением...
0
|
Ev1l
|
08.07.2013, 17:09
#13
|
0
|
26 / 26 / 24
Регистрация: 08.07.2013
Сообщений: 125
|
||||||
08.07.2013, 20:42 [ТС] | 15 | |||||
p.s. возможно ли менять цвет полоски progressbar не используя новые компоненты?
0
|
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
|
|
08.07.2013, 21:37 | 16 |
0
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|
08.07.2013, 21:40 | 17 |
1
|
26 / 26 / 24
Регистрация: 08.07.2013
Сообщений: 125
|
|
09.07.2013, 09:34 [ТС] | 18 |
Спасибо, а цвет заднего фона прогресс-бара?
Добавлено через 2 минуты Опять же, как это сделать?
0
|
Супер-модератор
|
||||||
09.07.2013, 09:39 | 19 | |||||
Кстати, если разрешены темы оформления - это всё не будет работать, плевать Windows хотела на все эти PBM_SETBARCOLOR и PBM_SETBKCOLOR:
1
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|
09.07.2013, 10:17 | 20 |
Если что, константы описаны в модуле CommCtrl.
Но установка цвета фона у меня не работает в Д7.
0
|
09.07.2013, 10:17 | |
09.07.2013, 10:17 | |
Помогаю со студенческими работами здесь
20
Скачивание файла из интернета: отобразить прогресс Скачивание файлов с прогресс барами Вывести скачивание файлов в отдельный поток и отобразить прогресс в ProgressBar'е Проблемы со прогресс баром Ребят подскажите с прогресс баром Скачивание 2 файлов из интернета Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |