Компилятор и пакет Delphi (SVN rev. 2404), подготовленный для этого компилятора
https://dfiles.eu/files/a8xe8khaf
Установка
- создайте копию своей папки HiAsm. В названии не должно быть русских букв. Все дальнейшие шаги проводятся с этой новой папкой.
- создайте ярлык на HiAsm.exe из этой новой папки.
- удалите папку HiAsm\Elements\Delphi, а вместо неё поместите папку из архива "Delphi pack FPC 3.2.2 (SVN rev 2404) Unicode.rar"
- установите компилятор - запустите файл "FPC 3.2.2 Compiler Setup.exe", укажите папку HiAsm, которую вы выделили для нового компилятора на первом шаге. Следуйте указаниям установщика.
- при компиляции проектов выберите один из новых вариантов компилятора FPC
Отладочный режим
Кому нужно, может установить и настроить компилятор на подробный вывод ошибок с указанием исходных файлов, номеров строк и названий процедур.
1) Скачайте этот архив и распакуйте в каталог HiAsm (с сохранением структуры)
2) Перетащите файл "HiAsm\compiler\FPC2\Install Debug.his" в окно или на значок HiAsm
3) Выполните файлы "HiAsm\compiler\FPC2\src\_make_x32_dbg.bat" и "HiAsm\compiler\FPC2\src\_make_x64_dbg.bat"
В HiAsm появится два компилятора FPC-32dbg и FPC-64dbg.
1. Зачем всё это
Цель проведенной работы - проверить и показать, что возможно перейти на новый компилятор и KOL и поддерживать их в актуальном состоянии. В целом, за редкими исключениями, можно вообще отказаться от компилятора Delphi. Задача-максимум - убедить разработчиков отказаться от старого штатного компилятора FPC и делать компоненты, ориентируясь на новый.
2. Бочка мёда
- Все компоненты остаются совместимыми с текущими компиляторами. Совместимость с новым обеспечивается директивами условной компиляции в коде компонентов.
- Переход на новый компилятор позволит без особых трудностей регулярно обновлять его и библиотеку KOL.
- С новым FPC можно собирать истинные 64-битные приложения.
- Реализована поддержка Unicode.
- Поскольку используются полные, а не урезанные версии системных модулей, для HiAsm становится доступным весь код, который выпускается для FPC, а портирование компонентов Delphi, не завязанных на VCL, упрощается.
- На данный момент на новом компиляторе заработали компоненты StyleXP, PNG, FastMathParse, PlotDiffSeries, Jpeg, Zlib без DLL и компоненты из вкладки WMI
- В предложенном мной пакете я уже внес изменения во все компоненты, которые только смог, для обеспечения компилируемости новым компилятором. Хотя в работе пока не все протестированы.
3. Ложка дегтя
- Компоненты Флеш и Веб-браузер по-прежнему не работают. Но шансы адаптировать их или сделать аналоги сильно выросли.
- Проблемы со свойством Transparent (частино решение найдено); не работает VBScript, VBJScript; по-прежнему не работает UseActiveX. Есть некоторые проблемы с модальностью форм и уничтожением динамических контейнеров.
- Не все компоненты протестированы в работе с новым компилятором.
- Из-за того, что используются неурезанные системные модули, вырос размер исполняемого файла.
4. Что было сделано
- Был настроен компилятор и отобраны минимально необходимые модули для работы. Некоторые модули были незначительно изменены для использования с новыми настройками компилятора.
- Были переработаны файлы KOL для работы с новым компилятором в 64-битном и Unicode режимах.
- Самое глобальное изменение - в коде компонентов функция ToString() теперь должна писаться как Share.ToString(). Причина этого в том, что в корневом классе нового FPC уже есть метод ToString. Вызов этой функции из методов класса-наследника без уточнения модуля означает, что вызывается метод класса-предка. Также для поддержки Unicode в своих компонентах разработчики в коде должны использовать дополнительные функции по работе с кодировками и строками.
- Были переработаны практически все компоненты для работы с новым компилятором в 64-битном и Unicode режимах.
- Библиотеки make, draw, Codegen.dll были доработаны для компиляции новым FPC.
- Разработчикам компонентов: в коде можно использовать следующие дефайны:
{$ifdef F_P} - для кода, предназначенного для старого компилятора;
{$ifdef FPC_NEW}, {$ifdef KOL3XX} - код для нового компилятора. Необязательный второй вариант уточняет, что код характерен только для новой KOL
{$ifdef FPC} - код, работающий со старым и новым FPC, но не работающий с Delphi
{$ifndef FPC} - код только для Delphi.
WIN64, WIN32 - разрядность ОС.
Ну, и их вариации.
5. Что нужно сделать
- Нужно протестировать все компоненты с новым компилятором. Выявленные ошибки - исправить.
- Если разработчики примут решение официально поддерживать этот компилятор, нужно:
- внести изменения в компоненты на SVN. Готов выполнить первоначальные правки;
- разместить компилятор на SVN;
- оперативно вносить исправления в компоненты и файлы компилятора по мере обнаружения и решения возникающих ошибок.
- разработчикам новых компонентов также тестировать их на совместимость с новым компилятором.
- если новая KOL будет нормально оттестирована, её также можно пристроить к компилятору Delphi.
Редактировалось 29 раз(а), последний 2022-12-13 19:00:13