Руководства, Инструкции, Бланки

Руководство Пользователя Free Pascal img-1

Руководство Пользователя Free Pascal

Рейтинг: 4.4/5.0 (1932 проголосовавших)

Категория: Руководства

Описание

Что такое Free Pascal, и с чем его едят?

Что такое Free Pascal, и с чем его едят?

Free Pascal. иначе называемый FPC (F ree P ascal C ompiler) — это 32х-разрядный, кросс­плат­фор­мен­ный компилятор языка Pascal. В настоящем обзоре я рассмотрю его основные ха­рак­те­рис­ти­ки и возможности. Free Pascal относится к категории сво­бод­но­го программного обес­пе­че­ния (free software) и распространяется по лицензии GNU.

Кроссплатформенность

Итак, что в данном случае понимается под кроссплатформеностью? Довольно-таки большое ко­ли­чес­тво платформ, однако. Во-первых, это два типа процессора:

  • i386 — процессоры Intel серии 80x86, начиная с 80386;
  • m68k — процессоры Motorola серии m68k, соответственно.

Для i386 поддерживаются следующие операционные системы:

  • BeOS
  • BSD Unix, а именно:
    • FreeBSD
    • NetBSD
    • OpenBSD
  • DOS32, т.е. DOS с расширителем для 32х-разрядного защищенного режима. В версии компилятора 1.0.10 поддерживаются расширители:
    • Go32v1 — DJ Delorie DOS extender версии 1
    • Go32v2 — DJ Delorie DOS extender версии 2
  • Lunux
  • OS/2
  • QNX
  • SunOS/Solaris
  • Win32

Версия 1.1 (находящаяся в состоянии разработки нестабильная ветвь) также поддерживает:

  • OS/2 via EMX
  • Nowell Netware
  • MacOS
  • WDOSX DOS extender

Надо заметить, что поддержка некоторых целевых платформ в нестабильной версии на­хо­дит­ся в состоянии разработки и не впол­не пригодна для серьезной работы. Также в ветке 1.1 идет разработка компиляции для Linux и других ОС на отличных от i386 и m68k типах про­цес­со­ров, таких как PowerPC, Sparc и 64х-разрядные процессоры линии x86.

Непосредственно кросскомпиляция поддерживается, однако возникают серьезные про­бле­мы. Так, например, мне не удалось ском­пи­ли­ро­вать ассемблерные части RTL для Linux ис­поль­зуя версии binutils для DOS и Windows.

Возможности языка

В целом возможности языка ориентированы на развитые "промышленные стандарты", а не на ANSI-стандарт языка, как GNU Pascal. Промышленным же стандартом языка Pascal в нас­тоя­щее время является его диалект Object Pascal от фирмы Borland. Кро­ме того, Free Pascal под­дер­жи­ва­ет дополнительные расширения, нехарактерные для Borland Delphi.

Версия 1.0.10 поддерживает следующие возможности:

  • Object Pascal на уровне Delphi 3, и немного от Delphi 4:
    • Объектные типы, в том числе классы;
    • Длинные строки;
    • "Широкие" строки с поддержкой UNICODE. Впрочем, полной поддержки различных кодовых страниц на данный момент нет, т.е. автоматическое преобразование WideString -> AnsiString и наоборот корректно выполняется только для символов Latin-1;
    • Перегрузка (overloading) функций и процедур.
  • Дополнительные расширения:
    • Перегрузка операторов сравнения (. =, = ), арифметических ( +, -, *, /, **, div, mod ), и оператора присваивания ( := );
    • Поддержка inline- функций и процедур — в отличие от Borland Pascal, такие подпрограммы не требуется писать в машинных кодах;
    • Поддержка примитивных макросов;
    • Поддержка операторов присваивания с выполнением некоторого арифметического действия ( +=, -=, *=, /= ).

В версии 1.1 добавлены средства языка из старших версий Borland Delphi:

В настоящий момент все перечисленные средства языка работают удовлетворительно, хотя мож­но выделить пару проблем: во-пер­вых, незавершено автопреобразование строк UNICODE, и во-вторых, реализация интерфейсов допускает не­со­от­вет­ствие тре­бо­ва­ни­ям мо­де­ли COM — единственность ссылки на IUnknown должна отслеживаться разработчиком.

Компиляция

Компиляция происходит весьма быстро, поскольку, как и положено компилятору Pascal, Free Pascal работает в один проход. Так, на­при­мер, полная сборка самого компилятора на моем ком­пью­те­ре (Celeron 600) занимает около полутора минут.

Для сборки объектных файлов, получающихся в результате компиляции, вызывается внеш­ний компоновщик — GNU ld (или ldw для Windows-платформы). Вообще, дистрибутив Free Pascal попросту включает в себя пакет GNU BinUtils, частью которого яв­ля­ет­ся ld. Также дан­ный пакет включает в себя кроссплатформенный ассемблер as (asw), GNU make, ком­пи­ля­тор ресурсов для Win32 — windres и другие программы.

Встроенный компоновщик планируется в следующих версиях компилятора, однако ход ра­бот в этом направлении мне неизвестен.

Компилятор командной строки для платформ i386 называется ppc386 (ppc386.exe для DOS и Windows). В дистрибутив входит так­же "загрузчик" (loader) компилятора, называемый, для лю­бо­го процессора, fpc (fpc.exe). Таким образом, на любой платформе мож­но использовать в ко­манд­ной строке fpc .

Компилятор Free Pascal использует оптимизацию. Хотя она и уступает интеллектуальной оп­ти­ми­за­ции компилятора того же Delphi, од­на­ко рутинную, формальную оптимизацию FPC та­ки выполняет. В частности, можно указать целевой процессор, чтобы ис­поль­зо­вать рас­ши­рен­ный набор команд, отсутствующих в i386, например, команды Pentium II. Для вычислений мож­но задействовать на­бор команд MMX или XMM.

Стандартные модули

В состав дистрибутива входят модули, реализующие основную функциональность. Кон­крет­ный состав модулей зависит от плат­фор­мы. Кроме ядра RTL, дистрибутив включает в себя до­пол­ни­тель­ные модули, на­зы­ва­емые "пакетами" (packages), со­дер­жа­щие, на­при­мер, ин­тер­фейс к API SQL-сервера InterBase (пакет ibase ), или функции работы с регулярными вы­ра­же­ни­ями (пакет regexpr ).

Также наличествует некоторый аналог VCL, точнее ее ядра — основных классов и модулей биб­лио­те­ки. Библиотека на­зы­ва­ет­ся FCL — Free Component Library. Содержит как от­но­си­тель­но примитивные классы, a-la TStringList. так и классы для ра­бо­ты с ба­за­ми данных. Впро­чем, модули FCL в настоящее время явно недоработаны — содержат пробелы в функ­цио­наль­нос­ти и не­ко­то­рые баги.

