Free Pascal不完全攻略之一 :进入FP的世界

时间:2022-09-02 18:53:18

注:该文章转自我在163.com的BLOG。因为感觉163的blog不大适合用于写技术性文章,因此打算将上面技术类的文章转载过来CSDN。

WHY FREE PASCAL
在这个IT技术日新月异的时代,人们的目光总会被各种新颖的技术所吸引,例如。NET    ,Ajax,SOA等等。有时难免会忽略了一些最基本的东西。Pascal作为一种老牌的编程语言,已经走过了三十多年,似乎已经走到了尽头——但是,Pascal作为一种结构严谨的编程语言,有其独特的优势:紧凑整齐,概念简介,数据结构和控制结构比较丰富,程序可读性好。因此,Pascal在算法和数据结构的教学上,有其独特的优势。我自己接触的第一门编程语言就是Pascal。它既比Basic严谨,也比C易学。而且它的语法比较靠近C语言,因此Pascal程序员写C程序也不会有太大问题。(相比之下,BASIC和C就差得远了)

ABOUT FREE PASCAL

    目前最为流行的Pascal编译器,要数Free Pascal。这是一个*软件项目,目的是为了向人们提供一个与Turbo Pascal 7.0和Delphi 7尽可能兼容的32位Pascal编译器。因此,Free Pascal支持许多新颖的特性,如面向对象,函数重载、操作符重载、全局成员和RTTI等等。而且Free Pascal也是我国目前信息学奥赛指定的Pascal编译器。因此,我们可以看到,Pascal语言并未走向衰亡,而是借助Free Pascal再一次得到重生与发展。

    但是,Free Pascal已经不同于往日的Turbo Pascal。它能够运行在多个不同的平台下,包括DOS,Linux,Windows,NetBSD,FreeBSD和Mac OS X等等。另外,Free Pascal在某些平台下的移植仍在开发阶段,如Solaris,PalmOS和OpenBSD,相信有需要的用户很快就能够在这些平台下用上Free Pascal。

    Free Pascal其实是一套完整的套件,它由以下几个部分组成:
1.Free Pascal的编译器:fpc。
2.运行库RTL,Free Pascal的基本程序库。
3.程序库包,其中包括了许多非常有用的单元,例如Windows 32 API,压缩/解压库和GTK2图形界面等。
4.Free Class Library。它提供了许多功能,如数据库框架,Web支持,XML支持等等
5.若干个小工具和其他的单元

    此外,Free Pascal还有一个基于命令行界面的IDE(集成开发环境),和以前的Turbo Pascal有点相似。这对于初学者来说比较有用。
Free Pascal不完全攻略之一 :进入FP的世界
上图:FP自带的IDE
Free Pascal自带的单元

记得以前Turbo Pascal自带了七个单元。比起古老的TP,FP的功能强大了许多,所附带的单元也多了许多。下面选择一些比较重要的单元来进行介绍:
标准单元:
cmem 使用这个单元,表示你要使用C库的内存管理机制取代Free Pascal的内存管理机制。
crt 这个单元与TP的crt单元十分类似。它提供了许多终端下的功能函数,如改变颜色、移动光标、从键盘中读取信息等等。
dos 这个单元提供了许多与操作系统相关的函数。例如搜索文件、设置环境变量、获取操作系统版本、读写系统时间等等。这个单元所实现的函数有的和sysutils中的函数有些相似。
heaptrc 顾名思义,这个单元用于堆栈使用状况的跟踪。使用这个单元,能在程序结束时输出使用内存以及可能存在的未释放内存的信息。
keyboard 该单元提供了独立于平台的键盘支持。也可以用来写自己定制的键盘驱动程序。
math 该单元实现了许多有用的数学函数,例如三角函数、对数函数等等,甚至是更加复杂的。
matrix 该单元实现了对矩阵操作的支持。
mouse该单元提供了独立于平台的鼠标支持。也可以用来写自己定制的鼠标驱动程序。
mmx 该单元可以为你的程序提供MMX扩展
sockets 该单元提供了TCP/IP编程的接口
strings 该单元提供了许多操作pchar(字符串指针)类型的函数,与标准C库有点相似。
system 这个单元包含了许多基本的函数,例如文件IO,内存管理等等。
strutils 该单元包含了许多有用的字符串函数
dateutils 该单元提供了许多处理时间日期的函数
sysutils 该单元有选择性地实现了Delphi的同名单元的某些函数。例如会检测文件是否锁定的IO函数,日期、字符串处理函数,文件搜索,日期字符串转换等等。
typinfo 该单元实现了类似Delphi的运行期间信息(Run-time Type)的功能。
video 该单元提供了独立于平台的屏幕操纵函数,也可以用于编写驱动程序。

