Страница 1 из 2

Чем Кроссплатформенно заменить выявление системных путей ???

СообщениеДобавлено: 20.03.2012 17:26:35
vitaly_l
В windows использую: SHGetSpecialFolderPath - это нужно для определения системных директорий и ещё реестр.
Кроссплатформенно - это нельзя...

Чем Кроссплатформенно заменить (выявление системных путей) ???
В windows я использую ProgramFiles и AppData(users)...

Задача такая:
1) в ProgramFiles - лежит программа.
2) в AppData(users) - лежат файлы пользователей. Можно ли их класть в GetAppConfigDir??? или в других системах есть аналог AppData(users) ???

Нужно аналоги |ProgramFiles и Users| Есть ли кросплатформенные функции?

Заранее благодарен за ответы.

Re: Чем Кроссплатформенно заменить выявление системных путей

СообщениеДобавлено: 20.03.2012 19:19:56
Ism
GetCurrentDir - текущая директория
GetUserDir - папка пользователя

Program files не нужно, достаточно GetCurrentDir

Re: Чем Кроссплатформенно заменить выявление системных путей

СообщениеДобавлено: 20.03.2012 19:43:08
vitaly_l
GetCurrentDir... не подходит... (но как вариант СПАСИБО).
програма в расчёте на пользователей, которые вообще не понимают, что такое диск...

GetUserDir - возвращает, то что нужно(спасибо)... Вот только я не знаю, что это будет значить в других системах(не windows)???
Например, указание: Path := GetUserDir + '\MyDirectoryName'; - будет ли корректно в МАС и Линукс,
если я туда запишу рабочую программу??? И как её увидят другие пользователи??? Соответственно нужен путь наподобии ProgramFiles...

Если я неправ - прошу скорректировать... (я никогда не видел линукс - скачиваю посмотреть...)

Re: Чем Кроссплатформенно заменить выявление системных путей

СообщениеДобавлено: 20.03.2012 20:09:08
alexs
vitaly_l
Не испольуй разделитель каталогов.
Есть константа PathDelemiter - она для каждой ОС корректна.

Re: Чем Кроссплатформенно заменить выявление системных путей

СообщениеДобавлено: 20.03.2012 20:15:26
vitaly_l
alexs писал(а):PathDelemiter

Большое человеческое: СПАСИБО! - добрый alexs.

нужна "уникальная" функция возвращающая, во всех системах: путь - наподобии ProgramFiles...

Re: Чем Кроссплатформенно заменить выявление системных путей

СообщениеДобавлено: 21.03.2012 00:34:44
alexs
А в чём дело?
В винде - PF\Имя твоей программы
в линухах USR/BIN и USR/Имя твоей программы
А вообще - ExtractFilePath(ParamStr(0)) - и ты знаешь, откуда твоя программа запущена.

Re: Чем Кроссплатформенно заменить выявление системных путей

СообщениеДобавлено: 21.03.2012 01:42:41
vitaly_l
Дело в простом, я кроме windows: других систем - не видел...
Всё что мне нужно - это проинсталлировать файлы в ХХХ директорию и сделать ярлык для запуска(я так думаю)...
остальное должно работать, благодаря Лазарус, (я так думаю) или я ложно понимаю понятие: кроссплатформенное приложение...

Поэтому и спрашиваю универсальную функцию, которая вернёт путь, не только для Linux, но и для MAC:
:?: Должна быть такая функция(я так думаю)... Иначе как инсталляторы определяют куда и что???
В общем я запутался, сейчас установил ubuntu и скачиваю для неё лазарус... завтра всё прояснится (для меня)...

Re: Чем Кроссплатформенно заменить выявление системных путей

СообщениеДобавлено: 21.03.2012 11:52:10
WAYFARER
vitaly_l писал(а):Поэтому и спрашиваю универсальную функцию, которая вернёт путь, не только для Linux, но и для MAC:
Должна быть такая функция(я так думаю)... Иначе как инсталляторы определяют куда и что???

В каждой операционной системе используется своя система управления пакетами для установки ПО. Существуют свои стандарты.
Для начала почитайте о структуре каталогов Linux
http://itshaman.ru/articles/10/directory-linux

PS. В линукс вам нужно определить лишь папку пользователя(переменная $HOME), все остальные пути - абсолютные и неизменные

Re: Чем Кроссплатформенно заменить выявление системных путей

СообщениеДобавлено: 21.03.2012 18:56:46
vitaly_l
Узнал что в линуксе, exe запускается только под WINE,
Насколько я понимаю WINE - это эмуляция windows? -
значит архитектуру windows(для инсталлятора), можно сохранить???
Так ли это, может ли линукс проинсталировать у себя приложение для windows и запустить???

Re: Чем Кроссплатформенно заменить выявление системных путей

СообщениеДобавлено: 21.03.2012 19:47:20
WAYFARER
vitaly_l писал(а):Насколько я понимаю WINE - это эмуляция windows? -

Wine есть реализация WinAPI для *nix
vitaly_l писал(а):Так ли это, может ли линукс проинсталировать у себя приложение для windows и запустить???

Может. Но это приведет к тому что вашей программой никто не будет пользоваться.
У вас есть кроссплатформенный инструмент - Lazarus, что мешает собрать бинарник для Linux?

Re: Чем Кроссплатформенно заменить выявление системных путей

СообщениеДобавлено: 21.03.2012 22:26:18
vitaly_l
WAYFARER писал(а):У вас есть кроссплатформенный инструмент - Lazarus, что мешает собрать бинарник для Linux?

Что мешает, что мешает...
Я никогда не видел линукс...
Но это легко исправить...
Сегодня, установил линукс... (всё кроме web и половины Русского языка - работает...)
Там в линуксе - всё иначе...
Сложнее всего отключить моторику нажатия правой кнопки мышки...
Попытался установить лазарус …...
И осознал, что именно хотел сказать, Крылов когда писал басню: "Мартышка и очки"...

Я его распаковал в директорию home/// он запускается и даже открывает мой проект, но требует fpc...
Короче, Лазарус мне установить не удалось, Я ему указываю путь к fpc, а он говорит, что там должна быть rtl
и исполняемые файлы, а в архиве только одна директория bin\lib\fpc... но лазарус её не признаёт...

А мой экзешник созданный в windows: линукс - за программу вообще не считает...
Линукс для меня - совсем чужая система... :(
обидно до слёз... :( :oops: :cry:

Что Вы называете бинарником??,

Re: Чем Кроссплатформенно заменить выявление системных путей

СообщениеДобавлено: 21.03.2012 23:14:47
kosteek
vitaly_l писал(а):Я ему указываю путь к fpc, а он говорит, что там должна быть rtl

Нужно доустановить пакет fpc-source
Если у тебя ubuntu то в терминале набери
Код: Выделить всё
sudo apt-get install fpc-source

Re: Чем Кроссплатформенно заменить выявление системных путей

СообщениеДобавлено: 21.03.2012 23:14:57
WAYFARER
vitaly_l писал(а):Сегодня, установил линукс... (всё кроме web и половины Русского языка - работает...)

Следует доустановить пакеты локализации
Какой дистрибутив стоит?
vitaly_l писал(а):Попытался установить лазарус …...

Попробуйте установить из репозитария
vitaly_l писал(а):А мой экзешник созданный в windows: линукс - за программу вообще не считает...

и не должен))
vitaly_l писал(а):Что Вы называете бинарником??,

В данном случае исполняемый файл, программу

vitaly_l писал(а):Линукс для меня - совсем чужая система...
обидно до слёз...


Освоитесь, ничего сложного.

Re: Чем Кроссплатформенно заменить выявление системных путей

СообщениеДобавлено: 21.03.2012 23:42:30
vitaly_l
WAYFARER писал(а):всё кроме web и половины Русского языка - работает..

Я ему всё прописал, но он инет - не видит...
нет инета - нет репозитория (книгу про линукс прочитал)...

WAYFARER писал(а):Освоитесь, ничего сложного.

Да, там нет ничего сложного, он мне даже понравился, там есть программы, которые я люблю...
и организация очень простая и доступная... самое забавное, он планшет сам определил... windows7 - этого не умеет...
Вот только, инет не хочет подключить всё вроде ему указал, а он никак...

fpc можно скачать в виде архива и разархивировать в home???

Re: Чем Кроссплатформенно заменить выявление системных путей

СообщениеДобавлено: 21.03.2012 23:48:25
kosteek
vitaly_l какую вы операционную систему linux поставили?