Показать сообщение отдельно
  #2  
Старый 04.05.2015, 20:03
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,105
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Отлов завершения потоков. Вариантов много. Например, т.к. ты заранее знаешь кол-во потоков (блоков файла), то можно создать массив, ссылку на который передавать потокам. Каждый поток там проставит флажек, что завершился. А главный поток просто проверяет массивы состояний и соотв. обновляет глобальную информацию.
2. Т.к. ты знаешь размер файла до начала его скачивания, то сначала создай соотв файл (читай - TFileStream) и ссылку на него передавай каждому потоку вместе с началом и концом. Каждый поток скачает данные во времененый буфер (TMemorystream), а потом просто запишет его в нужное место файла. Не забудь синхронизовать потоки в момент записи через CriticalSection.
3. Писать сразу в результирующий поток не получится, т.к. компоненты этого не умеют. Хотя, если подправишь сами компоненты, то можно и без промежуточного буфера обойтись.
Ответить с цитированием