Показать сообщение отдельно
  #1  
Старый 28.10.2010, 09:30
MrDiG MrDiG вне форума
Начинающий
 
Регистрация: 05.10.2010
Сообщения: 112
Репутация: 1227
По умолчанию Обработка таймаута

Вот код, которым пытаюсь проверять прокси на пригодность к работе с вконтактом. Если вкратце - берём из Memo2 проксю, пытаемся залогиниться на вконтакте. Получилось - складываем в Memo5. Не получилось, или превышен таймаут - в Memo10.

Код:
procedure TForm1.Button4Click(Sender: TObject);
var i,pos1,timeout:integer;
var prstring,server,port,login,pass,PageProfile:string;
var data:tstringlist;
var error:boolean;
begin
//Проверка прокси
Memo5.Clear;
Button4.Enabled:=false;

    for i := 0 to Memo2.Lines.Count - 1 do
    begin
    prstring:=Memo2.Lines[i];
    pos1:=pos(':', prstring);
    server:=copy(prstring, 1,  pos1-1);
    port:=copy(prstring, pos1+1, length(prstring) - pos1);
    //ShowMessage('Server: '+server+' Port: '+port );

    //check
 login:=Edit9.Text;
 pass:=Edit10.Text;
 timeout:=StrToInt(Edit11.Text);

 IdHTTP1.AllowCookies:=true;
 IdHTTP1.HandleRedirects:=false;
 IdHttp1.ReadTimeout:=timeout;
 IdHttp1.ConnectTimeout:=timeout;
 IdHttp1.ProxyParams.ProxyServer:=(server);
 IdHttp1.ProxyParams.ProxyPort:=StrToInt(port);


 data:=tstringlist.create;
 data.Add('act=login');
 data.Add('expire=1');
 data.Add('vk=');
 data.Add('email='+login); // логин для авторизации
 data.Add('pass='+pass);   // пароль для авторизации
 data.Add('success_url=http://vkontakte.ru/share.php?act=logged');
 error:=false;
 try
  PageProfile:=IdHTTP1.Post('http://login.vk.com/', data);
 except
  error:=true;
 end;

 if not(error) then
  begin
   data.Clear;
   data.Add('s='+Copy(PageProfile, Pos('value', PageProfile)+7, 56));
   data.Add('op=slogin');
   data.Add('redirect=1');
   data.Add('expire=1');
   data.Add('to=');
   IdHTTP1.HandleRedirects:=true;
   try
    IdHTTP1.Post('http://vkontakte.ru/share.php?act=logged', data);
   except

   end;
    Memo5.Lines.Add(server+':'+port);
   Data.Free;
  end
  else
  begin
  Memo10.Lines.Add(server+':'+port);

  Data.Free;
  end;
end;
     Button4.Enabled:=true;
    //endofcheck

    end;

С таймаутом проблемы - выкидывает ошибку: First chance exception at $7C812AFB. Exception class EIdReadTimeout with message 'Read timed out.'.

Отчего сие?
Ответить с цитированием