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

Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2

Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64.
При импортировании проекта через меню "Tools \ Delphi conversion \ Convert Delphi Project to Lazarus Project" Лазарус мне закоментил кучу кода, И значительную часть проблем вызывают вот такие комменты:
{uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls;}
На сколько я понимаю fpcupdeluxe видимо адаптирован для того чтобы при импорте проекта с Делфи убрать или испортить все что не мультиплатформенное. Но как лучше поступить в данном случае?
Понятно что если поубирать префиксы "winapi." как у "winapi. Windows" то все заведется. Но если я правильно понимаю, потом при адаптации под Линукс придется это переписывать на другие Юниты и компоненты. Как лучше поступить чтобы уменьшить количество проблем связанных с переписыванием кода? Хочу как можно быстрее добраться до того момента как смогу хотябы наконец запустить свое приложение чтобы проверить на сколько сильно оно сломалось вообще.

7 ответов

131 просмотр

можно попробовать вместо windows добавить эти модули: LCLType, LCLIntf. по крайней мере часть проблем это разрешит

Все зависит, какие функции ты используешь. Например, куча "дельфевых" апишных функций и констант убраны в кроссплатформенный LCLInfl, поэтому проще использовать его, если твой код потенциально кроссплатформенный. Если код только под Винду, попробуй вместо с windows использовать JwaWinUser и . т.д

Префиксы winapi и т.п. не поддерживаются в stable версии. Но вы можете попробовать транковую версию. Она тоже ставится из делюкса. Но с вероятностью 90℅ Лазарус или fpc не поставится. Нужно знать номер хэша работоспособного коммита. Если что, могу поискать. Я тоже подобную задачу решаю. Проект около 0,5 млн. строк плюс куча компонентов сторонних. Компоненты давно старался подбирать так, чтобы в Лазарусе были доступны. Поэтому проблем особых с ними нет. Встроенный конвертер ничего сделать не смог, пришлось свой велосипед делать. Я использую stable версию, но у меня нет проблем с префиксом winapi, т.к. я работаю в D2007. И проблем с юникодом у меня почти никаких нет, только по мелочи.

Дмитрий-Завгородний Автор вопроса
Дмитрий Логинов
Префиксы winapi и т.п. не поддерживаются в stable ...

Спасибо за предложение! Но я пока решил вручную все перетаскивать. Посмотрю как пойдет. У меня ожидаются проблемы с ДрагЭндДроп виртуальных файлов из программы в наружу (вот это жаль будет потерять) и Вероятны проблемы при обращении с файловой системой (в части длинных путей к файлам, их имен и проблем с Юникодами всякими) и еще вероятно будут проблемы с базой (простая таблица), так как в Делфи я FireDac использовал (ну я надеюсь проблемы будут преодолимые) и вероятно еще с системой лицензирования приколы какие-то будут. А потом узнаю что с системой обновления. В общем пока буду так переносить (ну всм уже начал). В вашем случае конечно другого выбора наверное нет.

Дмитрий-Завгородний Автор вопроса
Hemul GM
А в чем смысл перехода?

Планирую сперва под виндой все завести, а потом делать версии под другие платформы (Астра, Мак)

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

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

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
Карта сайта