Free Pascal

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 Free Pascal

Free Pascal是個由國際組織開發的完全的win32的pascal語言編譯器,類似delphi,可編寫windows程式。

此前被廣泛使用的PASCAL編譯器普遍為Turbo Pascal& Borland pascal。但是它們可用的空間十分有限。而Free Pascal理論上可以使用 4GB記憶體。所以在利用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.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。

擴充

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,因此要求程式中的檔案名稱和系統中的檔案名稱一樣。

程式設計介紹

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碼比較,若一樣則往後,第二位,第三位類推。若前面都一樣,其中一個字元串已沒有可以繼續比較的字元,那么另一個字元串大。

其中,最基本情況的邏輯運算的運算結果如下表所示:

基本邏輯運算的結果
ABnot AA and BA or BA 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函式將日期格式分解為年月日

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字元串變數

外部檔案連結函式

適用於所有檔案類型
名字 類型 功能
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程式結構如下:

報錯號

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

166缺過程或函式標識符

167不能輸出該符號

168外部檔案名稱重複

169執行檔頭太長

170段太多

注意事項

在NOIP比賽中使用Free Pascal的注意事項

1.對於檔案名稱,程式中用到的檔案名稱必須和系統中的檔案名稱完全一致。

由於信息學競賽的評測系統一般是linux,因此要求程式中的檔案名稱和系統中的檔案名稱一樣。即:比賽中涉及的所有檔案名稱(包括源程式名、輸入檔案名稱、輸出檔案名稱、答案檔案名稱),都必須嚴格按照題目要求命名,嚴格區分大小寫。

2. 在NOIP比賽中,程式中不得使用題目規定外的其他任何庫(unit),一般在試機時確認;

3.在NOIP比賽中,原始碼中不得使用編譯選項(開關);

亂碼解決(對於windows10無效)

如果打開Free Pascal時顯示的是一堆亂碼,這是因為錯誤地使用中文編碼所導致的。

解決過程 解決過程

解決方案如下:

1.在Free Pascal圖示上單擊右鍵,彈出快捷選單,選擇“屬性”;

2.彈出“Free Pascal IDE” 屬性對話框,單擊“選項”選項卡;

3.把“默認代碼頁”改為“437 (OEM - 美國)”,單擊“套用”,關閉對話框;

亂碼解決(針對windows10)

在完成“亂碼解決(對於windows10無效)”第三步逗號以前的內容後,選擇“使用舊版控制台”單擊“套用”,然後關閉對話框。

相關詞條

相關搜尋

熱門詞條

聯絡我們