OPLG.pdf

(3089 KB) Pobierz
OPLG.BK
Object Pascal
Language Guide
Borland ®
Object Pascal
Borland Software Corporation
100 Enterprise Way, Scotts Valley, CA 95066-3249
www.borland.com
Borland Software Corporation may have patents and/or pending patent applications covering subject matter in this
document. The furnishing of this document does not give you any license to these patents.
C OPYRIGHT © 1983, 2001 Borland Software Corporation. All rights reserved. All Borland brand and product names
are trademarks or registered trademarks of Borland Software Corporation. Other brand and product names are
trademarks or registered trademarks of their respective holders.
Printed in the U.S.A.
ALP0000WW21000 1E0R0501
0102030405-9 8 7654321
D3
Contents
Chapter 1
Introduction 1-1
What’s in this manual? . . . . . . . . . . . . . . 1-1
Using Object Pascal . . . . . . . . . . . . . . 1-1
Typographical conventions . . . . . . . . . . 1-2
Other sources of information . . . . . . . . . . . 1-2
Software registration and technical support . . 1-3
Reserved words . . . . . . . . . . . . . . . . . 4-3
Directives. . . . . . . . . . . . . . . . . . . . . 4-3
Numerals . . . . . . . . . . . . . . . . . . . . . 4-4
Labels . . . . . . . . . . . . . . . . . . . . . . . 4-4
Character strings . . . . . . . . . . . . . . . . 4-4
Comments and compiler directives . . . . . . . . 4-5
Expressions . . . . . . . . . . . . . . . . . . . . . 4-5
Operators. . . . . . . . . . . . . . . . . . . . . 4-6
Arithmetic operators . . . . . . . . . . . . 4-6
Boolean operators . . . . . . . . . . . . . . 4-7
Logical (bitwise) operators . . . . . . . . . 4-8
String operators . . . . . . . . . . . . . . . 4-9
Pointer operators. . . . . . . . . . . . . . . 4-9
Set operators . . . . . . . . . . . . . . . . 4-10
Relational operators . . . . . . . . . . . . 4-10
Class operators . . . . . . . . . . . . . . . 4-11
The @ operator . . . . . . . . . . . . . . . 4-12
Operator precedence rules . . . . . . . . 4-12
Function calls . . . . . . . . . . . . . . . . . 4-13
Set constructors . . . . . . . . . . . . . . . . 4-13
Indexes . . . . . . . . . . . . . . . . . . . . . 4-14
Typecasts . . . . . . . . . . . . . . . . . . . . 4-14
Value typecasts . . . . . . . . . . . . . . . 4-14
Variable typecasts . . . . . . . . . . . . . 4-15
Declarations and statements . . . . . . . . . . . 4-16
Declarations . . . . . . . . . . . . . . . . . . 4-16
Statements . . . . . . . . . . . . . . . . . . . 4-17
Simple statements . . . . . . . . . . . . . . . 4-17
Assignment statements . . . . . . . . . . 4-17
Procedure and function calls . . . . . . . 4-18
Goto statements . . . . . . . . . . . . . . 4-18
Structured statements . . . . . . . . . . . . . 4-19
Compound statements . . . . . . . . . . 4-20
With statements . . . . . . . . . . . . . . 4-20
If statements . . . . . . . . . . . . . . . . 4-22
Case statements . . . . . . . . . . . . . . 4-23
Control loops . . . . . . . . . . . . . . . . 4-25
Repeat statements . . . . . . . . . . . . . 4-25
While statements. . . . . . . . . . . . . . 4-25
For statements . . . . . . . . . . . . . . . 4-26
Blocks and scope . . . . . . . . . . . . . . . . . 4-27
Blocks . . . . . . . . . . . . . . . . . . . . . . 4-27
Scope . . . . . . . . . . . . . . . . . . . . . . 4-28
Naming conflicts . . . . . . . . . . . . . . 4-29
Part I
Basic language description
Chapter 2
Overview 2-1
Program organization . . . . . . . . . . . . . . . 2-1
Pascal source files . . . . . . . . . . . . . . . 2-1
Other files used to build applications . . . . 2-2
Compiler-generated files . . . . . . . . . . . 2-3
Example programs. . . . . . . . . . . . . . . . . 2-3
A simple console application . . . . . . . . . 2-3
A more complicated example . . . . . . . . . 2-4
A native application . . . . . . . . . . . . . . 2-5
Chapter 3
Programs and units 3-1
Program structure and syntax . . . . . . . . . . 3-1
The program heading . . . . . . . . . . . . . 3-2
The program uses clause . . . . . . . . . . . 3-2
The block . . . . . . . . . . . . . . . . . . . . 3-2
Unit structure and syntax . . . . . . . . . . . . . 3-3
The unit heading . . . . . . . . . . . . . . . . 3-3
The interface section . . . . . . . . . . . . . . 3-4
The implementation section. . . . . . . . . . 3-4
The initialization section. . . . . . . . . . . . 3-4
The finalization section . . . . . . . . . . . . 3-5
Unit references and the uses clause . . . . . . . 3-5
The syntax of a uses clause . . . . . . . . . . 3-6
Multiple and indirect unit references . . . . 3-6
Circular unit references . . . . . . . . . . . . 3-7
Chapter 4
Syntactic elements 4-1
Fundamental syntactic elements . . . . . . . . . 4-1
Special symbols . . . . . . . . . . . . . . . . . 4-2
Identifiers . . . . . . . . . . . . . . . . . . . . 4-2
Qualified identifiers . . . . . . . . . . . . 4-2
iii
Chapter 5
Data types, variables, and constants 5-1
About types. . . . . . . . . . . . . . . . . . . . . 5-1
Simple types . . . . . . . . . . . . . . . . . . . . 5-2
Ordinal types . . . . . . . . . . . . . . . . . . 5-2
Integer types. . . . . . . . . . . . . . . . . 5-3
Character types . . . . . . . . . . . . . . . 5-5
Boolean types . . . . . . . . . . . . . . . . 5-5
Enumerated types . . . . . . . . . . . . . 5-6
Subrange types . . . . . . . . . . . . . . . 5-8
Real types . . . . . . . . . . . . . . . . . . . . 5-9
String types . . . . . . . . . . . . . . . . . . . . . 5-10
Short strings. . . . . . . . . . . . . . . . . . . 5-12
Long strings . . . . . . . . . . . . . . . . . . . 5-12
WideString . . . . . . . . . . . . . . . . . . . 5-13
About extended character sets . . . . . . 5-13
Working with null-terminated strings . . . . 5-13
Using pointers, arrays, and string
constants . . . . . . . . . . . . . . . . . . 5-14
Mixing Pascal strings and
null-terminated strings . . . . . . . . . . 5-15
Structured types . . . . . . . . . . . . . . . . . . 5-16
Sets . . . . . . . . . . . . . . . . . . . . . . . . 5-17
Arrays . . . . . . . . . . . . . . . . . . . . . . 5-18
Static arrays . . . . . . . . . . . . . . . . . 5-18
Dynamic arrays . . . . . . . . . . . . . . . 5-19
Array types and assignments . . . . . . . 5-21
Records . . . . . . . . . . . . . . . . . . . . . 5-21
Variant parts in records . . . . . . . . . . 5-22
File types . . . . . . . . . . . . . . . . . . . . 5-24
Pointers and pointer types . . . . . . . . . . . . 5-25
Overview of pointers . . . . . . . . . . . . . 5-25
Pointer types . . . . . . . . . . . . . . . . . . 5-27
Character pointers . . . . . . . . . . . . . 5-27
Other standard pointer types . . . . . . . 5-27
Procedural types . . . . . . . . . . . . . . . . . . 5-28
Procedural types in statements
and expressions . . . . . . . . . . . . . . . . 5-29
Variant types . . . . . . . . . . . . . . . . . . . . 5-30
Variant type conversions . . . . . . . . . . . 5-31
Variants in expressions . . . . . . . . . . . . 5-33
Variant arrays . . . . . . . . . . . . . . . . . . 5-33
OleVariant . . . . . . . . . . . . . . . . . . . . 5-34
Type compatibility and identity . . . . . . . . . 5-34
Type identity . . . . . . . . . . . . . . . . . . 5-34
Type compatibility . . . . . . . . . . . . . . . 5-35
Assignment-compatibility . . . . . . . . . . . 5-35
Declaring types. . . . . . . . . . . . . . . . . . . 5-36
Variables . . . . . . . . . . . . . . . . . . . . . . 5-37
Declaring variables . . . . . . . . . . . . . . 5-37
Absolute addresses . . . . . . . . . . . . 5-38
Dynamic variables . . . . . . . . . . . . . 5-38
Thread-local variables . . . . . . . . . . . 5-38
Declared constants . . . . . . . . . . . . . . . . 5-39
True constants . . . . . . . . . . . . . . . . . 5-39
Constant expressions . . . . . . . . . . . 5-41
Resource strings . . . . . . . . . . . . . . 5-41
Typed constants . . . . . . . . . . . . . . . . 5-42
Array constants . . . . . . . . . . . . . . 5-43
Record constants . . . . . . . . . . . . . . 5-43
Procedural constants . . . . . . . . . . . 5-44
Pointer constants. . . . . . . . . . . . . . 5-44
Chapter 6
Procedures and functions 6-1
Declaring procedures and functions . . . . . . . 6-1
Procedure declarations . . . . . . . . . . . . . 6-2
Function declarations . . . . . . . . . . . . . . 6-3
Calling conventions . . . . . . . . . . . . . . . 6-4
Forward and interface declarations . . . . . . 6-5
External declarations . . . . . . . . . . . . . . 6-6
Linking to object files . . . . . . . . . . . . 6-6
Importing functions from libraries. . . . . 6-7
Overloading procedures and functions . . . . 6-8
Local declarations . . . . . . . . . . . . . . . 6-10
Nested routines . . . . . . . . . . . . . . 6-10
Parameters . . . . . . . . . . . . . . . . . . . . . 6-11
Parameter semantics . . . . . . . . . . . . . 6-11
Value and variable parameters . . . . . . 6-12
Constant parameters . . . . . . . . . . . 6-13
Out parameters. . . . . . . . . . . . . . . 6-13
Untyped parameters. . . . . . . . . . . . 6-14
String parameters . . . . . . . . . . . . . . . 6-15
Array parameters . . . . . . . . . . . . . . . 6-15
Open array parameters . . . . . . . . . . 6-15
Variant open array parameters . . . . . . 6-16
Default parameters . . . . . . . . . . . . . . 6-17
Default parameters and
overloaded routines . . . . . . . . . . . 6-18
Default parameters in forward and
interface declarations . . . . . . . . . . 6-19
Calling procedures and functions . . . . . . . . 6-19
Open array constructors . . . . . . . . . . . 6-19
Chapter 7
Classes and objects 7-1
Class types . . . . . . . . . . . . . . . . . . . . . . 7-2
Inheritance and scope . . . . . . . . . . . . . . 7-3
iv
TObject and TClass . . . . . . . . . . . . . 7-3
Compatibility of class types . . . . . . . . 7-3
Object types . . . . . . . . . . . . . . . . . 7-4
Visibility of class members . . . . . . . . . . 7-4
Private, protected, and public members . 7-5
Published members. . . . . . . . . . . . . 7-5
Automated members . . . . . . . . . . . . 7-6
Forward declarations and mutually
dependent classes. . . . . . . . . . . . . . . 7-6
Fields . . . . . . . . . . . . . . . . . . . . . . . . 7-7
Methods. . . . . . . . . . . . . . . . . . . . . . . 7-8
Method declarations and implementations . 7-8
Inherited . . . . . . . . . . . . . . . . . . . 7-9
Self . . . . . . . . . . . . . . . . . . . . . . 7-9
Method binding . . . . . . . . . . . . . . . . 7-10
Static methods. . . . . . . . . . . . . . . . 7-10
Virtual and dynamic methods. . . . . . . 7-10
Abstract methods . . . . . . . . . . . . . . 7-12
Overloading methods . . . . . . . . . . . . . 7-12
Constructors . . . . . . . . . . . . . . . . . . 7-13
Destructors . . . . . . . . . . . . . . . . . . . 7-14
Message methods . . . . . . . . . . . . . . . 7-15
Implementing message methods . . . . . 7-16
Message dispatching . . . . . . . . . . . . 7-16
Properties . . . . . . . . . . . . . . . . . . . . . . 7-17
Property access . . . . . . . . . . . . . . . . . 7-17
Array properties . . . . . . . . . . . . . . . . 7-19
Index specifiers . . . . . . . . . . . . . . . . . 7-20
Storage specifiers . . . . . . . . . . . . . . . . 7-21
Property overrides and redeclarations . . . . 7-22
Class references . . . . . . . . . . . . . . . . . . 7-23
Class-reference types. . . . . . . . . . . . . . 7-23
Constructors and class references . . . . . 7-24
Class operators . . . . . . . . . . . . . . . . . 7-24
The is operator . . . . . . . . . . . . . . . 7-24
The as operator . . . . . . . . . . . . . . . 7-25
Class methods . . . . . . . . . . . . . . . . . 7-25
Exceptions . . . . . . . . . . . . . . . . . . . . . 7-26
When to use exceptions . . . . . . . . . . . . 7-26
Declaring exception types . . . . . . . . . . . 7-27
Raising and handling exceptions . . . . . . . 7-27
Try...except statements . . . . . . . . . . . 7-28
Re-raising exceptions . . . . . . . . . . . . 7-30
Nested exceptions . . . . . . . . . . . . . 7-31
Try...finally statements . . . . . . . . . . . 7-31
Standard exception classes and routines. . . 7-32
Chapter 8
Standard routines and I/O 8-1
File input and output . . . . . . . . . . . . . . . . 8-1
Text files . . . . . . . . . . . . . . . . . . . . . 8-3
Untyped files. . . . . . . . . . . . . . . . . . . 8-4
Text-file device drivers . . . . . . . . . . . . . . . 8-4
Device functions . . . . . . . . . . . . . . . . . 8-5
The Open function . . . . . . . . . . . . . . 8-5
The InOut function . . . . . . . . . . . . . 8-5
The Flush function . . . . . . . . . . . . . . 8-6
The Close function . . . . . . . . . . . . . . 8-6
Handling null-terminated strings . . . . . . . . . 8-6
Wide-character strings . . . . . . . . . . . . . 8-7
Other standard routines . . . . . . . . . . . . . . 8-7
Part II
Special topics
Chapter 9
Libraries and packages 9-1
Calling dynamically loadable libraries . . . . . . 9-1
Static loading . . . . . . . . . . . . . . . . . 9-1
Dynamic loading. . . . . . . . . . . . . . . 9-2
Writing dynamically loadable libraries . . . . . . 9-3
The exports clause. . . . . . . . . . . . . . . . 9-5
Library initialization code . . . . . . . . . . . 9-5
Global variables in a library . . . . . . . . . . 9-6
Libraries and system variables. . . . . . . . . 9-6
Exceptions and runtime errors in libraries . . 9-7
Shared-memory manager (Windows only) . . 9-8
Packages . . . . . . . . . . . . . . . . . . . . . . . 9-8
Package declarations and source files . . . . . 9-9
Naming packages . . . . . . . . . . . . . 9-10
The requires clause . . . . . . . . . . . . 9-10
The contains clause . . . . . . . . . . . . 9-10
Compiling packages . . . . . . . . . . . . . 9-11
Generated files . . . . . . . . . . . . . . . 9-11
Package-specific compiler directives . . 9-11
Package-specific command-line
compiler switches . . . . . . . . . . . . 9-12
Chapter 10
Object interfaces 10-1
Interface types . . . . . . . . . . . . . . . . . . . 10-1
IInterface and inheritance . . . . . . . . . . 10-2
v
Zgłoś jeśli naruszono regulamin