delphi 5 - sprachreferenz

258 432 0
delphi 5 - sprachreferenz

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Object Pascal Sprachreferenz Inprise GmbH, Robert-Bosch-Straße 11, D-63225 Langen Borland ® Delphi5 für Windows 95, Windows 98 & Windows NT Copyright © 1997, 1998 Inprise, Inc. Alle Rechte vorbehalten. Alle Produktnamen von Inprise sind eingetragene Warenzeichen der Inprise, Inc. Deutsche Ausgabe © 1999 Inprise GmbH, Robert-Bosch-Straße 11, D-63225 Langen, Telefon 06103/979-0, Fax 06103/979-290 Update/Übertragung ins Deutsche: Krieger, Zander & Partner GmbH, München Satz: Krieger, Zander & Partner GmbH, München Hauptsitz: 100 Enterprise Way, P.O. Box 660001, Scotts Valley, CA 95067-0001, +1-(408)431-1000 Niederlassungen in: Australien, Deutschland, Frankreich, Großbritannien, Hong Kong, Japan, Kanada, Lateinamerika, Mexiko, den Niederlanden und Taiwan HDA1350GE21002 i Kapitel 1 Einführung 1-1 Inhalt dieses Handbuchs . . . . . . . . . . . . . 1-1 Delphi und Object Pascal . . . . . . . . . . . 1-1 Typografische Konventionen . . . . . . . . . 1-2 Weitere Informationsquellen . . . . . . . . . . . 1-2 Software-Registrierung und technische Unterstützung . . . . . . . . . . . . . . . . . . 1-3 Teil I Beschreibung der Sprachen Kapitel 2 Übersicht 2-1 Programmorganisation . . . . . . . . . . . . . . 2-1 Pascal-Quelltextdateien . . . . . . . . . . . . 2-2 Weitere Anwendungsdateien . . . . . . . . . 2-2 Vom Compiler generierte Dateien . . . . . . 2-3 Beispielprogramme . . . . . . . . . . . . . . . . 2-3 Eine einfache Konsolenanwendung . . . . . 2-3 Ein komplexeres Beispiel . . . . . . . . . . . 2-4 Eine Windows-Anwendung. . . . . . . . . . 2-5 Kapitel 3 Programme und Units 3-1 Programmstruktur und -syntax . . . . . . . . . 3-1 Der Programmkopf . . . . . . . . . . . . . . 3-2 Die uses-Klausel . . . . . . . . . . . . . . . . 3-3 Der Block . . . . . . . . . . . . . . . . . . . . 3-3 Unit-Struktur und -Syntax . . . . . . . . . . . . 3-3 Der Unit-Kopf . . . . . . . . . . . . . . . . . 3-4 Der interface-Abschnitt . . . . . . . . . . . . 3-4 Der implementation-Abschnitt . . . . . . . . 3-4 Der initialization-Abschnitt . . . . . . . . . . 3-5 Der finalization-Abschnitt. . . . . . . . . . . 3-5 Unit-Referenzen und die uses-Klausel . . . . . 3-6 Die Syntax der uses-Klausel. . . . . . . . . . 3-6 Mehrere und indirekte Unit-Referenzen. . . 3-7 Zirkuläre Unit-Referenzen . . . . . . . . . . 3-8 Kapitel 4 Syntaktische Elemente 4-1 Grundlegende syntaktische Elemente . . . . . . 4-1 Symbole . . . . . . . . . . . . . . . . . . . . . 4-2 Bezeichner. . . . . . . . . . . . . . . . . . . . 4-2 Qualifizierte Bezeichner. . . . . . . . . . . 4-2 Reservierte Wörter . . . . . . . . . . . . . . . 4-3 Direktiven . . . . . . . . . . . . . . . . . . . . 4-3 Ziffern . . . . . . . . . . . . . . . . . . . . . . 4-4 Label . . . . . . . . . . . . . . . . . . . . . . . 4-4 Zeichen-Strings . . . . . . . . . . . . . . . . . 4-4 Kommentare und Compiler-Direktiven . . . . . 4-5 Ausdrücke . . . . . . . . . . . . . . . . . . . . . . 4-6 Operatoren . . . . . . . . . . . . . . . . . . . . 4-6 Arithmetische Operatoren . . . . . . . . . 4-7 Boolesche Operatoren . . . . . . . . . . . . 4-8 Logische (bitweise) Operatoren . . . . . . 4-9 String-Operatoren . . . . . . . . . . . . . . 4-9 Zeiger-Operatoren . . . . . . . . . . . . . 4-10 Mengenoperatoren. . . . . . . . . . . . . 4-11 Relationale Operatoren . . . . . . . . . . 4-11 Klassen-Operatoren . . . . . . . . . . . . 4-12 Der Operator @. . . . . . . . . . . . . . . 4-12 Regeln für die Rangfolge von Operatoren . . . . . . . . . . . . . . . . 4-13 Funktionsaufrufe . . . . . . . . . . . . . . . 4-14 Mengenkonstruktoren . . . . . . . . . . . . 4-14 Indizes . . . . . . . . . . . . . . . . . . . . . 4-15 Typumwandlungen . . . . . . . . . . . . . . 4-15 Wertumwandlungen . . . . . . . . . . . 4-15 Variablenumwandlungen. . . . . . . . . 4-16 Deklarationen und Anweisungen. . . . . . . . 4-17 Deklarationen . . . . . . . . . . . . . . . . . 4-17 Anweisungen . . . . . . . . . . . . . . . . . 4-18 Einfache Anweisungen . . . . . . . . . . . . 4-18 Zuweisungen. . . . . . . . . . . . . . . . 4-18 Prozedur- und Funktionsaufrufe. . . . . 4-19 Goto-Anweisungen . . . . . . . . . . . . 4-19 Strukturierte Anweisungen . . . . . . . . . 4-21 Verbundanweisungen . . . . . . . . . . . 4-21 with-Anweisungen . . . . . . . . . . . . 4-22 if-Anweisungen . . . . . . . . . . . . . . 4-23 case-Anweisungen. . . . . . . . . . . . . 4-25 Schleifen . . . . . . . . . . . . . . . . . . 4-26 repeat-Anweisungen . . . . . . . . . . . 4-26 while-Anweisungen . . . . . . . . . . . . 4-27 for-Anweisungen . . . . . . . . . . . . . 4-27 Blöcke und Gültigkeitsbereich. . . . . . . . . . 4-29 Blöcke. . . . . . . . . . . . . . . . . . . . . . 4-29 Gültigkeitsbereich . . . . . . . . . . . . . . . 4-30 Namenskonflikte. . . . . . . . . . . . . . 4-30 Inhalt ii Kapitel 5 Datentypen, Variablen und Konstanten 5-1 Typen . . . . . . . . . . . . . . . . . . . . . . . . 5-1 Einfache Typen . . . . . . . . . . . . . . . . . . . 5-3 Ordinale Typen . . . . . . . . . . . . . . . . . 5-3 Integer-Typen . . . . . . . . . . . . . . . . 5-4 Zeichentypen . . . . . . . . . . . . . . . . 5-5 Boolesche Typen . . . . . . . . . . . . . . 5-6 Aufzählungstypen . . . . . . . . . . . . . 5-7 Teilbereichstypen . . . . . . . . . . . . . . 5-8 Reelle Typen . . . . . . . . . . . . . . . . . . 5-9 String-Typen . . . . . . . . . . . . . . . . . . . .5-10 Kurze String-Typen . . . . . . . . . . . . . .5-12 Lange String-Typen . . . . . . . . . . . . . .5-12 WideString-Typen . . . . . . . . . . . . . . .5-13 Erweiterte Zeichensätze . . . . . . . . . .5-13 Nullterminierte Strings . . . . . . . . . . . .5-14 Zeiger, Arrays und String-Konstanten . .5-14 Kombination von Pascal-Strings und nullterminierten Strings . . . . . . . . .5-16 Strukturierte Typen . . . . . . . . . . . . . . . .5-17 Mengentypen . . . . . . . . . . . . . . . . . .5-17 Array-Typen . . . . . . . . . . . . . . . . . .5-18 Statische Arrays. . . . . . . . . . . . . . .5-19 Dynamische Arrays. . . . . . . . . . . . .5-20 Array-Typen und Zuweisungen . . . . .5-22 Record-Typen . . . . . . . . . . . . . . . . . .5-23 Variante Teile in Record-Typen . . . . . .5-24 Dateitypen . . . . . . . . . . . . . . . . . . .5-26 Zeiger und Zeigertypen . . . . . . . . . . . . . .5-27 Zeiger im Überblick . . . . . . . . . . . . . .5-27 Zeigertypen . . . . . . . . . . . . . . . . . . .5-29 Zeiger auf Zeichen . . . . . . . . . . . . .5-29 Weitere Standardzeigertypen . . . . . . .5-29 Prozedurale Typen. . . . . . . . . . . . . . . . .5-30 Prozedurale Typen in Anweisungen und Ausdrücken . . . . . . . . . . . . . . . . . .5-31 Variante Typen . . . . . . . . . . . . . . . . . . .5-33 Typkonvertierung bei Varianten . . . . . . .5-34 Varianten in Ausdrücken . . . . . . . . . . .5-36 Variante Arrays . . . . . . . . . . . . . . . . .5-36 OleVariant . . . . . . . . . . . . . . . . . .5-37 Kompatibilität und Identität von Typen. . . . .5-37 Typidentität . . . . . . . . . . . . . . . . . . .5-37 Typkompatibilität . . . . . . . . . . . . . . .5-38 Zuweisungskompatibilität . . . . . . . . . .5-39 Typdeklaration . . . . . . . . . . . . . . . . . . .5-40 Variablen . . . . . . . . . . . . . . . . . . . . . .5-40 Variablendeklarationen . . . . . . . . . . . . 5-40 Absolute Adressen. . . . . . . . . . . . . 5-42 Dynamische Variablen . . . . . . . . . . 5-42 Thread-Variablen . . . . . . . . . . . . . 5-42 Deklarierte Konstanten. . . . . . . . . . . . . . 5-43 Echte Konstanten . . . . . . . . . . . . . . . 5-43 Konstante Ausdrücke . . . . . . . . . . . 5-44 Ressourcen-Strings . . . . . . . . . . . . 5-45 Typisierte Konstanten. . . . . . . . . . . . . 5-45 Array-Konstanten . . . . . . . . . . . . . 5-46 Record-Konstanten . . . . . . . . . . . . 5-46 Prozedurale Konstanten . . . . . . . . . 5-47 Zeigerkonstanten . . . . . . . . . . . . . 5-47 Kapitel 6 Prozeduren und Funktionen 6-1 Prozeduren und Funktionen deklarieren. . . . . 6-1 Prozedurdeklarationen . . . . . . . . . . . . . 6-2 Funktionsdeklarationen . . . . . . . . . . . . 6-3 Aufrufkonventionen . . . . . . . . . . . . . . 6-5 forward- und interface-Deklarationen . . . . 6-6 external-Deklarationen . . . . . . . . . . . . . 6-7 OBJ-Dateien linken . . . . . . . . . . . . . 6-7 Funktionen aus DLLs importieren . . . . . 6-7 Prozeduren und Funktionen überladen . . . 6-8 Lokale Deklarationen . . . . . . . . . . . . . . 6-9 Verschachtelte Routinen. . . . . . . . . . . 6-9 Parameter . . . . . . . . . . . . . . . . . . . . . 6-10 Parametersemantik . . . . . . . . . . . . . . 6-10 Wert- und Variablenparameter . . . . . . 6-11 Konstantenparameter . . . . . . . . . . . 6-12 Ausgabeparameter. . . . . . . . . . . . . 6-12 Untypisierte Parameter . . . . . . . . . . 6-13 Array-Parameter. . . . . . . . . . . . . . . . 6-14 Offene Array-Parameter . . . . . . . . . 6-14 Variante offene Array-Parameter. . . . . 6-15 Standardparameter . . . . . . . . . . . . . . 6-16 Standardparameter und überladene Routinen . . . . . . . . . . . . . . . . . 6-17 Standardparameter in forward- und interface-Deklarationen . . . . . . . . . 6-18 Prozeduren und Funktionen aufrufen . . . . . 6-18 Offene Array-Konstruktoren. . . . . . . . . 6-19 Kapitel 7 Klassen und Objekte 7-1 Klassentypen deklarieren . . . . . . . . . . . . . 7-2 Vererbung und Gültigkeitsbereich . . . . . . 7-3 TObject und TClass . . . . . . . . . . . . . 7-3 iii Kompatibilitätsregeln für Klassentypen . 7-3 Objekttypen . . . . . . . . . . . . . . . . . 7-4 Sichtbarkeit von Klassenelementen . . . . . 7-4 private-, protected- und public-Elemente 7-5 published-Elemente . . . . . . . . . . . . 7-5 automated-Elemente . . . . . . . . . . . . 7-6 Vorwärtsdeklarationen und voneinander abhängige Klassen . . . . . . . . . . . . . . 7-7 Felder . . . . . . . . . . . . . . . . . . . . . . . . 7-7 Methoden . . . . . . . . . . . . . . . . . . . . . . 7-8 Methodenimplementierungen . . . . . . . . 7-8 inherited . . . . . . . . . . . . . . . . . . . 7-9 Self . . . . . . . . . . . . . . . . . . . . . . 7-9 Methodenbindung . . . . . . . . . . . . . . .7-10 Statische Methoden. . . . . . . . . . . . .7-10 Virtuelle und dynamische Methoden. . . 7-11 Abstrakte Methoden . . . . . . . . . . . .7-13 Methoden überladen. . . . . . . . . . . . . .7-13 Konstruktoren . . . . . . . . . . . . . . . . .7-14 Destruktoren . . . . . . . . . . . . . . . . . .7-15 Botschaftsbehandlungsroutinen . . . . . . .7-16 Botschaftsbehandlungsroutinen implementieren . . . . . . . . . . . . . .7-16 Botschaftsweiterleitung . . . . . . . . . .7-17 Eigenschaften. . . . . . . . . . . . . . . . . . . .7-17 Auf Eigenschaften zugreifen . . . . . . . . .7-18 Array-Eigenschaften . . . . . . . . . . . . . .7-19 Indexangaben. . . . . . . . . . . . . . . . . .7-21 Speicherangaben . . . . . . . . . . . . . . . .7-21 Eigenschaften überschreiben und neu deklarieren . . . . . . . . . . . . . . . . . .7-22 Klassenreferenzen . . . . . . . . . . . . . . . . .7-24 Klassenreferenztypen . . . . . . . . . . . . .7-24 Konstruktoren und Klassenreferenzen . .7-24 Klassenoperatoren . . . . . . . . . . . . . . .7-25 Der Operator is . . . . . . . . . . . . . . .7-25 Der Operator as . . . . . . . . . . . . . . .7-25 Klassenmethoden . . . . . . . . . . . . . . .7-26 Exceptions . . . . . . . . . . . . . . . . . . . . .7-27 Exception-Typen deklarieren . . . . . . . . .7-27 Exceptions auslösen und behandeln . . . . .7-27 Die Anweisung try except . . . . . . . .7-28 Exceptions erneut auslösen . . . . . . . .7-31 Verschachtelte Exceptions . . . . . . . . .7-31 Die Anweisung try finally . . . . . . . .7-32 Exception-Standardklassen und - Standardroutinen . . . . . . . . . . . . . . .7-32 Kapitel 8 Standardroutinen und E/A 8-1 Dateiein und -ausgabe . . . . . . . . . . . . . . . 8-1 Textdateien . . . . . . . . . . . . . . . . . . . . 8-3 Untypisierte Dateien . . . . . . . . . . . . . . 8-4 Gerätetreiber für Textdateien . . . . . . . . . . . 8-5 Gerätetreiberfunktionen . . . . . . . . . . . . 8-5 Die Funktion Open . . . . . . . . . . . . . 8-6 Die Funktion InOut . . . . . . . . . . . . . 8-6 Die Funktion Flush . . . . . . . . . . . . . 8-6 Die Funktion Close . . . . . . . . . . . . . 8-6 Nullterminierte Strings. . . . . . . . . . . . . . . 8-7 Wide-Strings . . . . . . . . . . . . . . . . . . . 8-8 Weitere Standardroutinen . . . . . . . . . . . . . 8-8 Teil II Spezielle Themen Kapitel 9 Dynamische Link-Bibliotheken und Packages 9-1 DLLs aufrufen. . . . . . . . . . . . . . . . . . . . 9-1 Statisches Laden . . . . . . . . . . . . . . . 9-1 Dynamisches Laden . . . . . . . . . . . . . 9-2 DLLs schreiben . . . . . . . . . . . . . . . . . . . 9-3 Die exports-Klausel . . . . . . . . . . . . . . . 9-4 Code für die Initialisierung der Bibliothek . . 9-4 Globale Variablen in einer DLL . . . . . . . . 9-5 DLLs und Systemvariablen . . . . . . . . . . 9-5 Exceptions und Laufzeitfehler in DLLs . . . . 9-6 Der Shared-Memory-Manager. . . . . . . . . 9-6 Packages . . . . . . . . . . . . . . . . . . . . . . . 9-7 Package-Deklarationen und Quelltextdateien9-7 Packages benennen . . . . . . . . . . . . . 9-8 Die requires-Klausel . . . . . . . . . . . . . 9-8 Die contains-Klausel. . . . . . . . . . . . . 9-9 Packages compilieren . . . . . . . . . . . . . . 9-9 Generierte Dateien. . . . . . . . . . . . . 9-10 Package-spezifische Compiler- Direktiven. . . . . . . . . . . . . . . . . 9-10 Package-spezifische Befehlszeilen- optionen. . . . . . . . . . . . . . . . . . 9-11 Kapitel 10 Objektschnittstellen 10-1 Schnittstellentypen deklarieren . . . . . . . . . 10-1 IUnknown und Vererbung . . . . . . . . . . 10-2 Identifikation einer Schnittstelle . . . . . . . 10-2 iv Aufrufkonventionen . . . . . . . . . . . . . .10-3 Schnittstelleneigenschaften . . . . . . . . . .10-3 Vorwärtsdeklarationen . . . . . . . . . . . .10-4 Schnittstellen implementieren . . . . . . . . . .10-4 Methodenzuordnung . . . . . . . . . . . . .10-5 Geerbte Implementationen ändern. . . . . .10-6 Schnittstellen delegieren. . . . . . . . . . . .10-6 Delegieren an eine Eigenschaft vom Typ einer Schnittstelle . . . . . . . . . . . . .10-7 Delegieren an eine Eigenschaft vom Typ einer Klasse . . . . . . . . . . . . . . . .10-7 Schnittstellenreferenzen. . . . . . . . . . . . . .10-8 Zuweisungskompatibilität von Schnittstellen . . . . . . . . . . . . . . . . .10-9 Schnittstellenumwandlungen. . . . . . . . 10-10 Schnittstellenabfragen . . . . . . . . . . 10-10 Automatisierungsobjekte . . . . . . . . . . . . 10-11 Dispatch-Schnittstellen . . . . . . . . . . . 10-11 Methoden für Dispatch-Schnittstellen . 10-11 Eigenschaften für Dispatch- Schnittstellen . . . . . . . . . . . . . . 10-12 Zugriff auf Automatisierungsobjekte . . . 10-12 Syntax für Aufrufe von Automatisierungs- methoden . . . . . . . . . . . . . . . . 10-12 Duale Schnittstellen . . . . . . . . . . . . . 10-13 Kapitel 11 Speicherverwaltung 11-1 Der Speichermanager von Delphi . . . . . . . . 11-1 Variablen . . . . . . . . . . . . . . . . . . . . 11-2 Interne Datenformate . . . . . . . . . . . . . . . 11-3 Integer-Typen . . . . . . . . . . . . . . . . . . 11-3 Zeichentypen . . . . . . . . . . . . . . . . . . 11-3 Boolesche Typen . . . . . . . . . . . . . . . . 11-3 Aufzählungstypen . . . . . . . . . . . . . . . 11-4 Reelle Typen . . . . . . . . . . . . . . . . . . 11-4 Der Typ Real48 . . . . . . . . . . . . . . . 11-4 Der Typ Single. . . . . . . . . . . . . . . . 11-4 Der Typ Double . . . . . . . . . . . . . . . 11-5 Der Typ Extended. . . . . . . . . . . . . . 11-5 Der Typ Comp. . . . . . . . . . . . . . . . 11-5 Der Typ Currency. . . . . . . . . . . . . . 11-6 Zeigertypen . . . . . . . . . . . . . . . . . . . 11-6 Kurze String-Typen . . . . . . . . . . . . . . 11-6 Lange String-Typen . . . . . . . . . . . . . . 11-6 Wide-String-Typen . . . . . . . . . . . . . . . 11-7 Mengentypen . . . . . . . . . . . . . . . . . . 11-7 Statische Array-Typen . . . . . . . . . . . . . 11-8 Dynamische Array-Typen . . . . . . . . . . . 11-8 Record-Typen . . . . . . . . . . . . . . . . . 11-8 Dateitypen . . . . . . . . . . . . . . . . . . . 11-9 Prozedurale Typen . . . . . . . . . . . . . .11-10 Klassentypen. . . . . . . . . . . . . . . . . .11-10 Klassenreferenztypen . . . . . . . . . . . . .11-11 Variante Typen. . . . . . . . . . . . . . . . .11-11 Kapitel 12 Ablaufsteuerung 12-1 Parameter und Funktionsergebnisse . . . . . . 12-1 Parameter . . . . . . . . . . . . . . . . . . . 12-1 Konventionen zur Speicherung in Registern . . . . . . . . . . . . . . . . . 12-3 Funktionsergebnisse . . . . . . . . . . . . . 12-3 Methoden . . . . . . . . . . . . . . . . . . . 12-3 Konstruktoren und Destruktoren . . . . 12-4 Exit-Prozeduren. . . . . . . . . . . . . . . . . . 12-4 Kapitel 13 Der integrierte Assembler 13-1 Die Anweisung asm . . . . . . . . . . . . . . . 13-1 Register . . . . . . . . . . . . . . . . . . . . . 13-2 Syntax für Assembler-Anweisungen . . . . . . 13-2 Label . . . . . . . . . . . . . . . . . . . . . . 13-2 Anweisungs-Opcodes. . . . . . . . . . . . . 13-3 Der Befehl RET. . . . . . . . . . . . . . . 13-5 Sprungbefehle . . . . . . . . . . . . . . . 13-5 Assembler-Direktiven. . . . . . . . . . . . . 13-6 Operanden . . . . . . . . . . . . . . . . . . . 13-7 Ausdrücke . . . . . . . . . . . . . . . . . . . . . 13-8 Unterschiede zwischen Ausdrücken in Object Pascal und Assembler. . . . . . . . 13-8 Ausdruckselemente . . . . . . . . . . . . . . 13-9 Konstanten . . . . . . . . . . . . . . . . . 13-9 Register . . . . . . . . . . . . . . . . . . .13-11 Symbole. . . . . . . . . . . . . . . . . . .13-11 Ausdrucksklassen . . . . . . . . . . . . . . 13-13 Ausdruckstypen . . . . . . . . . . . . . . . 13-15 Ausdrucksoperatoren. . . . . . . . . . . . 13-16 Assembler-Prozeduren und -Funktionen . . 13-18 Anhang A Die Grammatik von Object Pascal A-1 Index v 4.1 Resrevierte Wörter . . . . . . . . . . . . . 4-3 4.2 Direktiven . . . . . . . . . . . . . . . . . . 4-4 4.3 Binäre arithmetische Operatoren . . . . . 4-7 4.4 Unäre arithmetische Operatoren. . . . . . 4-7 4.5 Boolesche Operatoren. . . . . . . . . . . . 4-8 4.6 Logische (bitweise) Operatoren . . . . . . 4-9 4.7 String-Operatoren . . . . . . . . . . . . . . 4-9 4.8 Zeichenzeiger-Operatoren . . . . . . . . .4-10 4.9 Mengenoperatoren . . . . . . . . . . . . .4-11 4.10Relationale Operatoren . . . . . . . . . .4-11 4.11Wertigkeit der Operatoren . . . . . . . . .4-13 5.1 Generische Integer-Typen für 32-Bit- Implementationen von Object Pascal . . . 5-4 5.2 Fundamentale Integer-Typen. . . . . . . . 5-4 5.3 Fundamentale reelle Typen. . . . . . . . . 5-9 5.4 Generische reelle Typen. . . . . . . . . . .5-10 5.5 String-Typen . . . . . . . . . . . . . . . . .5-10 5.6 Eine Auswahl der in System und SysUtils deklarierten Zeigertypen . . . . . . . . .5-29 5.7 Regeln für die Typkonvertierung bei Varianten . . . . . . . . . . . . . . . . . . .5-35 6.1 Aufrufkonventionen. . . . . . . . . . . . . 6-5 8.1 Ein- und Ausgaberoutinen . . . . . . . . 8-1 8.2 Funktionen für nullterminierte Strings . 8-7 8.3 Weitere Standardroutinen . . . . . . . . . 8-8 9.1 Dateien eines compilierten Package. . . .9-10 9.2 Compiler-Direktiven für Packages. . . . .9-10 9.3 Befehlszeilenoptionen für Packages . . .9-11 11.1Aufbau des Speichers für einen langen String . . . . . . . . . . . . . . . . . . . . .11-6 11.2Aufbau des dynamischen Speichers für einen Wide-String. . . . . . . . . . . . . . . . . .11-7 11.3Aufbau des Speichers für ein dynamisches aa Array aaaaaaaaaaaaaaaaa aaaaaa 11-8 11.4Ausrichtungsmasken für Typen . . . . . .11-8 11.5Struktur der virtuellen Methodentabelle11-11 13.1Reservierte Wörter im integrierten Assembler . . . . . . . . . . . . . . . . . .13-7 13.2Beispiele für String-Konstanten und ihre Werte . . . . . . . . . . . . . . . . . . . . 13-10 13.3CPU-Register. . . . . . . . . . . . . . . . 13-11 13.4Im integrierten Assembler verwendbare Symbole. . . . . . . . . . . . . . . . . . . 13-12 13.5Vordefinierte Typensymbole . . . . . . . 13-16 13.6Rangfolge der Ausdrucksoperatoren des integrierten Assemblers. . . . . . . . . . 13-16 13.7Erläuterung der Ausdrucksoperatoren des integrierten Assemblers . . . . . . . . 13-16 Tabellen Einführung 1-1 Kapitel 1 Chapter 1 Einführung Dieses Handbuch enthält Informationen zu der in Delphi verwendeten Program- miersprache Object Pascal. Inhalt dieses Handbuchs Die ersten sieben Kapitel beschreiben die meisten der in der normalen Programmie- rung verwendeten Sprachelemente. Kapitel 8 enthält einen Überblick über die Stan- dardroutinen für E/A-Operationen und String-Bearbeitung. Die nächsten beiden Kapitel enthalten Informationen über Spracherweiterungen, DLLs und Delphi-Packages (Kapitel 9) und über Objektschnittstellen und COM (Ka- pitel 10). In den letzten drei Kapiteln werden Themen für fortgeschrittene Program- mierer behandelt: Speicherverwaltung (Kapitel 11), Programmsteuerung (Kapitel 12) und Verwendung von Assembler-Routinen in Pascal-Programmen (Kapitel 13). Delphi und Object Pascal Die meisten Delphi-Entwickler schreiben und compilieren ihre Programme in der in- tegrierten Entwicklungsumgebung (IDE). Hier kümmert sich Delphi um alle Details, die beim Einrichten von Projekten und Quelltextdateien von Bedeutung sind (z.B. Verwalten der Abhängigkeiten zwischen den Units). Delphi stellt dabei spezielle Re- geln bezüglich der Programmorganisation auf, die aber nicht zur Sprachdefinition von Object Pascal gehören. So werden beispielsweise bestimmte Namenskonventio- nen für Dateien und Programme verwendet, an die Sie aber nicht gebunden sind, wenn Sie Programme außerhalb der IDE schreiben und in der Befehlszeile compilie- ren. Im allgemeinen geht dieses Handbuch davon aus, daß Sie in der Delphi-IDE arbeiten und Anwendungen mit Hilfe der VCL (Visual Component Library) erstellen. In man- 1-2 Object Pascal Sprachreferenz Weitere Informationsquellen chen Abschnitten wird jedoch zwischen speziellen Delphi-Regeln und der normalen Programmierung mit Object Pascal unterschieden. Typografische Konventionen Bezeichner (Konstanten, Variablen, Typen, Eigenschaften, Prozeduren, Funktionen, Programme, Units, Bibliotheken und Packages) sind im Text kursiv gesetzt. Operato- ren, reservierte Wörter und Direktiven der Sprache Object Pascal werden fett ge- schrieben. Quelltextbeispiele und Text, der literal eingegeben werden muß (in eine Datei oder in der Befehlszeile), erkennen Sie an einer Schrift mit fester Zeichenbreite . Reservierte Wörter und Direktiven werden auch in Programmlistings fett geschrie- ben: function Calculate(X, Y: Integer): Integer; begin ƒ end ; Auch im Quelltexteditor werden Direktiven und reservierte Wörter fett angezeigt, wenn die Syntaxhervorhebung aktiviert ist. In manchen Quelltextbeispielen (siehe oben) werden Fortsetzungszeichen ( oder ƒ ) verwendet. Sie stehen für weitere Programmzeilen, die in einer richtigen Quelltext- datei an dieser Stelle vorhanden wären. Diese Zeichen dürfen nicht in den Quelltext übernommen werden. Kursive Angaben in Syntaxbeschreibungen sind Platzhalter, die im echten Quelltext durch syntaktisch gültige Konstrukte ersetzt werden müssen. Die Syntax der Funkti- on im vorhergehenden Beispiel könnte beispielsweise folgendermaßen angegeben werden: function Funktionsname(Argumente) : Rückgabetyp; In Syntaxangaben werden auch Fortsetzungszeichen ( ) und Subskripte verwendet: function Funktionsname(Arg1, , Argn) : Rückgabetyp; Weitere Informationsquellen Die Online-Hilfe von Delphi enthält Informationen über die IDE und die Benutzer- oberfläche. Außerdem finden Sie hier das aktuelle VCL-Referenzmaterial. Ausführli- che Informationen zu vielen Programmierthemen (z.B. Entwickeln von Datenbank- anwendungen) finden Sie im Entwicklerhandbuch . Einen Überblick über die Delphi- Dokumentation finden Sie in der Einführung . Einführung 1-3 Software-Registrierung und technische Unterstützung Software-Registrierung und technische Unterstützung Borland bietet einzelnen Entwicklern, EDV-Fachleuten und Firmen vielfältige Unter- stützung an. Damit Sie diese Möglichkeiten nutzen können, senden Sie das Registrie- rungsformular mit den für Sie zutreffenden Angaben zurück. Weitere Informationen zur technischen Unterstützung und zu weiteren Borland-Diensten erhalten Sie bei Ih- rem Händler oder auf der Borland-Homepage unter http://www.inprise.com/. [...]... Programms Editor lautet In Standard-Pascal kann der Programmkopf hinter dem Programmnamen auch Parameter angeben: program Calc(input, output); Der Delphi- Compiler ignoriert diese Parameter 3-2 Object Pascal Sprachreferenz Unit-Struktur und -Syntax Die uses-Klausel Die uses-Klausel gibt alle Units an, die in das Programm aufgenommen werden Diese Units können eigene uses-Klauseln enthalten Weitere Informationen... werden und verfügen häufig über eigene uses-Klauseln Die uses-Klausel liefert dem Compiler Informationen über die Modulabhängigkeiten Da diese Abhängigkeiten in den Modulen selbst gespeichert werden, benötigen Object-Pascal-Programme keine Make-Dateien, Header-Dateien oder #include-Präprozessoranweisungen (die Projektverwaltung von Delphi generiert zwar eine Make-Datei, wenn Sie ein Projekt in die IDE... implementation-Abschnitte } initialization { initialization-Abschnitt } Programme und Units 3-3 Unit-Struktur und -Syntax finalization { finalization-Abschnitt } end Eine Unit muß mit dem Wort end und einem Punkt abgeschlossen werden Der Unit-Kopf Der Unit-Kopf gibt den Namen der Unit an Er besteht aus dem reservierten Wort unit, einem gültigen Bezeichner und einem abschließenden Semikolon In DelphiAnwendungen... enthalten Der interface-Abschnitt kann eine eigene uses-Klausel enthalten, die unmittelbar auf das Wort interface folgen muß Informationen zur uses-Klausel finden Sie im Abschnitt »Unit-Referenzen und die uses-Klausel« auf Seite 3-6 Der implementation-Abschnitt Der implementation-Abschnitt einer Unit beginnt mit dem reservierten Wort implementation und endet mit dem Beginn des initialization-Abschnitts oder,... initialization-Abschnitt vorhanden ist, mit dem Ende der Unit Der implementation- 3-4 Object Pascal Sprachreferenz Unit-Struktur und -Syntax Abschnitt definiert Prozeduren und Funktionen, die im interface-Abschnitt deklariert wurden Im implementation-Abschnitt können diese Prozeduren und Funktionen in beliebiger Reihenfolge definiert und aufgerufen werden Sie brauchen in den Prozedur- und Funktionsköpfen... zugehörige finalization-Abschnitt beim Beenden der Anwendung ausgeführt wird Der finalization-Abschnitt muß deshalb auch unvollständig initialisierte Daten verarbeiten können, da der Initialisierungscode beim Auftreten eines Laufzeitfehlers möglicherweise nicht vollständig ausgeführt wird Programme und Units 3 -5 Unit-Referenzen und die uses-Klausel Unit-Referenzen und die uses-Klausel Eine uses-Klausel in einem... von jeder Delphi- Anwendung verwendet und darf nicht in der uses-Klausel angegeben werden (System implementiert Routinen für die Datei-E/A, String-Verarbeitung, Gleitkommaoperationen, dynamische Speicherzuweisung usw.) Andere Standard-Units (Bibliotheken) wie SysUtils müssen dagegen in der uses-Klausel angegeben werden In den meisten Fällen fügt Delphi alle erforderlichen Units in die uses-Klausel ein,... Abschnitt »Goto-Anweisungen« auf Seite 4-1 9 Zeichen-Strings Ein Zeichen-String (auch String-Literal oder String-Konstante genannt) kann aus einem String in Anführungszeichen, einem Steuerzeichen-String oder einer Kombination aus beiden bestehen Trennzeichen treten nur bei Strings in Anführungszeichen auf 4-4 Object Pascal Sprachreferenz Kommentare und Compiler-Direktiven Ein String in Anführungszeichen... implementation-Abschnitt kann eine eigene uses-Klausel enthalten, die unmittelbar auf das Wort implementation folgen muß Weitere Informationen zur usesKlausel finden Sie im Abschnitt »Unit-Referenzen und die uses-Klausel« auf Seite 3-6 Der initialization-Abschnitt Der initialization-Abschnitt ist optional Er beginnt mit dem reservierten Wort initialization und endet mit dem Beginn des finalization-Abschnitts... gewartet wird Informationen zur Position und zum Inhalt der uses-Klausel finden Sie in den Abschnitten »Mehrere und indirekte Unit-Referenzen« auf Seite 3-7 und »Zirkuläre Unit-Referenzen« auf Seite 3-8 Die Syntax der uses-Klausel Eine uses-Klausel besteht aus dem reservierten Wort uses, einem oder mehreren durch Kommas voneinander getrennten Unit-Namen und einem abschließenden Semikolon Zwei Beispiele: . . 4-1 3 5. 1 Generische Integer-Typen für 32-Bit- Implementationen von Object Pascal . . . 5- 4 5. 2 Fundamentale Integer-Typen. . . . . . . . 5- 4 5. 3 Fundamentale reelle Typen. . . . . . . . . 5- 9 5. 4. 5- 45 Array-Konstanten . . . . . . . . . . . . . 5- 46 Record-Konstanten . . . . . . . . . . . . 5- 46 Prozedurale Konstanten . . . . . . . . . 5- 47 Zeigerkonstanten . . . . . . . . . . . . . 5- 47 Kapitel. . 5- 19 Dynamische Arrays. . . . . . . . . . . . . 5- 20 Array-Typen und Zuweisungen . . . . . 5- 22 Record-Typen . . . . . . . . . . . . . . . . . . 5- 23 Variante Teile in Record-Typen . . . . . . 5- 24 Dateitypen

Ngày đăng: 16/04/2014, 11:15

Mục lục

  • Kapitel 1: Einführung

    • Inhalt dieses Handbuchs

      • Delphi und Object Pascal

      • Software-Registrierung und technische Unterstützung

      • Teil I: Beschreibung der Sprachen

        • Kapitel 2: Übersicht

          • Programmorganisation

            • Pascal-Quelltextdateien

            • Vom Compiler generierte Dateien

            • Kapitel 3: Programme und Units

              • Programmstruktur und -syntax

                • Der Programmkopf

                • Unit-Struktur und -Syntax

                  • Der Unit-Kopf

                  • Unit-Referenzen und die uses-Klausel

                    • Die Syntax der uses-Klausel

                    • Mehrere und indirekte Unit-Referenzen

                    • Kapitel 4: Syntaktische Elemente

                      • Grundlegende syntaktische Elemente

                        • Symbole

                        • Regeln für die Rangfolge von Operatoren

                        • Blöcke und Gültigkeitsbereich

                          • Blöcke

                          • Kapitel 5: Datentypen, Variablen und Konstanten

                            • Typen

                            • Nullterminierte Strings

                              • Zeiger, Arrays und String-Konstanten

                              • Kombination von Pascal-Strings und nullterminierten Strings

                              • Record-Typen

                                • Variante Teile in Record-Typen

                                • Zeiger und Zeigertypen

                                  • Zeiger im Überblick

                                  • Prozedurale Typen

                                    • Prozedurale Typen in Anweisungen und Ausdrücken

                                    • Variante Typen

                                      • Typkonvertierung bei Varianten

                                      • Varianten in Ausdrücken

                                      • Kompatibilität und Identität von Typen

                                        • Typidentität

Tài liệu cùng người dùng

Tài liệu liên quan