Страницы: 1
RSS
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
 
Мое почтение, джентльмены.
К вашему вниманию функции VariantToFile() и VariantFromFile() для работы с COM VARIANT.

Умеют:
+Сохранять данные из VARIANT в файл
+Загружать данные из файла в VARIANT
+Шифровать данные
+Сжимать/архивировать
+Обрабатывать любое количество вложений в массивах (дерево)
+Поддерживает длинные пути к файлам

Особенности:
>если вторым аргументом передаем пустую строку (полный путь к файлу) - работаем в интерактивном режиме (открываем форму, выводим ошибки в диалоге)



Тех.информация:

Сохранение в файл:

VARIANT* resultRetval = VariantToFile(VARIANT* variantIn, BSTR fileName, BSTR fileNameDefault, BSTR password, LONG algorithmCrypto, LONG algorithmCompress, LONGLONG hWndParent)
variantIn - данные в виде VARIANT для сохранения
fileName - полный путь к файлу (если пустой - интерактивный режим)
fileNameDefault - полный путь по умолчанию (открыть форму сохранения в этой папке с этим файлом в строке сохранения) , (не обязательный, по умолчанию: "")
password - пароль (не обязательный, по умолчанию: "")
algorithmCrypto - fлгоритмы шифрования AES (не обязательный, по умолчанию: 1):
1 - "Без шифрования"
2 - "AES256:ECB"
3 - "AES256:CBC"
4 - "AES256:OFB"
5 - "AES256:CFB"
6 - "AES256:CBC-CTS"
7 - "AES256:CTR"
algorithmCompress - алгоритмы сжатия (не обязательный, по умолчанию: 4)::
1 - "Без сжатия"
2 - "WinAPI:MSZIP"
3 - "WinAPI:XPRESS"
4 - "WinAPI:XPRESS_HUFF*"
5 - "WinAPI:LZMS"
hWndParent - HWND окна родителя (не обязательный, по умолчанию: 0):.

Возвращаемые значения:
resultRetval = 0: Успех
resultRetval = 1223: Операция была отменена пользователем.



Загрузка из файла:

VARIANT* resultRetval = VariantFromFile(VARIANT* variantOut, BSTR fileName, BSTR fileNameBasic, BSTR password, LONGLONG hWndParent)
variantOut - переменная VARIANT для получения данных из файла
fileName - полный путь к файлу (если пустой - интерактивный режим)
fileNameBasic - полный путь по умолчанию (открыть форму загрузки в этой папке с этим файлом в строке сохранения) , (не обязательный, по умолчанию: "")
password - пароль (не обязательный, по умолчанию: "")
hWndParent - HWND окна родителя (не обязательный, по умолчанию: 0)

Возвращаемые значения:
resultRetval = 0: Успех
resultRetval = 1223: Операция была отменена пользователем.
resultRetval = 500: Пользовательские данные из файла не удалось загрузить, создан новый файл (когда пути к fileName и fileNameBasic совпадают и файл с ошибкой). В интерактивном режиме выводится имена созданного файла и файла отмеченного как ошибочного.
resultRetval = 2148073494: Часть ключей не загрузилась из файла. В интерактивном режиме выводится список.


Код
Sub Test_VariantToFromFile()

    Dim listViewSave, listViewLoad, resultVtoF, resultVfromF, aray2D
    Dim aray2DHeader: ReDim aray2DHeader(1 To 2, 1 To 2)
    Dim aray2DData: ReDim aray2DData(1 To 2, 1 To 3)
    Dim bVBA As Object: Set bVBA = CreateObject("BedvitCOM.VBA") 'позднее связывание
    
    'сохраним массив и описания к нему (дерево свойств объекта)
    listViewSave = Array("ListView309" _
                , Array("Header" _
                        , aray2DHeader) _
                , Array(Array("Data", Array(1, 2)) _
                        , aray2DData) _
                , Array("Width" _
                        , Array(150, , 160)) _
                , Array("ComboBox" _
                    , Array(Array(, 111), , Array(222)) _
                    , Array(111, Array("", "(", "((", "(((", "((((", "(((((")) _
                    , Array(222, Array("", ")", "))", ")))", "))))", ")))))")) _
                    ) _
                , Array("RC" _
                    , Array(Array(196, 197), , 198) _
                    , Array(197, "строка-бинарные данные ресурса") _
                    ) _
                )
    
    'сохраняем в файл
    'если вторым аргументом передаем пустую строку(полный путь к файлу) - работаем в интерактивном режиме (открываем форму)
    resultVtoF = bVBA.VariantToFile(listViewSave, "")
    If resultVtoF = 1223 Then Exit Sub 'отменено пользователем
    
    'загружаем из файла
    'если вторым аргументом передаем пустую строку(полный путь к файлу) - работаем в интерактивном режиме (открываем форму)
    resultVfromF = bVBA.VariantFromFile(listViewLoad, "")
    If resultVtoF = 1223 Then Exit Sub 'отменено пользователем

End Sub


Скачать можно здесь (для Excel) или здесь (для других программ).
Изменено: bedvit - 28.01.2026 20:16:29
«Бритва Оккама» или «Принцип Калашникова»?
Страницы: 1
Читают тему
Наверх