Free Pascal错误一览表1、 Run Time Errors 运行错误(A)DOS 错误代码:
1:无效DoS功能号
2:文件末找到3:路径未找到4:打开文件过多
5:禁止文件存取
6:无效文件句柄
12:无效文件存取代码
15:无效驱动器号
16:不能删除当前日录
17:不能跨驱动器改文件名(B)I/O错误100:磁盘读错
误
101:磁盘写错
误
102:文件变量
末赋值
103:文件未打
开
104:文件未用
输入方式打开
105:文件末用
输出方式打开
106:无效数字
格式
(C)严重错误
150:磁盘写保
护
15l:未知单元
152:驱动器未
准备好
153:未知命令
154:数据CRC
校验错
155:驱动器请
求的结构长度
错
156:磁盘定位
错
157:未知媒介
类型
158:扇区末找
到
159:打印机缺
纸
160:设备写失
败
161:设备读失败
162:硬件故障(D)致命错误200:被零除20l:范围检查错
202:堆栈溢出错
203:堆溢出错204:无效指针操作
205:浮点上溢出
206:浮点下溢出
207:无效浮点运算208:未安装覆
盖管理程序
209:覆盖文件
读错
210:对象未初
始化
211:调用抽象
方法
212:流登计错
213:集合下标
越界
214:集合溢出
215:算术上溢
错误
216:存取非法
217:控制-C
218:授权指令
219:无效的TY
PECAST
220:无效的变
体TYPECAST
221:无效的变
体操作
222:没有变体
方法调用DISPA
TCHER
223:不能建立
变体数组
224:变体不包
含数组
225:变体数组
边界错误
226:TLS初始化
错误
2、编译错误对照表
下面列出在编译程序时可能出现的错误,在集成环境下,Pascal将自动加载源程序并定位于出错处。
1:内存溢出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:无效PUBLI
C定义
52:无效EXTRN
定义
53:EXTRN定义
过多
54:缺0F
55:缺INTERFA
CE
56:无效重定位
引用
57:缺THEN
58:缺T0或DO
WNTO
59:未定义的向
前引用
60:过程过多
61:无效类型转
换
62:被零除D
63:无效文件类
型
64:不能读写该
类型的变量
65:缺指针变量
66:缺字符串变
量
67:缺字符串表
达式
68:单元循环引
用
69:单元名不匹
配
70:单元版本不
匹配
71:单元重名
72:单元文件格
式错误
73:缺IMPLEME
NTATl0N
74:常数与CAS
E类型不相匹配
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:缺有序变
量
105:INLINE错
106:缺字符表
达式
107:重定位项
过多
112:CASE常量
越界
113:语句错
114:不能调用
中断过程
116:必须在80
87方式下编译
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:缺VIRTUA
L
150:缺方法标
识符
151:不允许虚
拟构造方法
152:缺构造方
法标识符
153:缺释放方
法标识符
154:FAIL只允
许在构造方法
内使用
155:无效的操
作符和操作数
组合
156:缺内存引
用
l57:不能加减
可重定位符号
158:无效寄存
器组合
159:未激活28 6/287指令160:无效符号引用161:代码生成错
162:缺ASM
一、单项选择题(共10 题,每题1.5 分,共计15 分。每题有且仅有一个正确答案.)。13届普及组一、单项选择题:(每题1.5分) 1. D 2. D 3. C 4. B 5. B 6.B 7. B 8. C 9. C 10. A 11. C 12. A 13. A 14. A 15. B 16. D 17. C 18. D 19. A 20. A 1.在以下各项中,()不是CPU的组成部分。 A.控制器 B.运算器 C.寄存器 D.主板 2.在关系数据库中,存放在数据库中的数据的逻辑结构以()为主。 A.二叉树 B.多叉树 C.哈希表 D.二维表 3.在下列各项中,只有()不是计算机存储容量的常用单位。 A.Byte B.KB C.UB D.TB 4.ASCII码的含义是()。 A.二→十进制转换码 B.美国信息交换标准代码 C.数字的二进制编码 D.计算机可处理字符的唯一编码 5.一个完整的计算机系统应包括()。 A.系统硬件和系统软件 B.硬件系统和软件系统 C.主机和外部设备 D.主机、键盘、显示器和辅助存储器 6.IT的含义是()。 A.通信技术 B.信息技术 C.网络技术 D.信息学 7.LAN的含义是()。 A.因特网 B.局域网 C.广域网 D.城域网 8.冗余数据是指可以由其它数据导出的数据。例如,数据库中已存放了学生的数学、语文和英语的三科成绩,如果还存放三科成绩的总分,则总分就可以看作冗余数据。冗余数据往往会造成数据的不一致。例如,上面4个数据如果都是输入的,由于操作错误使总分不等于三科成绩之和,就会产生矛盾。下面关于冗余数据的说法中,正确的是()。 A.应该在数据库中消除一切冗余数据 B.用高级语言编写的数据处理系统,通常比用关系数据库编写的系统更容易消除冗余数据 C.为了提高查询效率,在数据库中可以保留一些冗余数据,但更新时要做相容性检验 D.做相容性检验会降低效率,可以不理睬数据库中的冗余数据 9.在下列各软件,不属于NOIP竞赛(复赛)推荐使用的语言环境有()。A.gcc B.g++ C.Turbo C D.Free Pascal
Freepascall资料详解 一、TP和FP的功能区别 1.Free Pascal理论上可以使用4GB(2^32byte)的内存,因此实际上几乎可以使用系统中的所有剩余内存(除非赛题中有内存限制),这是因为Free Pascal使用的是32位的编译器。但是对于Turbo Pascal来说,由于是16位的编译器,因此不能定义大小超过64KB (2^16byte)的数据类型和变量,并且在DOS实模式下可以使用的内存总数只有640KB。但这并不是说,你可以随意定义很大的数组了,因为光读入200MB的数据就会让你的程序超时了(因为现在的7200转硬盘和133的系统总线速度决定了读取数据的速度也就100MB/秒)。 2.在Free Pascal中,如果用assign给标准输入输出文件变量input和output指定了文件,在程序结束之前一定要用close关闭input和output,否则输出文件可能不能被正确的写入。这个问题是近几年NOIP竞赛和省队训练、选拔中选手常犯的错误。尤其是程序非正常结束之前(如halt)会忘记。 3.如果用Rewrite打开文件,那么文件就只能被写入了。如果需要读取这个文件,要对文件执行Reset。所以,在Free Pascal中最好不要对一个文件同时进行读写操作。 4.在Free Pascal中,集合中的元素都是4个字节长的。 5.表达式执行的顺序是不确定的。比如对于表达式a:=g(2)+f(3); 不保证g(2)一定在f(3)之前执行。 6.函数和过程在使用时,参数的类型必须和定义时完全一致。原因是在Free Pascal中添加了函数重载功能。 7.PROTECTED,PUBLIC,PUBLISHED,TRY,FINALLY,EXCEPT,RAISE成为了关键字,因此不能作为函数和过程的名字;而FAR,NEAR不再是关键字了,原因是Free Pascal是32位系统,不再需要这些关键字。 二、FP的新增功能 1.函数可以返回复杂的类型,比如记录和数组。 如: type arrtype=array[1..100] of longint;{必须要先定义数组基类型} var i,j,k,n:longint; a:arrtype; function sort(a:arrtype;n:longint):arrtype; var i,j,k:longint; begin for i:=1 to n-1 do for j:=i+1 to n do if a>a[j] then begin k:=a; a:=a[j]; a[j]:=k;
动态规划 一、背包问题 1、0/1背包[问题背景及描述] Bessie 正在减肥,所以她规定每天不能吃超过C (10 <= C <= 35,000)卡路里的食物。农民John 在戏弄她,在她面前放了B (1 <= B <= 21) 捅食物。每桶内都有某个单位卡路里(范围:1..35,000)的食物(不一定相同)。Bessie 没有自控能力,一旦她开始吃一个桶中的食物,她就一定把这桶食物全部吃完。Bessie 对于组合数学不大在行。请确定一个最优组合,使得可以得到最多的卡路里,并且总量不超过C。例如,总量上限是40卡路里,6 桶食物分别含有7, 13, 17, 19, 29, 和31卡路里的食物。Bessie可以吃7 + 31 = 38卡路里,但是可以获取得更多:7 + 13 + 19 = 39卡路里。没有更好的组合了。 [输入] 共两行。 第一行,两个用空格分开的整数:C 和 B 第二行,B个用空格分开的整数,分别表示每桶中食物所含的卡路里。 [输出] 共一行,一个整数,表示Bessie能获得的最大卡路里,使她不违反减肥的规则。 [输入样例] 40 6 7 13 17 19 29 31 [样例输出] 39 2、固定次数的0/1背包 有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件体积是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的体积总和不超过背包容量,且价值总和最大。V〈30000,n〈100,n[i]〈50。 输入输出格式: 第1行,两个用空格分开的整数:v 和n 第2—n+1行,每件体积是c[i],价值是w[i],最多有n[i]件可用 [输入样例] 40 2 10 20 5 20 30 6 [样例输出] 80 3、重复背包货币系统money 母牛们不但创建了他们自己的政府而且选择了建立了自己的货币系统。[In their own
Free Pascal错误一览表1、 Run Time Errors 运行错误(A)DOS 错误代码: 1:无效DoS功能号 2:文件末找到3:路径未找到4:打开文件过多 5:禁止文件存取 6:无效文件句柄 12:无效文件存取代码 15:无效驱动器号 16:不能删除当前日录 17:不能跨驱动器改文件名(B)I/O错误100:磁盘读错 误 101:磁盘写错 误 102:文件变量 末赋值 103:文件未打 开 104:文件未用 输入方式打开 105:文件末用 输出方式打开 106:无效数字 格式 (C)严重错误 150:磁盘写保 护 15l:未知单元 152:驱动器未 准备好 153:未知命令 154:数据CRC 校验错 155:驱动器请 求的结构长度 错 156:磁盘定位 错 157:未知媒介 类型 158:扇区末找 到 159:打印机缺 纸 160:设备写失 败
161:设备读失败 162:硬件故障(D)致命错误200:被零除20l:范围检查错 202:堆栈溢出错 203:堆溢出错204:无效指针操作 205:浮点上溢出 206:浮点下溢出 207:无效浮点运算208:未安装覆 盖管理程序 209:覆盖文件 读错 210:对象未初 始化 211:调用抽象 方法 212:流登计错 213:集合下标 越界 214:集合溢出 215:算术上溢 错误 216:存取非法 217:控制-C 218:授权指令 219:无效的TY PECAST 220:无效的变 体TYPECAST 221:无效的变 体操作 222:没有变体 方法调用DISPA TCHER 223:不能建立 变体数组 224:变体不包 含数组 225:变体数组 边界错误 226:TLS初始化 错误 2、编译错误对照表
FP调试及其他注意事项 事先说明:调试并不是万能药,FP的调试系统有时并不稳定,如果感觉异常,或者变量一值处于无意义的随机值,或者F7单步模式下它拒绝进入自定义的函数或过程,一般需要你新启动FP再次开始重新调试,如果尝试多次仍然不行,那需要你重新安装Free pascal了,操作方法:先卸载FP,然后手工删除你FP的安装目录(一般是如C盘或D盘下的整个FPC文件夹),然后重新安装FP。1.确定fp处于Debug (调试)模式下,否则将可能无法显示一些诸如越界等错误。 1查看修改方法:Options菜单下-->Mode...后面是否为Debug如果不是,请单击修改为Debug。 2.调试说明A:设置要观察变量:一般用Ctrl+F7可以添加需要查看的变量,也可以单击Debug菜单下-->Watches打开watches窗口右击进行添加修改删除。可以直接添加变量名,也可添加数组名观察整个数组,甚至可以直接加a[i]的这种形式,观察数组中的某个元素。 B:调试方法(均在run菜单下):
F7单步模式,每次执行一条语句(确切的说是屏幕上的一行),运行时会在watches 窗口更新变量的值以供观察。 F8步进模式,每次执行一条语句,但不会深入到自定义的过程或函数中(F7会进入函数过程执行),只在主程序中按行调试执行。 F4Goto Cursor执行到光标处:调试前先将光标停在某行,然后按F4,程序自动在F4处停止,然后可以继续使用F7或F8进行调试,可以省下很多的时间。 复赛解题步骤
1、读题 2、构思策略方法 3、模拟样例数据 4、推举是否存在反例能推翻构思,如果是重新读题构思 5、建立数据结构,估算数据范围。 6、编制程序,使程序通过编译。 7、测试样例。 8、调试程序 根据源代码设计数据,尽可能让程序执行到每条语句(所有分支)。 调试数据选择: a样例b手工构造随机数据c边界数据d特殊构造数据 调试方法: (1)静态查错,直接即观察源代码,需要时打草稿。(不要一出错就跟踪) (2)动态跟踪,F7+Watches(仅在无法在静态差错中找到错误) 9、检查程序,调节优化,估算时间、空间使用情况,根据需要修改程序。 10、检查细节:输入文件名、文件夹。
FreePascal中的编译器选项 FreePascal中的编译器选项 2010-10-09 18:32:29| 分类: Win32Program |举报 |字号订阅编译器选项: 普通选项: -h 该选项将把所有的命令行选项列出来,然后退出程序 -? 同-H一样的,在分屏显示 -i 这个选项显示编译器版权信息,你能给一个选项,类似下面-ixxx D 返回编译器的日期 V 返回编译器版本 SO 返回编译器的系统版本 SP 返回编译器所选的处理器 TO 返回编译目标系统 TP 返回编译后目标处理器 -l 在标准出上显示Free Pascal的LOGO,同时告诉你Free Pascal的版本号 -n 告诉编译器并不要读入默认的配置文件,你仍
然可以通过@选项来使用配置文件编译器返回的信息: -vxxx xxx可以是下面的: e: 默认的选项,只显示错误 i: 只显示普通的信息 w: 显示警告 n: 显示注意 h: 显示提醒 l: 使用百分比显示错误行的位置 u: 显示加载的单元名称 t: 显示程序试图打开的文件 p: 显示过程和函数的名称 c: 告诉编译器警告你当它处理有条件时 m: 显示被定义的宏 d: 显示其它的调试信息 a: 显示所有的可能的信息 0: 不要任何信息. 当你想不使用配置文件中的默认设置时有用 b: 显示所有所有声明的过程如果一个重载函数出现错误 x: 输出一些执行信息(只对Win32系统游) r: Rhide/GCC兼容模式: 将错误整理以便RHIDE能够使用
V: 创建一个包含有很多调试信息的fpcdebug.txt,主要是给编译器开发者的关于路径及文件的选项 -exxx xxx指明可执行文件as (the assembler)和ld (the linker)的路径. -FaXYZ 在系统单元后但是在其他单元之前加载单元XYZ . XYZ 是一个用逗号分隔的单元名称列表. 只能用于程序,并且和把XYZ放在USES语句的一条效果一致. -FcXXX 设置输入代码页to XXX.还在试验中. -FD 和-e 一样. -Fexxx 将错误写入文件名为xxx的文件. -FExxx 将单元和可执行文件输出到目录xxx ,而不是当前目录. -Fixxx 将xxx作为包含文件的搜索目录 . -Flxxx 将xxx作为library查找路径, 被传给连接器. -FLxxx