Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с 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]

У любого исключения есть класс и текстовое сообщение, указывающие на то, что происходит. Если просто давить исключения, то как можно понять, чем побороть ошибку?


Наверх

Титульная страница Поиск, карта сайта Написать письмо