Документация

В целом, Free Pascal весьма хорошо документирован.

Документация к версии 1.0.10 состоит из шести частей и распространяется в различных фор­ма­тах, в том числе — исходники LaTeX. В состав дистрибутива входит документация в виде PDF и HTML. Ниже — описание частей документации.

Free Pascal. Reference guide

Справочное руководство. Содержит описание языка и модуля System. Также описывается модуль ObjPas. автоматически под­гру­жа­емый (аналогично System ) при выборе режима ком­пи­ля­ции Delphi. или ObjFPC .

Free Pascal. Users' manual

Руководство пользователя. Содержит описание процедуры инсталляции, ключей командной стро­ки компилятора, IDE и ути­лит, входящих в состав дистрибутива, сообщений компилятора об ошибках, ошибках времени выполнения и так далее. Также со­дер­жит перечень стан­дарт­ных модулей для различных платформ.

Free Pascal. Programmers' manual

Руководство программиста. Описываются режимы компиляции, директивы компилятора, во­про­сы распределения памяти, ком­по­нов­ки, использования ассемблера и так далее.

Free Pascal supplied units. Reference guide

Справочное руководство по стандартным модулям. Довольно подробно описываюся модули RTL, за исключением тех, которые яв­ля­ют­ся интерфейсами к API операционных систем и их ком­по­нент.

Free Component Library (FCL). Reference guide

Справочное руководство по FCL. В настоящий момент содержит описание классов модуля Classes. По всей видимости, в даль­ней­шем будет расти вместе с доработкой самой FCL. По край­ней мере, я на это надеюсь.

FPDoc. Free Pascal code documenter. Reference manual

Руководство по использованию утилиты для автодокументации fpcdoc, входящей в состав дист­ри­бу­ти­ва.

IDE и утилиты

Вместе с компилятором распространяется IDE (интегрированная среда разработки — In­te­gra­ted Development Environment) тек­сто­во­го режима, похожее на IDE Turbo/Borland Pascal. В нас­тоя­щее время, стабильные версии IDE, насколько мне известно, су­щес­тву­ют только для DOS и Win32, работа над вариантами для других платформ еще не закончена. IDE содержит встро­ен­ную систему отладки — если я не ошибаюсь, с использованием отладчика GNU GDB, — и встроенную справку.

О стабильности IDE, к сожалению, приходится говорить с некоторой натяжкой — проблемы су­щест­ву­ют. Однако, в целом поль­зо­вать­ся можно.

Также в состав дистрибутива входят следующие утилиты:

  • data2inc — преобразует произвольный файл во включаемый файл ( .inc ) для FPC, где соответсвующие данные представлены в виде константы-массива.
  • delp — очищает каталог от "временных" файлов, возникающих при компиляции, таких как объектные файлы модулей и .ppu .
  • fpcmake — используется для подготовки make-файлов для GNU make.
  • fpdoc — генерирует документацию из модулей Free Pascal в форматах HTML и LaTeX.
  • fpmc — компилятор msg-файлов.
  • fprcp — pascal-препроцессор для windres.
  • h2pas и h2paspp — транслятор заголовочных файлов C и C++ в модули Pascal.
  • makeskel — утилита для подготовки скелета xml-описания для fpdoc .
  • ppdep — позволяет получить список модулей, от которых зависит некий данный.
  • ppudump — извлекает информацию из .ppu- файлов.
  • ppufiles — то же, что ppdep. но не для исходных модулей, как тот, а для .ppu- файлов.
  • ppumove — позволяет собирать библиотеки из .ppu .
  • ptop — форматирование исходников.
  • rstconv — конвертирует файлы .rst. создаваемые компилятором для строк, описанных как resourcestring. в формат GNU gettext .po .

Кроме вышеперечисленных, относящихся собственно к Free Pascal, утилит, в дистрибутив вхо­дит, как уже упоминалось, пакет GNU BinUtils.

В настоящий момент находится в процессе разработки RAD для Free Pascal — IDE Lazarus. Су­щест­ву­ет рабочая версия для Linux. Версия для Win32 пока не работает.

Лицензия

Free Pascal распространяется под лицензией GNU GPL (GNU General Public License), вхо­дя­щие в состав дистрибутива биб­ли­о­те­ки модулей — под лиценизией GNU LGPL (GNU Lesser Public License). Таким образом, программы, написанные на Free Pascal, мо­гут рас­про­стра­нять­ся каким угодно образом, в том числе — и закрытым, а исходники самого компилятора дос­туп­ны для из­ме­не­ния и использования с сохранением условий GNU GPL.

Источники в InterNet

Основной источник информации — официальный сайт Free Pascal — www.freepascal.org. а так­же его зеркала, в том числе — на­хо­дя­ще­е­ся в России — www.ru.freepascal.org. On-line до­ку­мен­та­ция находится по адресу www.freepascal.org/docs.html .

Информацию о лицензиях и идеологии GNU следует искать на официальном сайте GNU Project — www.gnu.org .

Дистрибутивы и/или исходники рекомендую скачивать с ftp-зеркала в Черноголовке — ftp.chg.org/pub/lang/pascal/fpc .

Другие статьи

Free Pascal-статья о Free Pascal

TURBO PASCAL Free Pascal Что такое Free Pascal, и с чем его едят?

WDOSX DOS extender

Надо заметить, что поддержка некоторых целевых платформ в нестабильной версии находится в состоянии разработки и не впол­не пригодна для серьезной работы. Также в ветке 1.1 идет разработка компиляции для Linux и других ОС на отличных от i386 и m68k типах процессоров, таких как PowerPC, Sparc и 64х-разрядные процессоры линии x86.

Непосредственно кросскомпиляция поддерживается, однако возникают серьезные проблемы. Так, например, мне не удалось ском­пи­ли­ро­вать ассемблерные части RTL для Linux используя версии binutils для DOS и Windows.

Возможности языка

В целом возможности языка ориентированы на развитые "промышленные стандарты", а не на ANSI-стандарт языка, как GNU Pascal. Промышленным же стандартом языка Pascal в настоящее время является его диалект Object Pascal от фирмы Borland. Кро­ме того, Free Pascal поддерживает дополнительные расширения, нехарактерные для Borland Delphi.

Версия 1.0.10 поддерживает следующие возможности:

Object Pascal на уровне Delphi 3, и немного от Delphi 4:

Объектные типы, в том числе классы;

"Широкие" строки с поддержкой UNICODE. Впрочем, полной поддержки различных кодовых страниц на данный момент нет, т.е. автоматическое преобразование WideString -> AnsiString и наоборот корректно выполняется только для символов Latin-1;

Перегрузка (overloading) функций и процедур.

Дополнительные расширения:

Перегрузка операторов сравнения ( <, >, =, <=, >= ), арифметических ( +, -, *, /, **, div, mod ), и оператора присваивания ( := );

Поддержка inline- функций и процедур — в отличие от Borland Pascal, такие подпрограммы не требуется писать в машинных кодах;

Поддержка примитивных макросов;

Поддержка операторов присваивания с выполнением некоторого арифметического действия ( +=, -=, *=, /= ).

В версии 1.1 добавлены средства языка из старших версий Borland Delphi:

В настоящий момент все перечисленные средства языка работают удовлетворительно, хотя можно выделить пару проблем: во-пер­вых, незавершено автопреобразование строк UNICODE, и во-вторых, реализация интерфейсов допускает не­со­от­вет­ствие тре­бо­ва­ни­ям модели COM — единственность ссылки на IUnknown должна отслеживаться разработчиком.

Компиляция

Компиляция происходит весьма быстро, поскольку, как и положено компилятору Pascal, Free Pascal работает в один проход. Так, на­при­мер, полная сборка самого компилятора на моем компьютере (Celeron 600) занимает около полутора минут.

Для сборки объектных файлов, получающихся в результате компиляции, вызывается внешний компоновщик — GNU ld (или ldw для Windows-платформы). Вообще, дистрибутив Free Pascal попросту включает в себя пакет GNU BinUtils, частью которого яв­ля­ет­ся ld. Также данный пакет включает в себя кроссплатформенный ассемблер as (asw), GNU make, компилятор ресурсов для Win32 — windres и другие программы.

Встроенный компоновщик планируется в следующих версиях компилятора, однако ход работ в этом направлении мне неизвестен.

Компилятор командной строки для платформ i386 называется ppc386 (ppc386.exe для DOS и Windows). В дистрибутив входит так­же "загрузчик" (loader) компилятора, называемый, для любого процессора, fpc (fpc.exe). Таким образом, на любой платформе мож­но использовать в командной строке fpc <имя файла> .

Компилятор Free Pascal использует оптимизацию. Хотя она и уступает интеллектуальной оптимизации компилятора того же Delphi, од­на­ко рутинную, формальную оптимизацию FPC таки выполняет. В частности, можно указать целевой процессор, чтобы ис­поль­зо­вать расширенный набор команд, отсутствующих в i386, например, команды Pentium II. Для вычислений можно задействовать на­бор команд MMX или XMM.

Стандартные модули

В состав дистрибутива входят модули, реализующие основную функциональность. Конкретный состав модулей зависит от плат­фор­мы. Кроме ядра RTL, дистрибутив включает в себя дополнительные модули, на­зы­ва­емые "пакетами" (packages), со­дер­жа­щие, на­при­мер, интерфейс к API SQL-сервера InterBase (пакет ibase ), или функции работы с регулярными вы­ра­же­ни­ями (пакет regexpr ).

Также наличествует некоторый аналог VCL, точнее ее ядра — основных классов и модулей библиотеки. Библиотека на­зы­ва­ет­ся FCL — Free Component Library. Содержит как относительно примитивные классы, a-la TStringList. так и классы для ра­бо­ты с ба­за­ми данных. Впрочем, модули FCL в настоящее время явно недоработаны — содержат пробелы в функциональности и не­ко­то­рые баги.

Документация В целом, Free Pascal весьма хорошо документирован.

Документация к версии 1.0.10 состоит из шести частей и распространяется в различных форматах, в том числе — исходники LaTeX. В состав дистрибутива входит документация в виде PDF и HTML. Ниже — описание частей документации.

Free Pascal. Reference guide

Справочное руководство. Содержит описание языка и модуля System. Также описывается модуль ObjPas. автоматически под­гру­жа­емый (аналогично System ) при выборе режима компиляции Delphi. или ObjFPC .

Free Pascal. Users' manual

Руководство пользователя. Содержит описание процедуры инсталляции, ключей командной строки компилятора, IDE и ути­лит, входящих в состав дистрибутива, сообщений компилятора об ошибках, ошибках времени выполнения и так далее. Также со­дер­жит перечень стандартных модулей для различных платформ.

Free Pascal. Programmers' manual

Руководство программиста. Описываются режимы компиляции, директивы компилятора, вопросы распределения памяти, ком­по­нов­ки, использования ассемблера и так далее.

Free Pascal supplied units. Reference guide

Справочное руководство по стандартным модулям. Довольно подробно описываюся модули RTL, за исключением тех, которые яв­ля­ют­ся интерфейсами к API операционных систем и их компонент.

Free Component Library (FCL). Reference guide

Справочное руководство по FCL. В настоящий момент содержит описание классов модуля Classes. По всей видимости, в даль­ней­шем будет расти вместе с доработкой самой FCL. По крайней мере, я на это надеюсь.

FPDoc. Free Pascal code documenter. Reference manual

Руководство по использованию утилиты для автодокументации fpcdoc, входящей в состав дистрибутива.

IDE и утилиты

Вместе с компилятором распространяется IDE (интегрированная среда разработки — Integrated Development Environment) тек­сто­во­го режима, похожее на IDE Turbo/Borland Pascal. В настоящее время, стабильные версии IDE, насколько мне известно, су­щес­тву­ют только для DOS и Win32, работа над вариантами для других платформ еще не закончена. IDE содержит встро­ен­ную систему отладки — если я не ошибаюсь, с использованием отладчика GNU GDB, — и встроенную справку.

О стабильности IDE, к сожалению, приходится говорить с некоторой натяжкой — проблемы существуют. Однако, в целом поль­зо­вать­ся можно.

Также в состав дистрибутива входят следующие утилиты:

data2inc — преобразует произвольный файл во включаемый файл ( .inc ) для FPC, где соответсвующие данные представлены в виде константы-массива.

delp — очищает каталог от "временных" файлов, возникающих при компиляции, таких как объектные файлы модулей и .ppu.

fpcmake — используется для подготовки make-файлов для GNU make.

fpdoc — генерирует документацию из модулей Free Pascal в форматах HTML и LaTeX.

Инфо-МАСТЕР: Free Pascal: руководство программиста

Закончил наконец-то перевод руководства программиста Free Pascal. Возможно, кто-то скажет, что это неактуально. Может быть… Ну а если вам этот документ всё-таки интересен, то вот ссылка на страницу документа:

Зачем я это делаю? Во-первых, я программист, поэтому подобная информация мне интересна. Во-вторых, чтобы хоть как-то поддерживать знание английского языка. Хотя, пожалуй, «знание» - это громко сказано))) Просто есть некоторые навыки перевода технических текстов.

Если кто не знает, Free Pascal – это среда разработки и компилятор языка программирования Object Pascal. Это полностью бесплатный инструмент. То есть с помощью этого инструмента вы можете создавать свои программы и делать с ними всё что угодно, в том числе использовать в коммерческих целях.

Впрочем, не буду тратить ваше внимание – переходите по ссылке и читайте. Там же, кстати, вы можете найти ещё один документ – руководство пользователя Free Pascal (впрочем, есть и другая документация).

Не забудьте оставить свои отзывы. Буду благодарен, если вы обнаружите какие-то ошибки и сообщите мне о бэтом.

Что такое Free Pascal, и с чем его едят?

Что такое Free Pascal, и с чем его едят?

Free Pascal, также известный как FPC (free pascal compiler), а ранее как FPK - свободно распространяемый в исходных текстах 32-разрядный кроссплатформенный компилятор языка Pascal.

Кроссплатформенность

Первое, что впечатляет, это его кроссплатформенность: поддерживаются не две-три операционных системы, а сразу шесть ОС и два типа процессоров. На базе i386 - Win32, DOS, Linux, FreeBSD и OS/2. На базе процессора Motorola 680x0 - AmigaOS.

Что это значит? Это значит, что под все эти операционные системы вы можете писать программы, пользуясь одним языком и одной библиотекой базовых функций. А зачастую, вообще, для переноса программы или библиотеки достаточно ее перекомпилировать. Думаю, что особенно приятно должно быть инженерам и научным работникам - если не вдаваться в интерфейсные заморочки, любые расчеты можно написать один раз, не задумываясь над тем, под какой операционной системой они будут выполняться.

Надежность и удобство

Существует мнение, что бесплатные и открытые програмные продукты менее надежны, чем коммерческие. К сожалению, в большинстве случаев это действительно так.

Однако и здесь Free Pascal является приятным исключением. Лично мне пришлось столкнуться в лоб только с одним глюком, причем только тогда, когда я использовал возможность Free Pascal'я работать не с родным для него GNU-ассемблером, а с TASM. Bug-list на сайте freepascal.org весьма обширен, однако подавляющее большинство багов обычному программисту никогда не встретится. Кроме того, в отличие от коммерческих систем эти ошибки не скрываются и исправляются командой разработчиков.

Сообщения об ошибках, выдаваемые компилятором - четкие и информативные, с указанием номера строки и позиции в ней, где обнаружена ошибка. Сделано это в таком формате, что например, редактор UltraEdit-32 позволяет автоматически перейти к нужной строке (кстати, очень хороший редактор для программирования, жаль только, что не бесплатный).

Компилятор сам управляет процессом ассемблирования и сборки, так что пользоваться им может и начинающий программист, привыкший к интегрированным средам.

Модули и библиотеки

Базовая библиотека включает в себя стандартные модули, реализующие управление памятью, работу с файловой системой, управление консольным вводом/выводом, работу со строками и датами, математические функции, обработку исключений и интерфейс к API поддерживаемых операционных систем. При этом все вышеперечисленное, кроме API, для различных систем реализовано единообразно a-la Borland Pascal.

Если сравнивать с Turbo Pascal, то мы видим модули CRT, DOS, Graph (реализует работу с VGA-графикой), Strings, Objects. Сравнивая с Borland Delphi, видим соответствующие модули SysUtils и Classes. Для работы с API в базовой библиотеке предусмотрены модули Linux, Windows и GO32 (API DOS-расширителя GO32v2).

Существуют также дополнительные библиотеки модулей, часть из которых включается в дистрибутив Free Pascal, а часть - нет.

Несколько библиотек, находящихся пока в состоянии разработки, предназначено для объектной реализации GUI-интерфейса для Windows и XWindow.

Существует аналог Turbo Vision - Free Vision, однако пока он недоступен: первоначальная версия содержала много кода от Borland, и сейчас перерабатывается для лицензионной чистоты.

В процессе разработки библиотека доступа к базам данных. Предполагаются InterBase, MySQL и Postgress. Сейчас пока можно с ними работать только через их API.

В дистрибутив входят модули, облегчающие написание CGI-программ - разбор HTTP-заголовка и т.д. модули упаковки и распаковки файлов в формате zip, работа с SVGA-графикой и OpenGL, и многое другое.

Лицензия

Free Pascal распространяется на условиях GNU General Public License (GNU GPL). Модули и библиотеки распространяются на условиях GNU Library General Public License (GNU LGPL), последняя версия данной лицензии называется GNU Lesser Public License.

Ознакомиться с ними и узнать, что за зверь GNU можно на gnu.org или gnu.ru.

Язык

Впечатлившись кроссплатформенностью, мы скачиваем документацию, дабы поподробнее узнать о возможностях компилятора. Обычно freeware компиляторы особыми изысками не балуют - совместимость с Turbo Pascal 7.0 практически максимум их притязаний. Конечно, и TP - шаг вперед по сравнению со стандартами Pascal и Extended Pascal, однако мы живем в мире уже других стандартов, так называемых "промышленных". "Промышленный стандарт" на Pascal сейчас - это последняя версия Borland Delphi, то есть Object Pascal со всеми прелестями классов и настоящего объектного программирования.

Так вот, Free Pascal поддерживает классы и RTTI. Поддерживает также перегрузку (overloading) процедур и функций и обработку исключений в try-блоках. Поддерживает он и длинные строки (тип ansistring) по модели Delphi.

В общем, до Delphi Free Pascal "не дотягивает" совсем чуть-чуть: отсутствует поддержка динамических массивов, "широкие строки" (WideString) для работы с Unicode, и поддержка OLE Automation. Однако все эти возможности группа разработчиков намерена включить уже в следующий релиз - версию 1.2. Впрочем, я думаю, что с OLE Automation они скорее всего подзадержатся, поскольку это нужно только на одной платформе. Поживем, увидим.

Зато присутствуют такие вкусности, как перегрузка операторов (+, -, *, /, **, =, <, >, <=, >=. =), последний обеспечивает также скрытое преобразование типов, посему с ним надо обращаться осторожно. Inline- процедуры, функции и операторы, причем не нужно извращаться, как в Turbo Pascal, и писать в машкодах. Правда, действуют они только в пределах модуля - вне его вызываются как обычные.

IDE и утилиты

А теперь о грустном - IDE, можно сказать, отсутствует. Для Win32 и DOS существует консольная оболочка fp, построенная по образу и подобию Turbo Pascal 7.0. Единственное достоинство этой оболочки - декларированная интеграция с gdb - GNU-отладчиком. Сам я этим отладчиком не пользуюсь, однако в конференциях встречал жалобы, что интеграция эта весьма несовершенна.

Отладчик прилагается в дистрибутиве (см. выше). К сожалению, GNU-отладчик не ориентирован на Free Pascal, зато Free Pascal ориентирован на него. Лично я отладчиком стараюсь не пользоваться, предпочитая "метод вилки".

Ассемблер и компоновщик - GNU as и ld (для Win32 - asw и ldw, соответственно).

Из прочих утилит, прилагаемых к компилятору, отмечу h2pas - переводчик С-шных заголовочных файлов .h в модули .pas; и компилятор ресурсов windres - аналог brcc32 из поставки Delphi.

