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

Вниз

Проблема с TIdHttp   Найти похожие ветки 

 
de_guta   (2012-01-24 08:34) [0]


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.
мож там какой кеш или буфер у компонента сбрасывать или очищать надо или как то обновлять соединение?


 
Dimka Maslov ©   (2012-01-24 09:28) [1]

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


 
sniknik ©   (2012-01-24 09:30) [2]

> except
> end;
ошибки нужно обрабатывать, а не игнорировать. тебе там как раз причину пишут.

> сбрасывать или очищать надо или как то обновлять соединение?
закрывать нужно, когда стал не нужным. не держать ресурсы, а освобождать.


 
de_guta   (2012-01-24 09:30) [3]

Происходит то что метод get компонента idhttp считает что нет соединения


 
Dimka Maslov ©   (2012-01-24 09:44) [4]

В последнее время что-то очень много вопросов про глюки TIdHttp. Отсюда мораль: а может его вообще на надо использовать?


 
sniknik ©   (2012-01-24 10:10) [5]

> Отсюда мораль: а может его вообще на надо использовать?
глюки ламерские и у ламеров... может их отстреливать?


 
de_guta   (2012-01-24 10:44) [6]


> глюки ламерские и у ламеров... может их отстреливать?

уважаемый не ламер если не затруднит укажи на ошибку в выше представленном коде


 
megavoid ©   (2012-01-24 11:17) [7]

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;


 
sniknik ©   (2012-01-24 12:18) [8]

> укажи на ошибку в выше представленном коде

>> except
>> end;
> ошибки нужно обрабатывать, а не игнорировать. тебе там как раз причину пишут.

>> сбрасывать или очищать надо или как то обновлять соединение?
> закрывать нужно, когда стал не нужным. не держать ресурсы, а освобождать.

так понятнее?


 
Плохиш ©   (2012-01-24 12:24) [9]


> укажи на ошибку в выше представленном коде

В выше представленном коде синтаксических ошибок нет.


 
de_guta   (2012-01-24 12:43) [10]


> 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 продолжает выполняться в выше обозначеной ошибкой


 
sniknik ©   (2012-01-24 12:55) [11]

> connection reset by peer
говорил же, закрывать нужно...


 
megavoid ©   (2012-01-24 12:57) [12]

пересоздавать 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;


 
megavoid ©   (2012-01-24 12:59) [13]

а и да, idhttp1.readtimeout, connecttimeout по-хорошему надо бы, чтобы были меньше, чем интервал таймера1, а то оно войдёт в процедуру повторно со всеми вытекающими возможными...


 
de_guta   (2012-01-24 13:20) [14]

megavoid © спасибо , все заработало


 
Anatoly Podgoretsky ©   (2012-01-24 15:15) [15]

> de_guta  (24.01.2012 09:30:03)  [3]

Откуда узнал?



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

Форум: "Начинающим";
Текущий архив: 2012.05.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.004 c
4-1257275310
mihail
2009-11-03 22:08
2012.05.27
Как на прямую обращаться к байтам файлового носителя?


3-1276183014
REX
2010-06-10 19:16
2012.05.27
Вывод времени в QRDBText


15-1326913814
PEAKTOP
2012-01-18 23:10
2012.05.27
Самообучающаяся программа


15-1326962338
Demo
2012-01-19 12:38
2012.05.27
Готовые решения


9-1191912113
bioSerg
2007-10-09 10:41
2012.05.27
Возникла проблема с Direct3d на новых карточках ATI x2000





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский