powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка объявленной переменной
4 сообщений из 29, страница 2 из 2
Ошибка объявленной переменной
    #38788331
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyбыло придумано SetНе, не так...

На самом деле, простое "присваивание" в бейсике имеет слово-префикс, это слово Let . Просто большинство диалектов языка допускает возможность отсутствия Let при присваивания значения переменной (а не объекту). Ну и слово Set , на самом деле, занимается не "перезаписью" одного объекта в другой, а записывает указатель на объект...
А свойства по умолчанию у объекта может и не быть. Вернее, оно может быть не назначено - что во всей красе видит юзер, когда начинает работать с классами. Вот именно там в VBA существуют все три процедуры: Property Let, Get и Set.
...
Рейтинг: 0 / 0
Ошибка объявленной переменной
    #38788391
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMНе, не так...Не спорь, это слова одного из разработчиков VB. Правда я их не договорил, поясню на примере.

Без Set компилятор не знает, что делать в такой ситуации:
Код: vbnet
1.
2.
Dim x As Variant
x = y.SomeProp(z)

Допустим, SomeProp(z) возвращает объект SomeObj, имеющий свойство по умолчанию. Вопрос: что вернуть в x, ссылку на SomeObj или значение свойства по умолчанию?

Set x = y.SomeProp(z) не оставляет сомнений.
На этот случай даже вроде ошибка есть: или используйте Set или укажите свойство.

В дотнете свойствами по умолчанию могут быть только свойства с параметрами, поэтому от Set избавились, y.SomeProp(z) всегда вернет SomeObj. А смысл свойства по умолчанию теперь такой: x = y(z)

AndreTMНу и слово Set, на самом деле, занимается не "перезаписью" одного объекта в другой, а записывает указатель на объект...А мужики-то не знали!

AndreTMА свойства по умолчанию у объекта может и не быть.Что характерно, в синтаксисе VB нет способа его объявить, однако это умеет делать Class Builder Utility. Если посмотреть на результат ее деятельности в блокноте, то можно увидеть такую строку:

Код: vbnet
1.
2.
Public Property Get test() As Variant
Attribute def.VB_UserMemId = 0
...
Рейтинг: 0 / 0
Ошибка объявленной переменной
    #38788400
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyБез Set компилятор не знает, что делать в такой ситуации:Хотя тут он все знает, наврал я.

Не помню правильную ситуацию.
...
Рейтинг: 0 / 0
Ошибка объявленной переменной
    #38788457
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyА мужики-то не знали!
Я сам пост никак не тебе адресовал...

AntonariyНе помню правильную ситуациюВроде как такая:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Function SomeFunc() As Variant
  ...
  Dim a As ...
  SomeFunc = a
  ...
  Dim o As Object
  Set SomeFunc = o
 ...
End Function

Dim x As Variant
x = SomeFunc()
...
Рейтинг: 0 / 0
4 сообщений из 29, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка объявленной переменной
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]