![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TidHttp в цикле после неудачного запроса больше не конектится [D6, Win2k]
Grin © (2003-01-14 15:59:00)Цикл
...
1 try
2 AssignFile(B, "htm.txt");
3 Rewrite(B);
4 WriteLn(B,HTTP.Get(url);
5 CloseFile(B);
6 except
7 Memo1.Text := "No conection";
8 LbNCCount.Caption:= IntToStr(c);
9 end;
...
После неудачи в 4-й строке до конца цикла каждый раз вылетает в эксершн стр6.
Вопрос:
Как правильно обойти неудачу в 4-й строке?
Зарание благодарен.
Grin (2003-01-15 11:44:00) [1]
> создавать новый экземпляр
Спасибо, я так и сделал :-))
Reindeer Moss Eater (2003-01-15 11:04:00) [2]Grin ©
Если есть подозрение, что в той версии Indy, что у тебя, TidHTTP плохо работает при последовательных вызовах методов, то самое простое решение - это создавать новый экземпляр TidHTTP в каждой итерации цикла с последующим убитием его.
Grin (2003-01-15 10:56:00) [3]
> Reindeer Moss Eater (14.01.03 16:02)
> Подсказка:
> TidHttpникакого понятия о твоем циклене имеет. И конечно
> же ошибка связана не с ним. Обрати внимание на освобождение ресурсов.
Таблетки от упрямства - хорошая штук!!! Спасибо! До скорого!
Grin (2003-01-14 18:25:00) [4]
> On E:Exception do Memo1.Lines.Text:=E.Message;
Socket Error # 10053
Software caused connection abort.
?????????????
Chubais (2003-01-14 18:04:00) [5]Reindeer Moss Eater (14.01.03 17:39)
подписываюсь))))
Reindeer Moss Eater (2003-01-14 17:48:00) [6]var
Trafic_Limit : boolean;
Content:string;
Trafic_Limit:=False;
While not Trafic_Limit do
try
Application.ProcessMessages;
Content:=HTTP.Get(url);
Memo1.Lines.Add(Content);
exception
On E:Exception do Memo1.Lines.Text:=E.Message;
end;
Grin (2003-01-14 17:46:00) [7]
> Таблетки от упрямства
:-)) ок!
Grin (2003-01-14 17:44:00) [8]
> Grin, тебе не сюда, тебе в патентное бюро надо. Пока не
> застолбили новейший способ борьбы с потерей ресурсов.
Гуд.
Загляну и туда как-нибудь.
Reindeer Moss Eater (2003-01-14 17:43:00) [9]Таблетки от упрямства не пробовал принимать?
Не в TIDHttp проблема.
Grin (2003-01-14 17:42:00) [10]Я иссяк ..........
Я почти уверен, что проблема в TIDHttp. Такое ощющение, что после неудачного запроса он запоминает свое состояние и больше ни чего не конектит .............
Я скоро зДоХнУ..............
Chubais (2003-01-14 17:41:00) [11]> Grin © (14.01.03 17:30)
ну тада - F7/F8 тебе помогут
Reindeer Moss Eater (2003-01-14 17:39:00) [12]Зачем, он перезаписывается на следующем круге....
Grin, тебе не сюда, тебе в патентное бюро надо. Пока не застолбили новейший способ борьбы с потерей ресурсов.
Chubais (2003-01-14 17:35:00) [13]2 Reindeer Moss Eater
мб, у мну версия не та была
мб KeepAlive был True
тем не менее я бы на месте грина попробовал..
и давно бы get в строку сделал, чтоб не было толкания на одном месте и выяснения, в чем причина ошиПки
Grin (2003-01-14 17:34:00) [14]
> Если в 4 строке исключение, то кто закрывает файл?
Зачем, он перезаписывается на следующем круге....
Grin (2003-01-14 17:30:00) [15]
> Chubais
Не помогает ...
Reindeer Moss Eater (2003-01-14 17:22:00) [16]А вот после HTTP.Get(url) ничего нет и файл в итоге пустой...
Файл пустой не обязательно потому, что Get ничего не вернул.
Reindeer Moss Eater (2003-01-14 17:20:00) [17]>Chubais
Вот кусочек из класса:
procedure TIdCustomHTTP.CheckAndConnect(AResponse: TIdHTTPResponse);
begin
if not AResponse.KeepAlive then begin
Disconnect;
end;
При вызове Get внутри класса вызывается CheckAndConnect.
>Grin © (14.01.03 17:11)
Если в 4 строке исключение, то кто закрывает файл?
Chubais (2003-01-14 17:12:00) [18]и совсем не путаю
у меня было такое - после ошибки дисконект приходилось делать
может я это и неправильно делал, но мне помогало)))
Grin (2003-01-14 17:11:00) [19]
> И еще подумай, будет ли закрыт открытый файл в случае возникновения
> исключения?
Ну выдавалобы I/O Error ...
Grin (2003-01-14 17:08:00) [20]
> Так надеюсь понятно наконец?
Ну какой эксепшн может быть в WriteLn?? Если файл есть.
А вот после HTTP.Get(url)ничего нет и файл в итоге пустой...