Форум программистов, компьютерный форум, киберфорум
bedvit
Войти
Регистрация
Восстановить пароль
Рейтинг: 1.00. Голосов: 1.

Быстрое преобразование размерности массива в COM без потери данных.

Запись от bedvit размещена 11.08.2021 в 13:30
Обновил(-а) bedvit 11.08.2021 в 13:37

Быстрое преобразование массива в СОМ - из одномерного в двухмерный и наоборот (с сохранением данных)
Часть библиотеки BedvitCOM (начиная с v1.0.5.0, в XLL c v2.0.1.9)

Функции:
1.Array2Dto1D() - быстрое преобразования двухмерного массива в одномерный (данные не обрезаются, 2е измерение преобразуются в очередь - складывается "столбцами")
Параметры функции:
1.array_in_out - массив, который нужно преобразовать
2.lLbound1 - нижняя граница нового массива (по умолчанию=0)

2.Array1Dto2D() - быстрое преобразование одномерного массива в двухмерный (данные не удаляются)
Параметры функции:
1.array_in_out - массив, который нужно преобразовать
2.lLbound1 - нижняя граница нового массива, 1е измерение (по умолчанию=0)
3.lLbound2 - нижняя граница нового массива, 2е измерение (по умолчанию=0)


Пример использования в VBA (Excel):
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub TestArrayDtoD()
Dim r As New BedvitCOM.VBA 'раннее связывание
Dim t, arr, i
arr = [a1:a1000000]
t = Timer
For i = 1 To 1000000
    r.Array2Dto1D arr 'в одномерный (нижняя граница = 0 - по умолчанию)
    r.Array1Dto2D arr, 1, 1 'в двухмерный с 1м столбцом, нижние границы измерений = 1
Next
Debug.Print "Time: " & Timer - t & " sec."
End Sub

Тайминги:
Преобразование массива из 1 млн строк из двухмерного в одномерный и наоборот 1 млн. раз = 0,121 sec.
Размещено в Без категории
Показов 728 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.