Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 756

/ вопрос открыт /

Здравствуйте, эксперты! Пытаюсь сделать докачку в IDHTTP . но почемуто файл начинает качаться сначала... подскажите в чём проблема.

Приложение:
  1.  
  2. function FileSizes(fileName : wideString) : Int64;
  3. var
  4. sr : TSearchRec;
  5. begin
  6. if FindFirst(fileName, faAnyFile, sr ) = 0 then
  7. result := Int64(sr.FindData.nFileSizeHigh) shl Int64(32) + Int64(sr.FindData.nFileSizeLow)
  8. else
  9. result := -1;
  10.  
  11. FindClose(sr) ;
  12. end;
  13.  
  14. procedure TDownLoader.Execute;
  15. var
  16. RestartPos: DWORD;
  17. rcvrdata, temp1: TFileStream;
  18. begin
  19. try
  20. try
  21. if FileExists(Form1.edt2.text) then
  22. begin
  23. LoadedSz:= FileSizes(Form1.edt2.text);
  24. rcvrdata:=TFileStream.Create(Form1.edt2.text,fmOpenReadWrite);
  25. rcvrdata.Seek(LoadedSz, soBeginning);
  26. Form1.idHttp1.Response.ContentRangeStart:= LoadedSz;
  27. end
  28. else
  29. begin
  30. rcvrdata:=TFileStream.Create(Form1.edt2.text,fmCreate);
  31. end;
  32. Form1.idHttp1.Get(Form1.edt1.text, rcvrdata);
  33. except
  34. end;
  35.  
  36. finally
  37. rcvrdata.Free;
  38. end;
  39. end;
  40.  
  41.  


eclipse Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: eclipse (статус: Посетитель)
Вопрос отправлен: 22 ноября 2010, 20:00
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, eclipse!
Все реально. Нужно просто правильно заполнить запрос. У idhttp есть свойство request, которое хранит различные параметры запроса. У него есть подсвойство range. Это поле строковое и в нем нужно указать, что скачать. Формат такой "начальный_байт-конечный_байт". Например
IdHttp1.Request.range := '1-100'; // с первого по 100 байт
IdHttp1.Request.range := '1000-'; // с 1000 байта и до конца
Так как файл на диске уже есть, то посчитать, откудова качать, не сложно.
вот тут http://pda.delphimaster.net/?id=1274640351&n=18&p=1 даже примерчик есть:)

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 22 ноября 2010, 20:47
Оценка за ответ: 5

Комментарий к оценке: В ответе все верно.

Мини-форум вопроса

Всего сообщений: 24; последнее сообщение — 25 ноября 2010, 18:11; участников в обсуждении: 3.

Страницы: [« Предыдущая] [1] [2]

Вадим К

Вадим К (статус: Академик), 25 ноября 2010, 16:42 [#21]:

Можно наверно и оценку за ответ поставить?:)
Галочка "подтверждения прочтения" - вселенское зло.
eclipse

eclipse (статус: Посетитель), 25 ноября 2010, 17:44 [#22]:

К стати в сети воПШЭ нифига нет про эту фишку с прогрессбаром... заметили? у всех такая же история что и у меня была.
Вадим К

Вадим К (статус: Академик), 25 ноября 2010, 17:48 [#23]:

а можно не ругаться?
Наверное потому, что обычно никто ее не делает.
А те кто делает, хранит как зеницу ока.
Галочка "подтверждения прочтения" - вселенское зло.
eclipse

eclipse (статус: Посетитель), 25 ноября 2010, 18:11 [#24]:

К стати насчёт хранит точно! Как всегда доходит до самого главного и всё... тут же никто ничто не знает.
Ха! так мож стоит удалить эти диалоги :)

Страницы: [« Предыдущая] [1] [2]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 26 апреля 2026, 00:00
Выполнено за 0.03 сек.