Вверх ↑
Этот топик читают: Гость
Ответов: 4630
Рейтинг: 749
#1: 2012-09-24 11:51:03 ЛС | профиль | цитата
Сборка компилятора FPC 3.2.2 и KOL 3.23 (32 и 64 бита, ANSI и Unicode режимы)



Компилятор и пакет 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
карма: 26

23
Голосовали:hitman249, CriDos, Ex_, iarspider, faniss, sаmakacd, sintet, vovs, Poputchik, login, Konst, laborpago, flint2, parara, Vaeltaja, rav, Joiner, Rysik, flud, lisnic, Gunta, ric, sla8a
Ответов: 1841
Рейтинг: 369
#2: 2012-09-24 12:18:03 ЛС | профиль | цитата
Баг №1.
Если в схеме присутствует более 1 кнопки (Button), программа уходит в цикл и постоянно грузит ЦП.

Ищем дальше
------------ Дoбавленo в 12.17:
Netspirit писал(а):
Не работают компоненты

PictureStream
карма: 1
0
Ответов: 4630
Рейтинг: 749
#3: 2012-09-24 12:23:04 ЛС | профиль | цитата
Искать - это хорошо, уметь бы их решать. Баг с кнопкой - это возможно связано с порядком инициализации компонентов (Z-order). Добавь ещё одну кнопку - может исчезнуть.
------------ Дoбавленo в 12.22:
Поправлен PictureStream.
карма: 26

1
Голосовали:hitman249
Ответов: 1841
Рейтинг: 369
#4: 2012-09-24 12:31:34 ЛС | профиль | цитата
Netspirit писал(а):
PictureStream
- работает.

Следующий пациент
Img_Loader
Target OS: Win32 for i386
Compiling C:\Program Files\HiAsm_AltBuild\Elements\delphi\code\Project2.dpr
Compiling C:\Program Files\HiAsm_AltBuild\Elements\delphi\code\hiMainForm_3B11C60.pas
Compiling C:\Program Files\HiAsm_AltBuild\Elements\delphi\code\hiImg_Loader.pas
Fatal: Can't find unit KOLComObj used by HiImg_Loader
Fatal: Compilation aborted
карма: 1
0
Ответов: 4630
Рейтинг: 749
#5: 2012-09-24 12:34:02 ЛС | профиль | цитата
Img_Loader - проверяй
карма: 26

0
Ответов: 1841
Рейтинг: 369
#6: 2012-09-24 12:51:00 ЛС | профиль | цитата
Img_Loader - работает.
------------ Дoбавленo в 12.50:
Проблемы с отрисовкой TabControl
Сразу после инициализации окна:
Нажал на 3 вкладку TabControl:
карма: 1
0
Ответов: 4630
Рейтинг: 749
#7: 2012-09-24 12:55:07 ЛС | профиль | цитата
С TabControl на скорую не получится разобраться. Взял на заметку.
карма: 26

0
Ответов: 1841
Рейтинг: 369
#8: 2012-09-24 13:11:58 ЛС | профиль | цитата
DriveBox - высота элемента не соответствует отображаемой в редакторе форм.
DriveBox
------------ Дoбавленo в 13.11:
CriDos писал(а):
высота элемента не соответствует отображаемой в редакторе форм.

Аналогичная проблема с элементом FontBox
карма: 1
0
Ответов: 4630
Рейтинг: 749
#9: 2012-09-24 13:23:05 ЛС | профиль | цитата
На старых компиляторах то же самое. Проблема не компилятора.
------------ Дoбавленo:
[offtop]Поскольку сначала не удалось возпроизвести глюк, не сразу понял, о чем речь.[/offtop]
карма: 26

0
Ответов: 1841
Рейтинг: 369
#10: 2012-09-24 13:35:26 ЛС | профиль | цитата
Netspirit писал(а):
На старых компиляторах то же самое.


Ревизия: 889
карма: 1
0
Ответов: 4630
Рейтинг: 749
#11: 2012-09-24 13:45:29 ЛС | профиль | цитата
А у меня:
карма: 26

0
файлы: 134h45hjhgfsd857.jpg [26.1KB] [8814]
Ответов: 1841
Рейтинг: 369
#12: 2012-09-24 13:48:07 ЛС | профиль | цитата
Netspirit, это на FPC 2.6.0 или где?
карма: 1
0
Ответов: 4630
Рейтинг: 749
#13: 2012-09-24 13:51:11 ЛС | профиль | цитата
На всех. Хотя разок замечал описанный тобой глюк. Будем думать...
карма: 26

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#14: 2012-09-24 14:09:26 ЛС | профиль | цитата
Netspirit писал(а):
На старых компиляторах то же самое

И че вам не нравится на старых компиляторах, там нормально все работает Ни разу не встречал наезд всплывающего окна на рабочее окно и сокращение рабочего окна до полоски
карма: 22

0
Ответов: 4630
Рейтинг: 749
#15: 2012-09-24 14:10:59 ЛС | профиль | цитата
Там тоже высота компонентов в рантайм не соответствует таковой в design-time. Но не настолько, как в новом компиляторе
карма: 26

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)