169 похожих чатов

Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под

Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и MacOS) и я решил что пора его переделать под Lazarus, чтобы позже уже адаптировать под другие операционные системы кроме винды.
На данный момент в приложении используется FireDac для работы с простой таблицей и модуль System.Zip для работы с архивами, а так же модули для работы с сетью IdFTPCommon, IdFTP, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdBaseComponent, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL,
IdHTTP,
Подскажите какую версию Lazarus мне лучше устанавливать из тех что предложены на официальном сайте:
Windows (32 and 64 Bits) Direct download
Windows (32 Bits) Add ons
Windows (64 Bits)
Windows (64 Bits) Add ons
Мне желательно достигнуть максимальной совместимости с кодом который я уже написал.
Если я правильно понимаю, то мне лучше смотреть на версии Add ons.
И наверное на 64 Bits (хотя мне хотелось бы чтобы программа работала и на 32 битных версиях Винды, но подозреваю что что-то из того что уже написано может не заработать на 32 битной версии Лазаря, а хотелось бы решать проблемы с переносом на Лазарь поэтапно, и получить работающую программу как можно раньше, а потом когда уже немного освоюсь решать проблемы с 32 битами которые как я предполагаю имеются).
Возможно вопросы супер-тупые, но я пока не имел опыта работы ни с Lazarus ни с другими ОС кроме Винды.
Так какую версию лучше ставить в описанной мной ситуации? Windows (64 Bits) Add ons?
Какие могут быть подводные камни?

24 ответов

108 просмотров

Мои советы такие: Stable 64 бит с кроссплатформенностью, настроенной через fpcupdeluxe. https://github.com/LongDirtyAnimAlf/fpcupdeluxe/releases С него и советую устанавливать, тем более кроссплатформенность потребуется почти сразу. ТАкже из 64 битной IDE будешь собирать и 32 битные. Можно установить и 32 битное IDE и там собирать 64 бита. Больше зависит от качества написанного кода в Delphi, как часто там используются различные хаки и низкоуровневые вещи, как много сторонних компонентов. Обычно, конечно код в Delpho пишется так, что как по маслу точно не пройдет. Будь готов, что от некоторх либ возможно придется отказаться и кое-что переписать.

Дмитрий-Завгородний Автор вопроса
Renat Suleymanov
Мои советы такие: Stable 64 бит с кроссплатформенн...

Те что на офф сайте не качать и не ставить?

Дмитрий Завгородний
Те что на офф сайте не качать и не ставить?

Ну если нужна кроссплатформенность, то лучше изначально заюзать этот инсталлятор. Он просто все правильно настроит. Помогает устанавливать несколько версий в систему. С ним удобно устанавливать Lazarus и в другие ОС и если тебе это потребуется, то уже будет знакомый интерфейс.. Он собственно эти версии и будет устанавливать только дополнительно поможет настроить сразу кроссплатформенность. Те что на сайте они на автомате не включают кроссплатформенность. Хотя она может тебе и не нужна? Многие тут кодеры на каждую целевую ОСь ставят Lazarus и собирают на каждой целевой. Варианты могут быть разными. Я собираю все на одной ОСи

Renat Suleymanov
Ну если нужна кроссплатформенность, то лучше изнач...

Тут некоторые не любят fpcupdeluxe и выступают за ручную настройку всего и вся. Я же покаываю как проще: заюзай fpcupdeluxe )

Дмитрий-Завгородний Автор вопроса
Renat Suleymanov
Ну если нужна кроссплатформенность, то лучше изнач...

Ну так как у меня опыта НОЛЬ, то я думал под каждой осью ставить Лазарус и тестировать соответственно. Ну не под одной осью все версии билдить. Я просто не опытный в этом плане и мне надо что-то у чего порог входа пониже. А компы со всеми осями целевыми есть. К тому же программа у меня будет не одна - это комплекс с серверной частью, агентами и Клиентской чатсью и надо чтобы все под всеми осями работало. Так что я думаю билдить все чисто под одной осью мне наверное слишком сложно будет (ну наверное я слишком глупый для этого, или просто нет пока понимания как это может быть)

Дмитрий Завгородний
Ну так как у меня опыта НОЛЬ, то я думал под каждо...

В Лазарусе кросскомпиляция делается очень просто: переключаешь в настройках проекта целевую платформу и ОСь. Ну или даже вынести это в режимы компиляции. Но можно и как ты предлагаешь. Да, для начала импортируй в Lazarus и пусть это заработает в одной ОС, потом отрефакторишь, чтобы работало на всех

Дмитрий-Завгородний Автор вопроса
Renat Suleymanov
В Лазарусе кросскомпиляция делается очень просто: ...

В общем лучше как я понимаю пока поставить дефолтный вариант под винду 64 Windows (64 Bits) Add ons? А потом как освоюсь попробовать кроссплатформенную систему?

Стикер

С MacOS лучше не связываться. Мало кто из разработчиков компонентов на нём что-то проверяет. Если проект разбит на EXE и DLL/BPL, то лучше рассмотреть возможность всё вкомпилить в EXE-файл, иначе столкнётесь с огромной грудой геммороя. Насчёт Stable-версии - у неё хорошая совместимость с Delphi 2007. И строки такие же 1-байтные, поэтому проблем почти нет. Насчёт Tokyo наверно сложнее будет. Компоненты Indy для Лазаруса имеются. Много чего есть. Но FireDac нет. Читайте статью от Константина Тимофеева (на гит-хабе) по портированию приложения в Лазарус. Перед портированием сперва максимально доработайте его в Delphi, чтобы избавиться от компонентов, которые недоступны в Лазарусе.

Дмитрий Завгородний
В общем лучше как я понимаю пока поставить дефолтн...

Слона едят по частям. Да, можно и дефолтны вариант с сайта. Хотя fpcupdeluxe несложный инсталлятор в целом. Можно и с ним сразу. Он будет собирать IDE и FPC из исходников и добавлять нужные бинарники для кросскомпиляции и делать конфиги правильные

zamtmn
что значит »Add ons ты похоже гдето слева качаешь

Не там реально так на сайте написано. Сейчас проверил ) Давно не качал дистриба с офф. сайта )

Попробуйте кстати код-тайфун использовать, возможно в нём конвертер приложений работоспособный. В Лазарусе конвертер абсолютно беспомощный, даже пробовать смысла нет, только время тратить.

Дмитрий Логинов
Попробуйте кстати код-тайфун использовать, возможн...

А я бы не рекомендовал ТАйфун. Не нужно приучать к нему с нуля. Потом отучаться придется

Renat Suleymanov
А я бы не рекомендовал ТАйфун. Не нужно приучать к...

Я не то чтобы рекомендую (сам не пользуют). Но попробовать можно. Вдруг там всё автоматом делается :)

Дмитрий Логинов
Я не то чтобы рекомендую (сам не пользуют). Но поп...

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

Дмитрий-Завгородний Автор вопроса
Renat Suleymanov
Слона едят по частям. Да, можно и дефолтны вариант...

Простите за тупой вопрос, но я не понимаю - тут надо все качать?

Дмитрий-Завгородний Автор вопроса

Ну у меня три ноута. Два на х86 с парой ссд (и ОС) каждый и ну и Мак на М1

Дмитрий-Завгородний Автор вопроса

Ну 32 правда действительно нет. Вы правы - не со всеми осями. Просто на одном ноуте 11 на другом 10 винда (столкнулся с тем что в 11 некоторые вещи не так работают как в 10)

Дмитрий-Завгородний Автор вопроса
🥓 Хамон Эврибади
почему не виртуальные машины (кроме мака)?

Ну просто они уже есть , но виртуалки тоже по необходимости юзаю

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта