![]() |
|
Модераторы: Akina |
![]()
|
|
| Mona |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 28.4.2007 Репутация: нет Всего: нет |
Можно ли узнать пустой ли массив, не обращаясь к каждому элементу?
|
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
А какого типа элементы?
Это сообщение отредактировал(а) kapbepucm - 15.10.2007, 15:05 -------------------- (С) kapbepucm |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Что такое "пустой массив"? в VB/VBA такого понятия НЕ СУЩЕСТВУЕТ, потому что любой статический или определенный динамический массив при определении либо переопределении инициализируется... исключение - начальное определение динамического массива, у которого в принципе нет элементов, т.е. и обращаться-то не к чему. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Mona |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 28.4.2007 Репутация: нет Всего: нет |
Хорошо, если я пишу erase(<массив>), я получаю массив из "пустых" элементов (нулей или null ... в зависимости от типа определенного статического массива.
как не к чему? Я, наверное, не так задала вопрос. Не то, чтобы это было большой проблемой, но вдруг есть такая функция, чтоб я могла спросить, что-то вроде if not isnull.
ну, все равно, если есть для какого-то определенного типа, то напишите. |
||||||
|
|||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
О господи!!! Если у тебя тип - объект, значение инициализируется в Nothing. Если Variant - то в Empty. Если строка - то в пустую строку "". Иначе в ноль. Для пользовательских структур каждый компонент инициализируется отдельно как самостоятельная переменная. Второе проверяется фунцией IsEmpty, третье сравнением с пустой строкой, последнее - сравнением с нулем. Проверить, является ли ссылка на объект пустой (Nothing), можно только перехватом и анализом ошибки обращения к объекту. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| kapbepucm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 993 Регистрация: 14.6.2007 Где: Латвия Репутация: нет Всего: 12 |
По-любому надо будет обращатся к каждому элементу. Делай отдельную функцию, если хочешь
Это сообщение отредактировал(а) kapbepucm - 16.10.2007, 11:47 -------------------- (С) kapbepucm |
|||
|
||||
| Mona |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 28.4.2007 Репутация: нет Всего: нет |
Спасибо, конечно... Короче, нет наверное, такой функции, чтобы проверяла инициализированы ли элементы массива. Ну нет, так нет. Просто было интересно, вдруг кто-то знает. Или я все-таки не так спросила. Есть же erase statement, почему бы не быть чему-то аналогичному и для проверки. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Ну даже теоретически - кому может ЭТО понадобиться? Если возможно такое, что текущее состояние группы ссылок неконтролируемо и требует подобной проверки (скажем, асинхронные потоки), то следует просто вместо массива использовать коллекцию - удаление элемента коллекции не приводит к появлению в ней неинициализированных ссылок. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Mona |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 28.4.2007 Репутация: нет Всего: нет |
Ну как же! Или писать for, проверять каждый элемент, ставить флажок, чтобы узнать все или нет инициализированы, или сразу обратиться по имени. А мне очень часто надо унать заполнялся ли массив где-то там в другой процедуре или нет. Просто если есть какие-то вещи, которых я просто не знаю, то ессно мне хотелось бы ими воспользоваться. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Ну русским же по белому написано - коллекцию надо использовать, а не массив. Нужен элемент - добавляем в коллекцию. Не нужен - удаляем из коллекции. Потребовался какой-то определенный из кучи имеющихся - находим его в коллекции.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]()
|
| Правила форума "MS Access" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS Access | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |