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

Вниз

Если кто знает в чём дело, помогите ........ ( IdHTTP )   Найти похожие ветки 

 
ctranik   (2004-07-07 14:48) [0]

Здравствуйте
У меня стоит delphi 6

Значит история такая , решил написать собственную качалку сайтов.
Решил использовать компонент IdHttp (закладка Indy Misk)

кнопка "Соединение" (Button1Click) и обработчик IdHTTP1Connected работают нормально
но когда доходит дело до обработчика IdHTTP1Disconnected начинаются проблемы
следущего рода :
-если фаил только создан на диске то обработчик IdHTTP1Disconnected не работает хоть убей
а если фаил уже существует на диске то обработчик IdHTTP1Disconnected работает нормально.

Подскажите почему так происходит
Заранее благодарен.

Ниже приводится код проги

//В этой кнопки загружаются параметры и начинается процесс соединения, я назвал эту кнопку "Соединение"

procedure TForm1.Button1Click(Sender: TObject);
label 1;
var d,n:integer;
begin
if (edit1.Text= "")or (edit2.Text="")or (edit3.Text="") then begin
   messagedlg("введите параметры",mtinformation,[mbOK],0);
   goto 1;
end;

url:=edit3.Text; //URL это глобальная переменная типа string
d:=length(url);
for n:=d downto 1 do
if copy(url,n,1)="/" then url:=copy(url,n+1,d-n) ;
idhttp1.Host:=edit1.Text;
idhttp1.Port:=strtoint(edit2.Text);
idhttp1.Connect;
1:end;

procedure TForm1.IdHTTP1Connected(Sender: TObject);

var
list:TStringList;
Potok:TStringStream;

begin
list:=TStringList.Create;
potok:=TStringStream.Create(DataString); // строковый поток
 list.Clear;
 filename:=url;         // filename глобальная переменная типа string
 idhttp1.Get(url,potok);     //процедура загрузки страницы в поток
 list.Add(potok.DataString); // добавление в ЛИСТ
 list.SaveToFile(filename);  //сохранение в файле
 list.Clear; // очистка
potok.Free; // уничтожение обьекта
list.Free;  // уничтожение обьекта
end;

// В Disconnected хочу выяснить остальные ссылки внутри закаченой страницы
procedure TForm1.IdHTTP1Disconnected(Sender: TObject);
var
DataString, s, url1:string;
key,i,a:integer;
f:system.text;
list:TStringList;

begin
list:=TStringList.Create;

if  fileexists(filename) then begin // проверяет существует такой фаил на диске
assignfile(f,filename);

reset(f);  // открываем фаил

  while not eof(f) do begin
  readln(f,s)  ; //считываем данные

  list.Add(s); //загружаем в ЛИСТ

    for i:=0 to list.Count-1 do begin
     key:=pos("href="",list.Strings[i]); // ищем позицию с которой нчинается слово " href=" "
     if key>0 then url1:=copy(list.Strings[i],key+6,length(list.Strings[i])-key);
    end;
//в этом цикле находится непосредственно сылка и выводится в Memo1
    for a:=0 to length(url1)-1 do begin
     if copy (url1,a,1)=""" then url1:=copy(url1,1,a-1);
      memo1.Lines.Text:=url1;
    end;
  end;
closefile(f);
end;

list.free
end;


 
Reindeer Moss Eater ©   (2004-07-07 14:51) [1]

Боже ж ты мой.


 
Reindeer Moss Eater ©   (2004-07-07 14:59) [2]

Зачем тебе вообще события понадобились?
Я еще понимаю использование OnWork,OnRedirect, etc.

Но OnDisconnect?


 
ctranik   (2004-07-08 10:25) [3]

Reindeer Moss Eater
Ну ты даёш а чем пользоватся если не событиями


 
Reindeer Moss Eater ©   (2004-07-08 10:47) [4]

Головой


 
Reindeer Moss Eater ©   (2004-07-08 10:52) [5]

OnDisconnected - событие, которое генерится если TCP соединение с веб-сервером закрылось.

Теперь скажи мне (хотя можешь и себе) что делать, если сервер умеет поддерживать KeepAlive и не рвет соединение с твоей качалкой файлов после отдания контента?

Хотя это второстепенный вопрос.

Зачем для анализа полученного контента выкачанного синхронным методом завязываться на какое бы то ни было событие?

Если в одной строчке кода есть вызов GET, то ровно на следующей строчке кода у тебя в руках либо готовый контент либо исключительная ситуация.



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

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

Наверх




Память: 0.48 MB
Время: 0.04 c
14-1093090844
able
2004-08-21 16:20
2004.09.12
Предложение.


14-1093117892
DeadMeat
2004-08-21 23:51
2004.09.12
Инсталлер для компонентов


1-1093522536
gonzales
2004-08-26 16:15
2004.09.12
Достучаться до Scrollboxa


1-1093628527
Lord de Mon
2004-08-27 21:42
2004.09.12
Авторан и регистр.


1-1093892635
Ragazor
2004-08-30 23:03
2004.09.12
Есть PopupMenu, как на все его MenuItem..