複製鏈接
請複製以下鏈接發送給好友

Free Pascal

鎖定
Free Pascal(全稱 FPK Pascal)是一個32位和64位專業Pascal編譯器。它可以在多個處理器架構中運行:Intel x86,AMD64/x86-64,PowerPC32/64, SPARC和 ARM。它支持的操作系統有Linux,FreeBSD,Haiku,Mac OS X/ iOS/Darwin,DOS,Windows32/64/CE,OS/2,MorphOS,Nintendo GBA,Nintendo DS和 Nintendo Wii。另外,在JVM,MIPS 和 Motorola 68k處理器架構或操作系統中使用的Free Pascal正在研發開發版本。
在全國信息學奧林匹克大賽(簡稱NOI)中,Pascal是被採用的三種編程語言之一。由於它具有良好的結構程序設計特性,特別適合於學生掌握自頂向下逐步求精的結構化程序設計思想和方法,並能構建出良好的程序設計風格和習慣,因此,Pascal是在NOI中最受選手青睞的語言。同樣,許多大學都把Pascal作為一門重要的信息學語言來進行授課。
外文名
Free Pascal IDE
語言標準
ANSI Pascal
支持平台
Windows、Linux、Mac、FreeBSD等
最新版本
3.0.0

Free Pascal簡介

Free Pascal IDE Free Pascal IDE
Free Pascal是個由國際組織開發的完全的win32的pascal語言編譯器,類似delphi,可編寫windows程序。
此前被廣泛使用的PASCAL編譯器普遍為Turbo Pascal&Borland pascal。但是它們可用的空間十分有限。而Free Pascal理論上可以使用4GB內存。所以在利用Free Pascal編程的時候,可以改變原有思路,將大量時間轉嫁給空間,提高效率。 [1] 

Free Pascal主要區別

Free Pascal與TP

Free Pascal Free Pascal
雖然Free Pascal儘量設計得和Turbo Pascal接近,但是由於以下的兩個原因,兩者之間還是有一些區別的:1.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.ProtectedPublic、Published、Try、FinallyExceptRaise成了關鍵字,不能作為標識符的名字;
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。 [1] 

Free 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;
Free Pascal Free Pascal
procedure DoSomething (a : real);begin
{...}
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,因此要求程序中的文件名和系統中的文件名一樣。 [1] 

Free Pascal程序設計介紹

PASCAL語言是由瑞士的沃斯(N.Wirth)教授於1971年提出來的。它的命名是為了紀念法國數學家Pascal。它是世界上第一個結構化的高級程序設計語言結構化程序設計主要由三種基本結構(順序結構選擇結構循環結構)組成。後來有人把函數和過程作為第四種基本結構。這四種結構對外看都只有一個入口和一個出口,結構清晰,避免了由GOTO語句所引起的混亂。另外在程序設計方法方面,主張採用自頂向下,逐步求精的方法。即將一個大的複雜問題,劃分成若干少的易解決的問題。每個小問題,又可劃分成一些更小的更易解決的問題。這樣,只要把每個小問題都解決了,整個大問題也就解決了。這種方法也為多個人合作編程提供方便。
例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 鍵:單步執行程序但不能跟蹤進入其子程序(或開始單步執行)。
F9鍵:運行、編譯程序。
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程序各語句意義
保留字
Free Pascal 2.6.2用户手冊附錄-保留字 Free Pascal 2.6.2用户手冊附錄-保留字
1. 在Pascal中有些詞具有特定的含義,用户必須正確理解其含義和正確使用,否則會運行出錯。這些具有特定含義的詞稱為“保留字”。“保留字”不能做常量名、變量名或程序名。在Turbo Pascal7.0編輯窗口中,保留字默認用白色顯示。例1-1中的包含的保留字有:program,const,var,begin,end,它們的特定含義分別是:program 指出後面定義的是程序名;const指出後面定義的是程序將用到的常量;var指出後面定義的是程序將用到的變量;begin指出程序執行代碼開始;end指出程序執行代碼結束。用户必須瞭解其含義,以便正確的使用,否則會造成錯誤,這些具有特定含義的保留字不能作其它用途,如作變量名等。在Free Pascal 2.6.2中,保留字共有93個,默認用白色顯示,保留字如下:
absolute,abstract,and,array,as,asm,assembler,begin,break,case,cdecl,class,const,constructor,continue,cppclass,deprecated,destructor,div,do,downto,else,end,except,exit,export,exports,external,experimental,fail,false,far,file,finally,for,forward,function,goto,if,implementation,in,index,inherited,initialization,inline,interface,interrupt,is,label,library,mod,name,near,nil,not,object,of,on,operator,or,otherwise,packed,popstack,private,procedure,program,property,protected,public,raise,record,reintroduce,repeat,self,set,shl,shr,stdcall,string,then,to,true,try,type,unimplemented,unit,until,uses,var,virtual,while,with,xor。
標識符
2. 除了保留字外,還用到標識符,用於表示常量、變量、類型、文件、函數、過程或程序的名字。標識符是以字母開頭的字母、數字組合,標識符又分為標準標識符和用户自定義標識符。如例1-1中,用户自定義標識符有:程序名為circle,常量pi,實數型變量r、l和s,它們由程序設計者定義的;標準標識符有:實數標準類型名real,讀數標準過程名readln,輸出標準過程名write和writeln,標準輸入文件input,標準輸出文件output。在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等;
書寫格式
程序名説明:program <;用户自定義的程序名>(input,output);其中圓括號的內容稱為程序的參數。程序參數指明程序與外部聯繫的文件名。input是標準輸入文件,例如鍵盤;output是標準輸出文件,例如屏幕、打印機等。對於標準設備常可省略(input,output)的説明,簡寫為:program <;用户自定義的程序名>;;如例1-1可省略簡寫為:“ program circle; ”
常量定義:const [常量標識符]=[常量]:
變量定義:var [變量表]:[類型];
主程序語句部分:
begin
[語句1];
[語句2];
......
[語句n]
end.
賦值語句:[變量名標識符]:=[表達式\變量常量\值];; 其意義是把右邊:=後面的表達式、變量常量或值送到左邊變量名所對應的數據區中。
讀數據標準過程(又稱讀語句):read(變量表)或readln,園括符內必須是已定義過的變量標識符,有多個時變量時可用逗號分隔構成變量表。read和readln的區別是readln完成所有必要的讀取後會丟掉這一行的數據,不再進行讀取.
輸出數據標準過程(又稱寫語句):write(數據項表)或writeln(數據項表),有多個數據項時要用逗號分隔。數據項可以是字符串(如:'L=',' S=')、變量(如:l、s),如:s:8:2,表示要求輸出時數據保留2位小數位,總長度包括小數點為8位;write與writeln區別是writeln完成所有輸出後自動換行。
1.2 PASCAL基本組成
1.2.1 PASCAL語言使用的幾類基本符號(ASCII碼)
(1) 大小寫英文字母:A,B,...Z,a,b,..z
(2) 數字:0,1,2,3,4,5,6,7,8,9
(3) 其它符號:+,-,*,/,=,< >,>=,<=,<,>,(,),[,],:=,',,. :,..,∧ 等。
注意: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;
另外,還有一種“強型常量”定義方式,其語法為:
CONST
<常量標示符>:<常量類型>=<常量值>;
CONST
a:real=12;
這説明a這個常量是實型常量,即a=1.2000000000E+001
而不是a=12(這個整型)。強型常量常常在與精確度有關的場合用得上!
3.變量説明
PASCAL程序中數值可以改變的量稱為變量,由於變量可以取不同的值,因此變量必須通過標識符來代表。程序中出現的每個變量都必須在程序的變量説明部分進行類型説明.變量説明語法圖如下:
如:var
x,y,z:real;
i,j,k:integer;
ch:char;
t,f:boolean;
name:string;
數據類型
數據的類型確定了該類數據的表示形式和取值範圍,而且確定了其所能參加的各種運算。一個數存放在計算機中都要佔用固定的存儲空間,這決定了在計算機中的每種數據類型定義的數的大小是有限的,這點與數學中的定義不同,為了節省空間和提高處理速度,我們通常要根椐處理的數的最大可能決定選用不同的數據類型。Byte(字節)為信息存儲單位。PASCAL語言提供了豐富的數據類型,這裏我們先介紹標準類型和部分構造類型,其它類型以後用到時才介紹。此處“佔用存儲空間”單位均為字節(byte)。
1.整型
整型類型
名稱
類型標識符
十進制數據表示範圍
2的整數冪數據表示範圍
佔用存儲空間
整型
integer
-32,768~+32,767
-2^15~+2^15-1
2
短整型
shortint
-128~+127
-2^7~+2^7-1
1
長整型
longint
-2,147,483,648~+2,147,483,647
-2^31~+2^31-1
4
64位長整型
int64
-9,223,372,036,854,775,808~+9,223,372,036,854,775,807
-2^63~+2^63-1
8
字型
word
0~65,535
0~+2^16-1
2
字節型
byte
0~255
0~+2^8-1
1
雙字型
qword
0~4,294,967,295
0~+2^32-1
4
longint
四字型
qword
0~18,446,744,073,709,551,615
0~+2^64-1
8
2.實型
實型類型
名稱
類型標識符
2的整數冪數據表示範圍
有效位
佔用存儲空間
實型
real
-2.9*10^39~+1.7*10^38
11~12
6
單精度型
single
-1.5*10^45~+3.4*10^38
7~8
4
雙精度型
double
-5.0*10^324~+1.7*10^308
15~16
8
擴展精度型
extended
-1.9*10^4,932~+1.1*10^4,932
19~20
10
裝配十進制型
comp
-2^63~+2^63-1
19~20
8
注:在Free Pascal中,single,double,extended,comp需要計算機的數學協處理器支持,即要在程序首行加入編譯開關{$N+},若計算機為486SX以下,沒有協處理器,可採用仿真辦法,即在程序首行加入編譯開關{$N+,$E+}。
3.字符型和字符串型
字符型類型
名稱
類型標識符
數據表示範圍
佔用存儲空間
字符型
char
ASCII碼字符集中的全部字符
1
字符串型
string
長度不超過255的任一串字符
字符串長度
shortstring
長字符串型
ansistring
長度不超過2,147,483,647的任一串字符
開放字符串型
openstring
???
注:char是標準類型,string是構造類型。string相當於packed array[x..y] of char。ansistring不能輸入空格。
4. 布爾型
布爾型
名稱
類型標識符
數據表示範圍
佔用存儲空間
布爾型
boolean
true,false(真,假)
1
運算符
在PASCAL中提供的運算符有算術運算符、關係運算符和邏輯運算符等。不同的運算符都規定了其運算對象的數據類型和運算結果的類型。如下表:
運算符定義
運算符
運算類型
運算對象類型
結果類型
+、-、*(代表×)
算術運算
整型、實型
整型、實型
/(代表÷)
算術運算
整型、實型
實型
div(整除)、mod(求餘)
算術運算
整型
整型
not(非)、and(與)、or(或)、xor(異或)
邏輯運算
布爾型
布爾型*
<、>、<=、>=、=、<>
關係運算
所有標準類型**
布爾型
注1:邏輯運算的運算結果具體説明請看下錶。
注2:在關係運算中,整型與實型的比較點是數值大小,字符型的比較點是字符的ASCII碼的值的大小,字符串型的比較點是從兩個字符串的第一個字符起的ASCII碼比較,若一樣則往後,第二位,第三位類推。若前面都一樣,其中一個字符串已沒有可以繼續比較的字符,那麼另一個字符串大。
其中,最基本情況的邏輯運算的運算結果如下表所示:
基本邏輯運算的結果
A
B
not A
A and B
A or B
A xor B
true
true
false
true
true
false
true
false
false
fasle
true
true
false
true
true
false
true
true
false
false
true
false
false
false
備註:and/or/xor也可對於integer進行計算,即按位進行and/or/xor計算
標準函數和過程
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),自然對數函等等,請需要時從Free 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函數將日期格式分解為年月日
將時間格式分解為時、分、秒、毫秒
delete函數從字符串中刪除子串
deletefile 命令刪除文件
diskfree函數返回剩餘磁盤空間的大小
disksize函數返回指定磁盤的容量
dispose函數釋放動態變量所佔的空間
disposestr函數釋放字符串在堆棧中的內存空間
ditherbackgrounddi2001.jpg?
使背景色的色彩加重或減少50%
dragcursor 屬性 當鼠標按下時光標的形狀
dragmode 屬性 按動的作用方式
dropdowncount 屬性 容許的顯示數據項的數目
editmask 屬性 編輯模式
enabled 屬性 是否使標籤呈現打開狀態
encodedate函數將年月日合成為日期格式
將時、分、秒、毫秒合成為時間格式
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字符串變量
外部文件鏈接函數
適用於所有文件類型
名字
類型
功能
assign
過程
將一個外部文件賦予文件變量
close
過程
關閉一個一打開的文件
eof
函數
確認文件是否結束
erase
過程
刪除一個外部文件
rename
過程
重命名一個外部文件
reset
過程
打開一個已存在的文件
rewrite
過程
建立一個新文件並打開
只適用於文本文件
名字
類型
功能
append
過程
打開已存在的文件從尾部添加
eoln
函數
確認文件是否行結束
read
過程
從文本文件讀取變量
readln
過程
從文本文件讀取變量並換行
write
過程
從文本文件寫入變量
writeln
過程
從文本文件寫入變量並換行
只適用於類型文件
名字
類型
功能
read
過程
從類型文件讀取變量
write
過程
從類型文件寫入變量
filepos
函數
返回指定文件位置
filesize
函數
返回文件長度
seek
過程
將指針移動到指定位置
表達式
PASCAL中表達式是由常量、變量、函數、運算符及圓括號(只能用圓括號)連接起來的算式。與普通的算術運算式不同,表達式書寫必須符合PASCAL語言規定。語法圖如下:
例如:數學式子:的PASCAL表達式為:abs(a-sqtr(c+1))/(a*b)+d
PASCAL中運算的優先順序如下:
(1) 括號內表達式優先處理
(2)函數
(3) NOT
(4) AND,*,/,DIV,MOD
(5) +,-,OR
(6) <,<=,=,>,>=,<>,IN
注:同一個子表達式中,同一優先級的運算按從左到右的次序進行。而且不能用中括號和大括號,只能用圓括號。
PASCAL結構
一個較完整和PASCAL程序結構如下:
program程序名(參數表);
{$E-,$F+,.....}(編譯開關)
uses使用單元
label標號説明;
const常量説明;
type類型説明;
var變量説明;
function函數説明;
procedure過程説明;
operator運算符説明;
begin
語句;
...
語句;
end.

