Мультиплатформенность

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Мультиплатформенность

Сообщение S_Gur » 05.09.2019 22:15:23

Господа, в очередной раз прошу помощи. Я сейчас пишу приложение, которое должно работать и под виндами и под линуксом. Возник вопрос - как узнать, какие компоненты и функции Лазаруса мультиплатформенные, а какие - специфичные. Например, TTrayIcon - можно ли его использовать и там и там?
S_Gur
постоялец
 
Сообщения: 130
Зарегистрирован: 30.12.2018 22:17:42

Re: Мультиплатформенность

Сообщение Vadim » 06.09.2019 04:15:20

S_Gur
В большинстве случаев компненты работают в разных ОС вполне удовлетворительно. Про TTrayIcon в контексте ОС говорить несколько легкомысленно, т.к. сама Linux иконками вообще не занимается, ими занимается графическая оболочка (ГО). И вот здесь уже всё зависит от реализации системного трея. Разработчики постарались засунуть в компонент процедуры для разных общеупотребительных ГО (KDE, Gnome, IceWM), но как компонент будет работать в Вашем конкретном случае - это только проверка на месте. Например, я делал полупрозрачные окошки для сообщений пользователю. В Плазме всё отлично работает, в Xfce тоже, в OpenBox - приходи кума любоваться, никакой прозрачности. В интернете прочитал, что в этой ГО прозрачность вообще отключена. Попробовал парочку советов, как её задействовать, но ничего не получилось.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Мультиплатформенность

Сообщение S_Gur » 06.09.2019 07:36:39

Vadim, честно говоря, меня беспокоит не столько то, что та или иная функция не будет работать, сколько то, что программа не скомпилируется потом под линуксом. Падение программы в трей можно отключить, а вот перепахивать полпроекта для переноса в линукс меня ломает, хотелось бы сразу использовать только то, что потом соберется в линуксовом лазарусе. Насколько я понимаю, набор компонент по умолчанию при инсталляции лазаруса одинаковый что под линуксом, что под виндами? Или есть различия?
S_Gur
постоялец
 
Сообщения: 130
Зарегистрирован: 30.12.2018 22:17:42

Re: Мультиплатформенность

Сообщение Vadim » 06.09.2019 10:18:30

S_Gur
Компоненты Lazarus - это только верхний уровень, с которым общается программист. Для любых ОС он всегда одинаков. Вся конкретика работы с той или иной ОС спрятана глубоко внутри и программисту недоступна. Если Вы напрямую не используете те или иные ОС-зависимые функции, то программа компилироваться будет где угодно.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Мультиплатформенность

Сообщение serbod » 06.09.2019 11:12:21

Основные различия - в структуре файловой системы. Но если работать только с "домашней папкой пользователя", то разницы особо нет.

Есть еще ощутимые различия по шрифтам, на одной и той же форме текст может не влезать в кнопки/колонки.

Есть нюанс с многопоточностью, нужно обязательно добавить в начало проекта волшебные строки. Но вроде сейчас Lazarus это автоматом делает.

Есть странности при редактировании текста под линуксом. Это тараканы линукса - настроек клавиатуры, кодировки, итд..

В остальном разницы особой нет, все компилируется и работает. Внешний вид контролов это фигня, он и на одной и той же ОС может отличаться.
Аватара пользователя
serbod
постоялец
 
Сообщения: 449
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

Re: Мультиплатформенность

Сообщение olegy123 » 07.09.2019 07:41:16

S_Gur писал(а):честно говоря, меня беспокоит не столько то, что та или иная функция не будет работать, сколько то, что программа не скомпилируется потом под линуксом.
Создатели стараются Lazarus сделать мультиплатформенным, на сколько их хватает сил,времени и компетенции.
Как правило Форма, стандартные элементы и работа с данными - там проблем не должно возникнуть.
Трей-иконка не входит в базовый пакет, поэтому никто не скажет о гарантиях, тем более что в линуксе зоопарк всяких оконных менеджеров, например twm - там одна консоль. Поэтому говорить нельзя о том что в линуксе проги написаные в KDE могут не заработать везде..
есть какой-то обмен между Gnome <-> KDE, в них там можно быть как-то уверенным что заработает.

