Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.29;
Скачать: CL | DM;

Вниз

Прошу учесть и исправить ошибку в компоненте KOLHTTPDownload   Найти похожие ветки 

 
vastani   (2007-12-25 12:43) [0]

Качалка хороша, но при попытке качнуть "тело" html страницы по ссылке
(очень нужна была эта http://openbox.ua/download.php?&get=OPENBOX-F300FTA/)
ВИСЯК проги был жесткий. Пришлось повышать свою грамотность в сокетных вопросах и... отлаживаться включая тело компоненты.
Ошибочка, хоть и элементарна, но имеется. Собственно похоже на то, что автор сделал Ctrl+V несколько выше нежели строка где должна собственно находиться :)...
Короче привожу ИСПРАВЛЕННЫЙ обработчик "сокет-приёмника" этой качалки с моими коментами, которые писались по ходу вникания.
Привожу немедленно, т.к. быть может кто то мучается именно сейчас, а
победа так близка ;) Успешного кодинга!
//-----------------------------------------------------
procedure THTTPDownload.On_Read( SocketMessage: TWMSocket );
var Ch: Char;
begin
while ( fSocket.Count > 0 ) do
if ( fSocket.ReadData( @Ch, 1 ) = 1 ) then
// анализируем прочитанные из сокета данные
 begin
  // Это пока заголовок, что с самого начала сеанса получаем???
   if ( NOT fHdrAcct ) then
     begin
    // читаем и анализируем заголовки, т.к. флаг наличия заголовка не установлен (пока)
       if ( Ch = #13 ) then  // это признак конец текущей анализируемой строки?
         begin
            fSocket.ReadData( @Ch, 1 ); // #10
            if fHdrStr = "" then // #13#10#13#10 - http header end
              begin
                 fHdrAcct := TRUE;  // заголовок обнаружен
                 AnalyzeHeader;     // теперь его обработаем
                 Continue;          // будем продолжать принимать данные из сокета
              end;
            fHdrList.Add( fHdrStr );// добавить запись
            fHdrStr := "";          // обнулим содержание буферного накопителя
         end
       else
            fHdrStr := fHdrStr + Ch;// побайтно набиваем накопитель...
     end
   else
     begin    
        fDStream.Write( Ch, 1 );// читаем поток данных из сокета побайтно
        fHdrStr := fHdrStr + Ch;// и побайтно суем в накопитель
        Inc( fRecvCount );      // не забываем приращать их количество
     end
  end  
// а вот если данные из сокета кончились, то генерим следующее событие
else
  begin
     if Assigned( fOnRecv ) then
                  fOnRecv( @Self, fRecvCount, fHeader.ContentLength );
     EXIT;// гарантированно и обязательно выходим, не допуская "висяков"!
  end;
end;
//-----------------------------------------------------


 
Compiler   (2007-12-25 20:05) [1]


>  быть может кто то мучается именно сейчас

Как раз работаю с ним, но до этого глюка пока недобрался. Файлы качаются нормально. Попробую и страницы с приведенными исправлениями.


 
vastani   (2007-12-27 10:32) [2]

В том то и дело, что ФАЙЛЫ КАЧАЮТСЯ!
А вот перед тем как качать, я хочу посмотреть страницу "HTML" (сылку на которую указывает пользователь изначально, скажем), где есть ряд ссылок на скачиваемые файлы, т.е. затем я их буду качать по конкретной выбранной ссылке из перечня с этой скачанной страницы.
ПОЛУЧЕНИЕ (загрузка) этого перечня ссылок обречена... теперь БЫЛА ;)



Страницы: 1 вся ветка

Текущий архив: 2009.03.29;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.029 c
1-1208178791
Версия для печати
2008-04-14 17:13
2009.03.29
Как сменить цвет заголовка колонок ListView?


3-1216467013
Евгений Р.
2008-07-19 15:30
2009.03.29
Обновление в DbGrid


1-1208160317
@!!ex
2008-04-14 12:05
2009.03.29
Проверка корректности файла


2-1233739538
zorik
2009-02-04 12:25
2009.03.29
Смена типа на ходу


2-1233786340
Dmitry87
2009-02-05 01:25
2009.03.29
Обработка большого кол-ва строк