![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Otsukitakitte
Форумчанин
Регистрация: 01.10.2009
Сообщений: 126
|
![]()
Доброго времени суток.
Начал официально, так как проблема довольно весомая для меня, и довольно трудная (также всё еще для меня). Задача: построить цикл заполнения TreeView с помощью Direcoty List (отображаем папки в директории) и FileListBox (отображаем файлы в директории). Я уже писал на форум с этой проблемой, но понять её с середины сути - всё-равно что начать смотреть сериал с сотой серии. Потому решил обратится за помощью создания всего цикла заново, на основе того, что у меня есть. Общий алгоритм цикла: 1. Запускается наш OpenDialog (далее просто OD). Добавляем главную папку stree.item.addFirst(nil, OD.FileName). 2. Нашему DirectoryList (далее dr) делаем следующее: dr.directory:=OD.FileName. Теперь получаем папки вложенные в нашу открытую директорию, и добавляем их в первый узел TreeView. 3. Теперь присваиваем FileListBox (далее rzBox) rzBox.ApplyFilePath(OD.FileName). Таким образом мы получаем файлы, находящиеся именно в открытой нами директории. Добавляем с помощью stree.Item.AddChild(stree.item.item[0], rzBox.Items[rzBox.ItemIndex]); Тут снова работает цикл, т.к. файлов может быть несколько. 4. Далее, с помощью цикла мы заходим в каждую вложенную в OD.FileName директорию папку (которые добавили в шаге 2) и проверяем на наличие в них файлов. Если файлы есть - снова циклом добавляем, только уже в директорию вложенную в OD.FileName. И так циклом с каждой дочерней папкой нашей главной директории. Это основные 4 шага, которые должен сделать цикл при открытии документа. Вот мой код, который работает, но шаг 3 не выполняется (он выполняется, но чудесное окно ошибки о потере индекса мешает мне): Код:
Очень прошу помочь. Я еще не до конца осознал всю сущность работы с TreeView, потому индексы и правильные позиции для меня сложная вещь. Заранее большое спасибо!
Помог - ставь плюс.
$("question").onAnswer(function() { $(this).getItWright(true); }); Последний раз редактировалось Sensizu; 18.06.2010 в 15:14. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 15.01.2010
Сообщений: 1,325
|
![]()
Пока конкретных рецептов нет, но есть предложение по оптимизации (что вообще-то говоря сейчас глупо, с неработающим кодом
![]() Если файлов действительно много, то прога будет "висеть". Я бы только первую "ступень" показывал сразу, а остальную индексацию в отдельный поток повесил с небольшим приоритетом.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "[ПРОграммист]" Yan's Home Digital Lab |
![]() |
![]() |
![]() |
#3 |
Otsukitakitte
Форумчанин
Регистрация: 01.10.2009
Сообщений: 126
|
![]()
ex.cluz, код рабочий на 100%. У меня проблема в описанном мною шаге 2 (когда файлы из дочерних папок добавляются в список в нужный индекс). Я не могу правильно указать этот индекс.
P.S. Здесь циклы элементарные. Тестирую - комп даже не думает зависать. Если будет такая проблема - как устранить - я пойму. Сейчас мне главное правильно цикл построить. Может я местами путаю последние два цикла. Без понятия...
Помог - ставь плюс.
$("question").onAnswer(function() { $(this).getItWright(true); }); Последний раз редактировалось Sensizu; 18.06.2010 в 15:38. |
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 15.01.2010
Сообщений: 1,325
|
![]()
Да, по поводу оптимизации - скорее всего вы правы. Я похожую работу года 3 назад делал. И нужно было обрабатывать большое число файлов (порядка десятка тысяч) и плюс к этому комп был не самый производительный (даже по тем временам). Так что, может, я и глупость в качестве совета написал (хотя надо бы проверить).
С индексами тут напутано, надо разбираться...Приду домой - попробую.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "[ПРОграммист]" Yan's Home Digital Lab Последний раз редактировалось ex.cluz; 18.06.2010 в 16:06. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
операторы цикла | pilot76 | Помощь студентам | 4 | 10.09.2009 19:08 |
Переход от цикла к циклу не выходя из цикла (без multithreading) | Qousio | Общие вопросы C/C++ | 2 | 16.05.2009 09:27 |
Операторы цикла. | Paul Oakenfold | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 14.04.2009 20:07 |
Операторы цикла | Paul Oakenfold | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 14.04.2009 19:28 |
Оператор цикла с предусловием While. Оператор цикла с пост условием Repeat | McMilin | Помощь студентам | 7 | 11.11.2007 14:10 |