· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.A&O —› Иерархия папок

Посл.отвђт Сообщенiе


Дата: Апр 22, 2004 13:48:55 · Поправил: tim

Хочу создать на диске иерархию папок повторяющую иерархию разделов реестра. Разбираю reg файл и выдираю оттуда пути к разделам, затем создаю папки.

Пример:

[A/B] : CreateDirectory ("A");
CreateDirectory ("A/B");
. . .

[A/D] : CreateDirectory ("A");
CreateDirectory ("A/D");
. . .

Но при этом несколько раз создаётся одна и та же папка (A), что отнимает много времени. Если строить дерево и обходить, то памяти вряд-ли хватит. Может чего посоветуете?


Дата: Апр 22, 2004 14:20:58

Может рекурсия поможет?


Дата: Апр 22, 2004 14:50:40

Посмотри в инструментах RegShot , к нему приложены исходники на сях . Правда там весь реестр сохраняеться в один файл . Но полезного в них может оказаться много .


Дата: Апр 22, 2004 15:29:40 · Поправил: Black_mirror

tim
Можно отсортировать строки с полными именами папок, а затем просматриваем каждую строку, сравнивая с предыдущей, и начиная с того имени(то что между двумя слешами или между слешем и краем строки), в котором они различаются, создаем папки. Например нужно создать следующие папки:
1 A/A
2 A/A/B
3 A/B/B/D
4 B/C/B
5 B/D
6 B/E/C
7 B/E/F

В этом случае последовательность вызовов CreateDirectory будет выглядеть так:
1 CreateDirectory("A")
  CreateDirectory("A/A")
2 CreateDirectory("A/A/B")
3 CreateDirectory("A/B")
  CreateDirectory("A/B/B")
  CreateDirectory("A/B/B/D")
4 CreateDirectory("B")
  CreateDirectory("B/C")
  CreateDirectory("B/C/B")
5 CreateDirectory("B/D")
6 CreateDirectory("B/E")
  CreateDirectory("B/E/C")
7 CreateDirectory("B/E/F")

Вобщем находишь позицию в которой текущая строка отличается от предыдущей, и сканируя текущую строку далее, встретя слеш или дойдя до конца строки создаешь папку с именем от налача строки до текущей позиции.


Дата: Апр 23, 2004 15:02:02

bogrus
В один файл не катит, т. к. с этим потом работать (изменение ключей, вставка новых ...)

Black_mirror
В памяти сортировать - ресурсов больше, чем на дерево уйдёт, а в файле - меддленно работать будет. Но всё равно попробую. Спасибо


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.052