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

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

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

    K-Fire Гость

    Есть следующий код:

    Код (Text):
    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

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

    K-Fire Гость

    Я может криво описал проблему...

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

    Код (Text):
    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

    Регистрация:
    5 сен 2006
    Сообщения:
    616
    Симпатии:
    4
    ну, например, сделай так
    Код (Text):
    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
    ну и проверяй
    Код (Text):
    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 Гость

    Код (Text):
    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 Гость

    спасибо, работает

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

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