|
|
| Посл.отвђт | Сообщен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 |