HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Разделить размер файла на части и закачать.
  #1  
Старый 22.01.2010, 11:31
RedFern.89
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
С нами: 8582863

Репутация: 69
Question Разделить размер файла на части и закачать.

все вроде бы получилось. Делал так:

Код:
type TApiGetHTTP = class(TTharead)

....

var
 HTTP : array of TApiGetHTTP;

var
  ContentLength: Int64;
  Offset, Chunk : Int64;
  RangeBegin, RangeEnd : Int64;
  PartCount : Cardinal;
  I : Integer;
begin
  ContentLength := GetUrlFileSize(AURL);
  PartCount := 5;
  
  Chunk := ContentLength div PartCount;
  Offset := 0;
  
  For I := 0 To PartCount -1 do
  begin
     SetLength(http, i+1);
     RangeBegin := Offset;
     RangeEnd := Offset + Chunk;
     Offset := Offset + Chunk +1;
     HTTP[I] := TApiGetHTTP.Create(True);
     HTTP[i].Suspend;
     HTTP[i].RangeBegin := IntToStr(RangeBegin);
     HTTP[i].RangeEnd := IntToStr(RangeEnd);
  end;

  For I := 0 To Length(http) -1 do HTTP[i].Resume;
все работает прекрасно но 1 баг! Следующий поток не начнется, пока не завершит работу другой! в чем же дело? что я делаю не так? спасибо заранее..

Последний раз редактировалось RedFern.89; 22.01.2010 в 11:36..
 
Ответить с цитированием

  #2  
Старый 22.01.2010, 19:11
Chrome~
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
С нами: 9162683

Репутация: 175
По умолчанию

Попробуй так:
Код:
type TApiGetHTTP = class(TTharead)

....

var
 HTTP : array of TApiGetHTTP;

var
  ContentLength: Int64;
  Offset, Chunk : Int64;
  RangeBegin, RangeEnd : Int64;
  PartCount : Cardinal;
  I : Integer;
begin
  ContentLength := GetUrlFileSize(AURL);
  PartCount := 5;
  
  Chunk := ContentLength div PartCount;
  Offset := 0;
  
  For I := 0 To PartCount -1 do
  begin
     SetLength(http, i+1);
     RangeBegin := Offset;
     RangeEnd := Offset + Chunk;
     Offset := Offset + Chunk +1;
     HTTP[I] := TApiGetHTTP.Create(True);
     // HTTP[i].Suspend;
     HTTP[i].RangeBegin := IntToStr(RangeBegin);
     HTTP[i].RangeEnd := IntToStr(RangeEnd);
  end;

  For I := 0 To PartCount - 1 do HTTP[i].Resume;
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пишем простейший джойнер файлов becensed Статьи 14 07.11.2010 00:26
Подскажите чем разделить видео на части! petryxa Болталка 1 16.01.2010 15:55
Размер файла, каков он на самом деле =) VERte][ С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 6 29.11.2009 00:31
Возможно увеличить максимальный размер файла? Andres Для Администратора 6 31.05.2009 20:45



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.