Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Общие вопросы > Адрес файла. Взять подпапку. |
Автор: Ner-zul 30.1.2007, 17:23 |
Сложно Объяснить, задача такая. У меня есть переменная Path, в которой хранится текущая дирректоия. Я сканирую эту дирректорию на наличие папок и файлов и обрабатываю их определенным образом. Пусть Path='D:\Cd\543\Test\'. Существует ли какой-нибудь нормальный способ, кроме синтаксического анализа, чтобы получить из переменной Path, Переменную DirectPath='D:\Test\' ....? |
Автор: Snowy 30.1.2007, 17:45 |
А какая корелляция между этими двумя путями? Я вижу только имя диска и имя последнего вложения. Какая схема перевода из одного в другое? |
Автор: W4FhLF 30.1.2007, 17:49 | ||||
А что значит кроме синтаксического анализа? Ну можно допустим с помощью регулярных выражений:
Как результат:
|
Автор: Ner-zul 30.1.2007, 17:56 |
В том то и дело что схемы никакой нет. Мне просто надо выкинуть из адреса папки (текущей), две корневые папки. притом две первые из них. То есть если текущая папка будет на 7 уровне вложенности , типа D:\aaa\bbb\ccc\ddd\eee\fff\Test , то мне надо получить D:\ccc\ddd\eee\fff\Test Корреляция здесь следующая... то что с помощью синтаксического анализа можно искать вхождения слэша в текстувую переменную Path у удалять все символы между первым и третим слэшами. Таким образом, искомый эффект может быть достигнут. Но мне не кажется этот способ особо рациональным. Добавлено @ 18:03 W4FhLF, какой интересный способ, вы не могли бы его пояснить его по строчкам. Особенно не понятно: exp.Expression := '((\w|\d)+\\)+'; if sData[Length(sData)] = '\' then sData[Length(sData)] := Chr(0); |
Автор: W4FhLF 30.1.2007, 18:12 | ||||
Тогда вот так вот делай:
Как результат:
Добавлено @ 18:12 Сейчас прокомментирую вкратце ![]() |
Автор: Yanis 30.1.2007, 19:02 |
W4FhLF А если в названиях папок региональные символы присутствуют, код нормально будет работать? |
Автор: Ner-zul 31.1.2007, 11:15 |
Всем Спасибо. |
Автор: Ner-zul 31.1.2007, 11:36 |
А вот такой еще вопрос, как можно выкинуть символ из строки, со сдвигом строки влево??? Или, к примеру, отрезать кусок строки??? с такого-то по такой-то номер....??? |
Автор: Yanis 31.1.2007, 11:44 |
Ner-zul Delete(var, ...); var := Copy(var, ....); |
Автор: Ner-zul 31.1.2007, 11:45 |
Спасибо. |
Автор: Yanis 31.1.2007, 11:45 | ||
from delphi help:
|
Автор: Ner-zul 31.1.2007, 12:23 |
Да я понял сразу![]() ![]() Уже все получилось, спасибо ![]() |