1 | ||||||
Переменные среды Windows05.10.2017, 00:25. Показов 7270. Ответов 20
Метки нет (Все метки)
Приветствую Уважаемые форумчане!
Есть у меня функция для извлечения из переменной полного пути.
C:\Users\Igor\AppData\Roaming = GetAbsPath('%AppData%'); Собственно вопрос, на сколько правильное решение и правильное ли оно вообще, для определения указанной директории >>> C:\Users\Igor\AppData\Roaming <<< И есть ли вероятность что какая нибудь из OS семейства Windows вернет C:\Users\Igor\AppData\Roaming\ а не C:\Users\Igor\AppData\Roaming Или вообще не чего не вернет ((( как добиться максимальной совместимости? Дайте пожалуйста ответ, как бы вопрос глупо не звучал.
0
|
05.10.2017, 00:25 | |
Ответы с готовыми решениями:
20
Переменные Среды (Использование готового кода) Переменные среды Windows Переменные среды windows Переменные среды Windows |
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
05.10.2017, 01:48 | 2 |
А для чего вообще вам это нужно? Ну т.е. я имею в виду "переменные среды".
0
|
05.10.2017, 01:57 [ТС] | 3 | |||||
Мне нужна директория C:\Users\Igor\AppData\Roaming
Работать программа будет на разных компьютерах C:\Users\Igor\AppData\Roaming C:\Users\Vasy\AppData\Roaming C:\Users\Pety\AppData\Roaming C:\Users\Алёша\AppData\Roaming Для этого... А там что я буду делать в этой директории... Добавлено через 3 минуты Есть еще функция
Так как мне хотелось бы передавать в качестве аргумента не константу, а для примера %AppData%\Temp\Хрень\ в итоге должно получится C:\Users\Алёша\AppData\Roaming\Temp\Хрень\ Добавлено через 2 минуты Чем больше я погружаюсь в мир программирования для Windows тем больше вопросов бле**** . о_О Всякие не стыковки... У меня все работает, у заказчика нет че за хрень...
0
|
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
05.10.2017, 01:59 | 4 |
0
|
05.10.2017, 02:04 [ТС] | 5 | ||||||||||
Ну у меня констант много, смотрите
Добавлено через 2 минуты я же не передам вот так CSIDL_APPDATA+\Temp\Хрень\ Конечно можно написать свой костыль. Что то типа
Ну это как в командной строке echo %AppData%
0
|
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
05.10.2017, 02:11 | 6 |
Попробуйте обосновать зачем вам именно так нужно?
А я свой предыдущий ответ поместил после прочтения вашего Переменные среды это рудименты эпохи MS DOS. Пока они вроде поддерживаются (не проверял на версиях ОС выше W7). Но если мелкомягкие всё-таки решатся плюнуть на совместимость, то переменные среды, имхо, будут первой жертвой.
0
|
05.10.2017, 02:17 [ТС] | 7 |
%AppData%\Temp\Хрень\ Когда я буду в своей программе составлять некий скрипт, что бы не писать полный относительный путь я буду использовать переменные среды. Я же не телепат что бы узнать какое имя у пользователя (хотя есть некие телепатические способности, можно так же средствами Delphi определить имя пользователя а потом вставить куда нужно, но зачем?) Хочу ограничится %AppData%. Ну если переменные среды совместимы со всеми версиями ОС то это ЗБС.
0
|
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
05.10.2017, 02:29 | 8 |
А зачем вам его знать? ShGetSpeсialFolderPath с параметром CSIDL_LOCAL_APPDATA вернёт вам именно тот путь, который вам нужен. Во всяком случае это не столь древний метод получения пути к стандартным папкам.
Но в любом случае решение за вами. И в случае неудачи, голову отрубят вам
0
|
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
05.10.2017, 02:41 | 10 |
А какая версия ОС вас интересует?
Я могу (благодаря VMware) попробовать "выполнить в консоли echo %AppData%" в W98, WXP, W7 и W10.
0
|
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
05.10.2017, 03:00 | 12 |
Проверил. На W10 работает, о чём я и говорил ранее.
1
|
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
05.10.2017, 03:18 | 14 |
0
|
Житель Земли
|
|
06.10.2017, 09:41 | 15 |
IncludeTrailingPathDelimiter - проверяет и добавляет слэш-разделитель в конец, если его нет
ExcludeTrailingPathDelimiter - проверяет и удаляет слэш-разделитель в конце, если он есть Добавлено через 46 секунд с другой стороны, можно и самому подумать и написать функцию проверки в две строки
0
|
Житель Земли
|
|
06.10.2017, 11:27 | 17 |
жестяк! зачем добавлять символ, чтобы тут же его убрать?
ExtractFilePath ВСЕГДА возвращает путь с разделителем в конце, а разделителем может быть и не слэш (зависит от настроек ОС). в этом плане и IncludeTrailingPathDelimiter оперирует с системным разделителем
0
|
06.10.2017, 11:39 [ТС] | 18 |
Для примера )))
Добавлено через 2 минуты да ладно??? Теоретически это так, но должно быть какое то соглашение, не верю в ерунду, где бы я ни был, везде видел разделитель \ Вы с какой планеты? И какие разделители Вы видели? Добавлено через 1 минуту Да, и скажите еще что Email адрес, что бы отделить домен от имени адреса у Вас используют # ))) Добавлено через 5 минут Да, к стати, идея. Илон Маск колонизирует марс, вот там можно использовать альтернативы, \ заменить на |, а @ на #
0
|
Житель Земли
|
||||||||||||||||
06.10.2017, 11:58 | 20 | |||||||||||||||
возможно, я спутал с другим каким-то разделителем, не отрицаю, но..
1. если есть предопределенные функции, реализующие необходимый функционал, то 2. нахрена создавать даже не костыли, а обрубки костылей, добавляя, а затем убирая один и тот же символ?! Добавлено через 54 секунды вот именно, если кроссплатформенное приложение, то весь твой костыль, popryduhin, сломается с веселым треском Добавлено через 1 минуту а в исходниках делфи указано
Добавлено через 3 минуты Не по теме: кстати, модераторы, баг с подсветкой кода с участием директивы компилятора. ведь значение в кавычках долно отображаться как строковое
0
|
06.10.2017, 11:58 | |
06.10.2017, 11:58 | |
Помогаю со студенческими работами здесь
20
Переменные окружения (среды) Windows XP Переменные среды Windows в строке, считанной из файла Переменные среды Переменные среды - II Переменные среды Переменные среды Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |