![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Ner-zul |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 24.1.2004 Где: Москва Репутация: нет Всего: нет |
Сложно Объяснить, задача такая. У меня есть переменная Path, в которой хранится текущая дирректоия. Я сканирую эту дирректорию на наличие папок и файлов и обрабатываю их определенным образом. Пусть Path='D:\Cd\543\Test\'. Существует ли какой-нибудь нормальный способ, кроме синтаксического анализа, чтобы получить из переменной Path, Переменную DirectPath='D:\Test\' ....? --------------------
Ner-zul |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
А какая корелляция между этими двумя путями?
Я вижу только имя диска и имя последнего вложения. Какая схема перевода из одного в другое? |
|||
|
||||
W4FhLF |
|
||||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
А что значит кроме синтаксического анализа?
Ну можно допустим с помощью регулярных выражений:
Как результат:
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
||||
|
|||||
Ner-zul |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 24.1.2004 Где: Москва Репутация: нет Всего: нет |
В том то и дело что схемы никакой нет. Мне просто надо выкинуть из адреса папки (текущей), две корневые папки. притом две первые из них. То есть если текущая папка будет на 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); --------------------
Ner-zul |
|||
|
||||
W4FhLF |
|
||||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
Тогда вот так вот делай:
Как результат:
Добавлено @ 18:12 Сейчас прокомментирую вкратце ![]() Это сообщение отредактировал(а) W4FhLF - 30.1.2007, 18:20 -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
||||
|
|||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
W4FhLF
А если в названиях папок региональные символы присутствуют, код нормально будет работать? |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
Нет, надо расширить символьный класс, пока, что он описывает все цифры и большие/маленькие буквы английского алфавита. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Ner-zul |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 24.1.2004 Где: Москва Репутация: нет Всего: нет |
Всем Спасибо.
--------------------
Ner-zul |
|||
|
||||
Ner-zul |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 24.1.2004 Где: Москва Репутация: нет Всего: нет |
А вот такой еще вопрос, как можно выкинуть символ из строки, со сдвигом строки влево???
Или, к примеру, отрезать кусок строки??? с такого-то по такой-то номер....??? --------------------
Ner-zul |
|||
|
||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
Ner-zul
Delete(var, ...); var := Copy(var, ....); Это сообщение отредактировал(а) Yanis - 31.1.2007, 11:44 |
|||
|
||||
Ner-zul |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 24.1.2004 Где: Москва Репутация: нет Всего: нет |
Спасибо.
--------------------
Ner-zul |
|||
|
||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
from delphi help:
Это сообщение отредактировал(а) Yanis - 31.1.2007, 11:45 |
|||
|
||||
Ner-zul |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 24.1.2004 Где: Москва Репутация: нет Всего: нет |
Да я понял сразу
![]() ![]() Уже все получилось, спасибо ![]() --------------------
Ner-zul |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |