136x 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.