1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Как отменить инициализацию класса в конструкторе New?

Тема в разделе "Lotus - Программирование", создана пользователем K-Fire, 23 ноя 2007.

Статус темы:
Закрыта.
  1. K-Fire

    K-Fire Гость

    Репутация:
    0
    Есть следующий код:

    Код:
    Class MyClass
    Sub New( doc as NotesDocument)
    if doc is nothing then
    // тут хочется выйти из кода, но так чтобы экземпляр MyClass был = Nothing
    end if
    // тут идет нормальный код инициализации
    End Sub
    EndClass
    Что надо написать для того чтобы экземпляр MyClass был = Nothing, кто нить знает?
     
  2. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Репутация:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    639
    Симпатии:
    6
    ну и напиши в классе процедуру (close), которая будет doc обнулять,
    а в коде, где инициализируется класс можно его убивать delete MyClass
     
  3. K-Fire

    K-Fire Гость

    Репутация:
    0
    Я может криво описал проблему...

    Есть код вызывающий класс:

    Код:
    Dim mc as MyClass
    
    Set mc = New MyClass (doc) ' переменная док где-то ранее инициализируется и может быть Nothing
    
    ' Я хочу написать ниже следующую проверку:
    
    If mc is nothing then //DO EXIT
    Я понимаю, что нет никаких проблем написать метод класса MyClass.IsInitialize(), и вместо сравнения с Nothing проверять вызывая этот метод. Но хочется написать _правильно_ :rolleyes:
     
  4. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Репутация:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    639
    Симпатии:
    6
    ну, например, сделай так
    Код:
    Class MyClass
    public isValid as boolean
    Sub New( doc as NotesDocument)
    if not doc is nothing then 
    isValid = true
    exit sub
    end if
    // тут идет нормальный код инициализации
    End Sub
    EndClass
    ну и проверяй
    Код:
    Dim mc as MyClass
    Set mc = New MyClass (doc) ' переменная док где-то ранее инициализируется и может быть Nothing
    ' Я хочу написать ниже следующую проверку:
    
    If not mc.isValid then
    delete mc
    end
    end if
    просто чтобы экземпляр MyClass был = Nothing не получится ведь New это процедура
     
  5. Mihal

    Mihal Гость

    Репутация:
    0
    Код:
    Class MyClass
    Sub New( doc as NotesDocument)
    if doc is nothing then
    
    Dim MyObject As Variant
    Set MyObject=Me
    Delete MyObject
    
    end if
    // тут идет нормальный код инициализации
    End Sub
    EndClass
    Вроде как работает...
    "Эх, маладёжжжжь!"(с) :)
     
  6. K-Fire

    K-Fire Гость

    Репутация:
    0
    спасибо, работает

    /MODERATOR/ А ПО ШАПКЕ за флуд? без спасибо - просто +1 в репу и хватить.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей