Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Пропуск Exсept=((


Автор: Chydik 9.10.2011, 18:03
Всем Ре.
Вопрос заключается в том как при ошибке заполнить ее в лог и продолжить выполнение.
Для наглядности код.

Код

  try
    Domain := TStringList.Create;
    Domain.Delimiter := '.';
    Domain.DelimitedText := edtDomain.Text;
    Dom := '';
    for i := 0 to Domain.Count - 1 do
      begin
        Dom := Dom + 'DC=' + Domain.Strings[i]+',';
      end;
    if Copy(Dom, Length(Dom), Length(Dom)) = ',' then
      Dom := Copy(Dom, 1,Length(Dom) - 1);
    if cbbdom.ItemIndex = 0 then
    for i := 0 to strngrdImp.RowCount - 1 do
      begin
        if strngrdImp.Cells[1,i] <> '' then
          Begin
            Comp := GetObject('LDAP://OU='+edtOU.Text+','+Dom) as
              IADsContainer;
            Usr := Comp.Create('User', 'CN='+strngrdImp.Cells[1,i]) as IADsUser;
            Usr.Put('SamAccountName', strngrdImp.Cells[1,i]);
            Usr.Put('userPrincipalName', strngrdImp.Cells[1,i] + '@' + edtDomain.Text);
            Usr.SetInfo;
            Usr.SetPassword(strngrdImp.Cells[2,i]);
            Usr.AccountDisabled := False;
            Usr.SetInfo;
          end;
      end
      else
      for i := 0 to strngrdImp.RowCount - 1 do
        begin
          if strngrdImp.Cells[1,i] <> '' then
            Begin
              Comp := GetObject('WinNT://'+edtDomain.Text+',computer') as
                IADsContainer;
              Usr := Comp.Create('user', strngrdImp.Cells[1,i]) as IADsUser;
              Usr.SetPassword(strngrdImp.Cells[2,i]);
              Usr.SetInfo;
            end;
        end;
  except
    on E: EOleException do begin
       mmo1.Text := strngrdImp.Cells[1,i]+ ': ' + (E.Message);
    end else
      mmo1.Text := 'Add user: '+strngrdImp.Cells[1,i];
  end;

Вся загвоздка здесь.
Код

 except
    on E: EOleException do begin
       mmo1.Text := strngrdImp.Cells[1,i]+ ': ' + (E.Message);
    end else
      mmo1.Text := 'Add user: '+strngrdImp.Cells[1,i];
  end;

Т.е. я хотел бы что б при ошибке продолжалось выполнение цикла.
Вариант конечн вообще не нравится но побывал через goto, но Делфи ругаеца на то что не может перейти с блока Except в Try.(

Может кто плиз подсказать как при ошибке пропустить ее и продолжить выполнение цикла, но и сделать запись об ошибке в Memo.
Заранее спс.

Автор: Данкинг 9.10.2011, 18:18
А если continue в код обработки ошибки вставить - не поможет?

Автор: Chydik 9.10.2011, 20:03
Не Continue не поможет первое что думал но опять же except находица вне цикала ж) Проблемму уже решил просто сохраняю текущую позицию цикла в переменную и перезапускаю проседуру с текущей позиции.)

Автор: Keeper89 9.10.2011, 20:33
Логика какая-то неправильная. Либо надо локально предусмотреть исправление ошибки, либо сделать внутренний try..except.

Автор: Chydik 10.10.2011, 01:20
Да тупанул хоть и работает но согласен не совсем логично прост try.. except неправильно расставил по сути кидаю его внутри цикла и все должно пахать с continue спс.=)

Автор: bems 10.10.2011, 01:46
Цитата(Chydik @  10.10.2011,  01:20 Найти цитируемый пост)
кидаю его внутри цикла и все должно пахать с continue 
без него

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)