Хакер писал(а):То есть по сути, ровно то, о чём я говорил — сделать публичную обёртку над New. Но вы же предпочитаете делать какую-то гадость...
Option Explicit
Public FormDisplayed As Boolean
Dim myForm As New FormExemple
Sub ShowForm()
On Error Resume Next
If myForm Is Nothing Then
Set myForm = New FormExemple
End If
FormDisplayed = True
myForm.Show
End Sub
Хакер писал(а):сделать публичную обёртку над New
Денис писал(а):Это как?
Денис писал(а):Сделать в dll публичный класс, в нем сделать метод NewForm, который будет дергать метод New у формы в dll?
'В dll
'Публичный класс:
public function LoadDLLForm() as object
dim frm1 as Form
set LoadDLLForm = New Form1 'само собой, Form1 есть в проекте dll
end function
'B exe
'В том месте, где надо вызвать форму.
private sub Button1_Click()
dim DLLForm as Form
Set DLLForm = LoadDLLForm()
end sub
Денис писал(а):где надо вызвать форму.
a = b + c ' Так можно
a = ( b ) + ( ( c ) ) ' Так _тоже_ можно
' Вывод: Плюс — это нормальный оператор
A = AddressOf SomeProcedure ' Так можно
a = AddressOf (SomeProcedure) ' Так нельзя
' AddressOf — квази-оператор
a = b and c ' Так можно
a = ( b ) and c ' Так _тоже_ можно
' Вывод: And — это нормальный оператор
a = not b ' Так можно
a = not (b) ' Так можно тоже
a = not ( ( b ) ) ' И так можно
' Вывод: Not — это нормальный оператор
If TypeOf A Is B Then ' Так можно
If TypeOf ( A ) Is B Then ' Так тоже можно
If TypeOf ( A) Is ( B ) Then ' Так уже нельзя
' TypeOf...Is — квази-оператор
Set B = New Class1 ' Так можно
Set B = New ( Class1 ) ' Так нельзя
' New — квази-оператор
Хакер писал(а):Не надо намеренно писать ЧУШЬ галактических масштабов.
Хакер писал(а):Что конкретно тебе не нравится?
Денис писал(а):Ну это просто языковая конструкция.
Денис писал(а):В конкурирующих языках за создание и уничтожение объектов отвечают специальные методы соответствующего класса, конструкторы и деструкторы.
Денис писал(а):А вот в бейсике все наперекосяк.
Денис писал(а):а за уничтожение отвечает присваивание "квази-переменной" Nothing.
Diamock писал(а):Всё понятно!
Хакер писал(а):Во всех остальных известных мне популярных языках программирования, в которых есть классы, и даже в которых классов нет, для создания объектов используется оператор New. Во многих языках он является при этом квазиоператором.
Денис писал(а):И New, и Create и то что ты называешь квазиоператором, на самом деле называется конструктором. При этом конструктор либо принадлежит классу, либо наследуется от класса-предка.
Diamock писал(а):Возможно, немного не в тему, но что значит : квази-оператор?
А мне понравилось, включу как я его в свой лексикон А если что сошлюсь на ХакераХакер писал(а):Меня самого всего режет, когда я пишу этот термин. Потому что термин сугубо мой, и любой вправе предъявить претензию: что это вообще такое.
Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 38