138x Filetype PDF File size 0.79 MB Source: doc.lagout.org
Free Pascal : Reference guide. Reference guide for Free Pascal, version 2.4.2 Documentversion 2.4 November2010 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.5 Hint directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.6 Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.7 Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.8 Character strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2 Constants 19 2.1 Ordinary constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.2 Typed constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.3 Resource strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 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 . . . . . . . . . . . . . . . . . . . . . . . . 32 3.3 Structured Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Packed structured types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.3.1 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Static arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Dynamicarrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Packing and unpacking an array . . . . . . . . . . . . . . . . . . . . . . . . 38 3.3.2 Record types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.3.3 Set types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.3.4 File types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.4 Pointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.5 Forward type declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.6 Procedural types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4 Variables 51 4.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.2 Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.3 Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4 Initialized variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.5 Thread Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.6 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5 Objects 58 5.1 Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.2 Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 5.3 Static fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 5.4 Constructors and destructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 5.5 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 5.5.1 Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 5.5.2 Methodinvocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Static methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Virtual methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Abstract methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 2 CONTENTS 5.6 Visibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 6 Classes 67 6.1 Class definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 6.2 Class instantiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 6.3 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 6.3.1 Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 6.3.2 invocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 6.3.3 Virtual methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 6.3.4 Class methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 6.3.5 Message methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 6.3.6 Using inherited . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 6.4 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 6.4.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 6.4.2 Indexed properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 6.4.3 Array properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 6.4.4 Default properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 6.4.5 Storage information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 6.4.6 Overriding properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 7 Interfaces 83 7.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 7.2 Interface identification: A GUID . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 7.3 Interface implementations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 7.4 Interfaces and COM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 7.5 CORBAandotherInterfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 7.6 Reference counting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 8 Generics 88 8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 8.2 Generic class definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 8.3 Generic class specialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 8.4 Awordaboutscope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 9 Expressions 94 9.1 Expression syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 9.2 Function calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 9.3 Set constructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 9.4 Value typecasts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 9.5 Variable typecasts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 9.6 Unaligned typecasts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 3
no reviews yet
Please Login to review.