Когда передо мной встала такая проблема, я немного поэкспериментировал, и вот что получилось.
Тезис первый
Для добавления нода не первого уровня нужно указать код его родителя.
Тезис второй
Если пробежать по коллекции нодов с помощью For Each, то сначала будут последовательно вызываться все ноды сначала первого уровня, затем все ноды второго уровня и т.д.
Из этих тезисов следует, что для сохранения дерева нужно сначала определить пользовательский тип
- Код: Выделить всё
Type NodeData
Text As String
Key As String
ParentKey as String
End Type
а затем простым циклом For Each сделать этим нодам Put в файл Random доступа.
При загрузке же дерева - просто чтение Get'ом. Отсутствие ошибки присваивания дочки несуществующему ноду гарантируется тезисом 2.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас