Конференция "KOL" » Прошу учесть и исправить ошибку в компоненте KOLHTTPDownload [Delphi, Windows]
 
  • vastani (25.12.07 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 (25.12.07 20:05) [1]

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

    Как раз работаю с ним, но до этого глюка пока недобрался. Файлы качаются нормально. Попробую и страницы с приведенными исправлениями.
  • vastani (27.12.07 10:32) [2]
    В том то и дело, что ФАЙЛЫ КАЧАЮТСЯ!
    А вот перед тем как качать, я хочу посмотреть страницу "HTML" (сылку на которую указывает пользователь изначально, скажем), где есть ряд ссылок на скачиваемые файлы, т.е. затем я их буду качать по конкретной выбранной ссылке из перечня с этой скачанной страницы.
    ПОЛУЧЕНИЕ (загрузка) этого перечня ссылок обречена... теперь БЫЛА ;)
 
Конференция "KOL" » Прошу учесть и исправить ошибку в компоненте KOLHTTPDownload [Delphi, Windows]
Есть новые Нет новых   [134431   +10][b:0][p:0]