Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Папки...


Автор: z-END 13.1.2005, 17:01
Пришла весна и лыжи всталиsmile
Вот: имеется список папок и имеется адрес еще одной папки, нужно определить является или он вложенной в данный список (или папка из списка является вложеной для нее, или просто они одинаковы) или нет. (проще говоря изнать пересекаются они или нет)
Напрмер:
[список]
1:C:\folder\Sub
2:C:\folder\Sub\xSub
...

Надо получть:
папка: C:\folder (родительская папка для Список[1]) - True
папка: C:\folder\Sub\xSub\New (подпапка для Список[2])- True
папка: C:\folder\Sub (идентичны)- True
папка: C:\folder\New (папки не пересекаются - зер гуд)- False
ЗЫ надеюсь понятно объяснил... подругому даж незнаю как это объяснить smile

Автор: _hunter 13.1.2005, 17:32
а в чем проблема?
сравниваеш SubString второй папки с первой ( на длину родительской )
длина родительской получается проходом справа до первого "\"
если равны -- отлично ( они как минимум пересекаются )
проверяеш следующий символ второй папки. если это "\" -- отлично -- имеем подпапку

ну и если SubString не равен -- совсем хорошо -- пересечений -- нет

как смог -- объяснил

Автор: z-END 13.1.2005, 17:45
Снега на улице нет, вот почему лыжи не едут! smile
я опять непонял smile

Автор: _hunter 13.1.2005, 18:14
тут есть проблема ( точнее вопрос ): папки имеют такую структуру, как ты привел ( т.е. xSub -- подпапка Sub ) или может быть несколько родительских папок?

Автор: z-END 13.1.2005, 18:23
_hunter это я пример привелsmile
насаом деле список может составлять до тысячи папок, и вложенность у них может быть такой какую юзверь решить сделатьsmile

Автор: _hunter 13.1.2005, 18:36
тогда делай так:
folder -- проверяемая папка
folder[i] -- папка из списка

первая ходка:
проверяеш ( для всех папок из списка )
folder[i].Pos(folder) <> 0
если не равно 0 -- folder -- родительская папка для folder[i] и выход

вторая ходка:
проверяеш ( для всех папок из списка )
folder.Pos(folder[i]) <> 0
если не равно 0 -- folder[i] -- родительская папка для folder и выход

кажись все

Автор: z-END 13.1.2005, 18:43
точняк.. пасибо!

Автор: _hunter 13.1.2005, 18:51
пожалуйста smile
обращайтесь еще.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)