Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массивы, Как узнать пустой ли массив 
:(
    Опции темы
Mona
Дата 15.10.2007, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 28.4.2007

Репутация: нет
Всего: нет



Можно ли узнать пустой ли массив, не обращаясь к каждому элементу?
PM MAIL   Вверх
kapbepucm
Дата 15.10.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



А какого типа элементы?

Это сообщение отредактировал(а) kapbepucm - 15.10.2007, 15:05


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Akina
Дата 15.10.2007, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Mona @  15.10.2007,  15:59 Найти цитируемый пост)
Можно ли узнать пустой ли массив, не обращаясь к каждому элементу? 

Что такое "пустой массив"? в VB/VBA такого понятия НЕ СУЩЕСТВУЕТ, потому что любой статический или определенный динамический массив при определении либо переопределении инициализируется... исключение - начальное определение динамического массива, у которого в принципе нет элементов, т.е. и обращаться-то не к чему.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Mona
Дата 16.10.2007, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 28.4.2007

Репутация: нет
Всего: нет



Цитата

Что такое "пустой массив"? 

Хорошо, если я пишу erase(<массив>), я  получаю массив из "пустых" элементов (нулей или null ... в зависимости от типа определенного статического массива.

Цитата

у которого в принципе нет элементов, т.е. и обращаться-то не к чему

как не к чему?
Я, наверное, не так задала вопрос. Не то, чтобы это было большой проблемой, но вдруг есть такая функция, чтоб я могла спросить, что-то вроде if not isnull.

Цитата

А какого типа элементы?


ну, все равно, если есть для какого-то определенного типа, то напишите. 

PM MAIL   Вверх
Akina
Дата 16.10.2007, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Mona @  16.10.2007,  11:20 Найти цитируемый пост)
Хорошо, если я пишу erase(<массив>), я  получаю массив из "пустых" элементов (нулей или null ... в зависимости от типа определенного статического массива.

О господи!!!

Если у тебя тип - объект, значение инициализируется в Nothing. Если Variant - то в Empty. Если строка - то в пустую строку "". Иначе в ноль. Для пользовательских структур каждый компонент инициализируется отдельно как самостоятельная переменная.

Второе проверяется фунцией IsEmpty, третье сравнением с пустой строкой, последнее - сравнением с нулем. Проверить, является ли ссылка на объект пустой (Nothing), можно только перехватом и анализом ошибки обращения к объекту.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kapbepucm
Дата 16.10.2007, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



По-любому надо будет обращатся к каждому элементу. Делай отдельную функцию, если хочешь
Цитата
что-то вроде if not isnull


Это сообщение отредактировал(а) kapbepucm - 16.10.2007, 11:47


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Mona
Дата 21.10.2007, 07:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 28.4.2007

Репутация: нет
Всего: нет



Цитата

Второе проверяется фунцией IsEmpty, третье сравнением с пустой строкой, последнее - сравнением с нулем.

Спасибо, конечно... smile 
Короче, нет наверное, такой функции, чтобы проверяла инициализированы ли элементы массива. Ну нет, так нет.  Просто было интересно, вдруг кто-то знает. Или  я все-таки не так спросила. Есть же erase statement, почему бы не быть чему-то аналогичному и для проверки.
PM MAIL   Вверх
Akina
Дата 21.10.2007, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Mona @  21.10.2007,  08:39 Найти цитируемый пост)
нет наверное, такой функции, чтобы проверяла инициализированы ли элементы массива. 

Ну даже теоретически - кому может ЭТО понадобиться? Если возможно такое, что текущее состояние группы ссылок неконтролируемо и требует подобной проверки (скажем, асинхронные потоки), то следует просто вместо массива использовать коллекцию - удаление элемента коллекции не приводит к появлению в ней неинициализированных ссылок.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Mona
Дата 12.11.2007, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 28.4.2007

Репутация: нет
Всего: нет



Цитата

Ну даже теоретически - кому может ЭТО понадобиться?

Ну как же! Или писать for, проверять каждый элемент, ставить флажок, чтобы узнать все или нет инициализированы, или сразу обратиться по имени. А мне очень часто надо унать заполнялся ли массив где-то там в другой процедуре или нет. Просто если есть какие-то вещи, которых я просто не знаю, то ессно мне хотелось бы ими воспользоваться.
PM MAIL   Вверх
Akina
Дата 12.11.2007, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0531 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.