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 ответов

114 просмотров

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

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

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

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

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

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

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

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

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

Скажите, можно ли как-то "переместить" динамический массив из одной переменной в другую? Скажем, переместить из TList<> в TArray<>. Именно переместить, а не скопировать. Если ...
Eugene Krasnikov (ᴊɪɴ x)
37
Вот еще криповенькая штука. uMain.pas(517,3) Warning: Case statement does not handle all possible cases И ЧО? 😂
Александр (Rouse_) Багель
20
комрады, че-та лыжы не едут var tmpFont: TFont; begin tmpFont:= TFont.Create; try case rgFontColor.ItemIndex of 0: tmpFont.Color:= clWindowText; 1: tmpFo...
Ed Doc
34
.model small .stack 100h .data a db 'Hello, World!', '$' ; исходная строка b db 20 dup(?) ; строка b с запасом на максимальную длину .code main: ...
Алексей -man
3
Интересно, нет ли какого-то способа получить из dll не адрес самой метки, а адрес со смещением?
The Bird of Hermes
54
вопрос, кого посмотреть в ютубе или где почитать про указатели чтобы раз и навсегда запомнить зачем они нужны и как правильно ими пользоваться? поделитесь хорошими ресурсами, ...
-
14
М-да. Почему бы просто со stringlist не работать?
Michael Longneck
23
Is there a digital way to cut the electricity from a usb in linux? It sounds weird, but it's exactly what I need to do. I tried to simulate the unplug/replug but is not the ...
Eduard Rivas
15
Редактор листа Excel, по сути двумерный массив ячеек. Ячейка - это экземпляр класса, у нее всякие свойства, методы. Проблема в том, что количество используемых строк и колоно...
Sergey Bodrov
2
Всем привет. Подскажите пожалуйста, как решить вопрос с подсветкой синтаксиса в vscode. Уже и разные плагины установил, и пробовал пошаманить в json settings, ничего не получ...
EEv9ENN 🤖
6
Карта сайта