Я знаю, что некоторые здесь используют Лазаря в разработке (тот же Чёрный Властелин). Расскажите, как у вас это получается? Уже месяц потрачен на эту поделку, там вообще нифига не работает. Какие-то рандомные ошибки постоянно валятся, FPC через раз компилирует проект. Может просто перестать это делать с сообщениями типа "Error: Undefined symbol: .Lj3850". Причем решение проблем вообще не гуглится...
Может я что-то делаю не так? Подскажите, пожалуйста, знающие люди.
P.S. Проект написан на Delphi, ему около 20 лет. Используются почти все современные фичи Delphi (дженерики, атрибуты, расширенный RTTI и прочее). Понятно, что от чего-то придётся отказаться, но не от всего же! )))
S>P.S. Проект написан на Delphi, ему около 20 лет. Используются почти все современные фичи Delphi (дженерики, атрибуты, расширенный RTTI и прочее). Понятно, что от чего-то придётся отказаться, но не от всего же! )))
Зачем тогда на Lazarus переходить, если можно Delphi CE использовать. Linux на столько нужен?
Здравствуйте, sfsoft, Вы писали:
S>Я знаю, что некоторые здесь используют Лазаря в разработке (тот же Чёрный Властелин). Расскажите, как у вас это получается? Уже месяц потрачен на эту поделку, там вообще нифига не работает. Какие-то рандомные ошибки постоянно валятся, FPC через раз компилирует проект. Может просто перестать это делать с сообщениями типа "Error: Undefined symbol: .Lj3850". Причем решение проблем вообще не гуглится...
S>Может я что-то делаю не так? Подскажите, пожалуйста, знающие люди.
S>P.S. Проект написан на Delphi, ему около 20 лет. Используются почти все современные фичи Delphi (дженерики, атрибуты, расширенный RTTI и прочее). Понятно, что от чего-то придётся отказаться, но не от всего же! )))
Я нашёл программиста, который перевёл мой проект на Lazarus и скомпилировал его под Linux и Mac. Могу дать его контакты (он с другого форума программистов). В целом результатом доволен, хотя много багов, которых мы ещё не устранили. Приятный момент — Windows версия моей программы, скомпилированная на Lazarus, в чём-то работает лучше основной версии (там не проявился баг о котором я написал в этой теме
). В то же время я убедился, что Lazarus та ещё хрень, много странных проблем, например сейчас у меня перестал компилироваться этот Windows билд моей программу, жду когда тот программист выйдет из отпуска. Вначале я думал перейти с Delphi на Lazarus, а потом передумал, теперь планирую раз в два года отдавать исходники этому программисту на портирование.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Здравствуйте, sfsoft, Вы писали:
S>Я знаю, что некоторые здесь используют Лазаря в разработке (тот же Чёрный Властелин). Расскажите, как у вас это получается? Уже месяц потрачен на эту поделку, там вообще нифига не работает. Какие-то рандомные ошибки постоянно валятся, FPC через раз компилирует проект. Может просто перестать это делать с сообщениями типа "Error: Undefined symbol: .Lj3850". Причем решение проблем вообще не гуглится...
S>Может я что-то делаю не так? Подскажите, пожалуйста, знающие люди.
Я окончательно перешел с Delphi на Lazarus/FPC почти 4 года назад. И совершенно счастлив. Проект большой, старый, портировал его долго (не спеша). Два года назад доделал Mac версию (по сути код почти весь общий, кроме особенностей Mac версии).
Продукт работает стабильно у клиентов, ошибок больше не стало, скорее меньше багов. Но это может следствие большего опыта разработки.
Современные фичи Delphi не использую, просто не нужны (дженерики, атрибуты, расширенный RTTI и прочее).
Давно придерживаюсь принципа — чем проще, тем надежнее код.
Важный момент. В Lazarus/FPC ограничьте уровень оптимизации кода на O2, где-то в настройках проекта задается.
Еще очевидный момент, ставьте в модулях режим для наилучшей совместимости со старым Delphi кодом:
{$ifdef fpc}{$mode delphi}{$endif}
Да, у Лазаруса есть недоработки, недостатки, но их постепенно исправляют. Продукт тем более бесплатный. Хорошее сообщество, где вам помогают с ответами на их форуме.
От Delphi принял решение отказаться, когда увидел куда идет разработка — Firemonkey формы. Еще в 2014-2015 году протестировал работу контролов на Firemonkey — одни сплошные визуальные глюки и баги с отрисовкой интерфейса даже простейшего приложения. Проверил через 2 года — проблемы так и не исправили. Поэтому решил переползать на Лазарус. Время показало, что решение было правильным.
Я видел этот пост, предложенное решение выключить оптимизацию не помогло.
PO>Современные фичи Delphi не использую, просто не нужны (дженерики, атрибуты, расширенный RTTI и прочее). PO>Давно придерживаюсь принципа — чем проще, тем надежнее код.
Дело не в простоте, а в удобстве. Намного лучше и нагляднее писать List[I].Value (используя дженерики) вместо TMyObject(List[I]).Value.
PO>Да, у Лазаруса есть недоработки, недостатки.
К сожалению только с ними и сталкиваюсь, хотя возлагал большие надежды на него в самом начале (((
Здравствуйте, sfsoft, Вы писали:
S>P.S. Проект написан на Delphi, ему около 20 лет. Используются почти все современные фичи Delphi (дженерики, атрибуты, расширенный RTTI и прочее). Понятно, что от чего-то придётся отказаться, но не от всего же! )))
А за чем перейти, если есть вайн-протон?
Да он лучше винды под лином работает.
PS: А лазаря я мучил-мучил и плюнул.
Ну совсем не просто сделать кроссплатформенное приложение win-lin-Android-Mac.
Хотел сделать обыкновенное окошко в котором по нажатию кнопки меняются картинки.
Ну не шмогла я, не шмогла (с)
Здравствуйте, AWSVladimir, Вы писали:
S>>P.S. Проект написан на Delphi, ему около 20 лет. Используются почти все современные фичи Delphi (дженерики, атрибуты, расширенный RTTI и прочее). Понятно, что от чего-то придётся отказаться, но не от всего же! )))
AWS>А за чем перейти, если есть вайн-протон? AWS>Да он лучше винды под лином работает.
Что такое вайн-протон? Покажите ссылку.
Я на своём сайте даю ссылки на CrossOver и Parallels (платные аналоги Wine).
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
nmd>> Зачем тогда на Lazarus переходить, если можно Delphi CE использовать. Linux на столько нужен?
R>CE для коммерческого продукта использовать нельзя.
Здравствуйте, sfsoft, Вы писали:
s> Может я что-то делаю не так? Подскажите, пожалуйста, знающие люди.
s> P.S. Проект написан на Delphi, ему около 20 лет. Используются почти все современные фичи Delphi (дженерики, атрибуты, расширенный RTTI и прочее). Понятно, что от чего-то придётся отказаться, но не от всего же! )))
Ну хз, что ты там делаешь. Может, как кхимик, с разбега пытаешься головой дверь открыть А нужно постепенно, по частям, кушать этого мамонта.
Здравствуйте, AWSVladimir, Вы писали:
AWS> Хотел сделать обыкновенное окошко в котором по нажатию кнопки меняются картинки. AWS> Ну не шмогла я, не шмогла (с)
Здравствуйте, temnik, Вы писали:
t> nmd>> Зачем тогда на Lazarus переходить, если можно Delphi CE использовать. Linux на столько нужен?
t> R>CE для коммерческого продукта использовать нельзя.
t> Можно. Ограничен только размер дохода.
Ога, потолок в пять килобаксов в год. У нас, определенно, разные представления о коммерческом продукте.
Здравствуйте, rudzuk, Вы писали:
R>Это талант. Или карма.
У самого куплена делфя + куча библиотек, но хотел поюзать лазаря.
Готовой инструкции "step by step" нет.
На линуксе не завелось, на винде тоже.
Логически все просто как 2 пальца.
2 компонента на форме и одно событие на кнопке. вот и все приложение.
Хренас там сделать все легко и просто, что бы приложение компилилось для разных платформ.
Покажи инструкцию как сделать?
Здравствуйте, Khimik, Вы писали:
K>Что такое вайн-протон? Покажите ссылку. K>Я на своём сайте даю ссылки на CrossOver и Parallels (платные аналоги Wine). https://linux-gaming.ru/2022/11/24/portproton/
Под протоном Atomic Heart гоняю на нуте, на максималках FullHD+ 20% нагрузки нет.
Делфийские проги в девками на ура работают. В стандартном вайне девок хрен запустишь.
Здравствуйте, rudzuk, Вы писали:
R>Ну хз, что ты там делаешь. Может, как кхимик, с разбега пытаешься головой дверь открыть
Нет, вполне себе по частям. Взял несколько юнитов из рабочего проекта (не соврать бы, штук пять), закомментировал все обращения к другим либам и вперед. Падает, сцука. Причем ничего необычного там нет, обращение к СУБД через IBX (который для FPC собран добрыми людьми) и многопоточность. В общем ключевая часть сервера приложений без обвязки всякими функциями. И никак.
Пробовал другую часть приложения скомпилить — те же яйца, только в профиль.
Здравствуйте, AWSVladimir, Вы писали:
AWS> Готовой инструкции "step by step" нет.
Есть вики: https://wiki.freepascal.org/
AWS> На линуксе не завелось, на винде тоже. AWS> Логически все просто как 2 пальца. AWS> 2 компонента на форме и одно событие на кнопке. вот и все приложение. AWS> Хренас там сделать все легко и просто, что бы приложение компилилось для разных платформ. AWS> Покажи инструкцию как сделать?
Здравствуйте, sfsoft, Вы писали:
s> R>Ну хз, что ты там делаешь. Может, как кхимик, с разбега пытаешься головой дверь открыть
s> Нет, вполне себе по частям. Взял несколько юнитов из рабочего проекта (не соврать бы, штук пять), закомментировал все обращения к другим либам и вперед. Падает, сцука. Причем ничего необычного там нет, обращение к СУБД через IBX (который для FPC собран добрыми людьми) и многопоточность. В общем ключевая часть сервера приложений без обвязки всякими функциями. И никак.
Блин, вот кхимик тоже говорит, что у него ничего необычного в коде нет, он просто падает (только у него Delphi). Но так же не бывает, мужчины. Если есть падение, значит есть причина. Выяснять нужно в чем дело. И в первую очередь избавиться от кода собранного добрыми людьми.
s> Пробовал другую часть приложения скомпилить — те же яйца, только в профиль.
Расскажу о своем опыте. Сейчас у меня один небольшой проект на Lazarus, писавшийся сразу на FPC + Lazarus. Там многопоток активно работающий с гуем и внешними библиотеками (.dll). Проблем ровно ноль. Есть опыт переноса большого проекта без гуя на Free Pascal. Благодаря абстрагированной RTL первую компилируемую сборку удалось получить спустя час. Ну а всякие мелкие утилиты помогающие в работе только в Lazarus и делаю. Для работы с FB использовал и родные компоненты и UIB.
Здравствуйте, sfsoft, Вы писали:
S>Я знаю, что некоторые здесь используют Лазаря в разработке (тот же Чёрный Властелин). S>Может я что-то делаю не так? Подскажите, пожалуйста, знающие люди.
К тому что уже написали, возможно, дело в том что в официальной поставке лазаруса идет довольно старый компилятор V3.2.2 в котором немало багов исправленныx в 3.2.3. И также в оптимизациях выше /O2 есть баги, используйте /O2 или /O1.
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.