Должен заметить, что ситуация с IDE не такая безнадежная, как может показаться. Существуют отдельные проекты, некоторые из которых весьма неплохи, однако характеризуются хотя бы одним из трех недостатков: написаны не на Free Pascal (хороший пример - редактор-оболочка Dev-Pascal, написанный на Delphi), не распространяются в исходниках, или недостаточно отлажены, попросту говоря, глючат. Очевидно, любой из этих причин достаточно, чтобы не вносить эти инструменты в дистрибутив.

Справка

Справка Free Pascal распространяется с дистрибутивом в двух форматах: PDF и HTML, при желании можно скачать отдельно справку и в других форматах. И в том и в другом виде она хорошо структурирована и прекрасно читается. Состоит из четырех книг:

"Руководство программиста", которое описывает различные аспекты программирования, такие как директивы компилятора, использование ресурсов, использование встроенного ассемблера и т.д.

"Справочник", где описывается язык Pascal в его Free Pascal диалекте и содержимое модулей System и ObjPas.

"Справочник модулей". Описываются модули: CRT, DOS, DXELoad, Emu387, GetOpts, GPM, GO32, Graph, HeapTrc, IPC, Linux, Math, MMX, MSMouse, Objects, Ports, Printer, Sockets, Strings, SysUtils.

"Руководство пользователя", где рассматриваются такие вопросы, как инсталляция Free Pascal, ключи командной строки, файл настроек и проч.

Резюме

Надеюсь, данный краткий обзор заинтересовал вас и станет первым шагом на пути к обстоятельному знакомству с одним из интереснейших открытых проектов - кроссплатформенным компилятором Free Pascal. Жду вопросов и тем для обзоров.

Copyright © Иван Шихалев, 2001-2002

Оставить комментарий

Free Pascal

Free Pascal

Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее.

Free Pascal – это 32 и 64-битный компилятор языка Паскаль. Текущая версия (2.2) может компилировать код для следующих процессоров:
  • Intel i386 и выше (i486, семейство Pentium и выше)
  • AMD64/x86_64
  • PowerPC
  • PowerPC64
  • SPARC
  • ARM
  • Процессор m68K поддерживается старшими версиями
Компилятор и библиотека времени выполнения (RTL – Run-Time Library) доступны для следующих операционных систем:
  • DOS
  • LINUX
  • AMIGA (только версия 0.99.5)
  • WINDOWS
  • Mac OS X
  • OS/2 (при использовании дополнительного пакета EMX, это также справедливо для DOS/Windows)
  • FREEBSD
  • BEOS
  • SOLARIS
  • NETBSD
  • NETWARE
  • OPENBSD
  • MorphOS
  • Symbian
Полный список всех версий доступен на сайте Free Pascal.

Насколько это возможно, Free Pascal был разработан максимально совместимым с Turbo Pascal 7.0 и Delphi 7 (несмотря на это, совместимость не является основной целью), но он также расширяет возможности этих языков благодаря таким элементам, как перегрузка операций. И, в отличие от своих прототипов, Free Pascal поддерживает множество платформ, то есть является кросс-платформенным.

Он также отличается тем, что вы не можете использовать модули, откомпилированные на одной системе в других системах, то есть вы не можете использовать откомпилированные модули Турбо Паскаль.

Также имеется текстовая версия Интегрированной Среды Разработки (Integrated Development Environment – IDE), доступная для Free Pascal. Пользователи, предпочитающие визуальную среду разработки, могут использовать Lazarus или MSIDE.

Free Pascal состоит из нескольких частей:
  1. Компилятор.
  2. Библиотека времени выполнения (RTL – Run-Time Library).
  3. Пакеты. Это коллекция множества полезных модулей, основанных в целом на Windows 32 API и интерфейсе GTK-2.
  4. Бесплатная библиотека компонентов (Free Component Library – FCL). Это набор основанных на классах полезных моделей, которые позволяют получить доступ к базам данных, обеспечивают поддержку изображений, Интернета, XML и т.п.
  5. Полезные программы и модули.
Для работы с компилятором вам необходимы только первые две части. В этом документе описано использование компилятора и утилит. Язык программирования Паскаль описан в документе «Справочные материалы», а доступные процедуры и модули RTL и FCL описаны в соответствующих справочных руководствах.

Руководство пользователя free pascal

FreePascal. Руководство пользователя
  • Файл формата zip
  • размером 128,05 КБ
  • содержит документ формата txt
  • Добавлен пользователем searian. дата добавления неизвестна
  • Отредактирован 24.03.2011 17:53
  • Скачан 16 пользователями

Это руководство пользователя Free Pascal. Оно описывает установку и использование компилятора Free Pascal на различных поддерживаемых платформах. Оно не пытается дать ни исчерпывающий список всех поддерживаемых команд, ни определение языка Pascal. Для этих целей смотрите Справочное Руководство. Для просмотра описания возможностей и внутренней организации компилятора используйте Руководство Разработчика. В приложениях этого документа Вы найдете списки зарезервированных слов и сообщений об ошибках компилятора (с описаниями).

Этот документ описывает компилятор и его функции такими, какими они есть на момент написания этого руководства. Для начала ознакомьтесь с файлами README (информации к сведению) и FAQ (часто задаваемых вопросов), распространяемых вместе с компилятором. В случае конфликта README и FAQ файлов с этим руководством, более достоверными следует считать README и FAQ файлы.

  • Чтобы скачать этот файл зарегистрируйтесь и/или войдите на сайт используя форму сверху.

Иван Шихалев: Что такое Free Pascal?

Free Pascal [1]. точнее Free Pascal Compiler aka FPC — это свободный 1 кроссплатформенный компилятор языка программирования Pascal. В отличие от другой свободной реализации этого языка — GNU Pascal, FPC ориентирован не на стандарт, а на популярные диалекты — то, что когда-то называлось Object Pascal, а теперь Delphi Language.

Существует также проект Lazarus [2] — основанная на FPC свободная среда программирования, реализующая значительную часть функционала собственно среды Borland Delphi (см. врезку). Простые проекты можно переносить практически без ручной работы, после чего они могут быть скомпилированы для систем, отличных от Win32.

Поддерживаемые платформы

Список ниже неполон. Дело в том, что разработка компилятора ведется непрерывно и портирование его на различные платформы тоже. Версии для разных платформ находятся в разных стадиях готовности, постоянно дорабатываются, а проверить их вживую у меня нет никакой возможности. Поэтому я перечислю только те, в которых я более-менее уверен.

