Как определить - объект или массив объектов?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Как определить - объект или массив объектов?

Сообщение djalex777 » 09.07.2009 (Чт) 14:14

На форму добавлен(ы) контрол Label1 или массив Label1. Как узнать один у нас объект или это массив объектов?
Я имею ввиду может есть какая-нибудь функция типа IsArray(). Пока реализовал это через обработку ошибки (On error)

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Как определить - объект или массив объектов?

Сообщение Денис » 09.07.2009 (Чт) 14:55

Кем добавлены контролы на форму? при добавлении программно вести учет, кто массив, а кто не-массив. Впрочем, если у вас код такой, что у вас все вперемешку, то обработка ошибок для такого кода - вполне адекватное решение.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Нырков Сергей
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 18.07.2009 (Сб) 18:19

Re: Как определить - объект или массив объектов?

Сообщение Нырков Сергей » 22.07.2009 (Ср) 15:35

Сам не проверял, но покнижке Visual Basic 6.0 в примерах Король(очень приличная книжка). Функция typename(var) для массива возвращает имя типа элементов массива плюс пустые скобки, соответственно для одинокой переменной только имя типа без скобок
Нырков Сергей

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Как определить - объект или массив объектов?

Сообщение Денис » 23.07.2009 (Чт) 8:27

Нырков Сергей писал(а):Сам не проверял, Функция typename(var)


Смотри, для контролов эта функция возвращает имя класса (например для кнопки это "CommandButton") для массивов контролов, она возвращает значение "Object"
Кидаешь на форму массив кнопок btn1, кнопку btn2, ярлык lbl1. Вот такой код копируешь в форму:
Код: Выделить всё
Private Sub Form_Load()

Debug.Print TypeName(btn1) 'покажет: Object
Debug.Print TypeName(lbl1) 'покажет: Label
Debug.Print TypeName(btn2) 'покажет: CommandButton

End Sub

Вердикт: must use.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Нырков Сергей
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 18.07.2009 (Сб) 18:19

Re: Как определить - объект или массив объектов?

Сообщение Нырков Сергей » 24.07.2009 (Пт) 6:09

По книжке ответы в примере ожидались несколько другими,но после проверки вынужден соглиситься с Вами. В VB еще есть функция vartype(var) которая тоже отличает массив от немассива Нырков Сергей

Нырков Сергей
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 18.07.2009 (Сб) 18:19

Re: Как определить - объект или массив объектов?

Сообщение Нырков Сергей » 26.07.2009 (Вс) 20:24

С третьей стороны, гораздо удобней и проще добавлять элементы управления не в массив, а в коллекцию controls.Add(typeControls, nameControls)статья [Динамическое добавление элементов управление] на этом сайте VBStreets (не сумел прицепить её к ответу) Нырков Сергей


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 17

    TopList