• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы K-Fire
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

K-Fire

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

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

Что надо написать для того чтобы экземпляр MyClass был = Nothing, кто нить знает?
 
K

Kee_Keekkenen

ну и напиши в классе процедуру (close), которая будет doc обнулять,
а в коде, где инициализируется класс можно его убивать delete MyClass
 
K

K-Fire

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

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

Код:
Dim mc as MyClass

Set mc = New MyClass (doc) ' переменная док где-то ранее инициализируется и может быть Nothing

' Я хочу написать ниже следующую проверку:

If mc is nothing then //DO EXIT

Я понимаю, что нет никаких проблем написать метод класса MyClass.IsInitialize(), и вместо сравнения с Nothing проверять вызывая этот метод. Но хочется написать _правильно_ :rolleyes:
 
K

Kee_Keekkenen

ну, например, сделай так
Код:
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 это процедура
 
M

Mihal

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

Вроде как работает...
"Эх, маладёжжжжь!"(с) :)
 
K

K-Fire

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!