Не все из этого развито одинаково хорошо. За подробным списком с пояснениями, что и как, прошу на официальный сайт, в викидокументацию [3]. Информация в pdf-документации, пожалуй, слишком скупа [4, стр. 7–8]. Замечу, что чем менее «мейнстримна» ваша платформа, тем больше вероятность столкнуться с проблемами. Наиболее отлажены и богаты библиотеками — самые распространенные системы: Windows, Linux, Mac OS X и FreeBSD.

В устаревших версиях компилятора 1.x, которые можно попытаться найти на ftp-зеркалах в интернете, поскольку на официальном ftp-сервере [5] они сейчас отсутствуют, была также поддержка архитектуры Motorola 680x0. В современных версиях она отсутствует, и неизвестно, вернется ли. Скорее всего, никому особо-то и не нужно.

Отдельно стоит упомянуть о недавно запущенном проекте генерации кода для виртуальной Java-машины. В релиз эта возможность еще не попала, желающие могут обратиться к викидокументации [6] .

Диалекты языка

TP режим совместимости с Turbo Pascal. Совместимость практически полная, за исключением тех средств Turbo Pascal, которые были возможны только в real-mode DOS. Delphi режим совместимости с Borland Delphi. На сегодняшний день по языку 2 Free Pascal совместим с Delphi примерно 7-й версии. FPC собственный диалект языка. Базируется на TP, от которого отличается различными расширениями, такими как, например, перегрузка операций. Включен по-умолчанию. ObjFPC собственный диалект языка с объектно-ориентированными расширениями a-la Delphi. Рекомендуется для новых проектов. MacPas режим совместимости с Macintosh Pascal.

Выбор текущего диалекта осуществляется через указание параметров компилятора, а также посредством директивы компилятора <$MODE xxx> непосредственно в исходных файлах. В одном проекте, но в разных модулях, могут быть задействованы одновременно любые диалекты.

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

Источники информации

Официальная документация на английском языке распространяется вместе с компилятором, а также доступна на официальном же сайте FreePascal.org [1]. Там же находится вики, где можно найти дополнительную информацию — о новых, экспериментальных и только планируемых возможностях.

Документация распространяется в формате PDF и состоит из следующих книг:

Free Pascal: Language Reference Guide [7] Справочное руководство по языку. Подробно описывает собственно язык, не включая стандартную библиотеку, которая документирована отдельно (см. ниже). Free Pascal: Programmer’s Guide [8] Руководство программиста. Описывает различные тонкости, такие как: директивы компилятора, управление памятью, соглашения об использовании регистров, особенности различных платформ и т.д. Free Pascal: User’s Guide [4] Руководство пользователя. Описывает использование и настройки компилятора и входящих в дистрибутив утилит, включая IDE текстового режима, но исключая описание утилиты для генерации документации к модулям fpdoc. которой посвящено отдельное руководство (см. ниже).
Также описывается отладка, сообщения об ошибках и проч. Run-Time Library (RTL): Reference Guide [9] Справочное руководство по стандартным модулям. Включает документацию на 46 модулей, входящих в состав RTL. Free Component Library (FCL): Reference Guide [10] Справка по дополнительным модулям, также входящим в стандартный набор, но не входящих в состав RTL. Подробнее о том, какие это модули и с чем их едят, мы поговорим в отдельной статье. FPDoc: Reference Manual [11] Справочное руководство по утилите автодокументирования исходников FPDoc.

Тем же, кто предпочитает русский язык, следует в первую очередь обратиться на сайт FreePascal.ru [12]. где наличествует ряд материалов (в основном статьи) и хороший живой форум [13]. Также могу порекомендовать книги для начинающих [14] и [15] .

Компилятор как таковой распространяется на условиях GNU General Public License v2 [16]. тогда как идущие в комплекте библиотеки — RTL и FCL — на условиях модифицированной GNU Lesser General Public License v2.1 [17]. Данная модификация явно разрешает статическую линковку с произвольным кодом [18, п 1.4]. Также входящие в комплект модули из каталогов packages могут использовать какие-то другие лицензии — тут лучше уточнять отдельно в каждом конкретном случае.

Схожую картину можно наблюдать и в проекте Lazarus — IDE и утилиты под GPLv2, основные библиотеки — modified LGPL, некоторые пакеты под своими лицензиями.

Итого: вы можете, используя Free Pascal и/или Lazarus, писать, как проприетарные, так и свободные (в том числе — копилефтные) программы.

1) GNU General Public License, см. подраздел «Лицензии ».

2) Совместимость стандартных библиотек менее полная.

Ссылки

Free Pascal: Свободный софт для свободных людей

Читать или не читать.

Начнем, пожалуй, с оператора if. then. else.

Если вы не программируете на Паскале и в обозримом будущем не собираетесь этим заниматься, то, скорее всего, все, о чем здесь пойдет речь, будет для вас малопригодным.

Если вы уже знакомы с Free Pascal и применяете этот компилятор, разрабатывая собственные программы, то для вас, должно быть, нижеследующее повествование будет скучным.

Для всех остальных, надеюсь, рассказ о Free Pascal окажется полезным. Не зря же говорят, что чем больше информации, тем выше уровень свободы( или энтропии. ).

Помимо всего прочего, Free Pascal потенциально может быть интересен незрячим программистам, поскольку позволяет создавать современные и качественные программы, используя компилятор в режиме командной строки.

Отсутствие платы за лицензию и открытость исходных кодов Free Pascal дают возможность использовать его в школах и университетах. Также Free Pascal может заинтересовать тех разработчиков, которых волнуют вопросы юридической чистоты создаваемых программных продуктов.

Напутственное

Разговор наш пойдет о компиляторе Free Pascal Compiler (FPC), который распространяется группой разработчиков по общественной лицензии GNU. Лицензия эта подразумевает, в частности, что для Free Pascal открыты и общедоступны исходные коды, а их распространение и модификация (при условии соблюдения лицензии) ничем не ограничены. Входящие в состав дистрибутива пакеты и библиотеки имеют лицензию LGPL (GNU Lesser Public License), что позволяет распространять скомпилированные программы на любых (в том числе и коммерческих) условиях. В дополнение к этому, Free Pascal можно получить совершенно бесплатно, то есть даром (вернее, на что вам придется раскошелиться, так это на оплату соединения через интернет для загрузки дистрибутива на свой компьютер).

По давно устоявшейся традиции, разработчики этого программного обеспечения ничего вам не гарантируют, дистрибутив и исходные коды отдают вам в том виде, каком они существуют (то есть если в них есть ошибки, то они там есть. если нет ошибок, то нет. ). Все, что вы будете делать с программным обеспечением, вы будете делать на свой страх и риск. Следуя этой традиции, добавлю, что и вся эта статья предоставлена вам на таких же условиях.

Примечание. все необходимые ссылки собраны в заключительном разделе этой статьи.

К чему он пригоден.