Добавлено спустя 4 минуты 14 секунд:
есть оконные менеджеры основанные на gtk(Gnome), но есть ли у них "панель управления" и можно ли разместить трейиконку на ней ?
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Мультиплатформенность

Сообщение S_Gur » 07.09.2019 07:47:41

PortCaption

Что значит "Не входит в базовый пакет?" Под виндами она как раз находится в базовом пакете. Я выше задавал вопрос - есть ли разница в составе базовых пакетов под виндовс и линукс
S_Gur
постоялец
 
Сообщения: 130
Зарегистрирован: 30.12.2018 22:17:42

Re: Мультиплатформенность

Сообщение Снег Север » 07.09.2019 08:24:30

S_Gur, вам проще было бы поставить лазаря под линукс (на виртуалке, например), и посмотреть самому. У меня на virtualbox стоит linux mint mate, там в лазаре и компонент есть, и иконка показывается. Но за весь зоопарк линуксов, конечно, сказать нельзя.

Добавлено спустя 42 минуты 3 секунды:
olegy123 писал(а):Трей-иконка не входит в базовый пакет

входит
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3038
Зарегистрирован: 27.11.2007 16:14:47

Re: Мультиплатформенность

Сообщение S_Gur » 07.09.2019 09:10:13

Снег Север, насколько я помню, у Лазаруса только два вида инсталляторов под Линукс: DEB и RPM. Я на текущий момент и сам не знаю, какой именно из всего зоопарка линуксов мы будем использовать. Соответственно, и непонятно, на каком из них смотреть. Меня интересует только одно: будет ли после инсталляции Лазаруса тот или иной компонент в палитре и не придется ли мне писавшийся как минимум несколько недель под виндами проект при переносе под линукс допиливать еще неделю, вычищая компоненты, которые линуксовая версия не имеет по определению. Будет ли оно работать под конкретным линуксом правильно или нет - это вопрос уже второй. Я хочу знать, отличается ли установленная под разные операционки одна и та же версия Лазаруса набором компонентов или нет. Если этой информации нигде нет, то придется разбираться методом научного тыка, но такие эксперименты занимают время. В любом случае, спасибо за ответ
S_Gur
постоялец
 
Сообщения: 130
Зарегистрирован: 30.12.2018 22:17:42

Re: Мультиплатформенность

Сообщение Снег Север » 07.09.2019 11:11:03

linux mint - форк убунту, там DEB. Компонент есть.
Раз вам надо широкую совместимость, то я бы поставил на виртуалку несколько наиболее популярных разновидностей линукса, на них - лазарь, и проверял.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3038
Зарегистрирован: 27.11.2007 16:14:47

Re: Мультиплатформенность

Сообщение debi12345 » 07.09.2019 19:08:18

Трей-иконка не входит в базовый пакет, поэтому никто не скажет о гарантиях,

В Xorg-е tray-API практически стандартизовано, все современные линёвые десктоп-менджеры этого стандарта придерживаются, поэтому проблем в этом месте быть не должно
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Мультиплатформенность

Сообщение zoltanleo » 09.09.2019 20:34:33

S_Gur
в Object Inspector Лазаря есть вкладка "Restricted"(ограничения).
Изображение

Можно посмотреть туда
Последний раз редактировалось zoltanleo 10.09.2019 00:47:32, всего редактировалось 1 раз.
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 458
Зарегистрирован: 17.10.2013 10:55:01

Re: Мультиплатформенность

Сообщение S_Gur » 09.09.2019 23:51:00

zoltanleo, спасибо, не знал. Буду иметь в виду
S_Gur
постоялец
 
Сообщения: 130
Зарегистрирован: 30.12.2018 22:17:42


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 15

Рейтинг@Mail.ru