Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

подкаталоги   Найти похожие ветки 

 
vasa777   (2012-05-21 23:15) [0]

есть стриглист с путями (папки). можно ли как то определить (функция или алгоритм), является ли например для пути n(1) путь n(2) вхождением (подкаталогом) не прибегая к анализу строк?


 
Ega23 ©   (2012-05-21 23:21) [1]

Не всё так просто.
Создаём директорию D:\Temp, в ней создаём temp1
Запускаем cmd, выполняем команду subst z: d:\temp
Заносим в стринглист
sl.add("D:\Temp");
sl.add("Z:\temp1")
вуаля.


 
Dennis I. Komarov ©   (2012-05-21 23:45) [2]


> Ega23 ©   (21.05.12 23:21) [1]

Не совсем корректно, т.е. для системы эти диски будут уже различны. Даже rm d:\*.* z:\ это будет полноценный copy-delete, а не изменение в FS.
ИМХО суть d:\1 и d:\1\2 но это строки, и на кой ляд напрягать FS вместо анализа строк мне не понятно...


 
Dennis I. Komarov ©   (2012-05-21 23:47) [3]

Не, понятно. На какого писать код, пусть система сама мне скажет...


 
TStas   (2012-05-21 23:54) [4]

не прибегая к анализу строк? //А почему? Это и есть самый простой и надежный способ. Парсить строку до очередного слеша, выдергивать папки и сравнивать их ANsiCompareText, ведь разные регистры букв - это не разные папки. Ну и всё. Если какой-то из путей закончился, а несовпадений папок не было, то он подкаталог. Подкаталогом будет тот, кто короче:)
Строки парсить поще некуда. К сточке приделывается переменная P: Integer.
Ln := Length(Str);
P := //откуда начали парсить. Если сначала, то 1, или от предыдущего слеша
InitP := P; //Запомнили, откуда начали парсить
While P <= Ln do
  If Str[p] = "\" then
    Begin
    Ln := InitP - P - 1; //Сколько копируем
    NextFolder := Copy(Str, InitP + 1, Ln); //Вот и папка
    Break; //И не парсим боле
    end
  else
    Inc(P)

Неужели можно ещё проще?


 
Dennis I. Komarov ©   (2012-05-21 23:56) [5]


> ведь разные регистры букв - это не разные папки.

Это кто сказал? Мир на окнах не заканчивается, надо и дальше смотреть...


 
vasa777   (2012-05-22 00:04) [6]

хитрая проблема. еще тут вот нашел интересно: http://forum.vingrad.ru/forum/topic-329539.html


 
Rouse_ ©   (2012-05-22 00:14) [7]


> А почему? Это и есть самый
> простой и надежный способ. Парсить строку до очередного
> слеша, выдергивать папки и сравнивать их ANsiCompareText,
>  ведь разные регистры букв - это не разные папки. Ну и всё.
>  Если какой-то из путей закончился, а несовпадений папок
> не было, то он подкаталог. Подкаталогом будет тот, кто короче:
> )

Вот эти пути указывают на одну и ту-же директорию. Распарси...
c:\windows\
file://c:/windows/
\.\c:\windows
\..\c:\windows
%SystemRoot%


 
Германн ©   (2012-05-22 02:04) [8]


> vasa777   (22.05.12 00:04) [6]
>
> хитрая проблема.

Не столь хитрая, сколь дурацкая. Ибо озвучен только вопрос, но не задача.


 
TStas   (2012-05-22 02:34) [9]

Розыч, ты прав. Просто про такие кучерявые пути не подумал.


 
Давайте будем жрать!   (2012-05-22 07:40) [10]


> Rouse_ ©   (22.05.12 00:14) [7]
C:\Windows\..\Windows туда же :-)


 
DVM ©   (2012-05-22 10:03) [11]


> c:\windows\
> file://c:/windows/
> \.\c:\windows
> \..\c:\windows
> %SystemRoot%


 
DVM ©   (2012-05-22 10:04) [12]


> DVM ©   (22.05.12 10:03) [11]

Не так уж страшен черт...
Просто надо привести все пути к единому виду. В WinApi кстати немало функций есть для этого.


 
Давайте будем жрать!   (2012-05-22 10:16) [13]


> В WinApi кстати немало функций есть для этого
Подскажи :-)


 
han_malign   (2012-05-22 11:26) [14]

- не забывайте, что в Vista монтироваться могут не только диски но и произвольные пути...
SHParseDisplayName/IShellFolder::CompareIDs - вроде должно помочь



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.066 c
15-1352739879
Куку
2012-11-12 21:04
2013.03.22
Combobox с разным наполнением для разных строк в cxGrid


15-1351699705
ПростоФАН
2012-10-31 20:08
2013.03.22
Помощь в разработке по


15-1334989775
TSubject
2012-04-21 10:29
2013.03.22
Кто работал с Java?


15-1344959281
Рекрут
2012-08-14 19:48
2013.03.22
Что должен уметь сисадмин?


2-1334249726
novichek
2012-04-12 20:55
2013.03.22
Поиск цвета на битмапе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский