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

130 просмотров

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

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

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

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

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

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

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

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

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

Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
лучше скажите, причём тут паскаль?
Alexey Kulakov
32
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
#include <stdio.h> #include <stdlib.h> #include <time.h> int** generate_table(int size_matrix) { int** matrix = (int**)malloc(size_matrix * sizeof(int*)); for (int i ...
Чувак
1
@PerlBanjoBot use v5.38; sub split_on_cond($arr, $cond) { ($a, $b) = ([], []); push @{ $cond->($_) ? $a : $b }, $_ for @$arr; ($a, $b) } use Data::Dumper; warn Dumpe...
Sergei Zhmylove
10
Всем привет! как узнать, что текст в TSkLabel был выведен сокращенным ? Есть функция для TLabel которая позволяет определить , что текст выведен сокращенным function TFrmMai...
DELPHI SOLUTIONS
6
Вот объясните, как это работает: Вот есть допустим unix-подобная система, и программа запускает допустим printf или fork, как это передается ядру, и как оно обрабатывать начин...
Егор
14
Дебил? Я ищу друга
Bitard 228
27
У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
Карта сайта