Читая документацию по Free Pascal, то и дело натыкаешься на слово "Delphi". Речь идет о совместимости Free Pascal с Delphi, причем это настолько завораживает, что поначалу пояснения о том, что совместимость поддерживается лишь на уровне языка программирования, не воспринимаются всерьез. Как всегда, хочется всего сразу и бесплатно. Так что если для вас программирование в среде Delphi сводится к "мышиной" возне с формами и "кидании" компонентов из одного угла экрана в другой, то, подозреваю, Free Pascal вас разочарует. Ничего подобного Free Pascal не содержит. Вернее сказать, среда быстрой разработки приложений -- это другой программный продукт и, следовательно, тема для другого разговора.

Здесь же начнем с того, что Free Pascal -- это 32-разрядный компилятор. Мощный, быстрый (компиляция выполняется за один проход), многоплатформенный. Он поддерживает и расширяет синтаксис промышленных стандартов языка Паскаль: Turbo Pascal 7.0 и Object Pascal (тот самый, который используется в качестве языка программирования в среде Delphi). Для Turbo Pascal декларируется почти полная совместимость, а для Delphi - совместимость с большинством версий, включая Delphi 7 (классы, rtti, исключения, ansistrings, widestrings, интерфейсы). В дистрибутиве для Apple предусмотрен режим совместимости с Mac Pascal. Кроме того, Free Pascal реализует перегрузку функций, перегрузку операторов, глобальные свойства и некоторые другие самобытные возможности.

Free Pascal поддерживает компиляцию кода для процессоров Intel, начиная с i386, AMD64 or EMT64, PowerPC, SPARC, Intel ARM. На сегодняшний день существуют или находятся в разработке релизы Free Pascal для следующих операционных систем: Dos (с поддержкой 32-разрядных расширений), Linux, Mac OS X/Darwin, Mac OS classic, Amiga (только версия 0.99.5), Win32, os/2, FreeBSD, BeOS, Solaris. PalmOS. NetBSD, Netware, OpenBSD, MorphOS.

Сейчас последней и рекомендуемой к использованию является версия 2.0.2, вышедшая в ноябре 2005 г. Для каждой из поддерживаемых платформ существует свой дистрибутив Free Pascal. В дальнейшем речь пойдет о пакете, предназначенном для семейства ОС Win32.

На уровне исходного кода приложения, разработанные при помощи Free Pascal, являются переносимыми (портируемыми) между поддерживаемыми платформами. Степень переносимости тем выше, чем больше приложение ориентировано на использование входящих в состав Free Pascal модулей (имеются в виду модули, общие для всех поддерживаемых платформ).

Free Class Library

Вернемся еще раз к вопросу совместимости Free Pascal и Delphi. Полагаю, что справедливей будет говорить о легкости/трудности перехода от Delphi к Free Pascal и легкости/трудности переноса существующих исходных кодов. При таком подходе нельзя не сказать о библиотеке Free Class Library (FCL), входящей в состав дистрибутива Free Pascal. Эта библиотека содержит аналоги невизуальных компонентов Delphi. Здесь широко представлены средства доступа к различным базам данных (в том числе Interbase, mysql, ODBC и др.), средства работы с XML и средства работы с интернет. В некоторых случаях совместимость с компонентами Delphi доведена вплоть до совпадения имен классов и методов.

Документация

В дистрибутив Free Pascal для Win32 включена документация на английском языке, представленная в формате pdf. На сайте разработчиков также доступна он-лайн документация и архивы с документацией в формате html и в виде обычного текстового файла.

В состав документации входят руководство пользователя, руководство программиста, справочник по диалекту языка Паскаль, который поддерживается Free Pascal, справочник по опциям командной строки,справочник по модулям и функциям встраиваемых библиотек и руководство по созданию документации.

Перевод документации на русский язык подкрасил бы дело, но, к сожалению, работы по переводу находятся в начальной стадии.

Прибавления Кроме компилятора, в состав пакета входят дополнительные утилиты, призванные подсобить в разработке приложений. Среди них:
  • data2inc — преобразует произвольный файл во включаемый файл (.inc) для FPC, где соответствующие данные представлены в виде константы-массива.
  • delp — очищает папку от "временных" файлов, возникающих при компиляции.
  • fpcmake — используется для подготовки make-файлов для GNU make.
  • fpdoc — генерирует документацию из модулей Free Pascal в форматах HTML и LaTeX.
  • fpmc — компилятор msg-файлов.
  • fprcp — pascal-препроцессор для windres.
  • grep — осуществляет поиск строки по шаблону в одном или нескольких файлах.
  • h2pas и h2paspp — транслятор заголовочных файлов C и C++ в модули Pascal.
  • makeskel — утилита для подготовки скелета xml-описания для fpdoc.
  • ppdep — позволяет получить список зависимостей одного модуля от других.
  • ppudump — позволяет извлечь информацию из .ppu-файлов.
  • ppufiles — то же, что ppdep, но для .ppu-файлов.
  • ppumove — позволяет собирать библиотеки из .ppu.
  • ptop — форматирование исходников.
  • windres - компилятор ресурсов.
  • и другие.
Интегрированная среда разработки

Единственное, что не устроило меня во Free Pascal, это интегрированная среда разработки. Дело в том, что она малопригодна для работы незрячих программистов, поскольку реализована в виде консольного приложения. Напомню, что консольным называется такое приложение, которое не использует графический интерфейс, а работает исключительно в текстовом режиме. При этом такое приложение может быть 32-разрядным приложением Windows (а не только DOS-программой). Не секрет, что консольное окно, мягко говоря, недостаточно озвучивается скринридерами (например, Jaws for Windows). Ситуация осложняется еще и тем, что внешне среда разработки Free Pascal выглядит подобно среде разработки Turbo Pascal (то есть имеет меню, диалоги, множество окон, реализованных в текстовом режиме). Однако скринридеры, работающие под DOS, здесь тоже не помогут, так как это приложение Windows.

С точки зрения разработчиков Free Pascal, такой подход, возможно, и оправдан: консоль есть практически во всех операционных системах, а графический интерфейс только в некоторых. Но в данном случае приходится признать, что интегрированная среда Free Pascal для незрячих недоступна.

Впрочем, выход есть всегда. Free Pascal может выполнять компиляцию и сборку программ из командной строки. То есть вы можете для подготовки исходных текстов использовать наиболее удобный для вас текстовый редактор, который позволяет редактировать обычный текст (plain text) в кодировке ANSI, а компилировать программы можно, запуская специально подготовленный bat-файл или используя утилиту make, входящую в состав Free Pascal. Такой способ может показаться непривычным для пользователей Windows, програмирующих в среде Delphi, но для пользователей Linux - это в порядке вещей. Ниже будут приведены два примера (консольное приложение и GUI-приложение), иллюстрирующих такой подход.

