Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Докачка файлов через idhttp. [D7, WinXP]


Страницы:   1 2

vegarulez ©   (2010-05-23 22:45:00) 

Привет всем мастерам!
Возникла задача скачивания файлов из интернета.
Скачал довольно хороший пример.

delphi.int.ru/download/file/257/

но там нет такого нужного момента как докачка файла, при разрыве соединения.
Полазил в интернете и нашёл ещё пример

delphisources.ru/pages/sources/internet/2005_year/download_plus.html


но он не компилиться под d7+indy10.1.5
Прошу помочь с этим вопросом.

Почитал статьи в интернете, и скачал пару примеров с использованием WinInet.

delphisources.ru/pages/faq/base/download_with_download_again.html

Там используется такой параметр как range, используя его в заголовке idhhtp можно организовать докачку, но тут вопрос метод get при обращении на скачивание файла скидывает в поток поток пишет в файл. Тут просто у меня не понимание - как продолжить дописывать файл при разрыве соединения и организации повторного закачивания?


Плохиш   (2010-05-26 12:34:00) [21]

1. Запроси размер файла
2. Создай filestream требуемого размера
3. пиши каждую принятую часть в соответствующее место стрима.

PS. из [9] " надо просто написать часть программы, которая записывает полученные данные в файл на нужное место."


Palladin   (2010-05-26 12:31:00) [22]

http://www.google.com/search?client=opera&rls=ru&q=content-range&sourceid=opera&ie=utf-8&oe=utf-8


vegarulez   (2010-05-26 12:24:00) [23]

TFileStream.Create(ToFolder, fmCreate);

А файл уже есть, допустим часть скачена уже. Не знаю как правильно сделать чтобы поток TFileStream приклеил к уже существующему файлу следющую часть...

думаю сделать так - проверять есть ли файл, если нет - то запрашивать его размер и качать по частям через range, далее эти части "склеивать" между собой. Ну сообствено зная стандартный размер части будет понятно скачалась она полностью или нет, взависимости от этого переходить к скачиванию следующей части.


Плохиш   (2010-05-24 10:41:00) [24]


> Там используется такой параметр как range, используя его
> в заголовке idhhtp можно организовать докачку, но тут вопрос
> метод get при обращении на скачивание файла скидывает в
> поток поток пишет в файл. Тут просто у меня не понимание
> - как продолжить дописывать файл при разрыве соединения
> и организации повторного закачивания?

Поток, в который скидывают, никуда сам ничего не пишет. Т.ч. надо просто написать часть программы, которая записывает полученные данные в файл на нужное место.


Медвежонок Пятачок   (2010-05-24 00:19:00) [25]

Список тот же, которые в процедуре обработчика.

Если бы он был тот же, то не было бы
incompatible types: 'Parameters lists differ'


vegarulez   (2010-05-24 00:19:00) [26]

только докачка в том понимании в каком она должна быть - не пашет (


vegarulez   (2010-05-23 23:42:00) [27]

Нашёл. Поменял. 2-ой пример запустился.


vegarulez   (2010-05-23 23:28:00) [28]

Хотя не... всё там также (


vegarulez   (2010-05-23 23:25:00) [29]

хотя не... разница увидена
Sender : TObject;
и
ASender : TObject;


vegarulez   (2010-05-23 23:23:00) [30]

Список тот же, которые в процедуре обработчика... что в первом примере что во втором


Медвежонок Пятачок   (2010-05-23 23:20:00) [31]

скзано же по-русски:
incompatible types: 'Parameters lists differ'

текущая версия инди имеет другой список параметров обработчика OnWork по сравнению с компилируемым примером.


vegarulez   (2010-05-23 22:55:00) [32]

для первого примера - описание delphi.int.ru/articles/39/

Второй пример не компилиться в юните uThreads ругается на  строку HTTP.OnWork := OnWork;
ошибку выводит:
incompatible types: 'Parameters lists differ'
Посомтрел в первом примере - там впринципе также работа с onwork происходит... подскажите что может быть не так???


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо