![]() ![]() |
||||||
1 | ||||||
Массив пользовательского типа - объект для хранения именованных переменных и массивов различных размерностей с максимальной скоростью доступа29.08.2012, 00:46. Показов 9740. Ответов 8
Метки нет Все метки)
(
Недавно открыл для своих целей всю мощь такого объекта.
Решил поделиться. Цель: максимальная скорость доступа. минимальная нагрузка на оперативную память. не нужно запоминать имена переменных (подсвечиваются, если поставить точку). возможность хранить внутри каждого из индексов массива другой массив с динамически изменяющейся размерностью. возможность быстро очистить основной массив.
2
|
|
29.08.2012, 00:46 | |
Ответы с готовыми решениями:
8
Динамический массив для хранения данных в переменной пользовательского типа Создать структуру для хранения информации о матрице переменных размерностей Массив: Создать массив для хранения различных символов... Как создать список класса CList для хранения переменных типа int? |
15134 / 6408 / 1730
Регистрация: 24.09.2011
Сообщений: 9,999
|
|
29.08.2012, 13:04 | 3 |
Если так, то более подходящего объекта нет.
А вообще, альтернативой является класс. Известный авторитет Ч. Пирсон сравнивает пользовательский тип с классом и находит преимущества класса: http://www.cpearson.com/excel/classes.aspx
1
|
Модератор
![]() ![]() |
|
29.08.2012, 15:22 | 5 |
Я немного виноват. Для VBA мое замечание не актуально. Но если попробовать сделать ActiveX-dll, у класса которой есть метод с UDT-параметром, то возникнут проблемы. См. прилагаемый проект
0
|
02.06.2016, 13:10 | 6 |
К сожалению пользовательский тип (особенно заметно на массивах) имеет ограничение, с моей точки зрения - серьезное:
"Хотя на уровне модуля размер переменной пользовательского типа ограничен 64 К, размер переменных пользовательского типа в процедурах не может превышать 32 К" Добавлено через 2 минуты И это общий размер, если их три, значит по 10К... а это всего ли 2500 элементов типа Long к примеру.
0
|
![]() ![]() |
||||||
02.06.2016, 15:26 [ТС] | 7 | |||||
Значит скорее всего, что-то не так с разработкой архитектуры приложения.
Например, стоит воспользоваться базой данных, либо хранить в массиве пользовательского типа только указатели на строки / массивы.... Добавлено через 9 минут Достаточно объявлять не-фиксированные строки и динамические массивы, тогда поля структуры будут содержать только указатели на данные:
0
|
02.06.2016, 17:27 | 8 |
Данные ограничения всплыли и рассматривались в контексте реализации арифметики длинных (больших) чисел - VBA. В результате пришлось использовать массивы, вместо пользовательской функции, что увеличило время обработки примерно в 2 раза.
0
|
06.06.2016, 14:12 | 9 |
Dragokas, Вы правы, с динамическими массивами это ограничение не срабатывает. Принял к сведению.
0
|
06.06.2016, 14:12 | |
Помогаю со студенческими работами здесь
9
Как правильно объявить двумерный массив для пользовательского типа Ввод/вывод массивов данных пользовательского типа
Как передать в коллекцию объект класса или пользовательского типа?
Создать двумерный динамический массив для переменных произвольного типа Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |