1 | ||||||
Как проверить пуст ли массив?22.07.2015, 09:47. Показов 35957. Ответов 42
Метки нет (Все метки)
это продолжение темы. интересует грамотность записи
Еще интересно: как его грамотно начать заполнять. Так чтобы не было нулевой позиции в начале и постоянной проверки на ее заполненность в последующем
0
|
22.07.2015, 09:47 | |
Ответы с готовыми решениями:
42
Как грамотно проверить: пуст ли массив? Как проверить, что выбранный диапазон ячеек пуст Как проверить в с++ пуст файл или нет? Как проверить пуст или нет буфер обмена? |
3917 / 2315 / 784
Регистрация: 02.11.2012
Сообщений: 6,158
|
|
22.07.2015, 10:13 | 2 |
перед внесением проверять.
если ячейка не пустая то вносим значение в массив.
0
|
22.07.2015, 11:12 [ТС] | 3 |
Vlad999, согласен. Я постоянно так и делаю. Но проверять постоянно есть-ли запись в первой строке - это увеличение операций по заполнению массива в 2 раза. Вот я и спрашиваю: какие технологии заполнения массивов спецами используются. Чтобы не было лишних проверок состояния массива на "полный, пустой"
0
|
1588 / 382 / 108
Регистрация: 13.11.2008
Сообщений: 796
|
|
22.07.2015, 11:53 | 4 |
Трудно что-то советовать, когда не видно как Вы этот массив заполнять собрались.
Есть определенные костыли, чтобы проверить является ли переменная массивом и есть ли в нем хоть какое-то значение. Но здесь большую роль играет и то как переменная массива была объявлена - как массив Dim Arr() или как переменная типа Variant Dim Arr
0
|
22.07.2015, 12:37 [ТС] | 5 | |||||
The_Prist, привожу пример
Рабочий массив постоянно обновляется и дополняется частью глобального массива. Проводятся какие-то операции, потом рабочий массив очищается и снова всё повторяется. Вот такие циклы заполнения исчисляются десятками и сотнями тысяч. Соответственно число операций по проверке удваивает эту величину. И наворачивает код
0
|
1588 / 382 / 108
Регистрация: 13.11.2008
Сообщений: 796
|
||||||
22.07.2015, 12:50 | 6 | |||||
Сообщение было отмечено AndreA SN как решение
Решение
И все же не видно как объявлен этот массив. Где строка объявления Iskl2?
Он как объявлен? dim Iskl2()? Или иначе? В общем случае куда грамотнее завести отдельную переменную-счетчик dim Iskl2_Cnt as Long и потом просто её увеличивать:
1
|
22.07.2015, 13:00 [ТС] | 7 | |||||
The_Prist, извиняюсь... проглядел ответный вопрос об объявлении массива
уточняю объявление
Добавлено через 2 минуты кстати. Спасибо за ответ для общего случая. Это, наверное, самый понятный мне подход...
0
|
22.07.2015, 13:44 | 8 | |||||
Смотря что считать пустым массивом...
2
|
4079 / 1459 / 401
Регистрация: 07.08.2013
Сообщений: 3,649
|
|
22.07.2015, 13:51 | 9 |
а массивы большие
0
|
22.07.2015, 14:31 | 11 | |||||
AndreA SN, только не забывайте, что результат операции - это не BOOL, а указатель на SAFEARRAY.
Так, что если нужно проверить на "Empty", пишем:
2
|
22.07.2015, 14:45 [ТС] | 12 | |||||
snipe, опять же смотря из какого объема действий исходить.
вот две обработки одного и того же суммирования
Но! У меня по времени получилась разница в 1,5 раза 0,15625 6000000 0,2617188 6000000 а по максимальному размеру цикла - читай по Ubound(массив) разница составила 300 раз... Хотя я понимаю, что мне сейчас выставят произведение размеров как конечное количество действий но речь в данном случае всё таки о размерах обрабатываемой информации в зависимости от сложности шага обработки... Добавлено через 13 минут Dragokas, очень прошу (хотя понимаю, что мой вопрос кошмарит грамотных людей), объяснить все эти Not понятным языком - что за что отвечает.
0
|
22.07.2015, 22:31 | 13 | |||||
Сообщение было отмечено AndreA SN как решение
Решение
AndreA SN, да. Вы правы. Перемудрил. Можно проще.
что он и делает. Если указатель нулевой (т.е. массив неинициализирован), тогда Not 0 = -1.
1
|
4079 / 1459 / 401
Регистрация: 07.08.2013
Сообщений: 3,649
|
||||||
23.07.2015, 04:02 | 14 | |||||
AndreA SN, есть 2 функции Join и Split
первая собирает массив в текстовую переменную а вторая наоборот разбирает текстовую переменную в массив если текстовая переменная выдержит то работать по идее это должно быстрее вы ведь пытаетесь из много массивов сделать один код будет выглядеть примерно так
1
|
4079 / 1459 / 401
Регистрация: 07.08.2013
Сообщений: 3,649
|
|
23.07.2015, 04:09 | 15 |
Dragokas,
в коде VBA номера строк сползают вверх относительно текста строк
0
|
3220 / 887 / 195
Регистрация: 14.01.2013
Сообщений: 4,373
|
|
23.07.2015, 06:54 | 16 |
В Опере всё норм выглядит.
1
|
snipe
|
23.07.2015, 09:01
#17
|
Не по теме: так я тоже в опере делал
0
|
23.07.2015, 10:54 [ТС] | 18 |
snipe,
нет... у меня задача другая... я делаю маленький реплик-массив из большого массива. причем оба они двумерны. реплик-массив как правило варьирует от 2 до нескольких десятков записей (встречаются редко случаи и до 2500), а большой массив может включать десятки тысяч записей. Постоянная перезапись реплик-массива с изменяющимися исходными условиями вынуждают при последующей работе проверять : а записалось ли чего-то в реплик-массив, или он при изменившихся условиях отбора записей остался пустым? Вот последнее хочется грамотно проверять, что Dragokas и подсказал как делать.
Добавлено через 11 минут snipe, по поводу строчек... у меня в Chrom всё вроде норм выглядит
0
|
4079 / 1459 / 401
Регистрация: 07.08.2013
Сообщений: 3,649
|
|
23.07.2015, 11:01 | 19 |
AndreA SN, вы тему разместили в разделе VBA, а в какой программе вы все это делаете?
0
|
23.07.2015, 11:25 [ТС] | 20 |
snipe, толковый вопрос))) мне уже столько людей у виска пальцем крутит по поводу моего проекта в VBA))) И Вы почуяли, что моя задача монстрифицирована.
Пишу всё в Excel. Начиналось как побочная группа минимакросов по предварительной обработке данных. Разрослось до масштабного проекта по верификации сведений с функцией минимизации влияния "шаловливых ручек". В итоге на стадии завершения программа-прототип. Конечный продукт будет рисоваться в Шарпее. Добавлено через 9 минут Просто почему VBA: 1. Если на VBA будет быстрей - то на шарпее будет летать аки бчёл! 2. excel - замечательный полигон для отладки работы с двумерными базами данных при сложном аналитическом инструментарии. Я вижу что происходит с данными и соответственно отлаживаю инструменты поиска 3. размечаю в цвете измененные позиции - получается учет изменений для оценки объемов корректировок 4. не нужно специального программного обеспечения - работаю на 5 машинах в разное время - нигде не ставлю шарпик это быстрый список причин - почему VBA.
0
|
23.07.2015, 11:25 | |
23.07.2015, 11:25 | |
Помогаю со студенческими работами здесь
20
Проверить, пуст ли файл Проверить пуст ли Listbox Списки. Не могу проверить, пуст ли список SQL через ODBC: проверить перед вытаскиванием sqlread[0] что столбец не пуст Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |