Публикации Разное

Использование библиотеки KOL на компиляторе Free Pascal.

25.05.2007
Phantom (http://www.phantom.co.nr/)

Выражаю благодарность Ivan A. Kuzmitsky.
Была использована статья Thaddy de Koning
http://members.chello.nl/t.koning8/fpc_in_kol_proper.htm (частичный перевод).
(С)18.05.2007. Версия 1.0.1

С выпуском версии 2.0.x группа разработчиков Freepascal достигла новой высоты в совместимости с Delphi. Библиотека KOL давно поддерживает Freepascal, с помощью набора условных определений (defines) и специальных дополнений библиотеки. Теперь, однако, Freepascal 2.0.x компилятор достаточно совместим, чтобы собрать Kol.pas 2.10 почти без изменений исходного кода KOL.

Несколько слов о библиотеке KOL. Она была создана и развивается Владимиром Кладовым. Позволяет разрабатывать чрезвычайно компактные GUI-приложения. Распространяется бесплатно, с исходными текстами.

Для установки KOL на fpc нужна сама библиотека и вспомогательные файлы (в архиве находятся дополнительные модули, необходимые для компиляции KOL на fpc).

Способ №1 (простой):

  1.   Распаковать KOL и вспомогательные файлы в один каталог.
  2.  Отредактировать файл delphidef.inc:
    Или закомментировать в нем ASM_VERSION с помощью точки, вот так:
    до редактирования - {$DEFINE ASM VERSION}
    после {.$DEFINE ASM VERSION}.
    Или добавить строку {$DEFINE PAS_VERSION}.

Теперь можно скомпилировать библиотеку командой fpc kol.pas –Mdelphi –Rintel –OG2p3 –Xs –XX –CX –Sg.
Параметры командной строки –Mdelphi (режим совместимости с Delphi) , –Rintel (использовать intel-стиль ассемблера) и –Sg обязательны, остальные опциональны.

Главный недостаток этого способа это то, что библиотека KOL и fpc используют разные версии модулей windows, messages и т.д. из-за чего, если Вы используете в программу какие-либо модули из состава fpc в дополнении к kol, то могут происходить ошибки при компиляции.  То есть написать сколь-либо сложную программу не получится, этот способ подходит лишь для первого знакомства с библиотекой, при компилиции примеров не сложнее "Hello World".

Внимание!!! Перед компиляцией библиотеки KOL, обязательно переходите каталог, где находится KOL, либо обязательно указывайте с помощью ключа -Fu<путь> где находятся вспомогательные файлы для библиотеки, иначе могут происходить ошибки при компиляции.

Способ №2 (сложный):

  1.   Распаковать KOL и вспомогательные файлы в один каталог.
  2. Отредактировать файл delphidef.inc:
    Или закомментировать в нем ASM_VERSION с помощью точки, вот так:
    до редактирования - {$DEFINE ASM VERSION}
    после {.$DEFINE ASM VERSION}.
    Или добавить строку {$DEFINE PAS_VERSION}.
  3.  Переименовать вспомогательные файлы, например, добавив к имени файла “kol”.    И переделать все зависимости в остальных модулях и в файле kol.pas.

Теперь можно скомпилировать библиотеку командой fpc kol.pas –Mdelphi –Rintel –Og2p2 –Xs –XX –CX –Sg.
Параметры командной строки –Mdelphi (режим совместимости с Delphi) , –Rintel (использовать intel-стиль ассемблера) и –Sg обязательны, остальные опциональны.

После компиляции исходный код библиотеки можно удалить – больше не понадобится.

Для автоматизации этого процесса Вы можете использовать программу KOL modifier (с исходниками), написанную мной. Эта программа, протестирована на компиляторе fpc 2.0.2-2.0.4 и библиотеке KOL версий 2.10 и 2.30-2.61. Для более поздних версий библиотеки работоспособность программы не гарантирую, т.к. программа не поддерживается разработчиком библиотеки KOL, но я, в силу своих возможностей, стараюсь исправлять несовместимости между моей программой и библиотекой.

Теперь, когда библиотека KOL работоспособна под FPC, нужно указать компилятору где она находится. Для этого отредактируйте файл fpc.cfg, добавьте в него строку –Fu(путь, где находится библиотека). Между FuC и путем не должно быть пробелов, примерно так: -FuC:kolfpc.

Для проверки работоспособности KOL откомпилируйте нижеприведенную тестовую программу, она должна получиться размером примерно 47 килобайт.

program test;
{$APPTYPE GUI}
uses
 Kol;
begin
  Applet:=NewForm(nil,’Hello World!!!');
  Run(Applet);
end.
    Ссылки:
  1. http://bonanzas.rinet.ru/ - официальный сайт библиотеки KOL.
  2. http://www.kolmck.net/ - сайт посвященный библиотеке KOL. Справочники, уроки.
  3. http://www.freepascal.ru/ - сайт freepascal.
  4. http://www.phantom.co.nr/ - сайт автора статьи
Актуальные версии
FPC3.0.2release
Lazarus1.6.4release
MSE4.4.2release
fpGUI1.4.1release
наши спонсоры ;)