249x Filetype PDF File size 0.84 MB Source: people.inf.elte.hu
Free Pascal :
Reference guide.
Reference guide for Free Pascal, version 2.6.0
Documentversion 2.6
December2011
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.2 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.3 Short strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1
CONTENTS
3.2.4 Ansistrings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.5 UnicodeStrings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.6 WideStrings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.7 Constant strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.8 PChar - Null terminated strings . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3 Structured Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Packed structured types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3.1 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Static arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Dynamicarrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Packing and unpacking an array . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.2 Record types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.3 Set types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.3.4 File types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.4 Pointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.5 Forward type declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.6 Procedural types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.7 Variant types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.7.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.7.2 Variants in assignments and expressions . . . . . . . . . . . . . . . . . . . . 48
3.7.3 Variants and interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4 Variables 50
4.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2 Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.3 Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.4 Initialized variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.5 Thread Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.6 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5 Objects 57
5.1 Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.2 Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.3 Static fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.4 Constructors and destructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.5 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.5.1 Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.5.2 Methodinvocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Static methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Virtual methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Abstract methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2
CONTENTS
5.6 Visibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6 Classes 66
6.1 Class definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.2 Class instantiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.3 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.3.1 Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.3.2 invocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.3.3 Virtual methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.3.4 Class methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.3.5 Message methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.3.6 Using inherited . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.4 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.4.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.4.2 Indexed properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.4.3 Array properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.4.4 Default properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.4.5 Storage information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.4.6 Overriding properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.5 Nested types and variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
7 Interfaces 82
7.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
7.2 Interface identification: A GUID . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
7.3 Interface implementations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
7.4 Interfaces and COM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
7.5 CORBAandotherInterfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
7.6 Reference counting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
8 Generics 87
8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
8.2 Generic class definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
8.3 Generic class specialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.4 Awordaboutscope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
9 Extendedrecords 93
9.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
9.2 Extended record enumerators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
10 Class and record helpers 98
10.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
10.2 Restrictions on class helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3
no reviews yet
Please Login to review.