Windows下的附加单元:
wincrt 这个CRT单元用于Windows下的终端。
Windows 该单元提供了WIN32 API的调用。在与Delphi的兼容性上Free Pascal的开发小组已经尽了很大的努力,以使Delphi的代码能够轻易地移植到Free Pascal下。
opengl 该单元提供了底层的OPENGL函数。
winmouse该单元提供了在WINDOWS下操纵鼠标的支持。
ole2 提供了处理OLE对象的支持
winsock 提供了对Windows Socket API的支持

Linux以及各种BSD系统下的附加单元:
baseunix 该单元提供了基本的unix系统操作,实现了POSIX标准的一个子集。使用这个单元能够确保你的程序在不同的Unix系统之间有良好的可移植性。
errors 返回包含操作系统错误代码的字符串。
unixtype 提供了常见的各种Unix下的数据类型

Free Pascal的硬件要求

Free Pascal的硬件要求并不高,对于现代的计算机而言,运行Free Pascal绰绰有余。你甚至是可以在一些很古老的计算机上面运行Free Pascal。下面给出Free Pascal的硬件要求:
1.Intel的80386或更高级的处理器。尽管不一定需要协处理器,但离开了它就要使用浮点运算仿真,这会使你的程序的速度变慢。(不过现在的处理器基本都带有协处理器)
2.一个 An AMD64或EMT64 处理器。
3. 一个PowerPC 处理器。
4. 一个 SPARC 处理器。
5. 一个Intel ARM 处理器。
6.旧版本的Free Pascal支持motorola的68000处理器,不过这些旧版本已经不再更新。
在内存方面,Free Pascal的要求也不算很高,只需要8MB内存就可以编译一些小程序。不过,假如你希望编译器在编译大型程序(例如编译一个编译器)时运行得快一点,那么建议你的电脑有64MB的内存,甚至是128MB内存,以提高工作效率。在硬盘需求方面,我们建议你给Free Pascal至少80MB的空间。装的东西越多,就耗费的硬盘空间。如果你打算安装源代码,那么你就需要给Free Pascal另外270MB空间。

Free Pascal的软件平台要求
一.在DOS下:
Free Pascal for DOS的软件包已经包含了所有需要的文件,所以你只需要安装即可。
二.在UNIX下
在UNIX和LINUX系统下,你需要事先安装一下程序。大多数LINUX发行版和UNIX已经自带这些程序
1. GNU as,  GNU 汇编器
2. GNU ld, GNU 连接器
3. 建议你把 GNU make也安装上。如果你想重新编译器和运行库(Run-Time Library),这就是必要的。
三.在WINDOWS下
Free Pascal for WINDOWS的软件包已经包含了所有需要的文件。不过,假如你想更好地使用Free Pascal,那么建议你把mingw32或cygwin也安装上。
四.在Mac OS X下
你需要安装Mac OS X 10.1 或更高的版本。另外还要装上开发者工具包或 XCode。

安装编译器

