Переход на Lazarus
От: sfsoft Россия  
Дата: 25.08.23 09:07
Оценка:
Я знаю, что некоторые здесь используют Лазаря в разработке (тот же Чёрный Властелин). Расскажите, как у вас это получается? Уже месяц потрачен на эту поделку, там вообще нифига не работает. Какие-то рандомные ошибки постоянно валятся, FPC через раз компилирует проект. Может просто перестать это делать с сообщениями типа "Error: Undefined symbol: .Lj3850". Причем решение проблем вообще не гуглится...

Может я что-то делаю не так? Подскажите, пожалуйста, знающие люди.

P.S. Проект написан на Delphi, ему около 20 лет. Используются почти все современные фичи Delphi (дженерики, атрибуты, расширенный RTTI и прочее). Понятно, что от чего-то придётся отказаться, но не от всего же! )))
Re: Переход на Lazarus
От: nmd  
Дата: 25.08.23 09:20
Оценка:
Здравствуйте, sfsoft, Вы писали:


S>P.S. Проект написан на Delphi, ему около 20 лет. Используются почти все современные фичи Delphi (дженерики, атрибуты, расширенный RTTI и прочее). Понятно, что от чего-то придётся отказаться, но не от всего же! )))


Зачем тогда на Lazarus переходить, если можно Delphi CE использовать. Linux на столько нужен?
Re[2]: Переход на Lazarus
От: sfsoft Россия  
Дата: 25.08.23 09:28
Оценка:
Здравствуйте, nmd, Вы писали:

nmd>Зачем тогда на Lazarus переходить, если можно Delphi CE использовать. Linux на столько нужен?


Да, нужен Linux. Часть заказчиков добровольно-принудительно уходит с Windows.
Re: Переход на Lazarus
От: Khimik  
Дата: 25.08.23 09:38
Оценка:
Здравствуйте, sfsoft, Вы писали:

S>Я знаю, что некоторые здесь используют Лазаря в разработке (тот же Чёрный Властелин). Расскажите, как у вас это получается? Уже месяц потрачен на эту поделку, там вообще нифига не работает. Какие-то рандомные ошибки постоянно валятся, FPC через раз компилирует проект. Может просто перестать это делать с сообщениями типа "Error: Undefined symbol: .Lj3850". Причем решение проблем вообще не гуглится...


S>Может я что-то делаю не так? Подскажите, пожалуйста, знающие люди.


S>P.S. Проект написан на Delphi, ему около 20 лет. Используются почти все современные фичи Delphi (дженерики, атрибуты, расширенный RTTI и прочее). Понятно, что от чего-то придётся отказаться, но не от всего же! )))


Я нашёл программиста, который перевёл мой проект на Lazarus и скомпилировал его под Linux и Mac. Могу дать его контакты (он с другого форума программистов). В целом результатом доволен, хотя много багов, которых мы ещё не устранили. Приятный момент — Windows версия моей программы, скомпилированная на Lazarus, в чём-то работает лучше основной версии (там не проявился баг о котором я написал в этой теме
Автор: Khimik
Дата: 13.06.23
). В то же время я убедился, что Lazarus та ещё хрень, много странных проблем, например сейчас у меня перестал компилироваться этот Windows билд моей программу, жду когда тот программист выйдет из отпуска. Вначале я думал перейти с Delphi на Lazarus, а потом передумал, теперь планирую раз в два года отдавать исходники этому программисту на портирование.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Отредактировано 25.08.2023 9:41 Khimik . Предыдущая версия .
Re[2]: Переход на Lazarus
От: sfsoft Россия  
Дата: 25.08.23 09:44
Оценка:
Здравствуйте, Khimik, Вы писали:

K>Могу дать его контакты (он с другого форума программистов).


Не нужно, спасибо. Это у тебя специализация основная другая.
Re: Переход на Lazarus
От: PeterOne  
Дата: 25.08.23 10:35
Оценка: 4 (2) +1
Здравствуйте, sfsoft, Вы писали:

S>Я знаю, что некоторые здесь используют Лазаря в разработке (тот же Чёрный Властелин). Расскажите, как у вас это получается? Уже месяц потрачен на эту поделку, там вообще нифига не работает. Какие-то рандомные ошибки постоянно валятся, FPC через раз компилирует проект. Может просто перестать это делать с сообщениями типа "Error: Undefined symbol: .Lj3850". Причем решение проблем вообще не гуглится...


