Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.069 c
15-1349123402
Юрий
2012-10-02 00:30
2013.03.22
С днем рождения ! 2 октября 2012 вторник


15-1333744203
Юрий
2012-04-07 00:30
2013.03.22
С днем рождения ! 7 апреля 2012 суббота


15-1330763551
Дмитрий
2012-03-03 12:32
2013.03.22
Добавление компонент на форму


15-1336238668
TStas
2012-05-05 21:24
2013.03.22
Нестандартное свойство компонента


2-1339072906
простофан
2012-06-07 16:41
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский