Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с коллекцией / 15 сообщений из 15, страница 1 из 1
30.06.2009, 21:25
    #36066831
Lenivec
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с коллекцией
допустим у нас есть коллекция значений с ключами: oCol
бейсик позволяет обращаться к значению по ключу следующим образом:
oCol.Item("ключ")
...
Рейтинг: 0 / 0
30.06.2009, 21:27
    #36066832
Lenivec
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с коллекцией
блин случайно запостил...

итак:
oCol.Item("ключ")
или сокращенный вариант
oCol("ключ") так как Item это метод по умолчанию

но есть еще третий вариант
oCol![ключ]
что за конструкция?
...
Рейтинг: 0 / 0
01.07.2009, 09:51
    #36067182
Работа с коллекцией
Устаревшая конструкция, отход от которой рекомендовался, ЕМНИП, ещё во времена VB 4.0, но продолжающая спокойно работать. Означает почти то же самое - обращение к элементу коллекции, являющейся свойством по умолчанию. "Почти" потому, что нельзя в таком синтаксисе использовать численный ключ.
...
Рейтинг: 0 / 0
01.07.2009, 10:33
    #36067284
Lenivec
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с коллекцией
Про устаревшую не знал, спасибо!

Про то что это обращение к элементу коллекции это понятно. Невозможность использовать числовой индекс это понятно. Как и невозможность использовать в качестве ключа строковую переменную в которой храниться имя ключа.

Хотелось просто понять, это просто другой синтаксис или что то еще.
...
Рейтинг: 0 / 0
01.07.2009, 10:56
    #36067345
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с коллекцией
Да, это другой синтаксис. Нет, это стандартнй синтаксис. Этот синтаксис работает в VB и VBA, но не работает в VBScript.
...
Рейтинг: 0 / 0
01.07.2009, 10:59
    #36067355
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с коллекцией
> Автор: Antonariy
> Да, это другой синтаксис. Нет, это стандартнй синтаксис. Этот синтаксис работает в VB и VBA, но не работает в
> VBScript.

Почему-то этот синтаксис чаще всего употребляют при работе с рекордсетом - RS![имя поля]


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
01.07.2009, 11:05
    #36067363
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с коллекцией
Скорее всего потому что люди считают, что это фишка именно рекордсета. Когда-то я тоже так считал.
...
Рейтинг: 0 / 0
02.07.2009, 22:51
    #36071138
Lenivec
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с коллекцией
да не только с рекордсетом
в документации часто вижу строчки кода обращения к коллекциям типа Forms или Controls именно через восклицательный знак, а обращение к коллекциям созданным пользователем, через метод

в общем странно это все и загадочно :)
...
Рейтинг: 0 / 0
03.07.2009, 10:02
    #36071482
Работа с коллекцией
Lenivec,
возможно, потому, что не всегда у коллекции, созданной пользователем, метод/свойство обращения к элементу имеет атрибут "по умолчанию" (в частности, в VBA IDE диалог свойств процедуры урезан настолько, что в нём нельзя выставить атрибуты, в отличие от VB; при этом, если модуль экспортировать в текстовый файл, добавить, что нужно, в текстовом редакторе, и импортировать назад, атрибуты "подхватываются"). Поэтому для надёжности используют синтаксис с именем метода.
...
Рейтинг: 0 / 0
03.07.2009, 16:56
    #36072663
Lenivec
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с коллекцией
да, верно, но использование восклицательного знака это не объясняет :)
...
Рейтинг: 0 / 0
03.07.2009, 17:48
    #36072809
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с коллекцией
А вам какое объяснение нужно? Лично я использую такую запись потому что она лаконичней.
...
Рейтинг: 0 / 0
03.07.2009, 17:57
    #36072836
qwrqwr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с коллекцией
Lenivecда, верно, но использование восклицательного знака это не объясняет :)
авторThere are three ways to refer to an object in a collection. The fastest way is to provide the name of the collection followed by the name of the object to which you are referring, as shown in the following examples:

Forms!Employees
QueryDefs![Current Product List]

Use the ! operator to separate the name of the collection from the name of the particular object within it. Also, if the name of the object contains spaces, you must enclose it in brackets.

In most cases, you’ll know the name of the object to which you’re referring, and you should use this syntax. Occasionally, however, you may not know the name of the object until the procedure is running. In this case, you can use a string variable to represent the name of the object. In the following examples, strFormName and strQueryDefName are string variables that contain the name of a Form object and a QueryDef object.

Forms(strFormName)
QueryDefs(strQueryDefName)

If the value of strFormName is "Employees" and the value of strQueryDefName is "Current Product Name", then the previous example is equivalent to the following lines of code:

Forms("Employees")
QueryDefs("Current Product Name")

You can also refer to an object in a collection by its index number. Like the elements of an array, each object in a collection has an index number that refers to its position in the collection. The following examples use the index number to refer to a particular object in a collection.

Forms(0)
QueryDefs(1)
MSDN
...
Рейтинг: 0 / 0
03.07.2009, 19:51
    #36072963
Работа с коллекцией
Lenivecда, верно, но использование восклицательного знака это не объясняет :)О как :) Можно понять двояко, по меньшей мере: 1) почему используется восклицательный знак вообще? 2) почему используется восклицательный знак для обращения к объектам стандартных библиотек?
На первый вопрос ответ указал qwrqwr: наличие элемента языка определяется синтаксисом языка, а объяснение использования даётся в описании языка/руководстве программиста.
На второй вопрос ответ мне видится таким (как бы недописанной половиной моего предыдущего поста): потому что достоверно известно, что в стандартных библиотеках у соответствующих методов атрибут "по умолчанию" выставлен, следовательно, можно без опаски использовать восклицательный знак, а что в конкретном месте безопасного использования писателю в голову стукнуло в голову - традиции, Copy-Paste, лень, стремление к выразительности(?) или к лаконичности, и т. д. - да хто шь яво знаить. "Голова - предмет тёмный, и исследованию не подлежит" (с).
...
Рейтинг: 0 / 0
03.07.2009, 21:07
    #36073035
Lenivec
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с коллекцией
AntonariyА вам какое объяснение нужно? Лично я использую такую запись потому что она лаконичней.
лаконичней, возможно, но менее удобно, факт. хотя бы потому что с конструкцией использующей восклицательный знак не работает интелисенс
...
Рейтинг: 0 / 0
03.07.2009, 21:12
    #36073040
Lenivec
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с коллекцией
по поводу ответа qwrqwr
ну в общем вопрос изначально так и задавался, что существует несколько вариантов обращения, то есть информация приведенная вами и содержалась в моем первом посте, то есть я в курсе того что написано в руководстве

to 13-й квартал
меня скорее интересовал первый вопрос чем второй
но что конкретно я хотел услышать я сам точно не знаю, так чет неделя тяжелая была, много работы и меня тупо переклинило :)
наверно наиболее близкий ответ к тому что я ожидал услышать это то что вы ответили сразу, так сложилось исторически :)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с коллекцией / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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