Также следует заметить, что уже существуют многочисленные (в том числе и бесплатные) текстовые редакторы, представляющие собой не слишком изощренную среду разработки программ. Некоторые из них вполне доступны для чтения программой Jaws for Windows. В таких редакторах выполняется цветовое выделение синтаксических конструкций для различных языков программирования, а также есть возможность собрать несколько файлов в один проект и указать командную строку для компиляции исходных кодов.

Проект Lazarus

Рассуждая об "идеологической совместимости" Free Pascal и Delphi, необходимо отдать должное проекту Lazarus, в рамках которого и реализуется идеология быстрого визуального программирования.В основе проекта лежит библиотека визуальных компонентов Lazarus (LCL), для которой декларируется совместимость с визуальными компонентами VCL из Delphi. Библиотека LCL является платформонезависимой и утверждается, что исходные коды приложений могут быть портированы на любую из поддерживаемых платформ.

Развитие проекта идет в двух направлениях: разработка и улучшение работы визуальных компонентов, входящих в LCL, и совершенствование интегрированной визуальной среды быстрой разработки приложений. Дистрибутив этой среды разработки и библиотека компонентов Lazarus не входят в состав дистрибутива Free Pascal. Если вас интересует этот проект, вы можете отыскать все необходимые файлы на сайте разработчиков.

Установка компилятора

Рекомендуемую для работы версию Free Pascal можно загрузить с официального сайта разработчиков. Имя загружаемого файла (версия 2.0.2 для ОС Win32): fpc-2.0.2.i386-win32.exe, размер составляет около 26 мегабайт.

Также на официальном сайте доступны исходные коды компилятора и входящих в него пакетов. Этот материал может быть использован и как пример большого открытого проекта, и как своего рода образец стиля программирования, и как основа для собственных разработок.

После того как вы загрузили дистрибутив, запустите программу установки Free Pascal (файл fpc-2.0.2.i386-win32.exe). Далее придется выполнить стандартную процедуру установки, то есть последовательно пройти несколько диалогов, нажимая кнопку Next (в последнем диалоге нужно будет нажать кнопку Install).

Не рекомендуется изменять папку, в которую будет установлен компилятор (по умолчанию это C:\FPC\). Иначе (если путь к этой папке будет слишком длинным) возможны ошибки при компиляции.

Рекомендуемый тип установки (если позволяет размер свободного места на диске) - Full installation (Установка полного пакета). Также доступны - Minimum installation (Установка минимально необходимых файлов) и Custom installation (Выборочная установка). Полная установка займет на диске 101 мегабайт. При выборочной установке можно отказаться, например, от интегрированной среды разработки.

Первые программы Командный файл

Для компиляции простых примеров и небольших программ вполне подойдет bat-файл, который должен располагаться в той же папке, где и файл с исходным кодом. Для консольного приложения он может иметь следующий вид(предполагается, что компилятор установлен в папку C:\FPC\):

В результате выполнения такого файла в текущей папке появятся три файла: объектный (с расширением .o), исполняемый (.exe) и файл, содержащий отчет о компиляции и сообщения об ошибках (errlog.txt). Разумеется, что объектный и исполняемый файлы появятся лишь в том случае, если при компиляции не было ошибок.

Аналогичный bat-файл для GUI-приложения дополнительно будет содержать командную строку для вызова компилятора ресурсов. Компилятор ресурсов входит в дистрибутив Free Pascal.

Консольное приложение

По заведенному порядку следовало бы в качестве первой консольной программы предложить четырехстишие, выводящее на экран строку "Hello, world!". Немного отступим от этого порядка и, кроме вывода текста на экран, проиллюстрируем работу с функциями Win32 API (в данном случае GetVersionInfo ).

Поместите нижеследующий текст программы в текстовый файл с hello.pas. В той же папке создайте bat-файл для компиляции консольного приложения. Запустите этот bat-файл. Если во время компиляции ошибок не было, то в папке появятся файлы hello.o, hello.exe и errlog.txt. В противном случае вы увидите только файл errlog.txt (просмотрите его и устраните ошибки).

Запустите файл hello.exe. На экран будет выведено сообщение о версии ОС Windows, установленной на вашем компьютере. Если вы используете Jaws for Windows, то прочитать содержимое окна можно при помощи Jaws-курсора. Нажмите клавишу Enter, чтобы закрыть окно приложения.

GUI-приложение

Если вы изучаете Win32 API и системное программирование в ОС Windows, но при этом не хотели бы переходить с Паскаля на Си, то Free Pascal - это вполне приемлемое решение. Практически любой пример, приводимый в справочниках по Win32 API, можно реализовать на Free Pascal путем замены конструкций языка Си на аналогичные конструкции языка Паскаль.

В качестве примера ниже приведен исходный код простого GUI-приложения, которое описывает и регистрирует класс окна, создает окно и запускает цикл обработки сообщений. Окно приложения содержит горизонтальную полоску меню: Файл и О программе. При выборе в меню Файл пункта Открыть появляется стандартный диалог открытия файла. Пользователь может выбрать только файлы с расширением .wav. После того как файл будет выбран, он будет воспроизведен при помощи системной функции PlaySound (). Чтобы сделать пример попроще, в нем не обрабатывается сообщение о перерисовке окна.

При создании GUI-приложения необходимо указать компилятору тип приложения (по умолчанию подразумевается консольное). Это делается дериктивой

Если необходимо добавить к приложению файл ресурсов (в данном случае ресурсом является меню программы), то следует воспользоваться директивой

Вам следует скопировать исходный код приложения в текстовый файл hellowin.pas, а исходный код файла ресурсов в hellowin.rc. В ту же папку необходимо поместить bat-файл для компиляции GUI-приложения. Запустите этот файл. Если не было ошибок компиляции, то в папке появятся файлы hellowin.exe, hellowin.o, hellowin.res, hellowin.or и два файла с отчетами о компиляции errlog,txt и errres.txt. Запустите файл hellowin.exe и проверьте работу пунктов меню приложения.

Для компиляции приложения необходим файл ресурсов hellowin.rc.

Ссылки по теме
  1. Исходные коды примеров (zip, 28 Kb).
  2. www.freepascal.org - Официальный сайт разработчиков Free Pascal. Здесь находятся все, что необходимо для установки Free Pascal и работы с ним (дистрибутивы, документация, faq, форум разработчиков и т.д.)
  3. Прямая ссылка для загрузки дистрибутива Free Pascal версии 2.0.2 Win32
  4. Страница для загрузки дистрибутива Free Pascal 2.0.2 для OC Win32 и документации (на случай, если предыдущая ссылка не будет работать).
  5. www.lazarus.freepascal.org - Официальная страница проекта Lazarus, в рамках которого разрабатывается библиотека визуальных компонентов и среда быстрой разработки приложений для Free Pascal.
  6. www.freepascal.ru - Российский сайт для разработчиков, использующих Free Pascal. Создателями сайта ведется работа по переводу документации на русский язык.