Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2012, 17:18   #1
stalker1995s
Gamedeveloper
Форумчанин
 
Аватар для stalker1995s
 
Регистрация: 11.07.2012
Сообщений: 149
Радость Продолжение цикла

Здравствуйте уважаемые, вот такая вот проблема, тревожить меня уже больше двух месяцев:
Скажем есть у нас цикл, который по очереди берет емейл адрес с текстового файла.
Скажем у нас 1500 тыс. емейлов, и он на каждый из них, отправляет написанный текст.
Как сделать выше перечисленное я знаю, и уже реализовал, но теперь проблема в следующем:
Цикл спотыкается об битые(не существующие) емейлы, и останавливает работу цикла.
Сам вопрос - 'Как избежать остановки цикла, т.е пропуск не рабочего.' Нашел не рабочий, плюнул на него, и дальше выполняет цикл.

P.S: Да, вы правы, я уже спрашивал, но спросил видимо не так. Надеюсь на вашу помощь. В случае могу предоставить код программы.

Цитата:
procedure TForm1.N1Click(Sender: TObject);
var n1,i,n2,index,name: integer;
SName: integer;
begin
Try
for index:= 0 to 1500 do
begin
idSMTP1.Username:=Edit1.Text; // Логин
idSMTP1.Password:=Edit2.Text; // Пороль
idSMTP1.Host:=ComboBox2.Text;
idSMTP1.Port:=25;
idSMTP1.AuthenticationType:=atLogin ;
name:=name+1;

IdMessage1.Body.Text:=Memo1.Text+' Код сообщения: '+IntToStr(SName);
idMessage1.From.Text:=Edit1.Text;
idMessage1.Recipients.EMailAddresse s:=ComboBox1.Items[name];
idMessage1.Subject:=Edit3.Text;
Label5.Caption:=intToStr(name);

idSMTP1.Connect(5000);
if idSMTP1.Connected=true then
begin
idSMTP1.Send(idMessage1);
idSMTP1.Disconnect;
end;
end;
end;
stalker1995s вне форума Ответить с цитированием
Старый 20.12.2012, 17:54   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

try ... except + continue
Человек_Борща вне форума Ответить с цитированием
Старый 20.12.2012, 18:16   #3
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Код:
procedure TForm1.N1Click(Sender: TObject);
var 
  n1,i,n2,index,name,SName: integer;
begin
  idSMTP1.Username:=Edit1.Text; // Логин
  idSMTP1.Password:=Edit2.Text; // Пороль
  idSMTP1.Host:=ComboBox2.Text;
  idSMTP1.Port:=25;
  idSMTP1.AuthenticationType:=atLogin ;
  for index:= 0 to 1500 do
  begin
    name:=name+1;
    IdMessage1.Body.Text:=Memo1.Text+' Код сообщения: '+IntToStr(SName);
    idMessage1.From.Text:=Edit1.Text;
    idMessage1.Recipients.EMailAddresse s:=ComboBox1.Items[name];
    idMessage1.Subject:=Edit3.Text;
    Label5.Caption:=intToStr(name);
    try
      idSMTP1.Connect(5000);
      if idSMTP1.Connected=true 
      then
        try
          idSMTP1.Send(idMessage1);
        Finally
          idSMTP1.Disconnect;
        end;
    Except
    end;
  end;
end;
более того, можно команду Connect вынести вверх перед цыклом (зачем каждый раз делать конект\диконект), а try..Finally оставить только на самом Send
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...

Последний раз редактировалось Yurk@; 20.12.2012 в 18:31.
Yurk@ вне форума Ответить с цитированием
Старый 21.12.2012, 11:43   #4
stalker1995s
Gamedeveloper
Форумчанин
 
Аватар для stalker1995s
 
Регистрация: 11.07.2012
Сообщений: 149
По умолчанию

Очень благодарен, все работает.
stalker1995s вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Продолжение С++ Maksim0905 Свободное общение 54 23.09.2012 09:16
алгоритмы нахождения эйлерова цикла и гамильтонова цикла в графе. Necare Помощь студентам 0 15.11.2011 18:26
Продолжение калькулятора) Asdprom Общие вопросы C/C++ 5 17.03.2011 19:04
Переход от цикла к циклу не выходя из цикла (без multithreading) Qousio Общие вопросы C/C++ 2 16.05.2009 09:27
Оператор цикла с предусловием While. Оператор цикла с пост условием Repeat McMilin Помощь студентам 7 11.11.2007 14:10