Мой старый сайт и зеркало-архив (осторожно, на сайте реклама!)
Wiki |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Обновлено: |
01.07.2024 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Раздел: |
Версия COM/XLL |
id |
Свойства/Методы
класса, Функции, Команды меню |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
1 |
Help |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
2 |
Bignum |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
3 |
Sign |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
4 |
Even |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
5 |
Compare |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
6 |
BignumSet |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
7 |
Sum |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
8 |
SumL |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
9 |
Abs |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
10 |
Negate |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
11 |
Subtract |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
12 |
SubtractL |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
13 |
Multiply |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
14 |
MultiplyL |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
15 |
Divide |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
16 |
DivideL |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
17 |
Power |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
18 |
Clone |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
19 |
RootRem |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
20 |
Factorial |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
21 |
Fibonacci |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
22 |
LucNum |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
23 |
FileSet |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
24 |
FileGet |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
25 |
Clear |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticInteger |
4.0 |
26 |
BignumArraySize |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
1 |
Help |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
2 |
SizeBits |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
3 |
Bignum |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
4 |
Sign |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
5 |
Compare |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
6 |
SizeBitsSet |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
7 |
BignumSet |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
8 |
Sum |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
9 |
SumL |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
10 |
Abs |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
11 |
Subtract |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
12 |
SubtractL |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
13 |
Multiply |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
14 |
MultiplyL |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
15 |
Divide |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
16 |
DivideL |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
17 |
Root |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
18 |
Negate |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
19 |
Power |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
20 |
Clone |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
21 |
FileSet |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
22 |
FileGet |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
23 |
Clear |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
24 |
BignumArraySize |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
BignumArithmeticFloat |
4.0 |
25 |
GetToBignumInt |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
1 |
ArraySortS Параметры
метода: 1.array_in_out -
указатель на массив (ввод/вывод) 2.sort_order - порядок
сортировки: 0-по возрастанию, 1-по убыванию 3.key_1 - ключи
сортировки (индекс столбца или строки) по умолчанию - первый столбец/строка 4.key_2 5.key_3 6.sort_orientation -
ориентация сортировки (0 - по строкам, 1 - по столбцам, 2- целый массив вывод
строка-столбец, 3- целый массив вывод столбец-строка) 7.delete_duplicates - удаляем
дубликаты (в одномерных массивах) 8.out_array_index - выводим индексы,
"булево" 1/0 (тогда основной массив array_in_out - не меняется, выводятся данные
в index_array_out) 9.index_array_out -
одномерный массив с индексами (с учетом всех ключей), если задан out_array_index=1 Все
параметры метода, кроме входящего массива - опциональные (с значениями по
умолчанию - 0 (ключи-1)) Метод
"ArraySort"
работает через Variant,
т.к. на некоторых скриптовых языках SAFEARRAY ходит через границы COM, только в
обертке VARIANT (без
изобретения костылей). Пример тестирования и использования в VBA (элементарно
через CreateObject("BedvitCOM.VBA")): Visual Basic Sub
Test_arr_sort()
'Dim bVBA As BedvitCOM.VBA: Set a = New BedvitCOM.VBA 'ранее связывание
Dim bVBA As Object:
Set bVBA = CreateObject("BedvitCOM.VBA")
'позднее связывание
Dim testSize As Long:
testSize = 2000000
Dim arr_index, arrTmp,
i As Long,
J As Long, t
''''''''''''1х массив'''''''''''''''''''''''
Dim Arr1: ReDim Arr1(-5 To
testSize) As String
Dim Arr2: ReDim Arr2(-5 To
testSize, -2 To 3) As String
'arr(5) - NULL - проверка для сортировки пустых Arr1(6) = 0
Arr1(7) = "Test_arr_sort"
For i = 8 To testSize Arr1(i) = Format$(Int(Rnd * testSize), "0000000")
'30% дубликатов
Next
arrTmp = Arr1 '!
t = Timer
bVBA.ArraySortS arrTmp
Debug.Print "Простая сорт. 1х массива, по возрастанию (по умолч.): " & Timer - t & " сек." arrTmp = Arr1 '!!
t = Timer
bVBA.ArraySortS arrTmp, 1, , , , , 1, 0, 0
Debug.Print "Простая сорт. по убыванию 1x массива с удалением" & ((UBound(arrTmp)
- LBound(arrTmp)) /
(testSize - LBound(arrTmp))
- 1) *
100 & "%: " &
Timer - t & " сек." 'arrTmp
= arr - начальный массив не меняется, поэтому темповый - не нужен '! t = Timer bVBA.ArraySortS Arr1, 1, , , , , , 1, arr_index Debug.Print "Вывод
индексов для 1х массива, сортировка по убыванию:" & Timer - t
& " сек." ''''''''''''2х
массив''''''''''''''''''''''' 'arr(5) - NULL -
проверка для сортировки пустых Arr2(6, 2) = 0
Arr2(7, 2) = "Test_arr_sort"
For i = 8 To testSize For
J = -2 To 3 Arr2(i, J) = Format$(Int(Rnd * testSize), "0000000")
'30% дубликатов Next
Next
arrTmp = Arr2 '!
t = Timer
bVBA.ArraySortS arrTmp, 0, , , , 2, 0, 0, 0
Debug.Print "Сортировка всего 2х массива - вывод строка-столбец: " & Timer
- t & " сек."
arrTmp = Arr2 '!
t = Timer
bVBA.ArraySortS arrTmp, 0, 5, , , 3, 0, 0, 0
Debug.Print "Сортировка всего 2х массива - вывод столбец-строка " & Timer
- t & " сек."
arrTmp = Arr2 '!
t = Timer
bVBA.ArraySortS arrTmp
Debug.Print "Простая
сортировка 2х массива: " & Timer - t & " сек." arrTmp = Arr2 '!
t = Timer '!
bVBA.ArraySortS arrTmp, 0, 3, , , , , 1,
arr_index
Debug.Print "Вывод индексов для 2х массива, по указанному столбцу: " &
Timer - t & " сек."
arrTmp = Arr2 '!
t = Timer
bVBA.ArraySortS arrTmp, 0, 5, , , 1, 0, 0, 0
Debug.Print "Сортировка 2х массива по 5му столбцу: " & Timer
- t & " сек."
arrTmp = Arr2 '!
t = Timer '!
bVBA.ArraySortS arrTmp, 0, 8, , , 1, , 1,
arr_index
Debug.Print "Вывод индексов для 2х массива, по 8й строке: " &
Timer - t & " сек."
arrTmp = Arr2 '!
t = Timer
bVBA.ArraySortS arrTmp, 0, 8, , , 1, 0, 0, 0
Debug.Print "Сортировка 2х массива по 8й строке: " & Timer
- t & " сек."
arrTmp = Arr2 '!
t = Timer
bVBA.ArraySortS arrTmp, 0, 1, 2, 3, 0, , 1,
arr_index
Debug.Print "Вывод индексов для 2х массива, по 1,2,3му столбцу: " & Timer - t
& " сек."
arrTmp = Arr2 '!
t = Timer
bVBA.ArraySortS arrTmp, 0, 1, 2, 3, 0, 0, 0, 0
Debug.Print "Сортировка
2х массива по 1,2,3му столбцу: " & Timer - t & " сек." arrTmp = Arr2 '!
t = Timer
bVBA.ArraySortS arrTmp, 0, 8, 9, 10, 1, 0, 1, arr_index
Debug.Print "Вывод индексов для 8,9,10й строке: " & Timer - t
& " сек."
arrTmp = Arr2 '!
t = Timer
bVBA.ArraySortS arrTmp, 0, 8, 9, 10, 1, 0, 0, 0
Debug.Print "Сортировка
2х массива по 8,9,10й строке: " & Timer - t & " сек." Set bVBA = Nothing End Sub |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM: VBA |
4.0 |
2 |
FilterUnicodeChar Параметры
метода: 1. StringIn - входящая
строка 2. Второй
параметр (EnableChar) -
символы, включаемые в итоговую строку (через "-" указывается
диапазон, сам "-" выводится если его поставить первым символом в
шаблоне) 3. Третий
параметр (DisableChar) -
символы, исключаемые из итоговой строки (через "-" указывается диапазон,
сам "-"удаляется если его поставить первым символом в шаблоне). Последние
два параметра - не обязательные. Можно задавать любой из них, можно все два,
можно никакой - тогда выводится первоначальная строка |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
3 |
LikeUnicodeChar Параметры
метода: 1.stringIn - входящая
строка 2.maskChar
-
маска/шаблон (через "-" указывается диапазон, сам "-"
выводится/удаляется если его поставить первым символом в шаблоне) 3.invertMask
-
инвертировать маску (сравнение, исключая символы маски) Возвращает булево. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
4 |
Trim Параметры метода: 1.StringIn
- входящая строка |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
5 |
InStr Параметры
метода: 1.StringIn - строка в которой производим поиск 2.StringFind
- подстрока для поиска в StringIn 3.Start - позиция с которой начинаем поиск в строке |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
6 |
Replace
Параметры
метода: 1.StringIn -
строка в которой производим поиск 2.StringFind
- подстрока
для поиска и замены в StringIn 3.StringReplace
- подстрока на которую заменяем StringFind 3.Start
- позиция с
которой начинаем поиск и замены подстрок в строке 4.Count - количество замен |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
7 |
ArraySortV Использованы параллельные алгоритмы сортировки. (библиотеки PPL от Мicrosoft) Параметры
метода: 1.array_in_out -
указатель на массив (ввод/вывод) 2.key_1 - ключи
сортировки (порядковый номер столбца, начиная с 1), по умолчанию - первый
столбец. 3.sort_order1 - порядок
сортировки для key_1:
0-по возрастанию (по умолчанию для всех), 1-по убыванию 4.key_2 - по
умолчанию - не участвует 5.sort_order2 - порядок
сортировки для key_2 6.key_3 - по
умолчанию - не участвует 7.sort_order3 - порядок
сортировки для key_3 Ключи
задаются по порядку, т.е. сразу указать 3й - нельзя. Начиная с
версии 1.0.5.3 8.key_and_sort_order_next - дает возможность отсортировать
любое количество полей с индивидуальным порядком сортировки для каждого. Задается
текстовой строкой, в том же формате, как и первые 3 параметра ("номер
столбца, порядок сортировки" - пример: "4, 0, 5, 0, ...").
Тестовый пример см. ниже. Начиная с версии 1.0.5.3 сортировка по
любому количеству полей с индивидуальным порядком сортировки для каждого. Visual Basic Sub
Test_arr_sort_10_key()
'Dim a As BedvitCOM.VBA: Set a = New BedvitCOM.VBA 'ранее связывание
Dim bVBA As Object:
Set bVBA = CreateObject("BedvitCOM.VBA")
'позднее связывание
Dim i, j, t, testSize As Long:
testSize = 1000000
Dim ArrV: ReDim ArrV(0 To testSize, 0 To
9)
For i = 0 To testSize For
j = 0 To 9 ArrV(i,
j) = CLng(Rnd * 2) Next
Next
t = Timer
bVBA.ArraySortV ArrV, 1, 0, 2, 0, 3, 0, "4,
0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0"
Debug.Print "Cортировка
VARIANT 2х массива, по возрастанию по 10 ключам: " & Timer -
t & " сек." [a1:j1000000]
= ArrV End Sub |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM: VBA |
4.0 |
8 |
Transpose Параметры метода: 1.array_in_out
- указатель на массив (ввод/вывод) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM: VBA |
4.0 |
9 |
QRcodePrint HRESULT QRcodePrint([in]
BSTR QRcodeText, [in, defaultvalue(L"")] BSTR FileOut, [in, defaultvalue(4)]
LONGLONG FormatImageOut, [in, defaultvalue(4)] LONGLONG SizePixel, [in,
defaultvalue(0)] LONGLONG PixelColorR, [in, defaultvalue(0)] LONGLONG
PixelColorG, [in, defaultvalue(0)] LONGLONG PixelColorB, [in,
defaultvalue(0)] LONGLONG VersionSymbol, [in, defaultvalue(1)] LONGLONG
LevelErrCorrect, [in, defaultvalue(4)] LONGLONG QuietZone, [out, retval]
BSTR* StringOutRetval); Параметры/Аргументы
функции QRcodePrint
: 1. QRcodeText - что
печатаем, строка(обязательное). 2. FileOut - куда
печатаем, полное имя файла - не обязательное, по умолчанию используется
пользовательский "TEMP"
+ уникальное имя файла (GUID).
Расширение теперь добавляется автоматически, если оно не указано. Если указан
файл без папок - файл помещается в ту же папку, где располагается
зарегистрированная библиотека. 3. FormatImageOut - формат
изображения (код в функции/формат):0 (bmp), 1 (jpeg), 2 (gif), 3 (tiff), 4 (png)-по умолчанию. (этот и
остальные аргументы не обязательны) 4. SizePixel - размер
пикселя (модуля), по умолчанию 4 (минимально рекомендуемый) 5. PixelColorR =0 цвет RGB если хотим
цветную картинку (по умолчанию черный) 6. PixelColorG = 0 7. PixelColorB =0 8. VersionSymbol - версия QR кода
(1-40) (по умолчанию = 0-выбор автоматом) 9. LevelErrCorrect - уровень
коррекции ошибок (0-3, по умолчанию = 1 ~15%) 10. QuietZone - Размер в
модулях зоны тишины (>=0, по умолчанию = 4). Quiet zone — это
область, отделяющая границу штрих-кода от фона и других изображений. Начиная
с v1.0.4.8 11.При
удаче, возвращается полное имя файла созданного изображения, при неудаче
выводится ошибка и возвращается "Empty" Функционал: 1.
Сохранение изображения в форматы: bmp, jpeg, gif, tiff, png. 2. QR-кода
сохраняется в монохромное изображение, где формат позволяет, т.е. до 1 бита
на пиксель. В любом цвете RGB. К примеру размер .PNG
1140*1140 пикселей (1 бит на пиксель) - 2КБ. 3.
Возможность задавать размер модуля (пикселя QR). 4.
Возможность задавать цвет в RGB 5.
Возможность задавать версию QR кода. 6. Возможность
задавать уровень коррекции ошибок. 7.
Возможность изменить толщину рамки - quiet zone (начиная с v1.0.4.8) 8. Емкость
QR-кода составляет до 7000 цифр или 4000 символов 9.
(Отдельно) Конвертации вышеперечисленных форматов из одного в другой Добавил
отдельный метод (ConvertFormatImage(), см. ниже в WIKI)
для конвертации вышеперечисленных форматов из одного в другой, для случаев
конвертации сторонних изображений. Пример использования: Visual Basic Option Explicit Sub QR_Generate() Dim bVBA As Object: Set bVBA = CreateObject("BedvitCOM.VBA") 'позднее связывание Dim fileName As String: fileName = Environ("Temp") & "\QR.png" 'печать QR в файл (в пользовательский Temp) Dim convertToFile As String: convertToFile = Environ("Temp") & "\QR.tif" Dim QRcodeText As String: QRcodeText = "https://www.cyberforum.ru/blogs/829006/blog6514.html" Dim resultFileName As String 'печать QR в файл (в пользовательский Temp) и вывести на лист Excel 'с аргументами по умолчанию resultFileName = bVBA.QRcodePrint(QRcodeText, fileName) ActiveSheet.Shapes.AddPicture resultFileName, False, True, 0, 0, -1, -1 'с нужными аргументами resultFileName = bVBA.QRcodePrint(QRcodeText, fileName, 4, 4, 255, 0, 0, 0, 1, 4) ActiveSheet.Shapes.AddPicture resultFileName, False, True, 200, 0, -1, -1 'Конвертировать формат изображения bVBA.ConvertFormatImage fileName, convertToFile, 3 'формат (tiff), см. в описании End Sub
Visual Basic Sub QR_Generate_Fast() ActiveSheet.Shapes.AddPicture CreateObject("BedvitCOM.VBA").QRcodePrint("Здесь инфо для печати", Environ("Temp") & "\QR.png"), False, True, 0, 0, -1, -1 End Sub
2. 1C - регистрируем COM нужной
разрядности (можно под пользователем), далее код (по аналогии с Excel) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
10 |
ConvertFormatImage Параметры/Аргументы метода ConvertFormatImage : 1. FileIn - полное имя файла (обязательное). 2. FileOut
- полное имя файла (обязательное). 3.
FormatImageOut - нужный формат (обязательное). Код в функции/формат:0 (bmp),
1 (jpeg), 2 (gif), 3 (tiff), 4 (png) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
11 |
GetRowsCountCSVansi
Beta-версия
функции, тестирование и описание Подробнее на
форуме. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
12 |
GetRowCSVansi Beta-версия
функции, тестирование и описание Подробнее на
форуме. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
13 |
FindRowsInCSVansi Beta-версия
функции, тестирование и описание Подробнее на
форуме. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
14 |
SortDeleteDuplicateRowsCSVansi Beta-версия
функции, тестирование и описание Подробнее на
форуме. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
15 |
SHAstrUTF8 Использованы исходники Crypto++ Параметры
функции: 1.stringIn- входящая
строка 2.versionSHA- версия
алгоритма SHA 3.charLower
- вывод
результата в нижнем регистре (опционально, по умолчанию FALSE) Поддержка следующих алгоритмов (+ новейшие SHA3): versionSHA = 1, SHA1 versionSHA = 2224, SHA2_224 versionSHA = 2256, SHA2_256 versionSHA = 2384, SHA2_384 versionSHA = 2512, SHA2_512 versionSHA = 3224, SHA3_224 versionSHA = 3256, SHA3_256 versionSHA = 3384, SHA3_384 versionSHA = 3512, SHA3_512 Пример
использования: Visual Basic Sub SHA_1()
Dim bCOM As New BedvitCOM.VBA
Debug.Print bCOM.HashStringSHA("String", 1) 'VersionSHA = 1, SHA1 End
Sub |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
16 |
MDstrUTF8 Использованы исходники Crypto++ Параметры
функции: 1.StringIn - входящая
строка 2.versionMD- версия
алгоритма MD 3.charLower
- вывод
результата в нижнем регистре (опционально, по умолчанию FALSE) Поддержка
следующих алгоритмов: versionMD = 5, MD5 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
17 |
AESstrUTF8 Использованы исходники Crypto++ Параметры
функции: 1.StringIn
- входящая строка 2.key- ключ
должен быть длинной 128, 256 bit (16, 32 Byte). 3.decrypt - decrypt/encrypt (true/false) 4.mode - Supporter mode : ECB, CBC, OFB, CFB,
CBC-CTS, CTR (индексы см.ниже) 5.initializationVectorIV - an initialization
vector (IV) 6.str_format_hex - вывод результата в формате
Hex/Base64 (true/false) 7.secureZeroMemoryKey
–
безопасное зануление памяти для входящего ключа Шифрование 128 или 256 bit
зависит от длины ключа, который введет пользователь 16 или 32 символа (EN - 1
байт и RU - 2 байта на символ в utf-8 соответственно) Алгоритмы
шифрования AES: 1 - "Без шифрования" 2 - "AES256:ECB" 3 - "AES256:CBC" 4 - "AES256:OFB" 5 - "AES256:CFB" 6 - "AES256:CBC-CTS" 7 - "AES256:CTR" Примечание:
эта функция низкоуровневая, где разработчику нужно самому подбирать длину
ключа –только 128 или 256 бит. Более
высокоуровневая функция VariantAES256Encrypt() и VariantAES256Decrypt(), где
пароль может быть любой длинны, который преобразуется в 256-битный ключ в
самой функции. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
18 |
Array2Dto1D Параметры
метода: 1.array_in_out
- массив, который нужно преобразовать 2.lLbound1
- нижняя граница нового массива (по умолчанию=0) Пример использования в VBA (Excel): Visual Basic 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 начиная с v2.0.0.2 Visual Basic Sub
TestArrayDtoD_() 'Dim bVBA As
New BedvitCOM.VBA 'раннее связывание Dim bVBA As
Object: Set
bVBA = CreateObject("BedvitCOM.VBA") 'позднее связывание Dim arr
arr = [a1:b10] '
забираем массив 2 столбца, 10 строк bVBA.Array2Dto1D arr 'в одномерный (нижняя граница = 0 - по умолчанию) bVBA.Array1Dto2D arr, 1, 1, 10 'преобразуем в двухмерный с 10ю столбцами и 2 строками,
нижние границы измерений = 1, порядок данных сохраняется исходный Cells(1,
1).Resize(UBound(arr, 1), UBound(arr, 2)) = arr 'нового размера массив со старым порядком данных End Sub |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
19 |
Array1Dto2D Начиная с v2.0.0.2
можно задавать размер первой размерности, вторая рассчитывается
автоматически, в зависимости от общего количества элементов. Размер для
размерности должен задаваться так, чтобы общее количество элементов массива
было кратно задаваемому размеру. Порядок данных сохраняется первоначальный. 1.array_in_out
- массив, который нужно преобразовать 2.lLboundCol
- нижняя граница нового массива, 1е измерение - столбцы (по умолчанию=0) 3.lLboundRow
- нижняя граница нового массива, 2е измерение - строки (по умолчанию=0) 4.cElementsCol
- размер для первой размерности, кол-во столбцов (по умолчанию=1) (начиная с
v2.0.0.2) Пример использования в VBA (Excel): Visual Basic 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 начиная с v2.0.0.2 Visual Basic Sub TestArrayDtoD_() 'Dim bVBA As
New BedvitCOM.VBA 'раннее связывание Dim bVBA As
Object: Set
bVBA = CreateObject("BedvitCOM.VBA") 'позднее связывание Dim arr
arr = [a1:b10] '
забираем массив 2 столбца, 10 строк bVBA.Array2Dto1D arr 'в одномерный (нижняя граница = 0 - по умолчанию) bVBA.Array1Dto2D arr, 1, 1, 10 'преобразуем в двухмерный с 10ю столбцами и 2 строками,
нижние границы измерений = 1, порядок данных сохраняется исходный Cells(1,
1).Resize(UBound(arr, 1), UBound(arr, 2)) = arr 'нового размера массив со старым порядком данных End Sub |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
20 |
ArrayFilterV Инструмент
для фильтрации одномерного и двухмерного СОМ-массива (тип данных VARIANT) для
любого количества столбцов, с любым количеством условий. Реализован
параллельный алгоритм фильтрации (поддержка любого количества логических
процессоров). 1. array_in - массив входящий (одномерный,
двухмерный), тип данных VARIANT. 2. array_parameters
- массив
задаваемых параметров, тип данных VARIANT (6 параметров для одного
условия, можно для одного и того же столбца, можно для разных). Количество
условий не ограничено. Условия можно создать из списка, можно создать
двухмерный массив и заполнить, можно забрать сразу с листа Excel. 3. array_out_index - режим
вывода: 0- отфильтрованный массив, 1-массив индексов 4. array_out - массив
результатов Условия в массиве параметров
применяются в порядке следования, если нет скобок или внутри скобок. Скобки
задают приоритет выполнения условий (стандартно), потом "И" и
"ИЛИ" в порядке очередности.
Array(,"(((", 1,
Содержит, "маша", , ИЛИ, , 1, Содержит, "вася",
")", И, , 1, НеРавно, "маша иванова", ")", ИЛИ,
"(", 2, НеРавно, "'1", , ИЛИ, , 2, Равно, 1,
"))", И, "(", 3, БольшеРавно, 12.5, , И, , 3,
МеньшеРавно, 55.8, ")") Простые примеры (с замером скорости на 10 млн строк) и сложные
(с выводом условий и результата): Visual Basic Option Explicit 'операторы (aliases) псевдонимы Const ИЛИ =
0, И = 1, РАВНО = 2, СОДЕРЖИТ = 8, НЕРАВНО = 512 +
2, МЕНЬШЕРАВНО = 1 + 2, БОЛЬШЕРАВНО = 4 + 2, МЕНЬШЕ = 1, БОЛЬШЕ = 4 'ОДНОМЕРНЫЙ
МАССИВ, ПРОСТЫЕ УСЛОВИЯ, бинарная маска без слова-псевдонима Sub
TestArrayFilterV_1() 'Dim bVBA As
New BedvitCOM.VBA 'раннее связывание Dim bVBA As
Object: Set
bVBA = CreateObject("BedvitCOM.VBA") 'позднее связывание Dim arrResult
'первоначальный
массив данных Dim arrV: arrV = Array(1, 0, 1, 0, 1, 0)
'массив
условий (фильтр по первому столбцу, значение = 1) Dim p: p = Array(, , 1, 2, 1, "") ' фильтруем ===============================
bVBA.ArrayFilterV arrV, p, 0, arrResult '========================================
Debug.Print UBound(arrResult) + 1 'начало с 0 End Sub 'ДВУХМЕРНЫЙ
МАССИВ, ПРОСТЫЕ УСЛОВИЯ, бинарная маска в виде слова-псевдонима Sub
TestArrayFilterV_2() 'Dim bVBA As
New BedvitCOM.VBA 'раннее связывание Dim bVBA As
Object: Set
bVBA = CreateObject("BedvitCOM.VBA") 'позднее связывание Dim arrResult, r, c, t, x Dim
sizeRow As Long: sizeRow = 10000000 Dim
sizeCol As Long: sizeCol = 1 Dim
arrV: ReDim arrV(1
To sizeRow, 1 To sizeCol) 'первоначальный массив данных, далее заполняем рандомно
'массив условий (фильтр по первому столбцу, значение = 1) Dim p: p = Array(, , 1, РАВНО, 1, "") 'заполняем первоначальный массив с данными For
r = 1 To sizeRow
For c = 1 To sizeCol arrV(r,
c) = CLng(Rnd * 2) Next Next t = Timer ' фильтруем ===============================
bVBA.ArrayFilterV arrV, p, 0, arrResult '========================================
Debug.Print Timer - t Debug.Print
UBound(arrResult) + 1 'начало с 0 End Sub 'ДВУХМЕРНЫЙ
МАССИВ, СЛОЖНЫЕ УСЛОВИЯ, бинарная маска в виде слова-псевдонима Sub
TestArrayFilterV_3()
Dim arrParam, arrTest,
arrRes, bCOMvba As Object: Set
bCOMvba = CreateObject("BedvitCOM.VBA")
Cells.ClearContents 'создаем тестовый массив arrTest
= Array("маша
иванова", "'1", 13, "маша иванова", 1, 13, "маша", "'1",
14, "вася", "'1", 14, "паша",
1, 50, "вася", 2, 52, "маша", 1, 60, "вася",
1, 65) bCOMvba.Array1Dto2D arrTest, 1, 1, UBound(arrTest) / 3: bCOMvba.Transpose
arrTest Cells(1,
1).Resize(UBound(arrTest, 1), UBound(arrTest, 2)) = arrTest
'запись условий для фильтра:(((c1 like
"маша" or like "вася") and c1<>"маша иванова") or (c2<>"1" or
c2=1)) and (c3>=12,5 and c3<=55,8)
arrParam =
Array(, "(((", 1, СОДЕРЖИТ, "маша", , ИЛИ, , 1, СОДЕРЖИТ, "вася", ")",
И, , 1, НЕРАВНО, "маша иванова", ")", ИЛИ, "(",
2, НЕРАВНО, "'1", , ИЛИ, , 2,
РАВНО, 1, "))", И, "(", 3, БОЛЬШЕРАВНО, 12.5, , И, , 3,
МЕНЬШЕРАВНО, 55.8, ")") 'ИЛИ ТАК arrParam
= Array( _ , "(((", 1, СОДЕРЖИТ, "маша", , _ ИЛИ, , 1, СОДЕРЖИТ, "вася",
")", _ И, , 1, НЕРАВНО, "маша
иванова", ")", _ ИЛИ, "(", 2, НЕРАВНО, "'1", , _ ИЛИ, , 2, РАВНО, 1, "))",
_ И, "(", 3, БОЛЬШЕРАВНО, 12.5, , _ И, , 3, МЕНЬШЕРАВНО, 55.8, ")"
_ )
bCOMvba.Array1Dto2D arrParam, 1, 1, UBound(arrParam)
/ 6: bCOMvba.Transpose arrParam Cells(1,
5).Resize(UBound(arrParam, 1), UBound(arrParam, 2)) = arrParam
'применяем фильтр
bCOMvba.ArrayFilterV arrTest, arrParam, 0, arrRes
Cells(1,
12).Resize(UBound(arrRes, 1), UBound(arrRes, 2)) = arrRes End Sub |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
21 |
ArrayCharLowerV Параметры функции: 1.array_in_out
– массив строк, который нужно преобразовать (на месте) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
22 |
ArrayCharUpperV Параметры функции: 1.array_in_out
- массив, который нужно преобразовать (на месте) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
23 |
ArrayCharToNumV Параметры функции: 1.array_in_out - массив,
который нужно преобразовать (на месте) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM: VBA |
4.0 |
24 |
ArrayNumToCharV Преобразовать все данные в тип: String (в массиве). Параметры
функции: 1.array_in_out - массив, который нужно
преобразовать (на месте) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
25 |
Version |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
26 |
FileName |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
27 |
VariantCopy Параметры
функции: 1. variantIn
– исходный VARIANT, с
которого делается копия |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
28 |
ArrayDtoD Можно
задавать размер второй размерности, первая рассчитывается автоматически, в
зависимости от общего количества элементов. Размер для размерности должен
задаваться так, чтобы общее количество элементов массива было кратно
задаваемому размеру. Порядок данных сохраняется первоначальный. Параметры
функции: 1. arrayInOut
– массив
для преобразования «на месте» 2. lLboundRow
– нижняя
граница для строк 3. cElementsRow
–
количество строк 4. lLboundCol
– нижняя
граница для столбцов 5. cElementsCol
–
количество столбцов 4. lLbound3 – нижняя
граница для третьего измерения 5. cElements3 –
количество элементов третьего измерения … |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
30 |
ArrayReDim Информация
сохраняется, если не обрезается принудительно. Для созданный блоков массива
задаются значения Empty. 1.arrayInOut - массив (Variant) 2.lLboundRow - новая нижняя граница для строк 3.rowStartChange -
изменения для начала измерения строк ("-"обрезаем,
"+"добавляем новые строки) 4.rowEndChange - изменения
для конца измерения строк ("-"обрезаем, "+"добавляем
новые строки) 5.lLboundCol - новая
нижняя граница для столбцов 6.colStartChange
- изменения
для начала измерения столбцов ("-"обрезаем, "+"добавляем
новые столбцы) 7.colEndChange -
изменения для конца измерения столбцов ("-"обрезаем,
"+"добавляем новые столбцы) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
31 |
ArraySize Параметры функции: 1. arrayIn
– массив,
для которого нужно получить количество всех элементов. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM: VBA |
4.0 |
32 |
SplitS Параметры
функции: 1. stringIn
– строка
для деления на подстроки 2. delimiter
– разделитель,
по которому нужно разделить строку 3. setLowerBound
– нижняя
граница для создаваемого массива 4. multiThreading - включение многопоточных
вычислений |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
33 |
SplitV Параметры
функции: 1. stringIn
– VARIANT
содержащий
строку для деления на подстроки 2. delimiter
–
разделитель, по которому нужно разделить строку 3. setLowerBound
– нижняя
граница для создаваемого массива 4. multiThreading - включение многопоточных
вычислений |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
34 |
ArrayCopyStoV Параметры
функции: 1. arrayIn
– входящий
массив 2. multiThreading
- включение
многопоточных вычислений 3. arrayOut –
получаемый массив |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
COM:
VBA |
4.0 |
35 |
ArrayConvertStoV Параметры
функции: 1. arrayInOut
– массив
меняемый «на месте» 2. multiThreading - включение
многопоточных вычислений |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||