Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];

Вниз

Если кто знает в чём дело, помогите ........ ( 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.032 c
3-1092756039
Mr. Chel
2004-08-17 19:20
2004.09.12
a-la continue в Delhi


14-1093256734
Slider007
2004-08-23 14:25
2004.09.12
Shift+Insert


3-1092392320
serg128
2004-08-13 14:18
2004.09.12
как значение BLOB поля сохранить в файле?


14-1093247346
Andy BitOff
2004-08-23 11:49
2004.09.12
Raising exceptions


4-1090914593
ASMiD
2004-07-27 11:49
2004.09.12
Программирование пультов ДУ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский