ref.pdf

(837 KB) Pobierz
Free Pascal :
Reference guide.
Reference guide for Free Pascal, version 2.6.2
Document version 2.6
February 2013
Michaël Van Canneyt
 
Contents
1
Pascal Tokens
10
1.1
Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
1.2
Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
1.3
Reserved words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
1.3.1
Turbo Pascal reserved words . . . . . . . . . . . . . . . . . . . . . . . . . .
12
1.3.2
Free Pascal reserved words . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
1.3.3
Object Pascal reserved words
. . . . . . . . . . . . . . . . . . . . . . . . .
13
1.3.4
Modifiers
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
1.4
Identifiers
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
1.5
Hint directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
1.6
Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
1.7
Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
1.8
Character strings
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
2
Constants
19
2.1
Ordinary constants
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
2.2
Typed constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
2.3
Resource strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
3
Types
22
3.1
Base types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
3.1.1
Ordinal types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
Integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
Boolean types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
Enumeration types
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
Subrange types
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
3.1.2
Real types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.2
Character types
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.2.1
Char or AnsiChar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.2.2
WideChar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
3.2.3
Other character types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
1
CONTENTS
3.2.4
Strings
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
3.2.5
Short strings
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
3.2.6
Ansistrings
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
3.2.7
UnicodeStrings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
3.2.8
WideStrings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
3.2.9
Constant strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
3.2.10
PChar - Null terminated strings
. . . . . . . . . . . . . . . . . . . . . . . .
32
3.2.11
String sizes
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
3.3
Structured Types
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
Packed structured types . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
3.3.1
Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
Static arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
Dynamic arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
Packing and unpacking an array
. . . . . . . . . . . . . . . . . . . . . . . .
38
3.3.2
Record types
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
3.3.3
Set types
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
3.3.4
File types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
3.4
Pointers
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
3.5
Forward type declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
3.6
Procedural types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
3.7
Variant types
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
3.7.1
Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
3.7.2
Variants in assignments and expressions . . . . . . . . . . . . . . . . . . . .
51
3.7.3
Variants and interfaces
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
4
Variables
53
4.1
Definition
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
4.2
Declaration
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
4.3
Scope
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
4.4
Initialized variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
4.5
Thread Variables
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
4.6
Properties
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
5
Objects
60
5.1
Declaration
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
5.2
Fields
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
5.3
Static fields
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
5.4
Constructors and destructors
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
5.5
Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
5.5.1
Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
5.5.2
Method invocation
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
2
CONTENTS
Static methods
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
Virtual methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
Abstract methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
5.6
Visibility
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
6
Classes
69
6.1
Class definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
6.2
Class instantiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
6.3
Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
6.3.1
Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
6.3.2
invocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
6.3.3
Virtual methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
6.3.4
Class methods
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
75
6.3.5
Message methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
76
6.3.6
Using inherited . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
77
6.4
Properties
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
78
6.4.1
Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
78
6.4.2
Indexed properties
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
6.4.3
Array properties
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
6.4.4
Default properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
6.4.5
Storage information
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
6.4.6
Overriding properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
83
6.5
Nested types and variables
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
7
Interfaces
85
7.1
Definition
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
7.2
Interface identification: A GUID . . . . . . . . . . . . . . . . . . . . . . . . . . . .
86
7.3
Interface implementations
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
87
7.4
Interface delegation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
88
7.5
Interfaces and COM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
90
7.6
CORBA and other Interfaces
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
90
7.7
Reference counting
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
90
8
Generics
92
8.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
8.2
Generic class definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
8.3
Generic class specialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
8.4
A word about scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
9
Extended records
98
9.1
Definition
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
98
3
CONTENTS
9.2
Extended record enumerators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
10 Class and record helpers 103
10.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
10.2 Restrictions on class helpers
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
10.3 Restrictions on record helpers
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
10.4 Inheritance
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
10.5 Usage
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
11 Objective-Pascal Classes 109
11.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
11.2 Objective-Pascal class declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
11.3 Formal declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
11.4 Allocating and de-allocating Instances . . . . . . . . . . . . . . . . . . . . . . . . . 113
11.5 Protocol definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
11.6 Categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
11.7 Name scope and Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
11.8 Selectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
11.9 The id type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
11.10Enumeration in Objective-C classes
. . . . . . . . . . . . . . . . . . . . . . . . . . 117
12 Expressions 119
12.1 Expression syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
12.2 Function calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
12.3 Set constructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
12.4 Value typecasts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
12.5 Variable typecasts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
12.6 Unaligned typecasts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
12.7 The @ operator
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
12.8 Operators
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
12.8.1
Arithmetic operators
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
12.8.2
Logical operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
12.8.3
Boolean operators
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
12.8.4
String operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
12.8.5
Set operators
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
12.8.6
Relational operators
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
12.8.7
Class operators
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
13 Statements 134
13.1 Simple statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
13.1.1
Assignments
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
4
Zgłoś jeśli naruszono regulamin