![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с TIdHttp [D2005, 2003]
de_guta © (2012-01-24 08:34:00)
procedure TForm1.FormCreate(Sender: TObject);
begin
MyStream:=TMemoryStream.Create;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
buffer:='';
try
idhttp1.get(' http://www.somesite.ru/1.txt',MyStream);
Mystream.Position:=0;
Mystream.ReadBuffer(buffer,sizeof(buffer));
except
end;
Drawit;
end;
procedure TForm1.Exit1Click(Sender: TObject);
begin
Mystream.Free;
close;
end;
Все работает, но если отключить инет и снова включить то после idhttp1 все равно обрабатывается блок except.
мож там какой кеш или буфер у компонента сбрасывать или очищать надо или как то обновлять соединение?
Anatoly Podgoretsky (2012-01-24 15:15:00) [1]> de_guta (24.01.2012 09:30:03) [3]
Откуда узнал?
de_guta (2012-01-24 13:20:00) [2]megavoid © спасибо , все заработало
megavoid (2012-01-24 12:59:00) [3]а и да, idhttp1.readtimeout, connecttimeout по-хорошему надо бы, чтобы были меньше, чем интервал таймера1, а то оно войдёт в процедуру повторно со всеми вытекающими возможными...
megavoid (2012-01-24 12:57:00) [4]пересоздавать idhttp в рантайме
ms := tmemorystream.create;
idhttp1 := tidhttp.create;
try
idhttp1.get(' http://www.somesite.ru/1.txt',MyStream);
Mystream.Position:=0;
Mystream.ReadBuffer(buffer,sizeof(buffer));
draw;
finally
freeandnil(idhttp1);
freeandnil(ms);
end;
sniknik (2012-01-24 12:55:00) [5]> connection reset by peer
говорил же, закрывать нужно...
de_guta (2012-01-24 12:43:00) [6]
> sniknik, конечно, телепат, но всё же лучше бы вы сами её
> указали ))try idhttp1.get(' http://www.somesite.ru/1.txt',
> MyStream); Mystream.Position:=0; Mystream.ReadBuffer(buffer,
> sizeof(buffer));except on E : Exception do begin ShowMessage('Exception
> class name = ' + E.ClassName); ShowMessage('Exception
> message = ' + E.Message); end;end;
exception class eidsocketerror
exception message = socket error # 10054
connection reset by peer
Ситуация следущая:
1. Если инета нет изначально., запускаем прогу, обрабатывается блок except, все ok, врубаем инет, idhttp1.get отрабатывает без ошибки.
2. Если инет есть, запускаем прогу, все работает, отрубаем инет, блок except выполняется все okey, врубаем инет блок except продолжает выполняться в выше обозначеной ошибкой
Плохиш (2012-01-24 12:24:00) [7]
> укажи на ошибку в выше представленном коде
В выше представленном коде синтаксических ошибок нет.
sniknik (2012-01-24 12:18:00) [8]> укажи на ошибку в выше представленном коде
>> except
>> end;
> ошибки нужно обрабатывать, а не игнорировать. тебе там как раз причину пишут.
>> сбрасывать или очищать надо или как то обновлять соединение?
> закрывать нужно, когда стал не нужным. не держать ресурсы, а освобождать.
так понятнее?
megavoid (2012-01-24 11:17:00) [9]sniknik, конечно, телепат, но всё же лучше бы вы сами её указали ))
try
idhttp1.get(' http://www.somesite.ru/1.txt',MyStream);
Mystream.Position:=0;
Mystream.ReadBuffer(buffer,sizeof(buffer));
except
on E : Exception do begin
ShowMessage('Exception class name = ' + E.ClassName);
ShowMessage('Exception message = ' + E.Message);
end;
end;
de_guta (2012-01-24 10:44:00) [10]
> глюки ламерские и у ламеров... может их отстреливать?
уважаемый не ламер если не затруднит укажи на ошибку в выше представленном коде
sniknik (2012-01-24 10:10:00) [11]> Отсюда мораль: а может его вообще на надо использовать?
глюки ламерские и у ламеров... может их отстреливать?
Dimka Maslov (2012-01-24 09:44:00) [12]В последнее время что-то очень много вопросов про глюки TIdHttp. Отсюда мораль: а может его вообще на надо использовать?
sniknik (2012-01-24 09:30:00) [13]> except
> end;
ошибки нужно обрабатывать, а не игнорировать. тебе там как раз причину пишут.
> сбрасывать или очищать надо или как то обновлять соединение?
закрывать нужно, когда стал не нужным. не держать ресурсы, а освобождать.
de_guta (2012-01-24 09:30:00) [14]Происходит то что метод get компонента idhttp считает что нет соединения
Dimka Maslov (2012-01-24 09:28:00) [15]У любого исключения есть класс и текстовое сообщение, указывающие на то, что происходит. Если просто давить исключения, то как можно понять, чем побороть ошибку?