У меня вопрос по работе с файлами произвольного доступа в VBA for Exel 2002
Заказ.Изделия - Объектная Переменная(ОП), состоящая из нескольких других определённых мной типов данных, содержащая динамические массивы и переменные различных типов данных.
**********************************************************************
Здесь приведён код, которым я помещаю ОП в файл.
ChDrive "C" ' Работа с файлами
ChDir ПутьЗаказы
Здесь при открытии файла задаю ему предельно допустимый размер, чтобы не заморачиваться с определением размера моей объектной переменной.
Open Заказ.Атрибуты.Название + "@Изделия" For Random As #1 Len = 32767
For i = 1 To UBound(Заказ.Изделия)
Put 1, i, Заказ.Изделия(i)
Next
Reset
**********************************************************************
Ниже приведён код извлечения ОП из файла.
ДлинаПути = Len(ПутьЗаказы)
For i = 0 To СпАрхЗак.ListCount – 1
If СпАрхЗак.Selected(i) = True Then
ИмяФайла = Right(Application.FileSearch.FoundFiles(i + 1), Len(Application.FileSearch.FoundFiles(i + 1)) - ДлинаПути - 1)
Open Application.FileSearch.FoundFiles(i + 1) For Random As #i + 1 Len = 32767
Размерность динамического массива <Заказ.Изделия()> на этом этапе уже определена.
For i = 0 To UBound(Заказ.Изделия)
Get i + 1, i, Заказ.Изделия(i)
Next
Exit For
End If
Next
*********************************************************************
Мне совершенно непонятно, почему данный способ записи и чтения ОП иногда срабатывает а иногда выдаётся сообщение об ошибке.
Данную задачу я решил сохранив ОП на листе Exel, позже обнаружив некоторые минусы этого способа, составил алгоритм сохранения в текстовом файле. К сожалению оба этих алгоритма достаточно сложны вследствие сложной архитектуры самой ОП. Гораздо проще сохранить её в файл произвольного доступа.
С благодарностью приму любые советы и комментарии на эту тему.