Показать сообщение отдельно
  #2  
Старый 23.12.2008, 01:48
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Странный такой код.
POP сервер хранит уникальные пары "логин-пароль".
И никак не может быть чтобы у одного имени пользователя было несколько паролей.
А в коде вложенные циклы как раз это и пытаются делать, т.е. устанавливая логин на первой итерации в цикле for i:=0 ...
перебираются все пароли из PassStrings в цикле for j:=0 ...
С одним и тем же логином происходят попытки соединится с сервером со всеми возможными паролями.
На второй итерации берется другой логин и опять происходят попытки коннектов со всеми паролями, ну, и т.д.
Это логическая ошибка, которая приводит к тому что на какой-либо итерации connect обязательно не сработает.

Вторая ошибка уже техническая. Exit после первого же успешного коннекта выполняет выход из процедуры, что не позволит освободить массивы строк - произойдет утечка памяти.
И циклы попыток соединений с сервером прервутся.

И третье. Если делать лишние итерации как показано выше, то бесполезные попытки коннектов приводят к увеличению времени работы этой процедуры.
Никакие потоки (thread'ы) здесь не помогут, т.к. само по себе соединение с POP сервером достаточно длительный процесс.
Лучше оптимизировать код, убрав лишние итерации и процедура будет работать много быстрее.

А о потоках лучше почитать классиков: http://forum.vingrad.ru/forum/topic-60076.html
__________________
Не забывайте делать резервные копии