OberonCore https://forum.oberoncore.ru/ |
|
Как получить в ББ локатор домашней директории? https://forum.oberoncore.ru/viewtopic.php?f=1&t=5461 |
Страница 1 из 1 |
Автор: | Иван Денисов [ Четверг, 13 Август, 2015 22:47 ] |
Заголовок сообщения: | Как получить в ББ локатор домашней директории? |
Подскажите как эту проблему решить, пожалуйста. |
Автор: | prospero78 [ Пятница, 14 Август, 2015 08:59 ] |
Заголовок сообщения: | Re: Как получить в ББ локатор домашней директории? |
В python я бы сделал так: import sys print sys.path |
Автор: | Valery Solovey [ Суббота, 15 Август, 2015 23:38 ] |
Заголовок сообщения: | Re: Как получить в ББ локатор домашней директории? |
По крайней мере, в седьмой винде путь к домашней директории можно получить из переменной окружения %USERPROFILE% |
Автор: | Роман М. [ Воскресенье, 16 Август, 2015 07:56 ] |
Заголовок сообщения: | Re: Как получить в ББ локатор домашней директории? |
А как это сделать платформонезависимым способом? |
Автор: | Иван Денисов [ Воскресенье, 16 Август, 2015 10:07 ] |
Заголовок сообщения: | Re: Как получить в ББ локатор домашней директории? |
Valery Solovey писал(а): По крайней мере, в седьмой винде путь к домашней директории можно получить из переменной окружения %USERPROFILE% Получается, если воспользоваться вашим модулем Env, то все достаточно просто. Спасибо. Код: MODULE DiaRegTest;
IMPORT SYSTEM, Log, Files, Env, Views, HostEnv, Converters; PROCEDURE Home*(): Files.Locator; BEGIN RETURN Files.dir.This(Env.Get("USERPROFILE")) END Home; PROCEDURE Do*; VAR loc: Files.Locator; name: Files.Name; conv: Converters.Converter; v: Views.View; BEGIN loc := Home(); name := ""; v := Views.Old(Views.ask, loc, name, conv); IF v # NIL THEN Views.OpenView(v) END; END Do; END DiaRegTest. |
Автор: | Иван Денисов [ Воскресенье, 16 Август, 2015 10:31 ] |
Заголовок сообщения: | Re: Как получить в ББ локатор домашней директории? |
Роман М. писал(а): А как это сделать платформонезависимым способом? Видимо никак, надо для каждой платформы HostEnv иметь свой. |
Автор: | Роман М. [ Понедельник, 17 Август, 2015 13:47 ] |
Заголовок сообщения: | Re: Как получить в ББ локатор домашней директории? |
Иван Денисов писал(а): Роман М. писал(а): А как это сделать платформонезависимым способом? Видимо никак, надо для каждой платформы HostEnv иметь свой. В ББ желательно иметь общий интерфейс для доступа к общепринятым расположениям папок, локали, денежного формата, и пр.: директория данных пользователя, директория данных программ, директория хранения настроек программ nix http://linux.die.net/man/8/pam_env https://help.ubuntu.com/community/EnvironmentVariables#Graphical_desktop-related_variables http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html#basics https://wiki.archlinux.org/index.php/Xdg_user_directories#Creating_custom_directories Windows http://ss64.com/nt/syntax-variables.html Пожалуй, это скорее запрос к сообществу ББ. |
Автор: | Евгений Темиргалеев [ Пятница, 15 Декабрь, 2017 01:33 ] |
Заголовок сообщения: | Re: Как получить в ББ локатор домашней директории? |
Роман М. писал(а): В ББ желательно иметь общий интерфейс для доступа к общепринятым расположениям папок, локали, денежного формата, и пр.: Это всё зависит от того, насколько надо интегрировать ББ с внешней средой. А задачи бывают разные, и далеко не всегда это всё надо.
директория данных пользователя, директория данных программ, директория хранения настроек программ |
Автор: | Евгений Темиргалеев [ Пятница, 15 Декабрь, 2017 01:55 ] |
Заголовок сообщения: | Re: Как получить в ББ локатор домашней директории? |
Было обрадовался -- почему то показалось, что вайн выдаст линуховый домашний каталог. Это для скриптов потребная вещь. Но увы. Зато появился вариант без хука. Можно сравнить. Код: MODULE Mod;
IMPORT Log, WinApi; PROCEDURE GetEnv* (IN name: ARRAY OF CHAR; OUT val: ARRAY OF CHAR); VAR res: INTEGER; BEGIN res := WinApi.GetEnvironmentVariableW(name, val, LEN(val)); IF res = 0 THEN val := ""; Log.String("GetEnv: '" + name + "' не получена"); Log.Ln ELSIF res > LEN(val) THEN val := ""; Log.String("GetEnv: '" + name + "' не влезла"); Log.Ln ELSE ASSERT(res < LEN(val), 100) END END GetEnv; END Mod. ^Q ipuiK426.Exec (* как бы скрипт *) VAR p: ARRAY 256 OF CHAR; Mod.GetEnv("USERPROFILE", p); Log.String(p); Log.Ln ~ |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |