![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Чучмек |
|
|||
|
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 14 Всего: 41 |
Есть ли функция, которая преобразует строки типа C:\Program Files\My\My.file в %ProgramFiles%\My\My.file ?
И наоборот? Неохота городить огород. -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
| Ne1tr1n0 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 1.3.2009 Репутация: 6 Всего: 8 |
Надо что-то обратное ExpandEnvironmentStrings?
Если да, то это наверное подойдет: PathUnExpandEnvStrings |
|||
|
||||
| Чучмек |
|
|||
|
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 14 Всего: 41 |
За первую функцию спасибо.
Вторая, к сожалению, работает не так, как хотелось. Вместо %temp%\3.tmp возвращает %USERPROFILE%\Local Settings\Temp\3.tmp -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
| Ne1tr1n0 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 1.3.2009 Репутация: 6 Всего: 8 |
к сожалению да, она только некоторые переменные среды парсит и заменяет значение в строке на имя переменной (всего 7 значений, перечислены в статье по ссылке).
Почему только эти, и не берет остальные непонятно. Видимо придется все-таки городить велосипед. По идее можно с помощью GetEnvironmentVariables получить все переменные среды для процесса и самому распарсить результат, проверить его на предмет наличия в исходной строке. В результат вывести строку, в которой наибольший путь (по длине или же по кол-ву оставшихся слешей) заменен переменной. |
|||
|
||||
| Чучмек |
|
|||
|
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 14 Всего: 41 |
Да я примерно так и делаю, через GetEnvironmentStrings.
Выбираю те, которые X:\... , сортирую по длине, и ищу вхождение. -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
| Ne1tr1n0 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 1.3.2009 Репутация: 6 Всего: 8 |
Вот набросал тут примерный вариант функции. Вроде работает. Возможно конечно придется внести какие-то дополнительные проверки, на регистр может быть или ещё на что-нить, да и мог накосячить (время-то позднее):
|
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
А чем не устраивает? Какая задача? Может огород городишь не на том участке поля? -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
![]()
|
| Правила форума "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. |