На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Карта каталогов
    подскажите как хранить в одном файле дерево каталогов. имеется папка с множеством вложенностей, нужно создать карту для ускорения работы. вот.
      А чего конкретно ускорять?
        мнго раз по винту чтобы не шарить, по каждому файлу будет инфа описание и где искать.
          Не, все равно не понял. Что ты собрался хранить и что искать?

          В принципе существует два способа ускорения, первый - разработать структуру так, что бы за минимальное число операций выбрать нужный тебе узел. И второй - хранить как удобнее и дополнительно строить индексы. Что тебе подходит?
            вообще мне нужно создать файл в котором будет дерефо всех (например) ниже стоящих папок. и загрузив этот файл я буду управлять файлами в этих папках. во.

            (я еще тут)
              Ну так пиши подряд, прям как Windows Commander.
              Типа того:

              [Winnt]
              [Winnt\$ntuninstallq285156$]
              [Winnt\addins]
              [Winnt\Apppatch]
              [Winnt\Config]
              [Winnt\Connection Wizard]
              [Winnt\Csc]
              [Winnt\Csc\d1]
              [Winnt\Csc\d2]
              [Winnt\Csc\d3]
              [Winnt\Csc\d4]
              [Winnt\Csc\d5]
              [Winnt\Csc\d6]
              [Winnt\Csc\d7]
              [Winnt\Csc\d8]
              [Winnt\Cursors]
              [Winnt\Debug]
              [Winnt\Debug\Usermode]
              [Winnt\Downloaded Program Files]
              [Winnt\Driver Cache]
              [Winnt\Driver Cache\i386]
              [Winnt\Fonts]
              [Winnt\Help]
                а как отображать?

                |
                |-
                ||-
                ||-
                |-
                ||-
                ||-
                  я слышал можно как-то по уровням записывать, а то представь: первый уровень 5 ветвей а второй например 500, и перебирать все?
                    посмотри может это поможет тебе
                    http://harbour.narod.ru/Files/Work/CPPC/CTask12/Graphs.htm
                      Можно перед строкой записывать уровень. Если эта строка - лист дерева, то бишь больше нет подуровней, то еще какой-нибудь символ записывать. Вобщем могу тебе сказать, что как бы ты это не записывал - парсить файл все равно во много раз быстрее, чем сканировать фолдеры.
                      Можешь вообще записывать объект в файл в бинарном виде, раз тебе все равно. Это еще быстрее.
                        спасибо за советы, я еще подумаю, а сейчас пора спать.
                          Для начало дерево надо преобразовать в двоичное (кто не знает как, нет ему прощения)
                          Получится чтото типа

                          struct TreeNode{

                          };
                            О, Глюк, Я нажал по привычке <TAB> перед вводом void*

                            Для начало дерево надо преобразовать в двоичное (кто не знает как, нет ему прощения)
                            Получится чтото типа

                            struct TreeNode{
                                 void *data;//ну не надо здесь оставлять void*
                                 struct TreeNode *RightBrother, *LeftmostChild;
                            };

                            А уж вопросы зранения ДВОИЧНОГО дерева в файле обсосаны со всех сторон со всевозможными оптимизациями итд ипр бла-бла-бла
                              Палки в начале строки можно рисовать так: хранишь в узле две величины. Первая - массив нужной длинны в битах(!), размерностью в максимальное вложение, вторая - глубина. В массиве: 1 - есть палка, 0 - нет. Тип палки тоже очень просто определить, если номер бита не совпадает с глубиной, то палка "прямая" - код 179, иначе - либо Т-образная либо Г-образная. Далее, если в следующем (не по порядку, а по строке) узле данный бит зажжен, но Т-образная, если нет, то Г-образная.
                              Сумбурно, но разобраться, надеюсь, можно  ;D
                                Вообще не понимаю в чём проблема......
                                Вот твой массив строк:
                                DOS
                                WINDOWS
                                WINDOWS\SYSTEM
                                WINDOWS\COMMAND
                                WINDOWS\FONTS
                                UTILS
                                UTILS\HIEW


                                Далее просто пишешь в файл блоки:
                                [байт уровня][байт длины имени][имя]
                                Т.е. 13DOS17WINDOWS26SYSTEM27COMMAND25FONTS15UTILS14HIEW

                                А собирать так....
                                1 способ.... Создаёшь массив строк-уровней (МСУ)
                                   Читаешь первый байт (байт уровня - БУ), затем строку и записываешь в МСУ с индексом БУ, получаешь путь Path : For i := 1 to БУ do Path := Path + '\' + МСУ[i]

                                2 способ.... Читаешь первый байт (БУ) и строку (S). Если БУ = 1, то Path := S, иначе ищешь в Path (БУ-1)-й по счёту символ '\' и обрубаешь всё, что за ним, а затем Path := Path + S
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.0835 ]   [ 14 queries used ]   [ Generated: 24.10.26, 00:55 GMT ]