Free Pascal
Free Pascal Compiler, Lazarus и все, что с ними связано
Последние записи
«Обернутые» функции в Free Pascal
Бывает, требуется множество подпрограмм единообразно обернуть — добавить им всем одинаковое начало и завершение или,
что более интересно, выполнить их в блоке „try ... except
“ с каким-нибудь фильтром на исключения… Вообще, понятно,
что FPC поддерживает процедурные типы, но как раз типы тут могут быть самые разные, а нетипизированный вызов с ручной
установкой стека — это потенциальный неиссякаемый источник трудноуловимых ошибок.
Тут самое время вспомнить, что FPC с некоторых пор поддерживает еще и вложенные процедурные типы, а вложенная процедура
имеет доступ ко всей области видимости внешней, включая, естественно, аргументы и псевдопеременную result
.
Соответственно, можно вынести все действия подпрограммы во вложенную процедуру без параметров, а в основной блок вставить вызов «оборачивателя» с этой вложенной процедурой. Далее пример.
FPC-Notes: И с чем его едят...
Программное обеспечение используется нами не в вакууме, а в некотором окружении. Одни программы необходимы для работы других, третьи могут быть полезны для совместного использования, четвертые позволяют решать смежные задачи…
Давайте рассмотрим различный софт, с которым нам, возможно, придется взаимодействовать при программировании на Free Pascal.
FPC-Notes: Начало работы
Предварительно хочу сказать, что данная заметка является непосредственным продолжением «Что такое Free Pascal?», а не «Hello, World!»
Очевидно, чтобы использовать Free Pascal, первым делом нам надо откуда-то его взять и установить на свой компьютер. Для этого нужно зайти на официальный сайт в раздел «Download» [1] и выбрать дистрибутив для своей системы. Далее следовать инструкциям на сайте. Для разных систем предусмотрены различные адекватные системы установки (на врезке показан установщик для Win32), в том числе deb- и rpm-пакеты для распространенных дистрибутивов Linux, dmg-образ для Mac OS X и т.д.
Таким образом вы получите последний стабильный релиз. Пользователям Linux имеет смысл предварительно выяснить, нет ли пакета
fpc
в репозиториях родного дистрибутива… Скорее всего он там найдется, но далеко не факт, что свежей версии1.
-
Так, например, на момент написания этих строк в основном дереве портежей Gentoo самая новая версия — 2.4.0, ↩
FPC-Notes: «Hello, World!»
Начнем по традиции с простейшей программы, делающей хоть что-то… Кто сказал «что-то полезное»? До чего-то
полезного нам еще пилить и пилить. Достаточно типовой «Hello, World!» можно увидеть во врезке. Теперь можно
сохранить этот текст в файл (например, hello.pp
1), скомпилировать командой fpc hello
и запустить.
См. консольный фрагмент — если вы работаете в Linux или FreeBSD, результат должен быть похож. Да и в других
системах отличия не особо существенны. Еще тут может выпасть предупреждение от компоновщика — на него внимания
обращать не надо. Получилось? Теперь будем разбираться, что именно.
В действительности, это не самый минимальный пример — я таки оставил одну необязательную строку, а именно — первую…
Но давайте по порядку. Исходный код программы начинается с необязательного заголовка, состоящего из ключевого слова
program
и идентификатора. Заканчиваться идентификатор заголовок2 должен точкой с запятой,
как и любое предложение языка. Впрочем, не совсем так.
-
FPC ищет исходные тексты по имени, подставляя расширения
.pas
,.pp
и.p
. Второй вариант указывает, что исходник предназначен именно для FPC, а не для произвольного компилятора Pascal. Именно его мы и будем использовать. ↩ -
Исправил грубую ошибку при переносе поста на shikhalev.org. Была бы не столь грубая, оставил бы. 2021.04.14. ↩
Что такое 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.
-
GNU General Public License, см. подраздел «Лицензии». ↩