Написание плагинов на Virtual Pascal 2.0

Дмитрий Суходоев [raven66@mail.ru]raven66@mail.ru

Сначала хочу немного рассказать про этот самый Virtual Pascal 2.0. Все таки для пользователей Win32 - это довольно неизвестный компилятор. Первая версия этого компилятора была разработана в Киевском Институте Кибернетики Виталием Мирьяновым (хотя институт тут помог только тем, что предоставлял машины для работы). Большая часть ядро Virtual Pascal была написана на i386 с 4 мегобайтами памяти и поэтому была даже для того времени очень оптимизирована. В июне 1995 была выпущена публичная бета версия Virtual Pascal для OS/2, и тогда с Виталием связалась британская компания fPrint в лице Аллана Мертнера и предложила свою помощью в разработке и поддержке продукта и место жительства в UK. В итоге у них получился Virtual Pascal v1.11 для OS/2. Сейчас уже доступен релиз Virtual Pascal 2.0, который насчитывает всего около 200 пользователей. Здесь я не считаю тех пользователей, которые украли, этот прекрасный компилятор.

Самая главная особенность, которая меня привлекла в Virtual Pascal 2.0 это его почти 100% совместимость с таким достаточно известном компилятором Borland Pascal 7.0, а также одновременная (частичная) совместимость с Borland Delphi 3, с использованием классов. Нельзя не упомянуть то, что в Virtual Pascal вложены скомпиленная библиотека Turbo Vision 2.0, а также патчи для стандартных исходников от Borland и патчи для библиотеки Object Professional 1.30 от Turbo Power Software.

При первых попытках написания простого плагина на Virtual Pascal 2.0 я, естественно, столкнулся с тем, что мне нужен был аналог plugin.hpp, но для паскаля. FarIntf.pas не подходил, по тем причинам, что он был достаточно неплохо заточен под Borland Delphi 4, что вобщем-то и осложнило его компиляцию под Virtual Pascal 2.0. короче говоря - собрать я собрал, а вот работать оно не захотело :-)

Ну немного побездельничав, попросил у Василия Мошнинова исходники аналога plugin.hpp в его варианте и небольшой hello world тоже для его plugin.pas. После небольшой правки все заработало на «ура», что подтолкнуло меня сделать то чего мне так давно в FAR не хватало.

Особых отличий написания плагинов на Virtual Pascal 2.0 от дельфи нет, но все таки есть такая обязательная комбинация директив компилятора, без которых собрать что-либо работающее на Virtual Pascal 2.0 для FAR будет просто невозможным.

Дальше идут необязательные советы, без них работать уже будет, но с ними просто легче.

Кстати сказать, что именно с помощью Virtual Pascal 2.0 намного лучше и экономичней компилять плагины. И не только к ФАРу. Вот я читаю PLUGINSR.HLP и сочувствую наСИльникам: всегда надо как-то извратиться, чтобы получить маленький размер плагина. На дельфи тоже самое, но там уже проще: можно выкинуть модуль SysUtils и спокойно себе скомпилять плагин небольшого размера, другое дело, что без SysUtils в дельфи ничего не сделаешь. А на Virtual Pascal 2.0 самое то! SysUtils в нем тоже есть, но в отличии от дельфи без SysUtils в Virtual Pascal 2.0 можно прожить, да причем прожить припеваючи! Есть все для этого замены: модуль Dos (для работы с диском), модуль Strings (для работы с pChar), а большего от SysUtils никто и не требовал, т.к. исключения (exceptions) плагинам по-моему мнению совсем не нужны. Наконец в Virtual Pascal 2.0 есть Turbo Vision для Win32, что дает более гибкие возможности по сравнению со стандартными ФАРовскими диалогами. Применение его в плагинах уже дает замечательные результаты (смотри плагины rAscii, color selector).

Модуль plugin.pas Василия Мошнинова был несколько переделан мной на лад Virtual Pascal 2.0, туда я добавил функции для работы с реестром, для обработки масок. Смысла здесь их публиковать я не вижу, кому интересно может взять архив с модулем на моей страничке.

Почти там же лежат интерфесы для работы с регулярными выражениями используя плагин Игоря Русских Colorer 3.0. Оно тоже переписано мной для Virtual Pascal 2.0, но при достаточной сноровке это запросто можно собрать с помощью какой-нибудь из семейства дельфей. Лежит тут.


(c) raVen 
21.02.2000
Rev 30.04.2000
наверх