S>Может я что-то делаю не так? Подскажите, пожалуйста, знающие люди.


Я окончательно перешел с Delphi на Lazarus/FPC почти 4 года назад. И совершенно счастлив. Проект большой, старый, портировал его долго (не спеша). Два года назад доделал Mac версию (по сути код почти весь общий, кроме особенностей Mac версии).

Продукт работает стабильно у клиентов, ошибок больше не стало, скорее меньше багов. Но это может следствие большего опыта разработки.

Насчет Вашей ошибки. Не сталкивался. Попробуйте поискать, например здесь:
https://forum.lazarus.freepascal.org/index.php?topic=59581.0

Современные фичи Delphi не использую, просто не нужны (дженерики, атрибуты, расширенный RTTI и прочее).
Давно придерживаюсь принципа — чем проще, тем надежнее код.

Важный момент. В Lazarus/FPC ограничьте уровень оптимизации кода на O2, где-то в настройках проекта задается.

Еще очевидный момент, ставьте в модулях режим для наилучшей совместимости со старым Delphi кодом:
{$ifdef fpc}{$mode delphi}{$endif}

Да, у Лазаруса есть недоработки, недостатки, но их постепенно исправляют. Продукт тем более бесплатный. Хорошее сообщество, где вам помогают с ответами на их форуме.
От Delphi принял решение отказаться, когда увидел куда идет разработка — Firemonkey формы. Еще в 2014-2015 году протестировал работу контролов на Firemonkey — одни сплошные визуальные глюки и баги с отрисовкой интерфейса даже простейшего приложения. Проверил через 2 года — проблемы так и не исправили. Поэтому решил переползать на Лазарус. Время показало, что решение было правильным.
Отредактировано 25.08.2023 10:39 PeterOne . Предыдущая версия .
Re[2]: Переход на Lazarus
От: sfsoft Россия  
Дата: 25.08.23 10:57
Оценка:
Здравствуйте, PeterOne, Вы писали:

PO>Насчет Вашей ошибки. Не сталкивался. Попробуйте поискать, например здесь:

PO>https://forum.lazarus.freepascal.org/index.php?topic=59581.0

Я видел этот пост, предложенное решение выключить оптимизацию не помогло.

PO>Современные фичи Delphi не использую, просто не нужны (дженерики, атрибуты, расширенный RTTI и прочее).

PO>Давно придерживаюсь принципа — чем проще, тем надежнее код.

Дело не в простоте, а в удобстве. Намного лучше и нагляднее писать List[I].Value (используя дженерики) вместо TMyObject(List[I]).Value.

PO>Да, у Лазаруса есть недоработки, недостатки.


К сожалению только с ними и сталкиваюсь, хотя возлагал большие надежды на него в самом начале (((
Re[2]: Переход на Lazarus
От: rudzuk  
Дата: 25.08.23 12:11
Оценка: +1
Здравствуйте, nmd, Вы писали:

nmd> Зачем тогда на Lazarus переходить, если можно Delphi CE использовать. Linux на столько нужен?


CE для коммерческого продукта использовать нельзя.
avalon/3.0.2
Re: Переход на Lazarus
От: AWSVladimir  
Дата: 25.08.23 16:44
Оценка: 1 (1)
Здравствуйте, sfsoft, Вы писали:

S>P.S. Проект написан на Delphi, ему около 20 лет. Используются почти все современные фичи Delphi (дженерики, атрибуты, расширенный RTTI и прочее). Понятно, что от чего-то придётся отказаться, но не от всего же! )))


А за чем перейти, если есть вайн-протон?
Да он лучше винды под лином работает.

PS: А лазаря я мучил-мучил и плюнул.
Ну совсем не просто сделать кроссплатформенное приложение win-lin-Android-Mac.
Хотел сделать обыкновенное окошко в котором по нажатию кнопки меняются картинки.
Ну не шмогла я, не шмогла (с)
Re[2]: Переход на Lazarus
От: Khimik  
Дата: 25.08.23 16:48
Оценка:
Здравствуйте, AWSVladimir, Вы писали:

S>>P.S. Проект написан на Delphi, ему около 20 лет. Используются почти все современные фичи Delphi (дженерики, атрибуты, расширенный RTTI и прочее). Понятно, что от чего-то придётся отказаться, но не от всего же! )))


AWS>А за чем перейти, если есть вайн-протон?

AWS>Да он лучше винды под лином работает.

Что такое вайн-протон? Покажите ссылку.
Я на своём сайте даю ссылки на CrossOver и Parallels (платные аналоги Wine).
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re[3]: Переход на Lazarus
От: temnik Россия  
Дата: 25.08.23 16:49
Оценка:
nmd>> Зачем тогда на Lazarus переходить, если можно Delphi CE использовать. Linux на столько нужен?

R>CE для коммерческого продукта использовать нельзя.


Можно. Ограничен только размер дохода.
Лучший хостинг от 4 евро, VPS от 6 евро, разные локации, оплата картами без проблем, скидки до 20%.
50 бесплатных смс
Re: Переход на Lazarus
От: rudzuk  
Дата: 25.08.23 18:00
Оценка:
Здравствуйте, sfsoft, Вы писали:

s> Может я что-то делаю не так? Подскажите, пожалуйста, знающие люди.


s> P.S. Проект написан на Delphi, ему около 20 лет. Используются почти все современные фичи Delphi (дженерики, атрибуты, расширенный RTTI и прочее). Понятно, что от чего-то придётся отказаться, но не от всего же! )))


Ну хз, что ты там делаешь. Может, как кхимик, с разбега пытаешься головой дверь открыть А нужно постепенно, по частям, кушать этого мамонта.
avalon/3.0.2
Re[2]: Переход на Lazarus
От: rudzuk  
Дата: 25.08.23 18:00
Оценка:
Здравствуйте, AWSVladimir, Вы писали:

AWS> Хотел сделать обыкновенное окошко в котором по нажатию кнопки меняются картинки.

AWS> Ну не шмогла я, не шмогла (с)

Это талант. Или карма.
avalon/3.0.2
Re[4]: Переход на Lazarus
От: rudzuk  
Дата: 25.08.23 18:00
Оценка: +1
Здравствуйте, temnik, Вы писали:

t> nmd>> Зачем тогда на Lazarus переходить, если можно Delphi CE использовать. Linux на столько нужен?


t> R>CE для коммерческого продукта использовать нельзя.


t> Можно. Ограничен только размер дохода.


Ога, потолок в пять килобаксов в год. У нас, определенно, разные представления о коммерческом продукте.
avalon/3.0.2
Re[3]: Переход на Lazarus
От: AWSVladimir  
Дата: 25.08.23 19:59
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>Это талант. Или карма.


У самого куплена делфя + куча библиотек, но хотел поюзать лазаря.
Готовой инструкции "step by step" нет.
На линуксе не завелось, на винде тоже.
Логически все просто как 2 пальца.
2 компонента на форме и одно событие на кнопке. вот и все приложение.
Хренас там сделать все легко и просто, что бы приложение компилилось для разных платформ.
Покажи инструкцию как сделать?
Re[3]: Переход на Lazarus
От: AWSVladimir  
Дата: 25.08.23 20:05
Оценка:
Здравствуйте, Khimik, Вы писали:

K>Что такое вайн-протон? Покажите ссылку.

K>Я на своём сайте даю ссылки на CrossOver и Parallels (платные аналоги Wine).
https://linux-gaming.ru/2022/11/24/portproton/

Под протоном Atomic Heart гоняю на нуте, на максималках FullHD+ 20% нагрузки нет.
Делфийские проги в девками на ура работают. В стандартном вайне девок хрен запустишь.
Отредактировано 25.08.2023 20:06 AWSVladimir . Предыдущая версия .
Re[2]: Переход на Lazarus
От: sfsoft Россия  
Дата: 25.08.23 20:08
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>Ну хз, что ты там делаешь. Может, как кхимик, с разбега пытаешься головой дверь открыть


Нет, вполне себе по частям. Взял несколько юнитов из рабочего проекта (не соврать бы, штук пять), закомментировал все обращения к другим либам и вперед. Падает, сцука. Причем ничего необычного там нет, обращение к СУБД через IBX (который для FPC собран добрыми людьми) и многопоточность. В общем ключевая часть сервера приложений без обвязки всякими функциями. И никак.

Пробовал другую часть приложения скомпилить — те же яйца, только в профиль.
Re[4]: Переход на Lazarus
От: rudzuk  
Дата: 25.08.23 20:54
Оценка:
Здравствуйте, AWSVladimir, Вы писали:

