标题：Free Pascal
简介
Free Pascal是个由国际组织开发的完全的win32的pascal语言编译器，类似delphi，可编写windows程  序。
此前被广泛使用的PASCAL编译器普遍为Turbo Pascal& Borland pascal。但是它们可用的空间十分有限。而Free Pascal理论上可以使用4GB内存。所以在利用Free Pascal编程的时候，可以改变原有思路，将大量时间转嫁给空间，提高效率。
区别
与 Turbo Pascal 的区别
虽然Free Pascal尽量设计得和Turbo Pascal接近，但是由于以下的两个原因，两者之间还是有一些区别的：  Free Pascal1.Free Pascal是一个32位的编译器，而Turbo Pascal只是16位编译器；
2.Free Pascal是一个跨平台的编译器，而Turbo Pascal只在windows和DOS上使用。
如果你的代码遵守ANSI Pascal标准，那么将代码从Turbo Pascal移植到Free Pascal是没有问题的。
下面是在Turbo Pascal上可以使用，但是在Free Pascal就不能使用的一些语言特性：
1.函数和过程在使用时，参数的类型必须和定义时完全一致。原因是在Free Pascal中添加了函数重载功能（可以用完全相同的多个标识符定义多个函数，只要它们的参数不同，就是不同的函数；在没有此功能时，非整实型的实在参数可以与整形的形式参数赋值相容）；
2.Protected、Public、Published、Try、Finally、Except、Raise成了关键字，不能作为标识符的名字；
3.Far、Near不再是关键字了，原因是Free Pascal是32位系统，不再需要这些关键字；
4.布尔表达式不一定要全部进行计算。只要最终结果已经能够确定，就不再计算其它还没有计算的部分了——比如布尔表达式exp1 and exp2 and exp3，如果已知exp1的结果是false，那么怎么表达式的结果肯定是false，exp2和exp3就不用进行计算了；
5.在Free Pascal中，集合中的元素都是4个字节长的；
6.表达式执行的顺序是不确定的。比如对于表达式a:=g(2)+f(3); 不保证g(2)一定在f(3)之前执行；
7.如果用Rewrite打开文件，那么文件就只能被写入了。如果需要读取这个文件，要对文件执行Reset；
8.Free Pascal在程序结束之前一定要关闭输出文件，否则输出文件可能不能被正确的写入；
9.Free Pascal理论上可以使用4GB的内存，因此实际上几乎可以使用系统中的所有剩余内存（除非系统中有内存限制），这是由于Free Pascal是32位的编译器。但是对于Turbo Pascal来说，由于是16位的编译器，因此不能定义大小超过64KB的数据类型和变量，并且在DOS实模式下可以使用的内存总数只有640KB。
扩充
Free Pascal相对于Turbo Pascal的扩充
1． 函数可以返回复杂的类型，比如记录和数组。
2． 在函数中，函数的返回值通常可以作为一个变量来处理。比如：
function a : longint;
begin
a:=12;
while a>4 do
begin
{...}
end;
end;
这个例子在Turbo Pascal中，a>4会被认为是函数的递归调用，但是在Free Pascal中会认为a只是一个变量。如果想在Free Pascal中实现递归调用，就要写成下面的形式：
function a : longint;
begin
a:=12;
{ this is the recursive call }
if a()>4 then
begin
{...}
end;
end;
3． exit可以接受一个参数作为函数的返回值。比如：
function a : longint;
begin
a:=12;
if a>4 then
begin
exit(a*67); {函数的返回值就是a*67 }
end;
end;
4． Free Pascal支持函数重载。可以用相同的名字定义不同的函数，只要这些函数的参数不同，就是不同的函数。比如：
procedure DoSomething (a : longint);
begin
{...}
end;
procedure DoSomething (a : real);  Free Pascalbegin
{...}
end;
可以使用不同的参数类型longint或者real来调用不同的DoSomething过程。
由于这个功能，函数的提前声明必须有完整的参数声明：
procedure x (v : longint) : forward;
{...}
procedure x;{ 这里定义的过程x重载了前面声明的过程x。因此这里的两个x是不同的}
begin
{...}
end;
5． Free Pascal容许运算符重载。比如，可以自己为矩阵运算定义一个“+”运算。
6． Free Pascal在windows 95及其以上的windows版本上支持长文件名。对于文件名，由于windows系统对大小写不敏感，因此在程序中，文件名的大小写是无关的。但是对于其它大小写敏感的系统，比如linux，程序中用到的文件名必须和系统中的文件名完全一致。但是由于信息学竞赛的评测系统一般是linux，因此要求程序中的文件名和系统中的文件名一样。
程序设计介绍
PASCAL语言介绍PASCAL语言是由瑞士的沃斯（N.Wirth）教授于1971年提出来的。它的命名是为了纪念法国数学家Pascal。它是世界上第一个结构化的高级程序设计语言。结构化程序设计主要由三种基本结构（顺序结构、选择结构、循环结构）组成。后来有人把函数和过程作为第四种基本结构。这四种结构对外看都只有一个入口和一个出口，结构清晰，避免了由GOTO语句所引起的混乱。另外在程序设计方法方面，主张采用自顶向下，逐步求精的方法。即将一个大的复杂问题，划分成若干少的易解决的问题。每个小问题，又可划分成一些更小的更易解决的问题。这样，只要把每个小问题都解决了，整个大问题也就解决了。这种方法也为多个人合作编程提供方便。
由于PASCAL语言具有良好的结构程序设计特性，适合于教学，特别是适合于培养学生掌握自顶向下逐步求精的结构化程序设计思想和方法，并养成良好的程序设计风格和习惯，因此，国内外许多大学都将PASCAL作为一门程序设计教学语言。PASCAL程序结构例1-1：输入半径求圆的周长和面积？
program circle(input,output); 
const
Pi=3.14; 
var
r,L,s:real;
begin
write('r=');
readln(r);
L:=2*pi*r;
s:=pi*r*r;
writeln('R=',r:8:2,' L=',L:8:2,' S=',s:8:2);
end .集成环境编辑程序、保存程序
1． 请确定Turbo.exe文件所在磁盘目录。假如它是放在F：盘的TP7文件夹（又称子目录）中。
2． 把您要保存程序文件的盘设为当前盘，并保存文件于当前盘的当前目录中。假如您的程序文件要存在H：盘的当前目录，则在DOS方式提示符“>；”后输入下面命令。
> h：←┘ 
3．调入并执行Turbo.exe，进入Turbo Pascal集成环境。
> f:\tp7\turbo.exe←┘
4．在程序编辑窗口中，输入例1-1程序。注意一个编辑窗口只能编辑一个程序文件。常用的编辑键有：
← ↑ → ↓ ：光标移动键。
Delete ：删除光标所在字符。
←┘ ：回车键，用于换行或在光标处插入一行之用。
5．程序编辑完后，按F10 键，执行主菜单[File]中的[Save]项目菜单保存程序到磁盘中，并试用“yz1-1.PAS”作为例1-1程序存盘文件名。运行程序观察运行结果、跟踪调试程序
1． 按F10 键，执行主菜单[ RUN ]中的[Run]项目菜单，运行程序，然后在提示后输入一个调试用的半径值：
r= 10←┘
2． 按F10 键，执行主菜单[Debug]中的[ output ]项目菜单，打开输出窗口观察到结果如下：
R= 10.00 L= 62.80 S= 314.00
如果有错，请找出错误并修改它，重复第1步，再执行直到有正确输出结果。
3．重复第1步，再次运行程序，输入另一个园的半径值5，观察输出结果是否也正确，从而确定该程序能否正确解决不同半径的园的周长和面积的求解问题。
程序调试中我们常用的操作还有：
双线框的窗口称为“当前活动窗口”。
F1 键：得到光标所在位置的项目的帮助信息。
F4 键：要求运行到当前光标处暂停。
F5 键：放大或缩小当前活动窗口。
F6 键：切换其它窗口为当前活动窗口。
F7 键：单步执行程序并能跟踪进入子程序。
F8 键：单步执行程序但不能跟踪进入其子程序。
F10 键：在菜单和活动窗口间转换。
CTRL + Break 键：强制终止当前程序的运行。
其它功能按键请同学们以后自己查看英文帮助说明，出色的程序员都习惯查看英文帮助。
4．学习跟踪调试方法，它可帮助我们检查分析出算法上存在的错误。
1． 按F10 键，执行主菜单[Debug]中的[ Watch ]项目菜单，打开监视窗口
（2） 按 Insert 键，输入常量pi ←┘
Insert 键，输入变量r ←┘
Insert 键，输入变量l ←┘
Insert 键，输入变量s ←┘
3． 请按F8 键或F7单步执行程序直到程序结束，观察上述常量和变量如何变化。
4． 观察程序执行过程中Watch监视窗口中常量和变量的值变化，分析算法是否正确。
说明：如果想在程序还未结束前终止程序的单步执行或跟踪调试，可按F10 键，执行主菜单[Run]中的[ Program Reset ]项目菜单。
1．1.5 关闭当前活动窗口、退出Turbo Pascal集成环境
1． 按 F6 键切换当前活动窗口，执行主菜单[Windows]中的[Close]菜单项关闭当前活动窗口，如果当前活动窗口是程序编辑窗，在关闭前可能因程序已修改过而提问用户是否需要保存编辑窗口中的被更改后的程序。试逐一关闭所有窗口。
2． 执行主菜单[File]中的[Exit]菜单项可退出Turbo Pascal集成环境，返回DOS提示符状态。
1．1.6 深入理解例1-1程序各语句意义保留字1． 在Pascal中有些词具有特定的含义，用户必须正确理解其含义和正确使用，否则会运行出错。这些具有特定含义的词称为“保留字”。“保留字”不能做常量名、变量名或程序名。在Turbo Pascal7.0编辑窗口中，保留字默认用白色显示。例1-1中的包含的保留字有：program,const,var,begin,end，它们的特定含义分别是：program 指出后面定义的是程序名；const指出后面定义的是程序将用到的常量；var指出后面定义的是程序将用到的变量；begin指出程序执行代码开始；end指出程序执行代码结束。标识符2． 除了保留字外，还用到标识符，用于表示常量、变量、类型、文件、函数、过程或程序的名字。标识符是以字母开头的字母、数字组合，标识符又分为标准标识符和用户自定义标识符。如例1-1中，用户自定义标识符有：程序名为circle，常量pi，实数型变量r、l和s，它们由程序设计者定义的；标准标识符有：实数标准类型名real，读数标准过程名readln，输出标准过程名write和writeln，标准输入文件input，标准输出文件output。在Pascal编译系统中，标准标识符也具有特殊的含义，我们定义标识符时也应尽量避免与标准标识符取相同名字。PASCAL中的保留字及标识符是不区分大小写的。
保留字 program,const,var,begin,end
标识符 标准标识符 Real,readln,write,writeln,input,output
用户自定义标识符 circle,pi,r,l,s书写格式程序名说明：program <；用户自定义的程序名>(input,output）；其中圆括号的内容称为程序的参数。程序参数指明程序与外部联系的文件名。input是标准输入文件，例如键盘；output是标准输出文件，例如屏幕、打印机等。对于标准设备常可省略（input,output）的说明，简写为：program <；用户自定义的程序名>；；如例1-1可省略简写为：“ program circle; ”
常量定义：Const
<；常量标识符>=<；常量>；；
......
<；常量标识符>=<；常量>；；
变量定义：var
<；变量表> ：<；类型>；；
......
<；变量表> ：<；类型>；；
主程序语句部分：begin
<；语句>；；
......
<；语句>；；
end .
赋值语句：<；变量名标识符>；：=<；表达式>；； 其意义是把右边表达式的运算结果送到左边变量名所对应的数据区中。
读数据标准过程（又称读语句）：read（变量表），园括符内必须是已定义过的变量标识符，有多个时变量时可用逗号分隔构成变量表。
输出数据标准过程（又称写语句）：write（数据项表）或writeln（数据项表），有多个数据项时要用逗号分隔。数据项可以是字符串（如：'L=',' S='）、变量（如：l、s），如：s:8:2，表示要求输出时数据保留2位小数位，总长度包括小数点为8位；write与writeln区别是writeln完成所有输出后自动换行。
1．2 PASCAL基本组成
1．2.1 PASCAL语言使用的几类基本符号
(1) 大小写英文字母：A,B,...Z,a,b,..z
(2) 数字：0,1,2,3,4,5,6,7,8,9
(3) 其它符号：+,-,*,/,=,< >,>=,<=,<,>,(,),[,],:=,',,. :,..，∧ 等。
注意：PASCAL的标识符及保留字定义只能采用上述基本符号，其它特殊符号。例如：αβε∮∞≈，汉字等只能在字符型常量中使用。PASCAL语言保留字在PASCAL语言中，有些词具有特定的含义。用户必须了解其含义，以便正确的使用，否则会造成错误，这些具有特定含义的词被称为保留字，保留字不能作其它用途，如作变量名等。在Turbo pascal7.0中，保留字默认用白色显示，保留字如下：PROGRAM ，CONST，VAR，BEGIN，END，AND，ARRAY，CASE，DIV，DO，DOWNTO，ELSE，FILE，FOR，FUNCTION，GOTO，IF，IN，LABEL，MOD，NIL，NOT，OF，OR，PACKED，PROCEDURE，PROGRAM，RECORD，REPEAT，SET，THEN，TO，TYPE，UNTIL，WHILE，WITH等。
1．2.3 语法图说明
语法是语言的结构规则，语言的所有成分都必须符合语法的要求，如果语言的结构规则描述不严密，就会产生歧义。我们在下面说明语法中，采用语法图进行描述，使说明更加简洁。语法图常用的4种图形元素的意义如下：PASCAL语言中的标识符在PASCAL中标识符分标准标识符和用户自定义标识符，它可作为常量、变量、类型、过程、函数和文件的名字。标识符是以字母开头的字母数字序列，构成语法如下图示：
在PASCAL中有些标识符已定义了特定的含义，称为标准标识符，它们是：
标准常量：false,true,maxint等；
标准类型：integer,real,char,boolean,string,text等；
标准文件：input,output等；
标准函数：abs,chr,cos,eof,eoln,round,trunc等；
标准过程：read,readln,write,writeln,new,reset等；
指出下面用户自定义标识符为什么会错：
begin（系统保留字），
1student（不能用数字开头），student 1（不能有空格），
1．2.5 PASCAL中使用的常量与变量
程序中数据分为两类：一类是在程序执行过程中其值保持不变的量，称为常量；另一类是在程序执行过程中，其值可以改变的，这类数据称为变量。根据使用方式的不同，常量又可以分为直接常量和用户定义常量两种。
1．直接常量
指程序中直接引用的常数，在PASCAL中经常使用的常量有：整型常数，实型常数，字符型常数和布尔型常数等。
1． 整型常数语法图如下：
如：100,+120,-199,0等。
2． 实型常数语法图如下：
如：100 ， +120 ，2.5,0,0.005,+2.418,1.24E+3 ，-1.24E+3
这里E表示用科学记数法表示，1.24E+3相当于数学的1.24×10^(+3）。
3． 字符型常数语法图如下：
如：'A','a','?','4'，'aBbc','12.5'等。
4． 布尔型常量
布尔型常量简称为布尔型常数，它只有两个：true和false，分别表示逻辑判断的结果是真（True）和假（False）。
2．用户自定义常量
在程序中，如果一个常数反复多次出现在程序中，用户可以通过说明语句来定义一个标识符来代表这个常量。常量说明语法图如下：
如：const
pi=3.14;
country='China';
success=true;
3．变量说明
PASCAL程序中数值可以改变的量称为变量，由于变量可以取不同的值，因此变量必须通过标识符来代表。程序中出现的每个变量都必须在程序的变量说明部分进行类型说明.变量说明语法图如下：
如：var
x,y,z:real;
i,j,k:integer; 
ch:char;
t,f:boolean;
name:string;标准数据类型数据的类型确定了该类数据的表示形式和取值范围，而且确定了其所能参加的各种运算。PASCAL语言提供了丰富的数据类型，如下图1.1所示。这里我们先介绍标准类型，其它类型以后用到时才介绍。
1．整型
一个数存放在计算机中都要占用固定的存储空间，这决定了在计算机中的每种数据类型定义的数的大小是有限的，这点与数学中的定义不同，为了节省空间和提高处理速度，我们通常要根椐处理的数的最大可能决定选用不同的数据类型。Byte为信息存储单位。
整数的可选类型如下：
名称 类型标识符 数据表示范围 占用存储空间
整型 integer -32768 ~ +32767 2byte
短整型 shortint -128 ~ +127 1byte
长整型 longint -2147483648 ~ +2147483647 4byte
字节型 byte 0 ~ 255 1byte
字型 word 0 ~ 65535 2byte
例：var
i:byte;
当i值取256时出错，因为byte类型只能接受0~255之间的数。可定义大些，如word型
提问：若解题时i的最大可能取值为40000，问i变量应定义为那种数据类型较合适？
2．实型：实型有4种类型，如下表示
实型名称 类型标识符 数据表示范围 有效位 占用存储空间
实型 real -2.9*10^39~+1.7*10^38 11~12 6byte
单精度型 single -1.5*10^45~+3.4*10^38 7~8 4byte
双精度型 double -5.0*10^-324~+1.7*10^308 15~16 8byte
扩展型 extended -1.9*10^-4932~+1.1*10^4932 19~20 10byte
装配十进制型 comp -2^63+1 ~ +2^63 –1 19~20 8byte
注：在Turbo Pascal中，single,double,extended,comp需要计算机的数学协处理器支持，即要在程序首行加入编译开关{$N+},若计算机为486SX以下，没有协处理器，可采用仿真办法，即在程序首行加入编译开关{$N+,$E+}
例：var 
x:real;
当x的数学值为2时，在计算机中的值为：2.0000000000E+00
当x的数学值为-25时，在计算机中的值为：-2.5000000000E+01
当x的数学值为0.05时，在计算机中的值为：5.0000000000E-02
3． 字符型和字符串型
名称 类型标识符 说明
字符型 char 单个字符用一对单引号括起的数据。
字符串型 string 一个或一串字符用一对单引号括起来的数据。
例：var
ox:char;
note:string;
name:string[5];
4． 布尔型
名称 类型标识符 说明
布尔型 boolean 值只有true和false，分别表示真和假或对与错。
运算符、标准函数及标准过程
1．运算符
在PASCAL中提供的运算符有算术运算符、关系运算符和逻辑运算符等。不同的运算符都规定了其运算对象的数据类型和运算结果的类型。如下表：
运算符 运算类型 运算对象及类型 结果类型
+、-、* 算术运算 整型或实型 整型或实型
/ 算术运算 整型或实型 实型
div、mod 算术运算 整型 整型
not、and、or 逻辑运算 布尔型 布尔型
< 、<= 、= 、> 、>= 、<> 关系运算 标准类型 布尔型
(1）算术运算符+ 、- 、 * 、/ 说明
在PASCAL中乘用“*”表示，除用“/”表示。通过下面例子加深理解：
运算对象及式子 运算结果 结果类型
1+5 6 整型
1．0+5 6.0000000000E+00 实型
6/2 3.0000000000E+00 实型
2*6 12 整型
2．0*6 1.2000000000E+01 实型
(2) 算术运算符div 、mod 说明
div表示求两个整数除的商，mod表示求两上整数除的余数。
运算对象及式子 运算结果 结果类型及说明
7．div 2 3 整型
7．mod 2 1 整型
7．0 div 2 出错 运算对象不允许实数
(4) 关系运算符< 、<= 、= 、> 、>= 、<>；说明
运算对象及式子 运算结果 结果类型及说明
7．>5 true 布尔型
7<>7 false 布尔型
7=7 true 布尔型
7>=7 true 布尔型
7．5>7 true 布尔型
'B'>'A' true 布尔型
'b'>'B' true 布尔型
'abd'>'abc' true 布尔型
说明：字符常量比较大小是按字符对应的ASCII码值大小比较大小。如：字符'A'的ASCII码为65，'B'的ASCII码为66 ，故'B'>'A'，在ASCII码表中，小写字母的ASCII值又大过大写字母的ASCII值，故'b'>'B'。字符串的比较是逐个比，直到不同为止，故有'abd'>'abc'。
5． 逻辑运算符not、and、or
运算符 名称 意义 举例 结果
Not 非运算 相当于“求反” not（4>3） F not true false
And 与运算 相当于“而且” (4>3) and (2>3) F true and false false
Or 或运算 相当于“或者” (4>3) or (2>3) F true or false true
下表说明逻辑运算的运算结果
A B not A A and B A or B
true true false true true
true false false false true
false true true false true
false false true false false
6． 字符串连接运算符 +
如：'abc'+'def' 结果为：'abcdef'。标准函数和过程PASCAL中提供了很多标准函数和过程给用户直接使用，方便了我们编程，下面介绍一些常用的标准函数和标准过程，其它函数和过程可以在Trurbo Pascal的帮助文件中查阅。
(1) 算术标准函数
函数 名称 X类型 结果类型 说明
abs(x) 绝对值 整型，实型 整型，实型 Abs(-25)=25
sqr(x) 平方值 整型，实型 整型，实型 Sqr(5)=25
sqrt(x) 平方根 整型，实型 实型 sqrt(25)=5.0000000000E+00
trunc(x) 取整 整型，实型 整型 截取整数部分。trunc(-2.3)=-2
round(x) 取整 整型，实型 整型 四舍五入取整。round(-2.6)=-3 round(-2.3)=-2
int(x) 取整 整型，实型 实型 截取整数部分int(2.5)=2.0000000000E+00int(-2.5)=-2.000000000E+00
frac(x) 取小数 整型，实型 实型 frac(2.5)=5.0000000000E-01
exp(x) 指数 整型，实型 实型 例：求e3 即，e为2.718exp(3)=2.0085536923E+01
ln(x) 对数 整型，实型 实型 例：求log10(2)ln(2)=6.9314718056E-01
random 随机数 无 实型 随机产生（0,1）间的随机数
random(x) 随机数 整型 整型 随机产生[0，x-1]间的随机数
其它函数还有正弦函数sin(x），余弦函数cos(x），反正切函数arctan(x），自然对数函等等，请需要时从Turbo Pascal中的英文帮助中查阅。
注：在PASCAL中没有定义幂运算函数xn。但可采用下面式子计算：exp(n*ln(x））。
(2) 算术标准过程
[1] dec(x) 相当于 x:=x-1
[2] dec(x,n) 相当于 x:=x-n
[3] inc(x) 相当于 x:=x+1
[4] inc(x,n) 相当于 x:=x+n
(3) 字符处理标准函数
为了说明方便，设s,str,str1,str2为字符串型（string），ch为字符型（char）变量。
[1] concat(str1,str2)
作用：把两字符串连接成新字符中串。
例：concat('abc','def') 结果：'abcdef'
[2] copy(str,a,b)
作用：从字符串str的左边第a（整数）位开始截取b（整数）位字符串。
例：copy('abcdef',2,4) 结果：'bcde'
[3] length(str)
作用：求字符串str的长度。
例：length('abcdef') 结果：6 ；length('') 结果：0 ；length(' ') 结果：1
[4] chr(x)
作用：求x(x为整数1--255）表示的ASCII代码对应的字符
例：chr(65) 结果：'A' ;chr(66) 结果：'B'
[5] ord(x)
作用：求x的序号，其中x必须为有序类型。有序类型如：字符型、布尔型、整型、枚举型、子界型等。
例：ord('A') 即'A'的ASCII码值为：65 ；ord('B') 即'B'的ASCII码值为：66
ord(true) 结果：1； ord(false）结果：0
ord(1) 结果：49；ord(0）结果：48
[6] pos(str1,str2)
作用：求字符串str1在字符串str2中的开始位置，结果为整数。
例：pos('abc','efabcdg') 结果：3 ;pos('abc','efabfgh') 结果：0
[7] upcase(ch)
作用：把ch对应的字符转为大写字母。
例：upcase('a') 结果：'A' 
(4) 字符串处理标准过程
[1] delete(str,a,b)
作用：从字符串str的左边第a（整数）个字符开始向右连续删除b（整数）位字符，并把剩余字符串赋给str
例：str:='abcdefgh';delete(str,4,3); 最后str结果为：'abcgh'
str:='abcdef';delete(str,8,3); 最后str结果为：'abcdef'
[2] insert(str1,str,a)
作用：把字符串str1插入字符串str中由第a（整数）位字符之前，并把新字符串赋给字符串变量str。
例：str:='efghy';insert('abc',str,3）；最后str结果为：'efabcghy'
str:='efghy';insert('abc',str,8）；最后str结果为：'efghyabc'
[3] str(x,s)
作用：将x（x为整数或实数）转化为数字字符串，结果存入S。
例：str(12.4,s) s的结果为：'1.2400000000E+01'
str(12.4:5:1,s) s的结果为：' 12.4'。str(124,s) s的结果为：'124'
[4] val(str,a,code)
作用：将数字字符串转换成数字，并将该数字存入实型或整型变量a中，code为返回的错误代码，code=0 表示转换成功，无错误。
例：val('12',a,code) 若a为实型，a的结果为：1.2000000000E+01；若a为整型，a的结果为：12
(5) 布尔型标准函数
[1] odd(x)
作用：判断自变量x的奇偶特性，其中x为整型。奇数为true，偶数为false。
例：odd(13) 结果：true ;odd(10）结果：false。
[2] eof(x)
作用：判断文件x是否处于结束状态。其中x为文件型变量。文件结束为true，否则为false。
[3] eoln(x)
作用：判断文件x是否处于行结束状态。其中x为文件型变量。行结束为true，否则为false。
(6) 顺序类型函数
[1] pred(x)
作用：求x的前一个量值，其中x为字符型、布尔型、整型、枚举型、子界型等有序类型。
例：pred(6)=5 ;pred('b')='a' ;pred(true)=false ; pred(false)=true
[2] succ(x)
作用：求x的后一个量值，其中x为字符型、布尔型、整型、枚举型、子界型等有序类型。
例：succ(5)=6 ;pred('a')='b' ;pred(true)=false; pred(false)=true
(7) 标准单元中常用标准过程
Turbo Pascal中系统提供了八个标准单元，分别是：system（系统单元）、printer（打印单元）、dos(dos单元）、crt（显示单元）、overlay（覆盖单元）、graph（图形单元）、turbo3（与3.0版兼容单元）、graph3(3.0海龟图形单元）。这些单元中分别定义了大量的函数和过程供用户使用。但注意在使用标准单元的函数和过程前，除system单元可省略说明外，其它要在程序开头说明。说明格式如下：uses 标准单元； 或 uses 标准单元1,...，标准单元n；另外，前面介绍过的标准函数和过程都在system单元中。下面补充一些常用标准函数和过程。
[1] clrscr 过程 在crt单元
格式：clrscr 作用：清文本屏幕，并将光标移到屏幕左上角。
[2] delay 过程 在crt单元
格式：delay(ms) 作用：延迟ms毫秒数，其中ms为word型。
[2] gotoxy 过程 在crt单元
格式：gotoxy(x,y) 作用：称光标到y行x列上，其中x,y为byte型。
[3] sound 过程 在crt单元
格式：sound(hz) 作用：按hz(word型）指定的频率发音，调用该过程后会一直响，直到调用nosound过程将其关闭。
[4] nosound 过程 在crt单元
格式：nosound 作用：关闭扬声器。
[5] readkey 函数 在crt单元
格式：readkey 作用：从键盘读入一个字符，函数类型结果为char。
[6] exit 过程 在system单元
格式：exit 作用：退出当前过程或模块。
[7] halt 过程 在system单元
格式：halt 作用：停止程序执行。
[8] getdate 过程 在dos单元
格式：getdate(y,m,d,dw) 作用：返回当前日期（年，月，日，星期），其中y,m,d,dw为word型。1980<=y<=2099,1<=m<=12,1<=d<=31,0<=dw<=6（星期日为0）。
[9] gettime 过程 在dos单元
格式：gettime(h,m,s,se) 作用：返回当前时间（时，分，秒，毫秒），其中h,m,s,se为word型。0<=h<=24,0<=m<=59,0<=s<=59,0<=se<=99秒。
还有setdate(y,m,d,dw),settime(h,m,s,se），请读者查阅Turbo Pascal的帮助文件。
[10] read或readln过程 在system单元
格式：read(f,v1,v2,...,vn）或readln(f,v1,v2,..vn) 其中f为文件型变量，标准输入文件input（如键盘输入）时可省，v1,v2,...,vn为变量名表。
作用：从标准输入文件（如键盘输入）或磁盘文件中读入数据到变量中，多个变量时，要用逗号分隔。read与readln的区别是：readln会掉丢当前输入行中多余的数据。而read不会，多余的数据可留待下一个read或readln使用。
[11] write或writeln过程 在system单元
格式：write(f,v1,v2,...,vn）或writeln(f,v1,v2,...,vn) 其中f为文件型变量，标准输出文件OUTPUT（如显示器）可省，v1,v2,...,vn为表达式，且每个表达式的必须有唯一确定值，类型为标准类型。write与writeln区别是：writeln输完所有数据项后，光标自动移动到下一行，即自动换行。
pascal 函数集
abort 函数 引起放弃的意外处理 
abs 函数 绝对值函数
addexitproc 函数
将一过程添加到运行时库的结束过程表中 
addr 函数 返回指定对象的地址 
adjustlinebreaks 函数
将给定字符串的行分隔符调整为cr/lf序列 
align 属性 使控件位于窗口某部分 
alignment 属性 控件标签的文字位置 
allocmem函数 在堆栈上分配给定大小的块 
allowgrayed 属性 允许一个灰度选择 
ansicomparestr 函数 比较字符串（区分大小写） 
ansicomparetext 函数 比较字符串（不区分大小写） 
ansilowercase 函数 将字符转换为小写 
ansiuppercase 函数 将字符转换为大写 
append 函数 以附加的方式打开已有的文件 
arctan 函数 余切函数
assignfile 函数 给文件变量赋一外部文件名 
assigned 函数 测试函数或过程变量是否为空 
autosize 属性 自动控制标签的大小 
backgrounddi2001.jpg 属性 背景色 
beginthread 函数
以适当的方式建立用于内存管理的线程 
bevelinner 属性 控件方框的内框方式 
bevelouter 属性 控件方框的外框方式 
bevelwidth 属性 控件方框的外框宽度 
blockread 函数 读一个或多个记录到变量中 
blockwrite 函数 从变量中写一个或多个记录 
borderstyle 属性 边界类型 
borderwidth 属性 边界宽度 
break 命令 终止for、while、repeat循环语句
brush 属性 画刷 
caption 属性 标签文字的内容 
changefileext 函数 改变文件的后缀 
chdir 函数 改变当前目录 
checked 属性 确定复选框选中状态 
chr 函数 返回指定序数的字符 
closefile 命令 关闭打开的文件 
color 属性 标签的颜色 
columns 属性 显示的列数 
comparestr 函数 比较字符串（区分大小写） 
concat 函数 合并字符串 
continue 命令 继续for、while、repeat的下一个循环 
copy 函数 返回一字符串的子串 
cos 函数 余弦函数
ctl3d 属性 是否具有3d效果 
cursor 属性 鼠标指针移入后的形状 
date 函数 返回当前的日期 
datetimetofiledate 函数
将delphi的日期格式转换为dos的日期格式 
datetimetostr 函数 将日期时间格式转换为字符串 
datetimetostring 函数 将日期时间格式转换为字符串 
datetostr 函数 将日期格式转换为字符串 
dayofweek 函数 返回星期的数值 
dec 函数 递减变量值 
decodedate 函数 将日期格式分解为年月日 
decodetime 函数
将时间格式分解为时、分、秒、毫秒 
delete 函数 从字符串中删除子串 
deletefile 命令 删除文件
diskfree 函数 返回剩余磁盘空间的大小 
disksize 函数 返回指定磁盘的容量 
dispose 函数 释放动态变量所占的空间 
disposestr 函数 释放字符串在堆栈中的内存空间 
ditherbackgrounddi2001.jpg? 
使背景色的色彩加重或减少50% 
dragcursor 属性 当鼠标按下时光标的形状 
dragmode 属性 按动的作用方式 
dropdowncount 属性 容许的显示数据项的数目 
editmask 属性 编辑模式 
enabled 属性 是否使标签呈现打开状态 
encodedate 函数 将年月日合成为日期格式 
encodetime 函数
将时、分、秒、毫秒合成为时间格式 
endmargin 属性 末尾边缘 
eof 函数
对有类型或无类型文件测试是否到文件尾 
eoln 函数 返回文本文件的行结束状态 
erase 命令 删除外部文件 
exceptaddr 函数 返回引起当前意外的地址 
exclude 函数 从集合中删除一些元素 
exceptobject 函数 返回当前意外的索引 
exit 命令 立即从当前的语句块中退出 
exp 函数 指数函数
expandfilename 函数 返回包含绝对路径的字符串 
extendedselect 属性 
是否允许存在选择模式，true时，multiselect才
有意义 
extractfiledir 函数 返回驱动器和路径 
extractfileext 函数 返回文件的后缀 
extractfilename 函数 返回文件名 
extractfilepath 函数 返回指定文件的路径 
fileage 函数 返回文件已存在的时间 
fileclose 命令 关闭指定的文件 
filecreate 命令 用指定的文件名建立新文件 
filedatetodatetime 函数
将dos的日期格式转换为delphi的日期格式 
fileexists 函数 检查文件是否存在 
filegatattr 函数 返回文件的属性 
filegetdate 函数 返回文件的dos日期时间标记 
fileopen 命令 用指定的存取模式打开指定的文件 
filepos 函数 返回文件的当前指针位置 
fileread 命令 从指定的文件读取 
filesearch 命令 在目录中搜索指定的文件 
fileseek 函数 改变文件的指针 
filesetattr 函数 设置文件属性 
filesetdate 函数 设置文件的dos日期时间标记 
filesize 函数 返回当前文件的大小 
filewrite 函数 对指定的文件做写操作 
fillchar 函数 用指定的值填充连续字节的数 
findclose 命令 终止findfirst/findnext序列 
findfirst 命令 对指定的文件名及属性搜索目录 
findnext 命令 返回与文件名及属性匹配的下一入口 
floattodecimal 函数 将浮点数转换为十进制数 
floattostrf 函数 将浮点数转换为字符串 
floattostr 函数 将浮点数转换为字符串 
floattotext 函数 将给定的浮点数转换为十进制数 
floattotextfmt 函数 将给定的浮点数转换为十进制数 
flush 函数
将缓冲区的内容刷新到输出的文本文件中 
fmtloadstr 函数
从程序的资源字符串表中装载字符串 
fmtstr 函数
格式化一系列的参数，其结果以参数result返回 
font 属性 设置字体 
format 函数
格式化一系列的参数并返回pascal字符串 
formatbuf 函数 格式化一系列的参数 
formatdatetime 函数 
用指定的格式来格式化日期和时间 
formatfloat 函数 指定浮点数格式 
frac 函数 返回参数的小数部分 
freemem 函数 
按给定大小释放动态变量所占的空间 
getdir 返回指定驱动器的当前目录 
getheapstatus 返回内存管理器的当前状态 
getmem 
建立一指定大小的动态变量，并将指针指向该处 
getmemorymanager 返回内存管理器的入口点 
glyph 函数 按钮上的图象 
halt 停止程序的执行并返回到操作系统
hi 返回参数的高地址位 
high 返回参数的上限值 
hint 属性 提示信息 
int 返回参数的整数部分 
include 添加元素到集合中 
insert 在字符串中插入子串 
inttohex 将整型数转换为十六进制数 
inttostr 将整型数转换为字符串 
ioresult 返回最新的i/o操作完成状态 
isvalidident 测试字符串是否为有效的标识符 
items 属性 默认显示的节点 
kind 属性 摆放样式 
largechange 属性 最大改变值 
layout 属性 图象布局 
length 函数 返回字符串的动态长度 
lines 属性 缺省显示内容 
ln 函数 自然对数函数 
lo 函数 返回参数的低地址位 
loadstr 函数 
从应用程序的可执行文件中装载字符资源 
lowercase 函数 将给定的字符串变为小写 
low 函数 返回参数的下限值 
max 属性 最大值 
maxlength 属性 最大长度 
min 属性 最小值 
mkdir 命令 建立一子目录 
move 函数 从源到目标复制字节 
multiselect 属性 允许同时选择几个数据项 
name 属性 控件的名字 
new 函数
建立新的动态变量并设置一指针变量指向它 
newstr 函数 在堆栈上分配新的字符串 
now 函数 返回当前的日期和时间 
odd 测试参数是否为奇数 
onactivate 事件 焦点移到窗体上时触发 
onclick 事件 单击窗体空白区域触发 
ondblclick 事件 双击窗体空白区域触发 
onclosequery 事件 使用者试图关闭窗体触发 
onclose 事件 窗体关闭后才触发 
oncreate 事件 窗体第一次创建时触发 
ondeactivate 事件 用户切换到另一应用程序触发 
ondragdrop 事件 鼠标拖放操作结束时触发 
ondragover 事件 有其他控件从他上面移过触发 
onmousedown 事件 按下鼠标键时触发 
onmouseup 事件 释放鼠标键时触发 
onmousemove 事件 移动鼠标时触发 
onhide 事件 隐藏窗体时触发 
onkeydown 事件 按下键盘某键时触发 
onkeypress 事件 按下键盘上的单个字符键时触发 
onkeyup 事件 释放键盘上的某键时触发 
onpaint 事件 窗体上有新部分暴露出来触发 
onresize 事件 重新调整窗体大小触发 
onshow 事件 在窗体实际显示之前瞬间触发 
ord 返回序数类的序数 
outlinestyle 属性 类型 
outofmemoryerror 引起outofmemory意外 
pageindex 属性 页索引 
pages 属性 页 
paramcount 函数
返回在命令行上传递给程序的参数数量 
paramstr 函数 返回指定的命令行参数 
pen 属性 画刷设置 
pi 函数 返回圆周率pi 
picture 属性 显示图象 
pictureclosed 属性 设置closed位图 
pictureleaf 属性 设置leaf位图 
pictureminus 属性 设置minus位图 
pictureopen 属性 设置open位图 
pictureplus 属性 设置plus位图 
pos 函数 在字符串中搜索子串 
pred 函数 返回先前的参数 
random 函数 返回一随机函数 
randomize 函数 
用一随机数初始化内置的随机数生成器 
read 函数 
对有格式的文件，读一文件组件到变量中；对文本
文件，读一个或多个值到一个或多个变量中 
readln 函数 执行read过程，然后跳到文件下一行 
readonly 属性 只读属性 
reallocmem 函数 分配一动态变量 
rename 函数 重命名外部文件 
renamefile 函数 对文件重命名
reset 函数 打开已有的文件 
rewrite 函数 建立并打开一新的文件 
rmdir 函数 删除空的子目录 
round 函数 将实数值舍入为整型值 
runerror 函数 停止程序的执行 
scrollbars 属性 滚动条状态 
seek 函数 将文件的当前指针移动到指定的组件上 
seekeof 函数 返回文件的文件结束状态 
seekeoln 函数 返回文件的行结束状态 
selectedcolor 属性 选中颜色 
setmemorymanager 函数 设置内存管理器的入口点 
settextbuf 函数 给文本文件指定i/o缓冲区
shape 属性 显示的形状 
showexception 函数 显示意外消息与地址 
sin 函数 正弦函数 
sizeof 函数 返回参数所占的字节数 
smallchange 属性 最小改变值 
sorted 属性 是否允许排序 
sqr 函数 平方函数 
sqrt 函数 平方根函数 
startmargin 属性 开始边缘 
state 属性 控件当前状态 
str 函数 将数值转换为字符串 
stralloc 函数
给以null结束的字符串分配最大长度-1的缓冲区
strbufsize 函数 
返回存储在由stralloc分配的字符缓冲区的最大字
符数 
strcat 函数 
将一字符串附加到另一字符串尾并返回合并的字
符串 
strcomp 函数 比较两个字符串 
strcopy 函数 将一个字符串复制到另一个字符串中 
strdispose 函数 释放堆栈上的字符串 
strecopy 函数 
将一字符串复制到另一个字符串并返回结果字符
串尾部的指针 
strend 函数 返回指向字符串尾部的指针 
stretch 属性 自动适应控件的大小 
strfmt 函数 格式化一系列的参数 
stricomp 函数 比较两个字符串（不区分大小写） 
stringtowidechar 函数 
将ansi字符串转换为unicode字符串 
strlcat 函数 
将一字符串中的字符附加到另一字符串尾并返回
合并的字符串 
strlcomp 函数 以最大长度比较两个字符串 
strlcopy 函数 
将一个字符串中的字符复制到另一个字符串中 
strlen 函数 返回字符串中的字符数 
strlfmt 函数 
格式化一系列的参数，其结果中包含有指向目标缓
冲区的指针 
strlicomp 函数
以最大长度比较两个字符串（不区分大小写） 
strlower 函数 将字符串中的字符转换为小写 
strmove 函数 
将一个字符串中的字符复制到另一个字符串中 
strnew 函数 在堆栈上分配一个字符串 
strpas 函数
将以null结束的字符串转换为pascal类的字符串 
strpcopy 函数 
将pascal类的字符串复制为以null结束的字符串 
strplcopy 函数 
从pascal类的最大长度字符串复制为以null结束的
字符串 
strpos 函数 
返回一个字符串在另一个字符串中首次出现指针 
strrscan 函数 返 回字符串中最后出现字符的指针 
strscan 函数 返回字符串中出现首字符的指针 
strtodate 函数 将字符串转换为日期格式 
strtodatetime 函数 将字符串转换为日期/时间格式 
strtofloat 函数 将给定的字符串转换为浮点数 
strtoint 函数 将字符串转换为整型 
strtointdef 函数 将字符串转换为整型或默认值 
strtotime 函数 将字符串转换为时间格式 
strupper 函数 将字符串中的字符转换为大写 
style 属性 类型选择 
suce 函数 返回后继的参数 
swap 函数 交换参数的高低地址位 
tabs 属性 标记每一项的内容 
tabindex 属性 标记索引 
text 属性 显示的文本 
texttofloat 函数 
将字符串（以null结束的格式）转换为浮点数 
time 函数 返回当前的时间 
timetostr 函数 将时间格式转换为字符串 
trim 函数
从给定的字符串中删除前导和尾部的空格及控制
字符 
trimleft 函数
从给定的字符串中删除首部的空格及控制字符 
trimright 函数
从给定的字符串中删除尾部的空格及控制字符 
trunc 函数 将实型值截取为整型值 
truncate 函数 截去当前文件位置后的内容 
unselectedcolor 属性 未选中颜色 
upcase 将字符转换为大写 
uppercase 将给定的字符串变为大写 
val 函数 将字符串转换为整型值 
vararraycreate 函数 
以给定的界限和维数建立变体数组
vararraydimcount 函数 返回给定变体的维数 
vararrayhighbound 函数
返回给定变体数组维数的上界 
vararraylock 函数 锁定给定的变体数组 
vararraylowbound 函数
返回给定变体数组维数的下界 
vararrayof 函数 返回指定变体的数组元素 
vararrayredim 函数
通过改变上限来调整变体的大小 
vararrayunlock 函数 解锁指定的变体数组 
varastype 函数 将变体转换为指定的类型 
varcase 函数 将变体转换为指定的类型并保存它 
varclear 函数 清除指定的变体 
varcopy 函数 将指定的变体复制为指定的变体 
varformdatetime 函数 返回包含日期时间的变体 
varisarray 函数 测试变体是否为数组 
varisempty 函数 测试变体是否为unassigned 
varisnull 函数 测试变体是否为null 
vartodatetime 函数 将给定的变体转换为日期时间 
vartype 函数 将变体转换为指定的类型并保存它 
visible 属性 控件的可见性 
wantreturns 属性 
为true时，按回车键产生一个回车符；为false时，
按下ctrl+enter才产生回车符 
write 命令 
对有格式的文件，写一变量到文件组件中；对文本
文件，写一个或多个值到文件中 
writeln 命令 
执行write过程，然后输出一行结束标志 
widecharlentostring 函数 
将ansi字符串转换为unicode字符串 
widecharlentostrwar 函数
将unicode字符串转换为ansi字符串变量 
widechartostring 函数 
将unicode字符串转换为ansi字符串 
widechartostrvar 函数
将unicode字符串转换为ansi字符串变量表达式PASCAL中表达式是由常量、变量、函数、运算符及圆括号（只能用圆括号）连接起来的算式。与普通的算术运算式不同，表达式书写必须符合PASCAL语言规定。语法图如下：
例如：数学式子：的PASCAL表达式为：abs(a-sqtr(c+1))/(a*b)+d
PASCAL中运算的优先顺序如下：
(1) 括号内表达式优先处理
(2) 函数
(3) NOT
(4) AND,*,/,DIV,MOD
(5) +,-,OR
(6) <,<=,=,>,>=,<>,IN
注：同一个子表达式中，同一优先级的运算按从左到右的次序进行。而且不能用中括号和大括号，只能用圆括号。
例如：下面表达式中，假设x:=2;y:=2:i:=1；请读者分析其优先顺序，为什么
( x = sqr(2)) or not(y>0) and (( x-y ) /i <> 0 )PASCAL结构一个较完整和PASC程序结构如下：
program 程序名(程序参数表）
{$n+.....}(编译开关）
uses （使用单元）
label
标号说明；
const
常量说明；
type
类型说明；
var
变量说明；
function
函数说明；
procedure
过程说明；
begin
语句；
...
语句；
end .
Free Pascal扩充了数值位数
报错号
free pascal报错号对应翻译运行错误1 无效DoS功能号 
2．文件末找到 
3．路径未找到 
4．打开文件过多 
5．禁止文件存取 
6．无效文件句柄
12．无效文件存取代码 
15．无效驱动器号 
16．不能删除当前目录
17．不能跨驱动器改文件名 
100．Disk read error 磁盘读错误 
101．Disk write error 磁盘写错误 
102．文件变量末赋值 
103．File not open 文件未打开 
104．File not open for input 文件未用输入方式打开 
105．File not open for output 文件末用输出方式打开 
106．Invalid numeric format 无效数字格式 
150．磁盘写保护
151．未知单元 
152．驱动器未准备好 
153．未知命令 
154．数据CRC校验错 
155．驱动器请求的结构长度错 
156．磁盘定位错 
157．未知媒介类型 
158．扇区末找到 
159．打印机缺纸 
160．设备写失败 
161．设备读失败 
162．硬件故障 
200．Division by zero 被零除 
201．Range check error 数据范围检查错 
202．Stack overflow error 堆栈溢出错 
203．Heap overflow error 堆溢出错 
204．Invalid pointer operation 无效指针操作 
205．Floating point overflow 浮点上溢出 
206．Floating point underflow 浮点下溢出 
207．Invalid floating point operation 无效浮点运算 
208．未安装覆盖管理程序 
209．覆盖文件读错 
210．Object not initialized 对象未初始化 
211．Call to abstract method 调用抽象方法 
212．Stream registration error 流登计错 
213．Collection index out of range 集合下标越界 
214．Collection overflow error集合溢出 
215．Arithmetic overflow error 算术上溢错误 
216 General protection fault 存取非法 
217．控制-C 
218．授权指令 
219．无效的TYPECAST 
220．无效的变体TYPECAST 
221．无效的变体操作 
222．没有变体方法调用DISPATCHER 
223．不能建立变体数组 
224．变体不包含数组
225．变体数组边界错误 
226．TLS初始化错误编译错误l内存溢出
2缺标识符 
3标识符未定义 
4标识符重定义 
5语法错误 
6实型常量错 
7整型常量错 
8字符串常量跨行 
9文件嵌套过多 
10非正常文件结束 
11行过长 
12缺类型标识符 
13打开文件过多 
14无效文件名 
15文件未找到 
16磁盘满 
17无效编译指示 
18文件过多 
19指针定义中未定义类型 
20缺变量标识符 
21类型错误 
22结构过长 
24文件分量不能为文件 
25无效字符串长度 
26类型不匹配
27无效子界基类型 
28下界大于上界 
29缺有序类型 
30缺整型常数 
31缺常数 
32缺整型或实型常数 
33缺指针类型标识符 
34无效的函数结果类型 
35缺标号标识符 
36缺BEGIN 
37缺END 
38缺整型表达式 
39缺有序表达式 
40缺布尔表达式 
41操作数类型与操作符不匹配 
42表达式错 
43非法赋值 
44缺字段标识符 
45目标文件过长 
46未定义外部标识符 
47无效*.OBJ文件记录 
48代码段过长 
49数据段过长 
50缺DO 
51无效PUBLIC定义 
52无效EXTRN定义 
53EXTRN定义过多 
54缺0F 
55缺INTERFACE 
56无效重定位引用 
57缺THEN 
58缺T0或DOWNTO 
59未定义的向前引用 
60过程过多 
61无效类型转换 
62被零除D 
63无效文件类型 
64不能读写该类型的变量 
65缺指针变量
66缺字符串变量 
67缺字符串表达式 
68单元循环引用 
69单元名不匹配 
70单元版本不匹配 
71单元重名 
72单元文件格式错误 
73缺IMPLEMENTATl0N 
74常数与CASE类型不相匹配 
75缺记录变量 
76常数越界 
77缺文件变量 
78缺指针变量
79缺整型或实型表达式 
80标号不在当前块中 
81标号已定义 
82标号未定义 
83无效参数 
84缺UNIT 
85缺“；” 
86缺“：” 
87缺“，” 
88缺“（” 
89缺“）” 
90缺“=” 
91缺“：=” 
92缺“[”或“（．” 
93缺“]”或“．）” 
94缺“．” 
96变量过多 
97无效FOR控制变量 
98缺整型变量
99此处不允许用文件和 
100字符串长度不匹配 
101无效字顺序 
102缺字符串常数 
103缺整型或实型变量 
104缺有序变量 
105INLINE错 
106缺字符表达式 
107重定位项过多 
112CASE常量越界 
113语句错 
114不能调用中断过程 
116必须在8087方式下编译 
117末找到目标地址 
118此处不允许包含文件 
120缺NIL 
121无效限定符
122无效变量引用 
123符号过多 
124语句部分过长 
126文件必须为变量参数 
127条件符号过多 
128条件指令错位 
130初始条件定义错 
13l过程和函数头与前面定义的不匹酉 
132严重磁盘错误 
133不能计算该表达式 
134表达式错误结束 
l35无效格式说明符 
136无效间接引用 
137此处不允许结构变量 
138无SYSTEM单元不能计算 
l39不能存取该符号 
140无效浮点运算 
141不能将覆盖编译至内存 
142缺过程和函数变量 
143无效过程或函数引用 
144不能覆盖该单元 
147缺对象类型 
148不允许局部对象类型 
149缺VIRTUAL 
150缺方法标识符 
151不允许虚拟构造方法 
152缺构造方法标识符 
153缺释放方法标识符 
154FAIL只允许在构造方法内使用 
155无效的操作符和操作数组合 
156缺内存引用 
l57不能加减可重定位符号 
158无效寄存器组合 
159未激活286/287指令 
160无效符号引用 
161代码生成错 
162缺ASM
注意事项
在NOIP比赛中使用Free Pascal的注意事项
1．对于文件名，由于windows系统对大小写不敏感，因此在程序中，文件名的大小写是无关的。但是对于其它大小写敏感的系统，比如linux，程序中用到的文件名必须和系统中的文件名完全一致。
由于信息学竞赛的评测系统一般是linux，因此要求程序中的文件名和系统中的文件名一样。即：比赛中涉及的所有文件名（包括源程序名、输入文件名、输出文件名、答案文件名），都必须严格按照题目要求命名，严格区分大小写。
2． 在NOIP比赛中，程序中不得使用题目规定外的其他任何库（unit），一般在试机时确认；
3．在NOIP比赛中，源代码中不得使用编译选项（开关）；
4．在NOIP比赛中，禁止使用meml进行掐时。
乱码解决方案
如果打开Free Pascal时显示的是一堆乱码，这是因为错误地使用中文编码所导致的。
解决方案如下：  解决过程
1.右击标题栏；
2.选择“默认值”；
3.把“默认代码页”改为“437 (OME - 美国)”；
4.重启Free Pascal。[1]