-
Привет, есть вот такой код который стоит на таймере и грузит из файла в listbox содержимое txt, напишите пожалуйста как будет выглядеть такой же код только с обработкой ошибок, а то иногда вылазит ошибка "socket error 10054. Connection reset be peer.", а надо чтоб даже если такая ошибка и вылезет чтоб не выводилось сообщение о ней. Спасибо. Вот код: Stream := TMemoryStream.Create; try IdHTTP1.Get(' http://blabla.ru/bla.txt', Stream); Stream.Seek(0, 0); if Stream.Size > 0 then ListBox1.Items.LoadFromStream(Stream); finally Stream.Free; end;
-
try IdHTTP1.Get('http://blabla.ru/bla.txt', Stream); except on E: EIdSocketError do begin if E.LastError = WSAECONNRESET then begin // Do nothing. end; end; end;
-
а где finally в коде? Я спросил именно мой код со всем моими делами только чтоб еще и обработка была ошибок, потому что не знаю как верно будет совместить всё это, а как обработк ошибок одна делается это и погуглить можно
-
Совместить с ходу не получится, тут думать нужно
-
-
вы мне можете как будет выглядеть мой код но с добавлением обработки этой ошибки? Что значит там же где и был? Был он у меня после try, а щас там except.
-
Мой код имеется в виду чтоб была каждая строчка моего кода! Включая все действия с Stream и ListBox1.
-
*facepalm*
замени строку, где у тебя http адрес моим кодом.
*facepalm*
-
Вот научите, потом будет везде так делать.
-
В каком смысле? Код плохой? И что значит везде так делать, я не программист, а пишу только 1 конкретную программу как хобби с конкретным набором действий, поэтому уж простите что не понимаю "элементарных" с вашей точки зрения вещей.
-
Вобщем перепутал я, не тот кусок кода вызывал ошибку, а вот эта функция, при том что другие ошибки она вроде не показывает, если они возникают, а эту описанную мной в 1 посте показывает, тут неправильно обработка ошибок сделана?
procedure TForm1.checkSpic();
var
Stream: TMemoryStream;
minut: integer;
params: TStringlist;
myhttp1: TIdHTTP;
myhttp2: TIdHTTP;
begin
if inet = true then
begin
Stream := TMemoryStream.Create;
try
try
myhttp1 := TIdHTTP.Create(nil);
myhttp2 := TIdHTTP.Create(nil);
myhttp1.Get(filepar, Stream);
minut := StrToInt(myhttp2.Get(blabla/time.php'));
//showMessage('poneslas');
if (minut >= 30) then
begin
params := TStringlist.Create(); // создадим переменную str
params.Add('id=' + IntToStr(myid)); // добавим параметр
myhttp2.Post('http: // Отправим запрос
FreeAndNil(params); // Разрушим переменную str
end;
Stream.Seek(0, 0); // установим указатель потока в начало
//if Stream.Size > 0 then
//ListBox7.Items.LoadFromStream(Stream);
except
on E: Exception do
begin
myhttp1.Disconnect;
myhttp2.Disconnect;
//ShowMessage(E.ClassName+' поднята ошибка, с сообщением : '+E.Message);
end;
end;
finally
Stream.Free;
myhttp1.Destroy;
myhttp2.Destroy;
end;
end
end;
-
> Вобщем перепутал я, не тот кусок кода вызывал ошибку, а > вот эта функция, при том что другие ошибки она вроде не > показывает, если они возникают, а эту описанную мной в 1 > посте показывает, тут неправильно обработка ошибок сделана? >
Не из под Delphi пробовал запускать?
-
> Не из под Delphi пробовал запускать?
Ну да, запускал на нескольких компах и на некоторых из них и вылазит такая ошибка
-
procedure TForm1.checkSpic(); var Stream: TMemoryStream; params: TStringlist; myhttp1: TIdHTTP; myHour, minut, mySec, myMilli : Word; begin if inet = true then begin Stream := TMemoryStream.Create; try myhttp1 := TIdHTTP.Create(nil); try myhttp1.Get(filepar, Stream); except end; DecodeTime(Now, myHour, minut, mySec, myMilli); if (minut >= 30) then begin params := TStringlist.Create(); // создадим переменную str params.Add('id=' + IntToStr(myid)); // добавим параметр try myhttp1.Post('http://super-mult.ru/b/saveon.php', params); except end; params.Free; end; finally myhttp1.Free; Stream.Free; end; end;
-
и if inet then begin ... , конечно же :) вообще, так [13] делать нельзя, но иногда можно.
-
Спасибо, попробую, также я еще гдето читал что именно конкретно эта ошибка не относится к исключениям или что-то в таком роде и поэтому она появляется.
-
Удалено модератором
|