安装Free Pascal并不困难。不过不同的平台有不同的安装方法,下面我们会逐一讨论。
一.在DOS和WINDOWS下安装
主要的安装步骤
我们假设你已经下载了最新Free Pascal for WINDOWS 或DOS的软件包,这通常是一个zip文件。然后将它解包。若在DOS下,请运行里面的INSTALL.EXE文件。在WINDOWS下则运行setup.exe。
安装程序会询问你若干个问题:
1.你需要安装哪些组件以及你是否需要安装源代码。
2.你希望把Free Pascal安装到哪里。默认的路径是C:/PP。
假如你希望从任何路径都能运行Free Pascal,那么你必须将FP的二进制程序的位置输入到AUTOEXEC.BAT下面,
DOS下是这样的:
SET PATH=%PATH%;C:/PP/BIN/GO32V2
WINDOWS下是这样的:
SET PATH=%PATH%;C:/PP/BIN/WIN32

二.在Linux下安装
在Linux下安装包有以下三种格式:
• tar.gz 格式的压缩包
• rpm
• deb
如果你下载了RPM包,那么安装会是十分简单的:
rpm -i fpc-X.Y.Z-N.ARCH.rpm
X.Y.Z 代表了版本号,ARCH代表了软件包的平台,如i386、i586或x86_64之类的。
如果你使用的是Debian,那么请使用DEB包,安装的命令如下:
dpkg -i fpc-XXX.deb
安装RPM包和DEB包都需要有root权限。若你没有root权限,那么你可以尝试安装tar格式的安装包。首先,你需要解压tar包:
tar -xvf fpc.tar
要安装Free Pascal,那么请输入下面的命令:
./install.sh
安装脚本会询问你一些问题,你需要仔细回答,主要的问题是:
1.你想将不同的东西放到哪里(如二进制可执行文件,帮助文件,单元等等)。
2.你需要安装哪些组件,是否安装源代码。
假如你有root权限,那么你就可以按照默认给出的设置安装,但是如果你没有这个权限,那么你需要注意一下你对Free Pascal的文件的安装路径是否有写权限。在安装结束的时候,安装程序会生成一个fpc.cfg文件。这个文件保存了编译器的各种设置选项。一般这个文件会安装到/etc和下你的家目录下,名字为.fpc.cfg。如果安装用户没有root权限,那么这个文件就只会安装到你的家目录下。编译程序时,编译器首先会检测家目录下的.fpc.cfg,然后才是/etc/fpc.cfg。

测试一下编译器
安装后,也许你会迫不及待地想编译一个程序来看看编译器是否被正确安装了。在Windows和DOS下,编译器的执行文件时fpc.exe,在Linux、Unix下则是fpc。下面给出一个最基本的Pascal的Hello World程序:

Free Pascal不完全攻略之一 :进入FP的世界program Hello;
Free Pascal不完全攻略之一 :进入FP的世界begin
Free Pascal不完全攻略之一 :进入FP的世界    writeln(‘Hello World
!
);
Free Pascal不完全攻略之一 :进入FP的世界    readln;
Free Pascal不完全攻略之一 :进入FP的世界end.


假设你将这个文件保存为hello.pp。那么编译它只需要使用一下命令:
fpc  hello.pp
如果你没有为Free Pascal安装配置文件,那么编译器有可能找不到RTL的路径,那么就需要在编译时给编译器传递另外一些参数(假设Free Pascal被安装到了默认的路径):
在Windows下:
fpc -Fuc:/pp/units/go32v2/rtl  hello.pp
在Unix或Linux下:
fpc -Fu/usr/lib/fpc/NNN/units/linux/rtl  hello.pp
如果一切顺利,那么编译器就不会给出任何错误消息。在DOS和Windows下就会生成可执行文件hello.exe,在Linux和Unix下则是hello。要运行程序,只需要在命令行下输入:
#hello
如果一切正常,那么你就会看到一句友好的问候:
Hello World!
欢迎你进入Free Pascal的世界!