Free Pascal報錯號

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 無效數字格式
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初始化錯誤

Free Pascal編譯錯誤

2缺標識符
3標識符未定義
4標識符重定義
5語法錯誤
6實型常量錯
7整型常量錯
9文件嵌套過多
10非正常文件結束
11行過長
12缺類型標識符
13打開文件過多
14無效文件名
15文件未找到
16磁盤滿
17無效編譯指示
18文件過多
19指針定義中未定義類型
20缺變量標識符
21類型錯誤
22結構過長
24文件分量不能為文件
25無效字符串長度
27無效子界基類型
28下界大於上界
29缺有序類型
30缺整型常數
31缺常數
32缺整型或實型常數
33缺指針類型標識符
34無效的函數結果類型
35缺標號標識符
36缺BEGIN
37缺END
38缺整型表達式
39缺有序表達式
41操作數類型與操作符不匹配
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不能讀寫該類型的變量
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控制變量
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無效符號引用
162缺ASM
166缺過程或函數標識符
167不能輸出該符號
168外部文件名重複
169可執行文件頭太長
170段太多

Free Pascal注意事項

在NOIP比賽中使用Free Pascal的注意事項
1.對於文件名,程序中用到的文件名必須和系統中的文件名完全一致。
由於信息學競賽的評測系統一般是linux,因此要求程序中的文件名和系統中的文件名一樣。即:比賽中涉及的所有文件名(包括源程序名、輸入文件名、輸出文件名、答案文件名),都必須嚴格按照題目要求命名,嚴格區分大小寫。
2. 在NOIP比賽中,程序中不得使用題目規定外的其他任何庫(unit),一般在試機時確認;
3.在NOIP比賽中,源代碼中不得使用編譯選項(開關);

Free Pascal亂碼解決

對於windows10無效
如果打開Free Pascal時顯示的是一堆亂碼,這是因為錯誤地使用中文編碼所導致的。
解決過程 解決過程
解決方案如下:
1.在Free Pascal圖標上單擊右鍵,彈出快捷菜單,選擇“屬性”;
2.彈出“Free Pascal IDE” 屬性對話框,單擊“選項”選項卡;
3.把“默認代碼頁”改為“437 (OEM - 美國)”,單擊“應用”,關閉對話框;
針對windows10
在完成“亂碼解決(對於windows10無效)”第三步逗號以前的內容後,選擇“使用舊版控制枱”單擊“應用”,然後關閉對話框。
參考資料
  • 1.    張文雙.FreePascal同步訓練:北京理工大學出版社,2008:194-198