AWS> Готовой инструкции "step by step" нет.


Есть вики: https://wiki.freepascal.org/

AWS> На линуксе не завелось, на винде тоже.

AWS> Логически все просто как 2 пальца.
AWS> 2 компонента на форме и одно событие на кнопке. вот и все приложение.
AWS> Хренас там сделать все легко и просто, что бы приложение компилилось для разных платформ.
AWS> Покажи инструкцию как сделать?

Откройте для себя https://github.com/LongDirtyAnimAlf/fpcupdeluxe

1. Установите Lazarus + FPC
2. Установите кросс-компиляторы для нужных таргетов
3. В настройках проекта создайте режимы сборки под таргеты
4. ENJOY!
avalon/3.0.2
Re[3]: Переход на Lazarus
От: rudzuk  
Дата: 25.08.23 20:54
Оценка:
Здравствуйте, sfsoft, Вы писали:

s> R>Ну хз, что ты там делаешь. Может, как кхимик, с разбега пытаешься головой дверь открыть


s> Нет, вполне себе по частям. Взял несколько юнитов из рабочего проекта (не соврать бы, штук пять), закомментировал все обращения к другим либам и вперед. Падает, сцука. Причем ничего необычного там нет, обращение к СУБД через IBX (который для FPC собран добрыми людьми) и многопоточность. В общем ключевая часть сервера приложений без обвязки всякими функциями. И никак.


Блин, вот кхимик тоже говорит, что у него ничего необычного в коде нет, он просто падает (только у него Delphi). Но так же не бывает, мужчины. Если есть падение, значит есть причина. Выяснять нужно в чем дело. И в первую очередь избавиться от кода собранного добрыми людьми.

s> Пробовал другую часть приложения скомпилить — те же яйца, только в профиль.


Расскажу о своем опыте. Сейчас у меня один небольшой проект на Lazarus, писавшийся сразу на FPC + Lazarus. Там многопоток активно работающий с гуем и внешними библиотеками (.dll). Проблем ровно ноль. Есть опыт переноса большого проекта без гуя на Free Pascal. Благодаря абстрагированной RTL первую компилируемую сборку удалось получить спустя час. Ну а всякие мелкие утилиты помогающие в работе только в Lazarus и делаю. Для работы с FB использовал и родные компоненты и UIB.
avalon/3.0.2
Re: Переход на Lazarus
От: Черный 😈 Властелин Австралия https://www.softperfect.com
Дата: 25.08.23 22:07
Оценка: 3 (1) +2
Здравствуйте, sfsoft, Вы писали:

S>Я знаю, что некоторые здесь используют Лазаря в разработке (тот же Чёрный Властелин).

S>Может я что-то делаю не так? Подскажите, пожалуйста, знающие люди.

К тому что уже написали, возможно, дело в том что в официальной поставке лазаруса идет довольно старый компилятор V3.2.2 в котором немало багов исправленныx в 3.2.3. И также в оптимизациях выше /O2 есть баги, используйте /O2 или /O1.

Лучше использровать https://github.com/LongDirtyAnimAlf/fpcupdeluxe/releases и кроссплатформу собирать прямо там. Как это делаю я:

1) Качаем fpcupdeluxe-i386-win32.exe, именно 32-битную версию, тк есть какие-то заморочки кросс-сборкой с 64-бит версией связаные с softfloat.
2) Ставим FPC FIXES 3.2 и LAZARUS TRUNK (скоро выйдет LAZARUS 3.0 и появится FIXES 3.0)
3) Он скомпилирует Лазарус для 32-бит и 64-бит Windows.
4) Идем на закладку Cross и доустанавливаем x86_64/linux, aarch64/linux, x86_64/darwin, aarch64/darwin.
5) Он соберет кросс-компиляторы для этих платформ.
6) Доустанавливаем пакеты с закладки Modules, в частости я ставлю virtualtreeview и bgrabitmap, это добавит кросс-платформенное дерево-список и работу с графикой с альфой и всякими крутыми штуками для рисования.

Ну и собсно все. При переносе с Delphi, сначала добиваемся работоспособности под виндой, добавляем {$MODE DELPHI}, фиксим баги. Затем добавляем нужные платформы и IFDEF-ы и можем прямо с нашей виндовой машины собирать под все платформы.

Если используете линух, все тоже самое, только качаем линуксовую версию, а в Cross ставим i386/windows и x86_64/windows.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.