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

105 просмотров

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

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

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

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

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

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

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

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

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

Такс, блин, таки кто-то знает, каким образом работают макросы stdin/stdout/stderr? Я влез в stdio.h, там определения нет, отладил через асмокод - вызывается функция со странны...
The Bird of Hermes
18
Всем привет, на линуксе лучше на fasm или nasm учиться писать для начала ?
meszjol
14
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
было так ;void set_http_ver(RESPD* ptr, char* version, uint32_t length) // example: 'RTSP/1.1 ' set_http_ver: mov eax, [esp + 4] mov ecx, [esp + 8] ...
Mixail Frolov
5
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
Где закоментить или что то прописать?
Alibek Кulseitov 🇰🇿
7
Карта сайта