Home
Programmierkurs ObjectPascal
Contents
1. 160 17 raise nochmaliges Ausl sen der 18 Exception 19 EGPFault Create Hier spielen wir 20 Schutzverletzung 21 end 22 end 23 except 24 on EZeroDivide do f r alle F lle 25 messagebeep 0 26 end 27 end d Beachten Sie dass es zwei NullDivision Exception gibt EDivByZero Vorg nger EIntError Int durch Null EZeroDivide Vorg nger EMathError Float durch Null 11 1 4 Verschachtelte Exceptions Im Code einer Exception Behandlungsroutine lassen sich wiederum andere Exceptions ausl sen und behandeln So lange die Exceptions die in einer Exception Behandlungs routine ausgel st werden auch dort behandelt werden wirkt sich dies auf die urspr ngliche Exception nicht aus Wenn sich die Reichweite einer solchen Exception jedoch so ver gr ssert dass sie ber diese Behandlungsroutine hinaus geht geht die urspr ngliche Exception verloren Das obige Beispiel konkretisiert auch diesen Sachverhalt 11 1 5 Die vier Ausnahmezust nde im berblick Error Project PASSPRO EXE raised exception class EZeroDivide with message Floating point division by zero Process stopped Use Step or Run to continue Abb 27 Der integrierte Debugger hat die Anwendung unterbrochen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Exception Handling und RTTI 161 Passpro Floating point division by zero Abb 28 Der integrierte Debugger hat die Anwendung nicht unterbro che
2. 1 4 Einf hrungsfragen 1 10 11 Was ist der Unterschied zwischen kompilierten und in terpretierten Programmiersprachen Welche Arten von Schleifen kennen Sie aus Ihrer bishe rigen Programmiererfahrung Was ist der Unterschied zwischen einer Funktion und einer Prozedur Warum gibt es lokale und globale Variablen Kennen Sie den Unterschied zwischen einem Call by Value und einem Call by Reference Wozu dient die Unterscheidung zwischen einem forma len und einem aktuellen Parameter Erkl ren Sie den Begriff Konstruktor Welche Klassenhierarchien kennen Sie Wozu dienen die rund 700 API Funktionen in Windows Was ist ein Fenster in Windows Welchen Unterschied gibt es zwischen dem Wasserfall modell und dem Spiralmodell im Software Engineering DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Einleitung 1 5 Konventionen im Skript Bevor wir in das eigentliche Thema einsteigen k nnen m s sen Sie sich mit einigen Konventionen dieses Skripts ver traut machen Diese Konventionen betreffen Formatierung Symbole und Namenskonventionen f r Delphi Code 1 5 1 Formatierungskonventionen Die typografischen Konventionen entsprechen jenen die Sie aus neueren Kursunterlagen von Digicomp bereits kennen F r neue Kursbesucher innen sind sie hier zusammenge fasst Men s wie FILE und andere Elemente der Entwicklungsum gebung z B das Register PROPERTIES ausserdem auch die Bezeichnungen der einz
3. 12 F gen Sie aus dem Register DIALOGS die beiden Komponen ten OPENDIALOG und SAVEDIALOG hinzu Nennen Sie sie digOpenText und dlgSave Text Diese Komponenten nennt man nicht visuell da sie als Schnittstelle dienen und somit zur Lauf zeit nicht sichtbar sind 13 Markieren Sie beide Dialogkomponenten mit Hilfe der Um schalt Taste Andern Sie dann f r beide gleichzeitig die Eigen schaft FILTER indem Sie Textdateien txt in die Wertespalte eintragen 14 Jetzt wollen wir herausfinden welche Prozedur hinter den Knopf Laden zu stehen kommt Klicken Sie auf die Open Dialog Komponente und dr cken Sie F1 Klicken Sie dort auf EXECUTE und darin wiederum auf EXAMPLE Hier erhalten Sie ein Beispiel wie man eine Textdatei ffnet Markieren Sie die ganze Bedingung if Open end und dr cken Sie CTRL C Sie haben nun das Beispiel in der Zwischenablage DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Visuelle Programmierung 68 15 Verlassen Sie die Hilfe Doppelklicken Sie auf den Laden But ton worauf Sie im Quelltexteditor eine Rumpfprozedur erhal ten F gen Sie den Beispielcode mit CTRL V aus dem Clipbo ard ein Da wir die Namen unserer Komponenten ge ndert ha ben m ssen wir beim Code einige Anpassungen machen O penDialog1 ersetzen wir mit SEARCH REPLACE durch digOpenText Memo1 wechseln wir mit memEditor und Save Dialogi mit dlgSaveText 16 Doppelklicken Sie im Formular auf die Schaltflache Speichern und schre
4. Wenn Sie nun Ihr Programm mit F9 ausf hren und mit der Maus die R nder des Formulars gegen aussen ziehen dann l sst es sich maximal auf das Format 640 x 480 vergr ssern Konstanten haben die folgenden wichtigen Eigenschaften 1 Der Wert einer Konstanten l sst sich zur Laufzeit nicht ndern 2 Die Deklaration von Konstanten hat keinen negativen Ein fluss auf die Performance eines Programms denn der Compiler setzt bei der Erzeugung der ausf hrbaren Exe Datei f r die Konstanten die entsprechenden Werte ein 3 Aus der letzten Bemerkung folgt dass Konstanten keine Speicheradresse haben Es handelt sich nur um eine praktische Art w hrend der Entwicklung mehrmals ver wendete Werte und Daten durch einen Namen zu er setzen 5 4 Variablen 5 4 1 Begriffsdefinition Eine Variable ist ein Bezeichner f r einen ver nderbaren Wert Technisch stellt eine Variable eine Speicheradresse dar deren Inhalt sich w hrend der Laufzeit ndern kann Object Pascal ist eine streng typisierte Sprache Eine Vari able kann deshalb nicht beliebige Werte enthalten sondern nur solche eines bestimmten Typs Eine Variable hat vier Charakteristiken 1 Bezeichner Variablenname Der Bezeichner identifi ziert die Variable so dass Sie im Programm nicht mit Speicheradressen hantieren m ssen sondern mit Hilfe eines m glichst sprechenden Variablennamens auf Werte zugreifen k nnen 2 Typ Der Typ bestimmt welche Werte f r die Varia
5. e Den Namen des Property e Den Typ des Property e Methoden f r das Lesen und oder Schreiben des Proper ty Wertes Die Properties einer Komponente sollten wenigstens im Abschnitt public deklariert sein was ein einfaches Lesen und Schreiben des Property von ausserhalb der Komponen te zur Laufzeit erm glicht So sieht eine typische Property Deklaration aus DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Eigenschaften und Windows Botschaften 142 type TMyClass class TPersistent private FColor TColor Feld interne Speicherung function GetColor TColor read Methode procedure SetColor newColor TColor write Methode public property Color TColor read GetColor write SetColor Die Methode read Die Methode read eines Property ist eine Funktion die kei ne Parameter annimmt und einen Wert vom Typ des Pro perty zur ckliefert Gem ss Konvention ist der Name dieser Funktion Get gefolgt vom Namen des Property Die Read Methode f r ein Property mit dem Namen Color w rde also GetColor heissen Die Regel keine Parameter hat allerdings eine Ausnahme n mlich bei Array Properties die ihre Indizes als Parameter bergeben siehe Array Properties 10 1 4 Wenn Sie keine Read Methode deklarieren erlaubt die Ei genschaft nur Schreibzugriff Properties mit ausschliessli chem Schreibzugriff sind sehr selten und in der Regel auch nicht sinnvoll Function TMyClass GetColor TColor
6. 24 Initialisierte Variablen deklariert man zwar im Konstanten deklarationsblock aber unter den unten erw hnten Be dingungen lassen sie sich trotzdem wie Variablen verwen den Obwohl eine automatische Initialisierung bereits viele Fehler vermeiden hilft resultiert die Beliebtheit typisierter Konstan ten aus einer anderen Eigenschaft Lokale d h in einer Pro DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Konstanten und Variablen oOoNOOVOIP ODPD 79 zedur oder Funktion deklarierte typisierte Konstanten behal ten n mlich ihren Wert auch wenn man die Prozedur ver l sst In der C Programmierung kennt man daf r die Vari ablenart Static Diese Eigenschaft erm glicht es bei spielsweise einen Z hler zu programmieren der angibt wie oft ein Ereignis durch ein Kontrollelement ausgel st wird und den Code in der zum Kontrollelement geh rigen Ereig nisbehandlungsroutine zu plazieren Sie k nnen dies testen indem Sie ein Formular mit einem Button btnZaehler versehen und dessen Ereignis behandlungsroutine zu ONCLICK zu folgendem Code erg n zen procedure TfrmEditor btnZaehlerClick Sender TObject const zaehler byte 0 begin Inc Zaehler btnZaehler caption inttostr Zaehler end Jedes Mal wenn Sie auf den Button klicken wird dessen Beschriftung um 1 erh ht Allerdings l sst sich dieses Pro gramm nur kompilieren wenn die Compilerdirektive J einge
7. Br q 4 124 9 Klassen und Instanzen In diesem Kapitel schliessen Sie Bekanntschaft mit der Welt der objektorientierten Programmierung OOP e Sie werden in die Philosophie und in die wichtigsten Beg riffe der OOP eingef hrt e Sie lernen was Klassen Instanzen und Objektfelder sind e Sie erfahren wie man Methoden schreibt und wozu man Konstruktoren und Destruktoren verwendet e Sie arbeiten sich in fortgeschrittene Konzepte der OOP wie Vererbung sowie virtuelle und dynamische Methoden ein 9 1 Objektorientierte Programmierung Objektorientierte Programmierung oder OOP ist die be vorzugte Methodik wenn es um die Entwicklung komplexer Windows Applikationen geht Obwohl Object Pascal objekt orientierte Programmierung bestens unterst tzt ist es nicht eine rein objektorientierte sondern ein hybride Sprache in der sich auch in der konventionellen prozeduralen Art ent wickeln l sst Die drei Grundprinzipien der objektorientierten Program mierung sind 1 Kapselung 2 Vererbung 3 Polymorphie Diese drei Grundprinzipien lassen sich allerdings nur erkl ren wenn man einige weitere Elemente und Charakteri stiken der OOP einf hrt genauere Begriffsdefinitionen fin den Sie im n chsten Unterkapitel Objekte Die zentralen Elemente bei der OOP sind Objekte Kapselung Objekte sind eine Erweiterung der Records denn sie kapseln nicht nur verschiedene Daten in Objektfel dern sondern auch die Routinen zu
8. ZeilenNrClick und f gen Sie vor begin folgenden zwei Va riablendeklaration ein var carAnzZeilen cardinal carPosSpace cardinal In den Then Teil der If Anweisung btnZeilenNr caption Zei f gen Sie eine For Schleife ein um die Zeilennummer vorne an jede Zeile zu hangen for carAnzZeilen 0 to memEditor Lines Count 1 do begin memEditor Lines carAnzZeilen inttostr carAnzZeilen 1 memEditor Lines carAnzZeilen end Die einzelnen Zeilen einer Memo Komponente sind Strings auf die man mit memEditor Lines carAnzZeilen ein zeln zugreifen kann Die Anzahl Zeilen kann man mit der Methode Count herausfinden Die erste Zeile hat den Index 0 deshalb l uft die For Schlefe von 0 bis DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Ablaufsteuerung akWNDM 110 Lines Count 1 Damit die Zeilennummer in den String eingef gt werden kann muss man sie zuerst mit der Funkti on inttostr in den kompatiblen String Typ umwandeln Nun werden Sie noch eine zweite For Schleife im Else Teil einf gen um die Zeilennummern wieder zu l schen Dazu ben tigen Sie Pos und Copy zwei Funktionen speziell f r die Manipulation von Strings Pos gibt Ihnen die Position eines Teilstrings in einem String und Copy liefert einen Teil string einer bestimmten L nge aus einem String Mit diesen zwei Funktionen schneiden Sie den vorderen Teil der Zeile inklusive Leerschlag ab Die genaue Syntax der zwei Funkti
9. call by value Formale Werteparame ter bestehen aus einem Bezeichner gefolgt vom Typ a ber ohne vorangehendes var Werteparameter lassen sich innerhalb der Routine ndern ohne dass der Wert des aktuellen Parameters ausserhalb der Routine tangiert wird 2 Konstante Parameter Formale konstante Parameter bestehen aus dem reservierten Wort const gefolgt vom Bezeichner und vom Typ Konstante Parameter sind im Gegensatz zu Werteparametern auch innerhalb der Rou tine konstant erlauben also keine Zuweisungen Verwen den Sie konstante Parameter anstelle von Werteparame tern wenn Sie verhindern m chten dass ein formaler Pa rameter w hrend der Ausf hrung einer Routine seinen Wert ndert Intern werden konstante Parameter wie Va riablenparameter per Referenz bergeben Dies spart bei grossen Variablen Speicherplatz 3 Variablenparameter call by reference Ein Variablen parameter bergibt eine Variable per Referenz an die Prozedur oder Funktion Das bedeutet dass die Adresse des Parameters bergeben wird und so der Wert des Pa rameters verwendet und ver ndert werden kann F r Va riablenparameter wird in der formalen Parameterliste das reservierte Wort var vor Bezeichner und Typ gesetzt Va riablenparameter verwendet man f r alle Daten die eine Prozedur ver ndert an den aufrufenden Code zur cklie fern soll Funktionen k nnen mit Variablenparametern weitere Daten ausser dem Funktionswert zur ckliefern 4 Nicht ty
10. die Unit mit der Uses Anweisung umfasst Das bedeutet dass mit jeder zus tzlichen Unit der G ltigkeitsbereich zu nimmt uses SysUtils WinTypes WinProcs Messages Classes Graphics Controls Forms Dialogs StdCtrls 12 2 5 Sichtbarkeit von Klassen Wenn ein Bezeichner in einer Klassentyp Deklaration ver einbart wird erstreckt sich der G ltigkeitsbereich vom Ort der Deklaration bis zum Ende der Klassentyp Definition so wie ber alle Nachkommen des Klassentyps und die Bl cke s mtlicher Methodendeklarationen des Klassentyps DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programmstruktur 171 Die Sichtbarkeit eines Bezeichners In Klassen lassen sich Eigenschaften Felder und Methoden deklarieren wird durch das Sichtbarkeitsattribut des Komponentenab schnitts bestimmt in dem der Bezeichner deklariert ist Es gibt vier Sichtbarkeitsattribute private protected puplic und published Die Schutzebenen private und public sind allerdings nicht so strikt wie man zuerst vermuten k nnte Sie gelten nur f r den Zugriff aus einer anderen Unit Modul heraus Werden verwandte Klassentypen in der selben Unit unter gebracht so k nnen die Klassentypen gegenseitig auf ihre privaten Komponenten zugreifen als w ren sie in C als friend deklariert Private Die Sichtbarkeit eines Komponentenbezeichners der in ei nem private Abschnitt deklariert wird ist auf den Modul beschr nkt der die Klassentypdek
11. die in dem Block enthalten sind in wel chem der Bezeichner deklariert wird DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Ablaufsteuerung 104 Globale Bezeichner werden im Interface Abschnitt der Unit deklariert und sind f r alle Routinen und Deklarationen in nerhalb dieser Unit sichtbar Beachten Sie beim Entwurf der Programmstruktur die drei G ltigkeitsbereichsregeln e Jeder Bezeichner hat nur in dem Block eine Bedeutung in dem er deklariert wird Innerhalb des Blocks erstreckt sich der G ltigkeitsbereich vom Ort der Deklaration bis zum Ende des Blocks wobei untergeordnete Bl cke ein geschlossen sind e Wenn ein Bezeichner aus einem usseren Block inner halb eines Blocks neu definiert wird erh lt die innerste die am tiefsten geschachtelte Definition von der Stelle der Deklaration bis zum Ende des Blocks Vorrang e Wenn eine Prozedur sich selbst aufruft Rekursion zeigt eine Referenz einer globalen Variablen immer auf die In stanz dieser Variable im zuletzt erfolgten Prozeduraufruf 7 2 Die If Anweisung Bedingte Anweisungen geben Ihnen die M glichkeit zu kontrollieren ob bestimmte Ausdr cke ausgewertet werden sollen oder nicht If Anweisungen verwenden Sie wenn es nur zwei M glichkeiten gibt Case Anweisungen dagegen wenn es mehr als zwei M glichkeiten gibt Eine If Anweisung besteht aus dem reservierten Wort if einer Bedingung Typ boolean einer mit then eingeleiteten Anweisung und
12. dient allerdings nicht nur als Dateiname sondern auch als Name der Unit im Delphi Code Deshalb unterliegt dieser Name den Object Pascal Konventionen f r Bezeichner siehe Abschnitt 2 3 2 und darf im Gegensatz zu den langen Dateinamen keine Leerschl ge und Sonderzeichen enthalten Weil diese Eingabe gleichzeitig auch beim Objektinspektor im Tabulator des Registers ihrer Unit erscheint sollten Sie sie kurz halten damit Sie auch bei Projekten mit mehreren Units noch den berblick behalten DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Installation und Handhabung 33 Gew hnen Sie sich auch an f r jedes Projekt einen neuen Ord ner anzulegen Ausserdem ist es sicherer die eigenen Dateien von den Programmen zu trennen was Windows und andere Mi crosoft Programme nun im Gegensatz zu Delphi unterst tzen und automatisch vorschlagen Suchen Sie mit Hilfe des Listenfeldes den Ordner Eigene Dateien oder einen anderen Ordner mit Benutzerdateien Erstellen Sie darin mit Hilfe des Schaltfeldes einen neuen Ordner Delphi und in diesem wiederum einen Ordner Prog1 Leider haben Sie damit noch nicht alles gespeichert Ein Projekt gliedert sich n mlich in eine Projektdatei und meh rere Units Wir gehen im Unterkapitel Die Dateien eines Projekts noch genauer darauf ein Wenn Sie die Entwick lungsumgebung verlassen werden Sie automatisch gefragt ob Sie die Projektdatei speichern m chten Sicherer ist es aber dies s
13. dure 1 The immediate ancestor of a class as seen in its dec laration Example In type B class A class A is the parent of class B 2 Parent property the component that provides the con text within which a component is displayed A variable that contains the address of a specific memory location The keyword indicating the beginning of a class declara tion A subprogram that can be called from various parts of a larger program Unlike a function a procedure returns no value DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Glossar program project property protected public published qualified identifier qualifier record type recursion routine scope set statement static 184 An executable file Less formally a program and all the files it needs to run Often used synonymously with application The complete catalogue of files and resources used in building an application or DLL More specifically the main source code file of the programming effort which lists the units that the application or DLL depends on A feature that provides controlled access to methods or fields of an object A published property may also be stored to a file Used in class type definitions to make features visible only to the defining class and its descendants Used in class type definitions to make features visible to clients of that class Used to make features in class type defi
14. mit F1 die Online Hilfe an zuschauen bevor Sie eine unbekannte Komponente ver wenden Sie erhalten dann jeweils einen Uberblick ber Ei genschaften Methoden und Ereignisse sowie eine Anleitung Tasks wie Sie die Komponente praktisch verwenden 4 4 1 Die Komponenten des Registers Standard Die Komponenten im Register STANDARD der Komponenten palette stellen Ihren Delphi Anwendungen die Standard steuerelemente der Windows Oberfl che zur Verf gung Standard joeni Wings Data Access Data Controls Win 3 1 Dialogs System 4 Abb 16 Das Register STANDARD Men leiste und ihre zugeh rigen Dropdown Men s f r ein Formular Popup Men verf gbar f r Formulare und Steuerelemente wenn die Anwender innen die Komponente mit der rechten Maustaste anklicken Text der sich nicht ausw hlen oder ndern l sst z B ein Titel Editierfeld in dem der die Benutzer in eine einzelne Text zeile eingeben oder ndern kann Editierfeld in dem sich mehrere Textzeilen eingeben oder ndern lassen Aktionsschalter den die Benutzer innen bet tigen um be stimmte Aktionen auszul sen Markierungsfeld mit dem eine Option selektiert oder die Markierung aufgehoben werden kann um die Selektion der Option r ckg ngig zu machen Checkboxen verwendet man wenn mehrere Optionen die sich gegenseitig nicht ausschliessen in einer Gruppe zusammengefasst werden sollen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL
15. onen finden Sie in der Hilfe Geben Sie diese zweite For Anweisung im Else Teil ein for carAnzZeilen 0 to memEditor Lines Count 1 do begin carPosSpace pos memEditor Lines carAnzZeilen memecditor Lines carAnzZeilen copy memEditor Lines carAnzZeilen carPosSpace 1 Length memEditor Lines carAnzZeilen carPosSpace end Kompilieren und testen Sie das Programm 7 4 2 Die While Schleife Wie Sie bereits erfahren haben steht bei der While Schlei fe die Bedingung am Anfang Wenn sie bereits das erste Mal nicht erfullt ist wird diese Schleife gar nie durchlaufen Sonst durchlauft das Programm die Schleife so lange bis die Bedingung erf llt ist Die allgemeine Syntax sieht so aus While Bedingung true do einfache_oder_zusammengesetzte_Anweisung Ein konkretes Beispiel k nnte so aussehen carZahl 2 While carZahl lt 256 do begin carZahl carzZahl carZahl lblwhile caption inttostr carZahl end 7 4 3 Die Repeat Schleife Eine Repeat Schleife wird solange durchlaufen bis die Ab bruchbedingung am Ende erf llt ist mindestens aber ein Mal Die allgemeine Syntax ist ziemlich einfach DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Ablaufsteuerung akWNM 111 Repeat Anweisungl Anweisung2 AnweisungN until Bedingung true Beachten Sie dass es hier im Unterschied zu For und While Schleifen nicht notwendig ist mehrere Anweisungen in der Schleife mi
16. string TStringList var I Integer SearchRec TSearchRec begin Result TStringList Create try I FindFirst Path 0 SearchRec while I 0 do begin Result Add SearchRec Name DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Exception Handling und RTTI 166 FindNext SearchRec end except Result Free raise end end 1 11 5 3 bung Im folgenden Beispiel wird die Exception praktisch an den Benutzer weitergegeben Erzeugen Sie eine eigene Excepti on z B EDateiFehler und erweitern dann die Open Prozedur im Editorbeispiel mit diesem Schutzblock begin try memEditor Lines LoadfromFile btnZeilenNr Visible true except on EFileNotFound do begin MessageDlg dlgOpenText FileName l sst sich nicht ffnen mtInformation mbOK 0 end raise EDateiFehler Create Hier spielen wir Dateifehler end end end DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programmstruktur 167 12 Programmstruktur Auch im Softwareengineering stellt man sich die Frage nach der Lebensdauer einer sterblichen Variablen sprich ihrer G ltigkeit e Sie machen Bekanntschaft mit skalierbaren Programm Strukturen e Sie erfahren die Sichtbarkeiten von Units Module und Klassen und e werden in der Lebenserwartung von statischen dynami schen und offenen Strukturen geschult denn Program mieren geht ber Studiere
17. ver schaffen Eigenschaften mehr Kontrolle ber den Zugriff auf Attribute Hinter Eigenschaften stehen ein privates Objektfeld in dem der Attributwert gespeichert wird und zwei spezielle Zu griffsmethoden mit denen lesender oder schreibenderweise auf das private Objektfeld zugegriffen werden kann In die sen Methoden k nnen auch weitere Seiteneffekte im plementiert sein Eine Zuweisung an eine Eigenschaft l st somit einen impliziten Aufruf der f r das Schreiben zu st ndigen Methode aus 9 2 5 Komponenten und OOP Sie kennen diese OOP Elemente von den bungen her be reits alle Die Komponenten in Delphi sind Objekttypen Wenn Sie ein Formular erzeugen dann generieren Sie eine Instanz eines Objekts das von der Klasse TForm abstammt DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Klassen und Instanzen 128 Dank den Methoden die das Formular von seinem Vorfahr erbt k nnen Sie es anzeigen in der Gr sse ver ndern oder schliessen ohne eine einzige Zeile Programmcode zu schreiben Die Komponenten mit denen Sie das Formular erweitern sind Objektfelder Die Ereignisbehandlungsroutinen die Sie bis jetzt geschrieben haben sind Methoden die zum Objekt typ Ihres Formulars oder Ihrer Komponente geh ren Wenn Sie w hrend der Entwicklung Formulare und andere Komponenten gestalten indem Sie im Register PROPERTIES des Objektinspektors neue Werte eintragen dann ndern Sie ver ffentlichte Eigenschaften ihr
18. zeichner und Parameterliste aufgenommen Die Implemen tierung der Methode erfolgt im Implementationsteil der Unit DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Klassen und Instanzen oOOSNSOOIP OD 129 Die letzte Zutat einer Klassendeklaration sind die Standard anweisungen private protected public und published welche die Deklaration in vier Teile aufspalten Die Elemente die in diesen vier Teilen aufgef hrt sind zeichnen sich durch unterschiedliche Sichtbarkeit aus Die Sichtbarkeit entscheidet dar ber ob man auf diese Elemen te von einer anderen Unit von jeder beliebigen Klasse oder nur von einem Nachkommen aus zugreifen kann Kapitel 11 wird sich diesem Thema noch ausf hrlich widmen Das folgende Codebeispiel zeigt die etwas gek rzte Klas sendeklaration f r TButton in der Professional und der Client Server Ausgabe von Delphi 2 0 ist der Quellcode f r die VCL dabei type TButton class TButtonControl private FDefault Boolean FCancel Boolean FActive Boolean FReserved Byte FModalResult TModalResult procedure SetDefault Value Boolean protected procedure CreateParams var Params TCreateParams override procedure CreateWnd override procedure SetButtonStyle ADefault Boolean virtual public constructor Create AOwner TComponent override procedure Click override published property Cancel Boolean read FCancel write FCancel default False pr
19. 0 bis 255 liegen Mit den Operatoren und lassen sich Vereinigungs Differenz und Teilmengen zweier Mengen bilden Ausser dem gibt es auch Operatoren um festzustellen ob eine Menge identisch mit oder eine Teilmenge von einer anderen Menge ist Im folgenden Codebeispiel sehen Sie wie man Mengenty pen deklariert und verwendet type TLetterSet set of A z var setLetterl setLetter2 TLetterSet setLetter3 set of A z begin setLetterl a c setLetter2 d e DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen o00O0OSODOUOIP OD t 94 setLetter2 setLetter2 c Differenzmenge setLetter3 setLetterl setLetter2 Der von Borland missbilligte Gebrauch typisierten Konstan ten als Variablen ist auch f r Mengen usserst praktisch denn wie man im folgenden Beispiel sieht erlaubt dies Mengen aus nicht zusammenh ngenden Teilbereichen ordi naler Typen zu bilden const Bezeichnerzeichen set of 0 z OH eo InG A Te ZN Va ee aay L Ar begin if chrZeichen in Bezeichnerzeichen then begin Um ein Element rasch einer Menge anzuf gen oder es dar aus zu entfernen stehen die Prozeduren Include und Exclude zur Verf gung 6 3 4 Recordtypen Ein Recordtyp ist eine Anordnung von Feldern die ver schiedene Typen haben k nnen Der Feldname und der Feldtyp m s
20. 1 2 10 Highlights von Delphi 2 e 32 Bit Native Code Compiler dadurch z T deutlich schnellere und kleinere Programme e hochoptimierender Codegenerator wie er auch in der kommenden Version von Borland C enthalten ist e kompiliert Programme f r Windows 95 und Windows NT e Volle Unterst tzung des Windows 95 User interface e Erstellung von OBJ Files e neue VCL Komponenten f r Win95 Controls e Unterst tzung von OLE Controls OCX sowie OLE Auto mation e Unterst tzung der erweiterten Features von Windows 95 inkl Multi Threading e Schnelle 32 Bit Borland Database Engine und SQL Links e berarbeitete und verbesserte Dokumentation DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Einleitung 1 3 Voraussetzungen Eine produktive Kursteilnanme kann nur gew hrleistet wer den wenn Sie einerseits mit der Bedienung von Windows als Anwender in vertraut sind und andererseits auch Grund kenntnisse in der Programmierung haben Zwar werden alle Grundkonzepte der Sprache Object Pascal beispielsweise Schleifen noch einmal eingef hrt aber in relativ raschem Tempo Mit Hilfe der nachfolgenden Fragen k nnen Sie deshalb Ihre Vorkenntnisse wiederholen Der Kursleitung hilft dieser Ein leitungstest St rken und Schw chen der Teilnehmer innen abzusch tzen um besser auf die Bed rfnisse jedes einzel nen eingehen zu k nnen F r eine fruchtbare Kursteilnahme ist es nicht notwendig dass Sie alle Fragen beantworten k nnen
21. 104 Scope 171 Selektor 108 Sender 60 138 shortint 85 Sichtbarkeit 132 172 Sichtbarkeitsattribut 175 smallint 85 DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Index Spates Binden 128 Speicheradresse 77 Speicherplatz 77 static 177 Statische Methoden 128 String Typen 83 88 strukturierte Anweisungen 103 strukturierte Typen 92 Strukturierte Typen 83 Subroutine 114 Symbolleiste 24 Systemsteuerung 26 Tabelle virtueller Methoden 128 Teilbereichstypen 86 Terminator Nullzeichen 92 Titelleiste 26 Tokens 73 Typ 76 82 Typinformation zur Laufzeit 166 176 Typisierte Konstanten 79 176 un r 107 unare Operatoren 73 Unit 33 35 45 Unit Kopf 47 Unit Objekt Code 36 uses 174 Validierung 144 189 Variable 76 Variablenparameter 116 Variablenreferenz 168 Varianttypen 83 Vererbung 128 virtual method table 128 Virtuelle Methode 128 VMT 128 Vorfahr 58 139 Wert 76 Werteparameter 116 While Schleife 111 WideChar 101 Windows API 149 Windows Explorer 20 Windows Hilfedateien 36 word 85 WordBool 86 Zeiger dereferenzieren 98 Zeiger referenzieren 98 Zeigertyp 83 98 Zirkulare Unit Referenzen 49 Zusammengesetzte Anweisungen 103 Zuweisung 78 Zuweisungskompatibilit t 79 94 100 Zuweisungsoperator 78
22. 1996 10 46 j 3 5 Diskette amp _isdel Anwendung 07 09 1995 19 22 y Magiclogic C _setup dll Programmbibliothek 26 09 1995 00 33 BA Div2 ger F _setup lib LIB Datei 10 02 1936 18 51 oe a Dataz Z Datei 11 02 1996 15 50 Deutsche Version no Install Textdatei 09 02 1996 21 24 nform ie i Delphi 20 SF Install RL Anwendung 08 01 1996 07 53 Konfigurationseinstell 18 12 1995 12 52 supress INS Datei 11 02 1996 15 52 Sae PKG Datei 11 02 1996 15 50 Runimage i Uni Anwendung 09 01 1996 10 38 emsteuerung nstalus Englische Version Delphi 2 0 Installierte Version Delphi 2 0 D 1 Objektfe markiert 46 5 KB Abb 1 Inhalt der deutschen CD ROM Delphi 2 0 Developer Als erstes zeigt Ihnen das Installationsprogramm die Datei install txt an die wichtige Informationen zur Unterst tzung Ihrer Installation enth lt Dann erstellt es die notwendigen Verzeichnisse und kopiert die Dateien von der Installations CD oder den Installationsdisketten auf die Festplatte Am Ende der Installation wird die Datei readme txt angezeigt und auf Ihrer Festplatte gespeichert Unter anderem finden Sie dort Hinweise welche Dienstleistungen des Kunden dienstes Sie bei Problemen beanspruchen k nnen und wel che weitere Dokumente in der installierten Version zur Ver f gung stehen 2 1 3 Die Entwicklungsumgebung laden Sie k nnen Delphi ber den Explorer beziehungsweise unter NT ber den Dateimanager starten indem Sie
23. 4 lt 3 2 Geben Sie f r die folgenden Operatoren an ob sie unar oder bin r sind not mod div 3 Finden Sie den Fehler im folgenden Programmcode 1 cons3t 2 strblabla string blabla 3 var 4 intHoehe integer 4 Richtig oder falsch a Wenn Sie versuchen eine Variable im rechten Teil ei ner Zuweisung zu verwenden bevor Sie sie mit einem Wert initialisiert haben dann bricht die Compilierung mit einer Fehlermeldung ab b Technisch ist eine Variable eine Speicheradresse de ren Inhalt sich zur Laufzeit ndern kann c Der Wert einer typisierten Konstante kann sich zur Laufzeit nicht ndern d const AnzSekunden 24 60 60 ist eine g ltige Konstantendeklaration DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen 81 6 Typen Typen sind Kategorisierungen von Daten Variablen werden danach eingeteilt ob sie Zahlen Textteile oder andere Arten von Daten speichern Diese Kategorisierung bestimmt so wohl wie die Werte von Variablen gespeichert werden als auch welche Operationen mit ihnen durchgef hrt werden k nnen Pascal ist eine streng typisierte Programmiersprache Dies hat den Vorteil dass der Compiler viele m gliche Fehler be reits als Syntaxfehler abf ngt so dass sie nicht erst zur Laufzeit auftreten Dieses Kapitel f hrt Typen als eines der grundlegenden Konzepte von Pascal und von vielen anderen Programmier sprachen ein Sie lernen e welche Arten von
24. Bedeutung von Zeigervariablen ist in Object Pascal durch die implizite Referenzierung zwar etwas zur ckge gangen aber bei nullterminierten Strings dynamischen Speicherbl cken ebenso beim Aufbau von dynamischen Da tenstrukturen wie Listen B umen und Graphen sind Zeiger nach wie vor der Eintritt zum effizienten K nigreich des Entwicklers Ansonsten spezialisiert man sich in Delphi auf den GUI Bau Multimedia oder Datenbankanwendungen Kleiner Umgang mit Zeigern siehe auch Kapitel 6 4 var ptr string referenzieren begin New ptr allozieren ptr 1001 Nacht dereferenzieren canvas TextOut 5 5 ptr Dispose ptr end Eine Referenz auf die dynamische Variable auf die eine Zeigervariable zeigt wird mit Hilfe des Zeigersymbols hin ter der Zeigervariablen ausgedr ckt Dynamische Variablen und ihre Zeigerwerte werden mit den Prozeduren New und GetMem erzeugt Der Operator Ad resse von und die Funktion Ptr erzeugen Zeigerwerte die man ebenso als Zeiger auf dynamische Variablen behandelt zZ IL zeigt auf keine Variable sondern nirgendwohin undefi niert Philosophisch betrachtet ist nirgendwo auch irgend wo 12 4 Offene Parameter Offene Parameter erm glichen die bergabe von Strings und Arrays variabler Gr sse an die gleiche Prozedur oder Funktion 12 4 1 Offene String Parameter Mit string deklarierte Parameter sind standardm ssig of fene String Parameter OpenS
25. Bei dieser bung ging es nur darum gewisse Fertigkeiten im Umgang mit Komponenten zu ben Sie werden sich deshalb in der Zen Tugend des Gleichmuts ben und Ihr Projekt mit FILE CLOSE ALL SAVE CHANGES No ins Nir wana schicken statt es mit YES zu speichern Sie wissen ja Der Weg ist das Ziel DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Visuelle Programmierung 57 4 2 5 Owner und Parent Bei der Gruppierung von Komponenten st sst man auf das Thema welche Beziehungen zwischen verschiedenen Kom ponenten bestehen Es gibt zwei wichtige Kategorien von Beziehungen e Eignerschaft owner Wenn eine Komponente eine ande re besitzt so wird der Speicher dieser Komponente frei gegeben sobald der Speicher der besitzenden Kompo nente freigegeben wird Ein Formular besitzt alle Kompo nenten die sich auf diesem befinden Das Formular wie derum geh rt der Anwendung Das bedeutet dass alle Komponenten des Formulars zerst rt werden wenn ein Formular zerst rt wird Wenn schliesslich der Speicher der Anwendung selbst freigegeben wird so wird auch der Speicher des Formulars und all seiner Komponenten freigegeben e ber und Unterordnung parent und child Die berge ordnete Komponente stellt grafisch eine Fl che zur Ver f gung innerhalb deren eine andere Komponente darge stellt wird Eine untergeordnete Komponente kann nicht ausserhalb der R nder der bergeordneten Komponente dargestellt werden
26. Delphi 2 0 hat Borland f r Strings ein eigenes Format verwendet bei dem Strings eine fixe maximale L nge hatten und die effektive L nge am Anfang des Strings gespeichert war Obwohl es in Turbo Pascal und Delphi 1 0 eingebaute Funktionen zur Umwandlung von Pascal und nullter minierten Strings gab war der Umgang mit diesen zwei Ar ten von Strings doch eher m hsam und fehleranf llig Mit der Einf hrung des generischen Typs string in Delphi 2 0 hat sich dies massiv vereinfacht denn lange Strings werden wie nullterminierte Strings automatisch durch 0 be DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen 91 endet Wegen der automatischen Begrenzung durch das Nullzeichen enth lt jeder lange String einen nullterminierten und es ist somit m glich direkt eine Typumwandlung eines langen Strings in einen PChar Wert vorzunehmen Die Syn tax einer solchen Umwandlung lautet PChar S wobei S ein langer String ist Eine PChar Typumwandlung gibt einen Zeiger auf das erste Zeichen der langen String Variablen zur ck und garantiert die R ckgabe eines Zeigers auf einen durch Null beendeten String 6 3 Strukturierte Typen Ein strukturierter Typ enth lt mehr als einen Wert Die E lemente von strukturierten Typen lassen sich einzeln oder in ihrer Gesamtheit manipulieren Sie k nnen selber wieder strukturierte Typen sein Es gibt keine Beschr nkung hin sichtlich der Anzahl solcher geschachtelter Strukturen 6 3 1 Benut
27. Dieser Parameter informiert dar ber welche Komponente das Ereignis empfangen und deshalb die Ereignisbehandlungsroutine aufgerufen hat DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Klassen und Instanzen AUN 135 In Zeile 4 bis 7 deklarieren Sie vier lokale Variablen Im An weisungsteil holen Sie in Zeile 9 erst einmal den Suchtext von der Komponenten dlgSuchen Mit der Funktion Pos versuchen Sie in Zeile 13 den gesuchten String im Text der Memokomponente zu lokalisieren Falls dies gelingt carPosition gt 0 dann holen Sie das Hauptformular in den Vordergrund aktivieren die Memokomponente und markieren in Zeile 17 und 18 den gefundenen Text Andern falls gibt die Methode in Zeile 20 bis 22 eine Mitteilung aus dass der Suchtext nicht gefunden werden konnte 9 5 Die Klasse TApplication Mit Ihrem neu erworbenen Wissen ber Klassen und Metho den k nnen Sie sich jetzt die Anweisungen in der Projektda tei z B jene des Editorprojekts noch einmal ansehen Sie erinnern sich Diese Datei enthielt ausser Deklarationen nur die folgenden drei Anweisungen Application Initialize Application CreateForm TfrmEditor frmEditor Application Run Jedes Delphi Programm benutzt automatisch eine Kompo nente TApplication die Ihr Programm einkapselt Delphi deklariert eine Variable Application vom Typ TAppli cation die eine Instanz Ihres Programms ist Die Methode Initialize ist das erste was
28. Es handelt sich um die folgenden f nf Elemente e Symbolleiste oder in Englisch speedbar e Komponentenpalette bzw component palette Objektinspektor oder object inspector Formular bzw form Quelltexteditor oder code editor 7494 4 4 Wer von Visual Basic umsteigt wird Teile der IDE wiederer kennen und sich in Delphi leicht zurechtfinden Doch auch wer mit visueller Programmierung nicht vertraut ist wird sich an diese grundlegenden Werkzeuge rasch gew hnen Zu den beim Start angezeigten Elementen kommen f nf wei tere die man bei Bedarf ber das Men oder im Fall des Men Designers ber die Komponentenpalette holen kann n mlich ce Projektverwaltung project manager DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Installation und Handhabung 25 ce Men Designer ge Integrierter Debugger ge Objekt Browser und gt Bildeditor Projektverwaltung und Debugger werden Sie wie die sicht baren Elemente bald benutzen Den Men Designer lernen Sie in einer Ubung in der zweiten H lfte des Kurses kennen In den Bildeditor und den Objekt Browser f hrt Sie dagegen dieser Kurs nicht ein Mit der Online Hilfe und etwas Experi mentierfreude k nnen Sie diese Instrumente selbst erpro ben 2 2 1 Wichtige Einstellungen der IDE Bevor Sie damit beginnen kleine Beispielprogramme zu er stellen ist es unbedingt erforderlich folgende Einstellung der Entwicklungsumgebung vorzunehmen W hlen Si
29. Formu lare Formulare sind spezielle Fenster die andere visuelle und nichtvisuelle Elemente enthalten k nnen Wie jedes Windows Fenster enthalten Formulare mindestens verstell bare R nder und eine Titelleiste mit Systemmen und Schaltfl chen um das Formular zu minimieren zu vergr s sern oder zu schliessen Wenn Sie ein Projekt beginnen dann stellt Delphi Ihnen ein neues leeres Formular zur Verf gung Sie f gen zu diesem Formular Komponenten hinzu welche Interaktionen mit den sp teren Benutzerinnen und Benutzern erm glichen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Visuelle Programmierung 52 Die visuelle Programmierung ist eine Antwort auf den Wech sel von linear ablaufenden zu ereignisgesteuerten Appli kationen Auf der Entwicklungsebene entspricht dem der Ubergang von der prozeduralen zur ereignisorientierten Pro grammierung Die folgende Tabelle listet einige der wichtigsten Unter schiede auf Prozedurale Programmie Ereignisgesteuerte Pro rung grammierung Ablauf linear ereignisgesteuert Ablauf bestimmt durch Programm Benutzer in Benutzerschnittstelle textbasiert grafikbasiert Kontrolle Environment Entwickler in Windows 4 2 Formulardesign In diesem Abschnitt lernen Sie ein paar Tips und Tricks ken nen wie Sie die Gestaltung eines Formulars mit Hilfe von Komponenten rationalisieren k nnen Ausgiebigere Informa tionen finden Sie wie immer im Register INHALT der Online Hil
30. K nstanten und Variablen u 22er ee anerkennen 72 51 Daten undiRodtinensisse reisen ee enge 72 5 2 Grundelemente von Object Pascal 24444400snnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 73 DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Inhalt 4 5 2 1 7 OO IS ne ee tt Ban ee A A Ey En ee li 73 5 22 Operatorem ressassarsireianeinereeaiaraiseeieeee 73 5 23 AUSAr CKB mmr E 74 5 3 Konstante cavemen eE eee ee ae ee Aa ee 74 5 31 BegritfsdefiMtio Mie aa hie ae th ale at ee a EEA aia 74 5 3 2 Konstanlendeklarations ass hl oi Ss et 74 SR VAN dBlEhes ne tote tate en eat in ee an Ur et ce ee eet lea 76 54 1 Begriffsdefinition arte 2422er 76 5 4 2 Varlablendeklarallonz2 aaa a 77 5 4 3 Variablenzuweisungen 2224444400nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 78 5 5 Typisierte K onstanlense ea arena 79 56 Rekapit latoN ache eg beeen area 81 BB IK ADITEIIGS Tu MCN PRPC dee ee ae 81 BTYDEN E EEE A A 83 6 1 Definition und Klassifikation von Typen 244444s0snnnnnnnnnnnnnnnnnnnnnnnnnnennnnnnnnnn 83 6 2 Einfache und Sin TYPeNE ee eduraccus ate 85 6 2 1 Integer Typen Eesti lee el eee ave 85 6 2 2 Bopldsche y ET ser 86 6 23 Der char Pr a eee 87 6 2 4 Aufz hlungs und Teilbereichstypen uusu44444442444HBHnnnnnnnnnnnnnnnnnn 87 BZ DACA De 1 EEE RESTE ERSTER TESTERTESTERTESTESTES TESTER ESTER 88 6 2 6 SUING A ype essen 89 6 2 7 Pascal Strings Und n llterminie
31. Programm erstellen das Ihnen die Position der Maus an zeigt wenn Sie ber das Formular fahren In Delphi errei chen Sie dies indem Sie nur eine einzige Zeile Code schrei ben 1 ffnen Sie ein neues Projekt mit einem leeren Formular falls Sie nicht mehr wissen wie dies geht hilft Seite 54 weiter 2 Plazieren Sie eine Label Komponente die fast so breit ist wie das Formular am oberen Rand Nennen Sie sie b Mauspo sition 3 ndern Sie die Schriftgr sse dieser Komponente auf 14 4 W hlen Sie im Objektselektor das Formular Formi aus und ndern Sie dessen Namen in frmMauslauf 5 Wechseln Sie ins Register EVENTS und suchen Sie das Ereig nis ONMOUSEMOVE Doppelklicken Sie ins Feld daneben 6 Geben Sie im Quelltexteditor an der Position des Cursors fol genden Code ein b MausPosition caption Position InttoStr X InttoStr Y 7 Testen Sie Ihr Programm mit RUN RUN Wenn Sie jetzt mit der Maus Uber das Formular fahren zeigt das Label die entspre chende Mausposition an 8 Speichern Sie das Programm in einem neuen Ordner Prog4_1 indem Sie die Unit uMausPos pas und das Projekt pApp4_1 dpr benennen Wenn Sie jetzt in den oberen Teil der Unit gehen finden Sie dort einger ckt unter Type TfrmMauslauf die Zeile procedure FormMouseMove Sender TObject Shift TShiftState X Y Integer Es handelt sich um die Deklaration der Ereignisbehandlungsroutine mit der das Formular auf das Ere
32. Typen es gibt e welche einfachen und strukturierten Typen in Object Pas cal existieren e wof r man String und Zeigertypen braucht e und was man bei der Kompatibilit t von Datentypen be achten muss 6 1 Definition und Klassifikation von Typen Ein Typ ist eine Beschreibung wie man Daten speichern und wie man auf sie zugreifen sollte Beachten Sie den Un terschied zu Variable der tats chlichen Speicherung von Daten Der Typ legt den Wertebereich der Variablen fest und bestimmt die Operationen die mit ihr ausgef hrt werden k nnen Pascal stellt relativ viele Datentypen zur Verf gung Sie k nnen aus diesen Typen aber auch Ihre eigenen Typen entwickeln Bei den vorgegebenen Typen unterscheidet Ob ject Pascal sechs verschiedenen Arten von Typen e Einfache Typen e String Typen e Strukturierte Typen e Zeigertypen e Prozedurale Typen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen 82 e Varianttypen Die folgende Tabelle gibt einen Uberblick Uber die Katego rien und Typen von Delphi 2 0 Gewisse der aufgezahlten Typen werden Sie nicht behandeln sie sind trotzdem der Vollst ndigkeit halber aufgef hrt Einfache Typen Ordinale Typen integer shortint smallint longint byte cardinal word boolean ByteBool WordBool LongBool Shiai AnsiChar WideChar Aufz hlungstypen Teilbereichstypen Realtypen real single double extended comp currency String Typen string kurze ode
33. Units pas mit u z B uClose pas Ein wichtiges Mittel um Programmcode transparenter zu machen sind Einr ckungen Code der anderem Code un tergeordnet ist z B Anweisungen innerhalb einer Schleife wird um eine Position einger ckt Auch hier existieren ver schiedene Konventionen Anhand der Beispiele und der Er l uterungen im Kapitel ber Bl cke werden Sie das im Skript verwendete System rasch begreifen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Installation und Handhabung 2 Installation und Handhabung Dieses Kapitel macht Sie mit Installation und Handhabung der Delphi Entwicklungsumgebung vertraut Am Ende die ses Kapitels wissen Sie e welche Versionen von Delphi es gibt e wie man Delphi installiert e aus welchen sichtbaren und unsichtbaren Elementen die Delphi Oberfl che besteht e wie man die wichtigsten Elemente der Entwicklungsum gebung handhabt e und welche Dateien zu einem Projekt geh ren Da Learning by Doing am besten im Ged chtnis haften bleibt werden Sie bereits Ihr erstes Windows Programm mit Delphi erstellen 2 1 Installation und Laden der Entwicklungs umgebung 2 1 1 Versionen und Varianten von Delphi Delphi gibt zur Zeit in der Version 1 02 f r die Entwicklung von 16 Bit Programmen Varianten Standard und Client Ser ver und in der Version 2 0 f r die Entwicklung von Program men f r Windows 95 oder NT Die neue 32 Bit Version lie fert Borland in drei verschi
34. Wert 1 Boolesche Typen geh ren somit auch zu den ordinalen Ty pen Meistens werden Boolesche Variablen bei Vergleichen gleich ungleich gr sser kleiner und bei If und Case Anweisungen verwendet Es gibt vier vordefinierte Boolesche Typen Speicher 1 Byte 1 Byte Zwei Bytes ein Word Vier Bytes zwei Words Boolean Ist der bevorzugte Typ und verbraucht am wenigs ten Speicherplatz ByteBool WordBool und LongBool DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen 85 sorgen f r Kompatibilit t mit anderen Sprachen und der Umgebung von Windows Der folgende Code gibt Ihnen ein Beispiel f r Deklaration und Einsatz einer booleschen Variablen var bolBeendet boolean if bolBeendet then close 6 2 3 Der Char Typ Der Wertebereich von Variablen des Typs Char besteht aus Zeichen die nach der Sortierfolge des ANSI Zeichensatzes angeordnet sind Der Funktionsaufruf Ord a gibt bei spielsweise die Ordinalzahl des Buchstabens a zur ck Der Char Typ wird wie Sie im folgenden Beispiel sehen mit dem reservierten Wort char gekennzeichnet var chrDateiattribut char Eine String Konstante der Lange 1 kann auch durch einen konstanten Char Wert dargestellt werden Mit der Standard funktion Chr kann jeder Char Wert erzeugt werden Zum Thema generische und Fundamental Char Typen kom men wir im Unterkapitel 6 5 2 6 2 4 Aufzahlungs und Teilbereichstypen So
35. Windows selbst diese verarbeitet Das folgende Beispiel zeigt die Uhrzeit als serielle Zahl der gerade empfangen Windows Nachricht in der Beschriftung Caption von 1b1lTime an CatchMessage sollte als eine Methode von TFrmEditor deklariert sein Was das Beispiel so interessant macht ist folgendes Wenn Sie sehr schnell ber der Applikation die Maus bewe gen spielen Sie sozusagen Nachrichtenabfangj ger und simulieren so einen Timer der die Uhrzeit st ndig aktuali siert procedure TFrmEditor FormCreate Sender TObject begin Application OnMessage CatchMessage end procedure TFrmEditor CatchMessage var Msg TMsg var Handled Boolean begin 1blTime Caption IntToStr Msg Time end DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Eigenschaften und Windows Botschaften 154 10 4 Rekapitulation 10 4 1 Zusammenfassung Properties sind die augenf lligsten Teile von Komponenten und zugleich diejenigen die Anwendern und Entwicklern die mit den Komponenten arbeiten den gr ssten Nutzen brin gen Die Deklaration eines Property enth lt drei Dinge e Den Namen des Property e Den Typ des Property e Methoden f r das Lesen und oder Schreiben des Proper ty Wertes Die Reaktion auf Windows Botschaften stellt fur einige Komponenten ein wichtiges Verfahren dar mit Windows o der mit anderen Komponenten zu interagieren Delphis Standardkomponenten reagieren bereits auf die g ngigsten Botschaften Ih
36. auch auf jegliche darin gruppierte Komponenten aus DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Visuelle Programmierung 56 Im allgemeinen f gen Sie zun chst die Container Kom ponenten zum Formular hinzu bevor Sie die zu gruppieren den Komponenten hinzuf gen da es am einfachsten ist die zu gruppierenden Komponenten direkt aus der Komponen tenpalette in die Container Komponente einzuf gen Bereits vorhandene Komponenten k nnen Sie mittels Aus schneiden und Einf gen zu einer nachtr glich erstellten Container Komponente hinzuf gen Sie werden dies nun ausprobieren indem Sie Ihr Formular mit einer Symbolleiste und sechs speed buttons in der Art von Abb 15 erweitern Abb 15 Eine eigene Symbolleiste 1 Plazieren Sie die Komponente SPEEDBUTTON aus dem Regis ter ADDITIONAL auf Ihrem Formular 2 Fugen Sie dem Formular die Komponente PANEL aus dem Re gister STANDARD hinzu 3 Selektieren Sie den ausserhalb des PANELS liegenden SPEEDBUTTON und schneiden Sie ihn mit EDIT CUT oder CTRL X aus 4 Selektieren Sie das PANEL und f gen Sie den ausgeschnitten SPEEDBUTTON mit CTRL V darauf ein Wiederholen Sie CTRL V f nf Mal um f nf weitere SPEEDBUTTONS einzuf gen 5 Verschieben Sie die sechs SPEEDBUTTONS bis sie einen kom pakten zweireihigen Block bilden 6 Selektieren Sie alle sechs SPEEDBUTTONS gleichzeitig und pla zieren Sie sie mit der Ausrichtungspalette in der Mitte des PA NELS
37. begin Result FColor end Die Methode write Die Methode write eines Property ist immer eine Prozedur die genau einen Parameter annimmt Der Parameter muss vom gleichen Typ sein wie das Property Er l sst sich durch call by value oder ber call by reference bergeben und je den beliebigen Namen haben Gem ss Konvention lautet der Name der Prozedur Set gefolgt vom Namen des Pro perty Die Write Methode f r ein Property mit dem Namen Color w rde also SetColor heissen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Eigenschaften und Windows Botschaften 143 Der im Parameter bergebene Wert wird verwendet um den neuen Wert des Property zu setzen Daher muss die Write Methode f hig sein alle erforderlichen Behandlungen der Werte durchzuf hren um sie in der richtigen Form in das interne Speicherfeld zu schreiben Wird keine Write Methode deklariert gestattet die Eigenschaft nur Lese zugriff blicherweise wird vor dem Setzen des Wertes berpr ft ob sich der neue Wert vom aktuellen unterschei det procedure TMyClass SetColor newColor TColor begin if newColor lt gt FColor then begin FColor newColor Invalidate end end 10 1 3 Standardwerte von Properties Beim Deklarieren eines Properties l sst sich optional ein Standardwert deklarieren Der Standardwert f r die Eigen schaft einer Komponente ist der Wert der f r diese Eigen schaft im Konstruktor der Komponente gesetzt i
38. den Delphi Ordner suchen ffnen und die Exe Datei Delphi32 im Ordner Bin doppelklicken ebenso wie Sie es unter Win dows 3 1 getan h tten DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Installation und Handhabung 22 Wir werden Delphi nicht auf diese umst ndliche Art starten aber den Explorer benutzen um uns einen kurzen Einblick in Ordner und Dateistruktur der Entwicklungsumgebung zu verschaffen Starten Sie den WINDOWS EXPLORER und suchen Sie den Ordner der die Delphi Entwicklungsumgebung enth lt Falls Sie nicht w hrend der Installation ein anderes Verzeichnis eingegeben ha ben ist dies Delphi20 Lokalisieren Sie im Ordner Bin die Anwendung Delphi32 Verschaffen Sie sich anschliessend einen kurzen berblick ber die anderen zur Entwicklungsumgebung geh rigen Ordner z B RptSmith oder Database Desktop und versuchen Sie an hand der Ordner und Dateinamen herauszufinden welche Zu s tze und Werkzeuge darin enthalten sein k nnten Die normale Art unter Windows 95 ein Programm zu ffnen be dient sich aber der Schaltfl che START die unten links mit der Task Leiste eingeblendet wird sobald Sie mit der Maus an den unteren Bildschirmrand fahren Klicken Sie mit der Maus auf START und fahren Sie auf dem erscheinenden Klappmen auf PROGRAMME Falls die Installation erfolgreich verlaufen ist befin det sich nun unter den angezeigten Ordnern Delphi 2 0 Bevor Sie das Progr
39. deren Verarbeitung in einer Einheit Methoden Die Prozeduren und Funktionen die in Objekten gekapselt sind nennt man Methoden DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Klassen und Instanzen 125 Klassen und Instanzen Bei Objekten unterscheidet man zwischen ihrem Objekttyp den man Klasse nennt und ei nem konkreten Exemplar dieser Klasse das man Instanz nennt Jede Instanz eines Klassentyps besitzt seine eigene Kopie der im Klassentyp deklarierten Felder alle Objekte benutzen jedoch dieselben Methoden gemeinsam Vererbung Objekte sind in eine Vererbungshierarchie ein gebunden Nachfahren bernehmen Daten und Programm code der Vorfahrobjekte k nnen diese aber erweitern oder berschreiben Statische Methoden Statische Methoden arbeiten auf die gleiche Weise wie gew hnliche Prozedur oder Funktions aufrufe Defaultm ssig sind Methoden statisch d h fest mit einem Objekttyp einer bestimmten Hierarchiestufe verbun den Der Objekttyp dessen Methode aufgerufen werden soll kann bereits w hrend der Compilierung ermittelt wer den Polymorphie Beim Prinzip der Polymorphie Vielgestaltig keit erhalten Methoden mit hnlicher Funktionalit t auf ver schiedenen Ebenen der Objekthierarchie den gleichen Na men obwohl sie im Detail verschieden implementiert sind Weil es sich um virtuelle Methoden handelt wird erst beim Methodenaufruf zur Laufzeit der Objekttyp der bergebenen Instanz und die zugeh ri
40. die CTRL Taste gedr ckt halten und mit den Cursorpfeilen die Richtung angeben 4 Im Objektinspektor links klicken Sie auf Name und ber schreiben Button mit btnbitClose 5 Anschliessend suchen Sie im PROPERTY Register die Eigen schaft KIND und holen aus der Liste bkClose Damit haben Sie einen vordefinierten Bitmap Button geholt der dazu dient ein Formular zu schliessen 6 Unter Caption ersetzen Sie amp Close mit amp Ende Das Zei chen amp definiert ein Tastenk rzel so dass der Editor sich sp ter auch mit ALT E schliessen l sst 7 Nun ist es Zeit das Projekt mit FILE SAVE ALL zu speichern Erstellen Sie im Verzeichnis mit den Beispielprogrammen ei nen neuen Ordner Editor und nennen Sie die Unit uMainEdi pas und das Projekt pEditor dpr gt 8 F gen Sie als n chstes die Komponente MEMO aus der Palette STANDARD hinzu 9 ndern Sie die Eigenschaft ALIGN auf a Top und vergr ssern Sie das Memofeld nach unten bis zum Button Andern Sie die Eigenschaft SCROLLBARS auf ssVertical 10 Klicken Sie auf die Eigenschaft LINES und danach auf den klei nen punktierten Knopf auf derselben Zeile Im Property Editor der sich darauf ffnet l schen Sie den Text memEditor und schliessen dann mit OK ab 11 F gen Sie aus dem Register STANDARD zwei Buttons in den unteren Teil des Formulars ein benennen Sie sie mit btnOpen und btnSave und beschriften Sie die Schaltfl chen mit amp Laden und amp Speichern
41. ein mit dem eine Komponente im Programm iden tifiziert wird Bezeichner unterliegen den folgenden verbindli chen Object Pascal Regeln e Bezeichner k nnen eine beliebige Lange haben signifi kant sind aber nur die ersten 63 Zeichen e Das erste Zeichen eines Bezeichners muss ein Buchsta be oder der Unterstrich _ sein DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Installation und Handhabung 28 e Die brigen Zeichen m ssen Buchstaben Zahlen oder Unterstriche sein e Leerzeichen und Sonderzeichen sind innerhalb von Be zeichnern nicht zugelassen e Gross und Kleinschreibung spielt keine Rolle CAPTION ist dagegen die Beschriftung einer Komponente z B einer Taste oder eines Formulars und kann ein beliebi ger String sein Alle visuellen und nichtvisuellen Komponen ten weisen einen Namen auf ein CAPTION haben dagegen nur gewisse visuelle Komponenten Im Skript und insbeson dere in den bungen bezieht sich die Aufforderung eine Komponente zu benennen auf die Eigenschaft NAME w h rend beschriften im Zusammenhang mit der Eigenschaft CAPTION verwendet wird Defaultm ssig entspricht CAPTION dem NAME und macht dessen Anderungen mit solange Sie Caption nicht ndern Genau dies werden wir jetzt tun Geben Sie unter CAPTION einen beliebigen Titel z B Mein erstes Delphi Programm ein und ndern Sie dann Name in frmprog Mit der ersten Anderung wechselt die Beschriftung im Titelbalken Von der zw
42. erweitern Das Ziel ist es eine Mel dung anzuzeigen welche die L nge und den ersten Buch staben des Willkommenstextes anzeigt Aus Gr nden die erst sp ter erkl rt werden erscheint diese Meldung bevor das Formular selbst erscheint Wechseln Sie in das Editor Projekt Suchen Sie im Quelltexteditor die bereits bearbeitete Prozedur TfrmEditor FormCreate Erg nzen Sie die Prozedur nach der letzten Anweisungszeile memEditor Lines Add strWillkommen mit folgen dem Code MessageDlg Strwillkommen enth lt InttoStr Length strWillkommen Zeichen chr 13 strwillkommen 0 enth lt t inttostr ord strWillkommen 0 t chr 13 Erster Buchstabe strwillkommen 1 mtInformation mbOk 0 Wenn Sie das Programm nun mit F9 starten sollten Sie fol gende Anzeige erhalten Information x Ci Strwillkommen enth lt 35 Zeichen strwillkommen 0 enth lt 35 Erster Buchstabe W Abb 25 Eine bung mit Strings MessageDlg ist eine Delphi Funktion mit vier Parametern zur Anzeige von Meldungen In Zeile 2 bis 8 bergeben Sie DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen 90 den anzuzeigenden String Mit dem Parameter mtInfor mation in Zeile 9 w hlen Sie den Typ des Meldungsfens ters mbOk gibt an dass ein OK Button angezeigt werden soll Der dritte Parameter legt fest welcher Hilfebildschirm f r das Meldungsfenster zur Verf gung steht
43. es uEins plementation en d DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Visuelle Programmierung Ge 51 4 Visuelle Programmierung In Kapitel 2 haben Sie bereits die wichtigsten Elemente der Entwicklungsumgebung kennengelernt Nun werden Sie Ihre Erfahrung im Umgang damit weiter schulen e Sie rufen sich die Philosophie von Windows Applikationen in Erinnerung e Sie lernen einige Tricks wie man mit Formularen und an deren Komponenten f r eine Applikation rasch eine an sprechende Benutzeroberfl che zusammensetzt e Sie gewinnen einen berblick ber die wichtigsten Re gister und Komponenten der Komponentenpalette e Sie erfahren den Unterschied zwischen modalen und nichtmodalen Fenstern e Und schliesslich starten Sie mit einem Projekt dass Sie auch in den weiteren Lektionen als Ubungsbeispiel be gleiten wird In diesem Projekt entwickeln Sie einen rudi ment ren Editor 4 1 Die Philosophie von Windows Applikationen Die Windows Umgebung benutzt Fenster als grundlegende Bausteine der Benutzerschnittstelle Eigentlich sind alle vi suellen Elemente beispielsweise auch Schaltfl chen in Windows Fenster Bei der visuellen Programmierung wird der Applikationsent wicklung ein neuer Schritt vorangestellt Bevor man n mlich mit der eigentlichen Kodierung beginnt wird im Drag und Drop Verfahren eine visuelle Benutzerschnittstelle gestaltet Die Grundbausteine von Delphi Applikationen sind
44. gewissen Einschrankungen Beachten Sie dass Konstantendeklarationen im Gegensatz zu Variablen zuweisungen das Gleichzeichen verwenden Ausserdem k nnen Sie Konstanten nicht nur direkt einen Wert zu weisen sondern auch das Resultat aus Standard operationen mit bereits definierten Konstanten Eine konkre te Konstantendeklaration k nnte so aussehen const Pi 3 1415926536 MaxBreite 640 MaxHoehe 480 Vorname Silvia Nachname Rothen GanzerName Vorname Nachname Die zweite und dritte Konstante werden Sie jetzt benutzen um die maximale Gr sse des Editors aus dem vorangehen den Kapitel auf das VGA Format von 640 Pixeln Breite und 480 Pixeln H he zu beschr nken Da diese Werte nur in der Unit uMainEdi g ltig sein sollen f gen wir den Deklarati onsteil unterhalb von implementation ein Erg nzen Sie die Unit uMainEdi nach den Zeilen implementationund R DFM mit folgendem Code const MaxBreite 640 MaxHoehe 480 Wahlen Sie anschliessend im Objektselektor das Formular frmEditor aus Wechseln Sie ins Register EVENTS und doppel klicken Sie neben ONRESIZE F gen Sie nun im Quelltexteditor zwischen begin und end die folgenden zwei Anweisungen ein if frmEditor Height gt MaxHoehe then frmEditor Height MaxHoehe if frmEditor Width gt MaxBreite then frmEditor Width MaxBreite DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Konstanten und Variablen 75
45. indirekt auch von C abh ngig Ganze Kaskaden von indirekten Unit Referenzen sind m glich Um ein Modul zu kompilieren muss der Compiler in der Lage sein alle Units aufzufinden von denen ein Modul direkt oder indirekt abh ngt Wenn Sie am Interface Teil einer Unit Ver nderungen vor nehmen dann m ssen Sie alle Units rekompilieren die die se ge nderte Unit verwenden Wenn Sie PROJECT BUILD ALL verwenden so bernimmt der Compiler das f r Sie Wenn Ver nderungen nur am Implementations oder Initiali sierungsteil vorgenommen werden so reicht es aus die ver nderte Unit erneut zu kompilieren Delphi erkennt dass sich ein Interface Teil einer Unit ver ndert hat da w hrend des Kompilierens eine Versions nummer der Unit berechnet wird 3 4 2 Zirkul re Unit Referenzen Zirkul re Unit Referenzen treten auf wenn Sie wech selseitig abh ngige Units haben d h wenn eine Unit A in ihrer Uses Klausel Unit B auff hrt und wenn die Uses Klausel von Unit B ihrerseits Unit A referenziert Solche zir kul ren Referenzen sind dann zugelassen wenn h chstens eine der zwei Referenzen im Interface Teil erscheint Wenn die Unit A in der Uses Klausel des Interface Teils der Unit B erscheint und die Uses Klausel im Interface Teil der Unit B die Unit A auff hrt dann erzeugt Delphi eine Fehler meldung wegen zirkul rer Unit Referenzen Wechselseitig abh ngige Units k nnen in speziellen Situa tionen n tzlich sein aber
46. ngig Dennoch bezieht fast jede Prozedur oder Funktion gewisse Werte von aussen und ndert Variab len des restlichen Programms Die Prinzipien der modularen Programmierung verlangen dass alle diese externen Werte und Variablen als Parameter einer Schnittstelle in die Rou tine bergeben werden so dass die Parameterliste im Rou tinenkopf einen vollst ndigen berblick ber den Austausch von Daten zwischen Programm und Routine liefert Ein sol ches Vorgehen ist eine wichtige Vorbedingung daf r dass mehrere Personen speditiv am gleichen Projekt arbeiten k nnen und es erh ht die Wartbarkeit von Programmen Parameter bergeben Daten das heisst Werte Konstanten und Variablen an Prozeduren oder Funktionen und liefern ver nderte Variablenwerte aus den Routinen zur ck an den aufrufenden Code DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Prozeduren und Funktionen 114 ce Die Implementierung einer Prozedur oder Funktion legt die Liste der formalen Parameter fest Der Prozedur oder Funktionsaufruf beinhaltet dann die Liste der aktuellen Pa rameter die in Zahl und Typ den formalen Parametern ent sprechen m ssen Jeder Parameter der in einer Liste der formalen Parameter deklariert ist ist lokal zu der Prozedur oder Funktion in der er deklariert wird Auf die Parameter kann innerhalb des zu der Prozedur oder Funktion geh renden Blocks zugegriffen werden Es gibt f nf Arten von Parametern 1 Werteparameter
47. und kann sich auch in zuk nftigen Versionen von Delphi ndern Am besten ist es SIZE OF Integer zu benutzen um die aktuelle Gr sse des Daten typs zu ermitteln Wenn Sie planen beide Plattformen Win 16 Bit und Win 32 Bit parallel zu unterst tzen sollten Sie Ihre Anwendung zu erst unter Delphi 16 Bit Version entwickeln und dann gege DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Einleitung 14 benenfalls um neue 32 Bit Features erweitern oder einfach nur mit Delphi 2 neu kompilieren Aber Achtung Sie k nnen Delphi 1 x Anwendungen zwar in Delphi 2 laden und bear beiten umgekehrt kann es jedoch zu Ressourcenkonflikten zwischen beiden Versionen kommen 1 2 9 Delphi 2 mit Object Inspector Editor und einem Datenbank Form Delphi 2 preisgekr nt durch die Zeitschrift BYTE als Best Technology of Comdex ist meiner Meinung nach das ein zige Entwicklungstool f r Windows das die hohe Leistungs f higkeit eines optimierenden Native Code Compilers und integrierten Client Server Tools in sich vereint Das objekt orientierte komponentenbasierende Design von Delphi bie tet unbegrenzte Erweiterungsm glichkeiten und erlaubt es selbstentwickelte Komponenten ebenso wiederzuverwenden wie Komponenten der Visual Component Library externe DLLs und bald OBX Controls Mit Delphi stellen Entwickler in Rekordzeit lizenzfreie Windows Anwendungen fertig die erheblich schneller und stabiler als interpretierter Code sind
48. zu vererben und diese durch zus tzliche zu erg nzen Diese objektorientierten Fea tures machen Delphi 2 zu einem sehr offenen und flexiblen System 1 2 5 Projektverwaltung Auch die Art der Projektverwaltung wie auch die visuelle Programmierung ist bei Delphi sehr durchdacht Zu jedem Projekt geh rt wie blich eine Projektdatei Es k nnen eine oder mehrere Units wie auch Formen eingebunden werden Die Units beinhalten brigens wie bisher die klassische Drei teilung in Interface Implementation und Initialisierung Auf Wunsch kann auch mit MDI Fenstern oder auch ganz ohne Formulare gearbeitet werden Einer meiner Tests bestand darin so viele MDI wie m glich zu generieren um zugleich den lokalen Heap zu beobachten Die resultierende Kom paktheit des Speicherlayouts war beeindruckend Die Ein stellungen der Optionen f r die Projekte ist in Delphi sehr detailliert Wie in Borland Pascal lassen sich zahlreiche Op tionen ein und ausschalten unter anderem solche Compiler schalter wie wort bzw byteweise Ausrichtung der Daten Pr fung von Laufzeitfehlern und Verwendung von Callback Funktionen Zu den Linker Optionen geh ren in erster Linie die Einstellung der Heap und Stackgr sse welche die dy namische Speicherverwaltung einer EXE Datei erst erm gli chen 1 2 6 Delphi 2 in drei Versionen Delphi 2 ist wie gesagt in drei Versionen erh ltlich n mlich Standard ca 299 Upgrade Developer ca 399 Up grade und die Cli
49. zuerst aus gef hrt werden Diese Rangfolge finden Sie im Index der Online Hilfe unter dem Stichwort precedence of operators In Object Pascal sind die meisten Operatoren bin r sie ver kn pfen zwei Operanden Die restlichen Operatoren arbei ten mit nur einem Operanden und werden daher als un r bezeichnet Bin re Operatoren werden mit der normalen al gebraischen Schreibweise z B A B benutzt Ein un rer Operator steht immer unmittelbar vor seinem Operanden wie z B bei B 5 2 3 Ausdr cke Ausdr cke englisch expressions sind eine Kombination von Operatoren und Operanden die zu einem einzigen Wert f hren Diese Operanden k nnen Konstanten Funktions DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Konstanten und Variablen 73 aufrufe Prozedur Anweisungen Mengen Konstruktoren o der Variablen sein 5 3 Konstanten 5 3 1 Begriffsdefinition Eine Konstante verwenden Sie wenn Sie in Ihrem Pro gramm immer wieder auf Strings Zahlen oder andere Werte zugreifen wollen die sich nicht ndern Statt diese Werte jedes Mal im Code neu einzugeben deklarieren Sie eine Konstante d h einen Bezeichner der den Wert repr sentiert Konstanten zeichnen sich wie der Name es schon sagt da durch aus dass sie w hrend der Ausf hrung eines Pro gramms konstant bleiben Es gibt vor allem zwei Gr nde Konstanten zu verwenden 1 Der Programmcode wird verst ndlicher wenn man statt nackten Zahlen spr
50. 5 Metaklassen 168 Methode 48 60 127 129 Microsoft Hilfe Compiler 36 modales Dialogfenster 69 Modul 45 Nachkomme 58 139 Name 27 Namenskonventionen 16 nicht typisierte Parameter 117 nichtmodales Dialogfenster 70 nil 99 nullterminierter String 91 Objekt 127 129 130 Objekt Browser 25 Objektinspektor 24 26 objektorientierte Programmierung 130 Objektorientierte Programmierung 127 Objektreferenz 167 Objektselektor 27 Objekttyp 129 offene Array Parameter 117 Offene Parameter 178 offener Array Parameter 178 Online Hilfe 20 23 27 31 61 OOP 127 130 OOP Paradigma 144 Operatoren 73 Ordinale Typen 84 owner 58 Parameter 60 115 Parameterliste 115 parent 58 Polymorphie 128 140 PostMessage 155 precedence of operators 73 188 private 175 Projekt 33 Projektdatei 33 35 42 Projektoptionendatei 35 Projektverwaltung 25 33 properties 130 Properties 27 144 protected 175 Prozedurale Typen 83 Prozedurdeklaration 122 public 176 public 47 published 176 Qualifizierer 60 qualifizierter Bezeichner 134 qualifizierter Methodenaufruf 135 Quelltexteditor 24 30 Realtyp 87 Recordtyp 95 Referenz 177 Repeat Schleife 112 Reservierte W rter 43 Ressource 161 Routine 31 72 114 Routinenaufruf 114 Routinendeklaration 115 RTL 115 Run Time Library 115 Schalter 29 Schaltfeld 29 Schaltfl che 29 Schleifen 109 Schnittstelle 115 scope
51. 86 92 Bezeichner 27 32 76 171 186 Bilddateien 36 Bildeditor 25 36 bin r 107 bin re Operatoren 73 Bitmap Schalter 40 Block 104 173 boolean 86 boolesche Logik 107 boolescher Typ 85 Botschaftsbehandlungsmethoden 152 Botschaftsindex 155 Botschaftszuteilungssystem 153 Broadcast Messages 155 byte 85 ByteBool 86 call by reference 116 call by value 116 Caption 27 cardinal 85 Case Anweisung 108 Char 86 child 58 chr 13 91 Compiler Befehl 43 Compiler Ressourcen Datei 35 Container Komponente 56 Daten 72 Debugging 37 default 147 Default Handler 152 Deklaration einer Methode 134 Deklarationsteil 44 74 Deklarationsteil eines Blocks 104 descendant 58 Desktop Einstellungen 35 Destruktor 133 135 Dialogfenster Alignment 55 DLL 150 Dynamische Methode 128 DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Index dynamische Typ berpr fungen 166 Eigenschaften 130 einfache Anweisungen 103 Einfache Typen 83 84 Endlosschleife 109 Entwicklerschnittstelle 175 Ereignis 31 135 Ereignisbehandlungsroutine 31 59 Ereignisbehandlungsroutinen 135 Event Handler 152 Event Loop 152 Events 27 31 Exception Hierarchie 166 Exceptions 160 External Deklaration 126 Extrahieren von Botschaften 154 Fehlerbehandlung 160 Feld 129 Fenster 52 Finalization Teil 47 Formular 24 52 For Schleife 109 Forward Deklaration 125 friend 175 fund
52. Applikations entwicklung mit Delphi Kursunterlagen Kursunterlagenversion 1 1 Softwareversion 2 0 E Autoren Dr Silvia Rothen Max Kleiner by softwareschule ch DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Inhalt 2 MEIGS a et A ale ee a tee Cte et Be ee ee 8 1 1 KUrsziel rue E T 8 1 2 Strategiseher Hinlergrund sera ua 8 1 2 1 Neues aus Borlandeiersinn teen ehren 8 1 2 2 OLE jetzt noch flexibler 222444440000444Hnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 9 1 2 3 Client Server inside 2 ee aan euere 9 1 2 4 Kompaktere neue Umgebung uss444444224444nn0nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 10 1 2 5 Projektverwaltung sea en ee 11 1 2 6 Delphi 2 in drei Versionen 22 444000unn44nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 11 1 2 7 Unterschied zwischen Delphi und Delphi Client Server 12 1 2 8 Portierung von bestehenden Anwendungen cceeeeeeeeeeeeeeeteeeeeeeees 13 1 2 9 Delphi 2 mit Object Inspector Editor und einem Datenbank Form 14 1 2 10 Highlights von Delphi 2 re ea a De 14 1 3 Voraussezungen ai a E E EE E EA AEE 15 1 4 EiNiuhtungeltagen z42 2222 22 Ree engere let 15 1 5 Konventionen im Skript 2 een een 16 1 5 1 Formatierungskonventionen z u HsssrrkHink irre 16 1 5 2 PIKIOOraIM MG eer tae a ee a 16 1 5 3 Delphi NamenskonventiOnen cccccceecccceeeeeeeeeeeeeeaeeeeeeeeeeeeeesensnaeeeee
53. DEL Prozeduren und Funktionen 113 chen m chte in der die Routine steht dann muss der Routi nenkopf ausserdem als Routinendeklaration im Interface Teil der Unit eingef gt werden Routinen erm glichen eine Programmierpraxis die man information hiding nennt Mehrere Anweisungen die eine gemeinsame h ufig wiederkehrende Aufgabe erf llen wer den in einer Routine zusammengeschlossen Um diese An weisungen zu durchlaufen gen gt fortan ein Routinenaufruf Die Details wie die Routine diese Aufgabe erf llt werden vor der aufrufenden Anweisung verborgen Delphi stellt in der Run Time Library RTL eine ganze Reihe vordefinierter Prozeduren und Funktionen zur Verf gung Die RTL ist ein gutes Beispiel f r information hiding denn Sie k nnen mit diesen Routinen problemlos arbeiten ohne deren innere Struktur zu kennen Daneben k nnen Sie Ihre eigenen Routinen entwickeln Eine bestimmte Aufgabe eig net sich dann daf r in eine Routine ausgelagert zu werden wenn sie h ufig wiederkehrt und wenn sie mit dem restli chen Code nur ber wenige Daten verbunden ist Prozeduren und Funktionen haben zwar etwas an Bedeu tung verloren seit es objektorientierte Programmierung und Methoden gibt aber das meiste was Sie in diesem Kapitel lernen l sst sich wie Sie im n chsten Kapitel sehen wer den direkt auf Methoden von Objekten anwenden 8 2 Parameter Gute Prozeduren und Funktionen sind vom brigen Code m glichst unabh
54. DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programmstruktur 177 amp Delphi Help Datei Bearbeiten Lesezeichen Optionen Dati Beabeten Lesezeichen Optonen 2 Hemer Zick oneen lt gt Example The following example modifies a copy of the parameter procedure ValueEx X Integer var ptr integer begin ptr 0X writelniPtr Per 15 end var Fred integer begin Fred 10 ValueEx Fred Writeln Fred 10 end Abb 31 Auszug Originalhilfe Delphi 2 12 5 3 bung 1 Erweitern Sie das Summe 0 100 Beispiel indem Sie mit einem neuen Arraytyp TAnotherArray array 0 200 of integer wieder eine Summe bilden 12 6 Schlussprojekt Bei unserem Beispiel Editor fehlt noch als kleine Kr nung eine Info Box eigenes Formular welche aus dem Haupt formular aufgerufen wird ffnen Sie Ihren Beispiel Editor und machen Sie Bekanntschaft mit den vorfabrizierten Tem plates welche Sie unter FILE NEw im Register FORMS vor finden Wahlen Sie die AboutBox und staunen ob der holden Dinge die da geschehen Gestalten Sie diese Programm Visitenkarte nach Belieben Speichern Sie nun die neu er zeugte Unit unter dem Namen uAbout pas Jetzt geht s ans Eingemachte DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programmstruktur 178 Das Ziel besteht nun darin die AboutBox aus einem Men eintrag im Hauptformular zu starten Erg nzen Sie die Men Ereigni
55. Dies gilt allerdings nur f r die Fenster des Editor Programms in ein Fenster einer anderen ge ffneten Anwendung k nnen Sie jederzeit wechseln DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Visuelle Programmierung 69 qe Ein nichtmodales Dialogfenster oder Formular kann dage gen auf dem Bildschirm bleiben w hrend die Benut zer innen in einem anderen Formular arbeiten Nichtmodale Formulare ruft man mit der Methode Show auf modale Fenster dagegen mit ShowModal 4 7 Rekapitulation 4 7 1 Kapiteltest 1 Ist die folgende Aussage richtig oder falsch Mehrere markierte Komponenten lassen sich gemeinsam bewegen l schen oder in ihrer Gr sse ver ndern 2 In Abb 24 sehen Sie ein Formular A mit einem Panel B zwei speed buttons C und D sowie einem Button E Abb 24 Owner und parents Suchen Sie aus den folgenden Aussagen alle richtigen her aus a Das Panel B ist owner und parent der speed buttons C und D b Das Formular A ist owner von B C D und E und parent von B und E c Der Button E ist ein child von A d Das Panel B ist parent von C und D 3 Welches Register in der Komponentenpalette enthalt die Komponente TABBEDNOTEBOOK 4 7 2 Ubung bung 4 2 Erstellen Sie auf einem neuen Formular vier gleich grosse Buttons Benutzen Sie die Ausrichtungspalette oder das Dia DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Visuelle Programmierung 70 logfenster ALIGNMENT um die vier Bu
56. EEREN EEO EREEREER 159 10 2 2Rapleles ana Asay Al ay Ag ae Ae a Ace ad ae Ae ae A oes 159 1043 BUNG Br tee ee abi AAA AAAA 159 11 Exception Handling und Pal Teer ernennen 161 11 1 Was sind Ausnahmebehandlungen ccceeccceeeeeeeeeeeeeeneeeeeeeeeeeeeeeeenneeeeeeeees 161 11212 1dry NnalyEohsirler Zac ae Gee ee ou eater 162 Tele ty except COMNSINUIC Ts cca esos cit ersehen 163 11 1 3 Nochmaliges Ausl sen einer Exception uussnnnssnennnnnnnnnnnnnnnnn nn 164 11 1 4 Verschachtelte Exceptions OD EAA A ILERNE 165 11 1 5 Die vier Ausnahmezust nde im berblick 22444444444nnnnn nenn 165 11 2 DE ExCeplich Klasse e urn ste teen ne tenent 167 11 3 Run Time Type Information nn aenyadegetsnnehenge 167 11 321 Der Operator iS araa a e a a e a A en 167 113 2 Der Oprator asus 168 11 4 Klassenrelerenzen a Zar sn IE nella 169 11 4 1 KlassenreferenZtypen 2424444444440nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 169 11 5 PU ANNU Neat sten ee a a ee a a GAs ls lids te eats dat tas he a 170 11 5 1 Zusammenfassung eee 170 113 2 Kapllollest seen 170 UR Pee 3 oH ge er SSR 171 12 Programms UKU ee ate ees tee ee 172 DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Inhalt 7 12 1 Entwurf der Struktur 2 02 0 ccc cccceccccccecceeccecceceeeececcueeeecceeeaeeceecuecaeecueeeeceeeeeeaeeseeeaes 172 12 2 G ltigkeitsbereich von Bezeichnenn cccceeeeeeeeeeeeeeeeee
57. F r Gruppierungen von Komponenten bedeutet dies dass das Formular weiterhin der Besitzer aller Komponenten bleibt und zwar unabh ngig davon ob diese innerhalb einer anderen gruppiert und damit jener Komponente unter geordnet sind F r alle Komponenten die nicht innerhalb einer anderen Komponente gruppiert sind ist das Formular sowohl owner wie parent Eine weitere Art von Beziehung zwischen Komponenten werden Sie im Kapitel ber objektorientierte Programmie rung kennenlernen n mlich jene zwischen Vorfahr oder englisch ancestor und Nachkomme oder descendant Die se Begriffe beziehen sich auf die Vererbung zwischen Klas sen ihre Einf hrung erfolgt sp ter und sie werden hier nur der Vollst ndigkeit halber erw hnt 4 3 Ereignisbehandlungsroutinen Jede Komponente hat eine Reihe vorgegebener Ereignisse auf die sie reagieren kann Die Betonung liegt auf kann denn eine Komponente reagiert nur auf Ereignisse f r wel che Sie die entsprechenden Ereignisbehandlungsroutinen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Visuelle Programmierung 58 geschrieben haben Wie Sie bereits wissen schreiben Sie eine Ereignisbehandlungsroutine indem Sie die Komponen te selektieren und im Objektinspektor das Feld neben dem gew nschten EVENT doppelklicken Zwischen begin und end der automatisch erstellten Rumpfprozedur tippen Sie ihre eigenen Programmzeilen Auch dies probieren Sie wieder selbst aus Sie werden ein
58. Hier sind die Formulare und Units verzeichnet und hier ist der Initialisierungscode enthalten Das ist allerdings auch schon alles denn alles andere wird in Units ausgelagert Projektdateien sind deshalb immer sehr kurz DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programme und Units 43 d In Delphi sehen Sie selbstverst ndlich keine Zeilennume rierung Im Skript wurde sie bei l ngeren Codebeispielen beigef gt damit Erkl rungen direkt auf einzelne Zeilen Be zug nehmen k nnen gt Zeile 1 enth lt das reservierte Wort program Reservierte W rter haben innerhalb der Programmiersprache Object Pascal eine feste Bedeutung Sie k nnen nicht umdefiniert werden In der Online Hilfe finden Sie unter dem Stichwort Reserved Words eine Liste aller reservierten W rter Program teilt dem Compiler mit dass hier das Hauptpro gramm beginnt Hinter program folgt der Name den Sie der Applikation gegeben haben Auf Zeile 3 finden Sie uses ein weiteres reserviertes Wort Damit weiss der Compiler dass eine Liste von Units folgt die ins Hauptprogramm ein gebunden werden In Zeile 4 folgt dann Forms eine von Delphi zur Verf gung gestellte Unit Zeile 5 enth lt Ihre ei gene Unit uClose und gibt an dass sie in der Datei uClose pas gespeichert ist Der Text in den geschweiften Klammern wird vom Compi ler ignoriert Mit diesen Klammern oder auch mit und kennzeichnet man einen Kommentar Delphi g
59. In unserem Fall ist dies keiner deshalb steht am Ende der Zeile 9 der Wert 0 Der String in Zeile 2 bis 8 setzt sich aus diversen Teilstrings zusammen die mit dem Pluszeichen verbunden werden In Zeile 3 bestimmen Sie die Lange des Strings st rWillkom men und wandeln den erhaltenen Integer in einen String um damit Sie ihn einbinden k nnen chr 13 in Zeile 4 steht f r einen Zeilenumbruch Die Funktion ord strWillkommen 0 in Zeile 6 liefert den gleichen Wert wie Length da die aktuelle L nge eines kurzen Pascal Strings nicht aber eines langen Strings in dieser Position gespeichert ist Zeile 8 illustriert schliesslich noch wie man auf einzelne Zei chen des Strings zugreift Wenn Sie dieser Aufruf von MessageD1g bei zuk nftigen Erwei terungen st rt dann setzen Sie die gesamte Anweisung inklusive abschliessendes Strichpunkt in geschweifte Klammern wie einen Kommentar Diese Methode k nnen Sie immer anwenden wenn Sie Code behalten aber zeitweilig ausser Kraft setzen m chten 6 2 7 Pascal Strings und nullterminierte Strings Falls Sie C programmiert haben kennen Sie nullterminierte Strings Ein nullterminierter String besteht aus einer Folge von Zeichen nicht Null gefolgt vom Terminator Nullzeichen NULL 0 H ufig wird statt des nullterminier ten Strings auch ein Zeiger auf den String vom Typ PChar verwendet Viele API Funktionen von Windows ben tigen beim Aufruf nullterminierte Strings als Parameter Vor
60. Konstruktor die neu eingef hrten Felder der Klasse Destruktoren Destruktoren werden verwendet um Objekte aus dem Spei cher zu entfernen Wenn ein Destruktor aufgerufen wird so werden die benutzerdefinierten Aktionen ausgef hrt dann wird der dem Objekt zugewiesene Speicherbereich freige geben Die benutzerdefinierten Aktionen eines Destruktors sind normalerweise die L schung von eingebetteten Objek ten und das Freigeben von Ressourcen die von dem Objekt belegt wurden Die letzte Aktion eines Konstruktors ist typischerweise der Aufruf des ererbten Destruktors um alle ererbten Objekt felder zu l schen 9 4 3 Eine eigene Suchmethode erstellen Um die Theorie etwas aufzulockern werden Sie nun eine etwas l ngere Ereignisbehandlungsroutine schreiben Wechseln Sie in Ihr Editor Projekt F gen Sie in das Formular eine Komponente FINDDIALOG aus dem Register DIALOGS ein und nennen Sie diese Komponente d igSuchen Offnen Sie mit einem Klick auf das Pluszeichen die Eigenschaft OPTIONS und setzen Sie FRHIDEMATCHCASE FRHIDEWHOLEWORD und FRHIDEUPDOWN auf true Damit erhalten Sie einen Suchdialog ohne die Optionen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Klassen und Instanzen OONOARWND 134 Gross Kleinschreibung Ganzes Wort und Suche auf w rts abw rts ffnen Sie den Men Editor mit einem Doppelklick auf die Men Komponente F gen Sie in der Kolonne amp Bearbeiten das Men I
61. M rz 96 stellte Borland auch das Kernprodukt ihrer Strategie vor eben die Hochlei stungs Entwicklungsumgebung Delphi 2 Delphi 2 soll Ent wicklern alle Client Server F higkeiten bieten die sie f r die sichere und schnelle Applikationsentwicklung ben tigen Es erlaubt die problemlose Skalierbarkeit von Desktop zu un DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Einleitung ternehmensweit einsetzbaren L sungen eben The Upsi zing Company Nun zu den Features Neben visueller Pro grammierung wurde in Delphi ein neues Klassenmodell in tegriert welches unter dem Namen Object Pascal eine neu strukturierte Version von Pascal darstellt So unterst tzt Delphi 2 das Win95 Interface und das Win95 GUI Die ver besserte 32 Bit Borland Database Engine beschleunigt den Datenbankzugriff Auch eine 32 Bit Version des Local Interbase Server soll demn chst erscheinen 1 2 2 OLE jetzt noch flexibler Der von Microsoft ber die PC Grenzen hinaus propagierte OLE Standard zum Austausch von Daten und Funktionen ber cksichtigt man unter Delphi 2 besonders Die meisten nderungen f hren zu einer noch einfacheren und logische ren Handhabung der OLE Komponente Auch die Funktio nen der zugeh rigen Unit liessen sich berarbeiten und in Methoden von TOleContainer umwandeln Jedoch die Komponentenunterst tzung der VCL ist auf OLE Client An wendungen beschr nkt Der Bau eines OLE Servers ab Delphi 2 m glich ist zu kompl
62. Message gesellt Hier der Unter schied Die Funktion SendMessage wartet bis die Botschaft bearbeitet ist und kehrt erst dann zur ck Im Gegensatz dazu legt PostMessage die Botschaft einfach in die Appli cation Queue und kehrt sofort zur ck d h die Nachricht wird ev sp ter bearbeitet Wenn Sie also darauf bestehen die Nachricht sofort zu bearbeiten brauchen Sie SendMessage wobei dann Behutsamkeit angesagt ist 10 2 6 berschreiben von Botschaften Nat rlich ist es auch m glich Botschaften abzufangen und entsprechend eigene Methode zu definieren Zum Uber schreiben einer Botschaftsbehandlungsroutine deklarieren Sie eine neue Methode mit dem gleichen Botschaftsindex wie in der Methode die berschrieben wird Sie m ssen den Befehl message und einen passenden Botschaftsindex verwenden d Beachten Sie dass der Name der Methode und der Typ des einzelnen var Parameters nicht zu der berschriebenen Me thode passen m ssen Nur der Botschaftsindex ist aus schlaggebend Es dient jedoch der Klarheit wenn Sie die Konventionen der Namensgebung f r Botschaftsbehand lungsmethoden beachten die sich an den betreffenden Bot schaften orientieren Um beispielsweise die Behandlung der WM_PAINT Botschaft zu berschreiben deklarieren Sie die Methode WM_PAINT neu type TMyComponent class public procedure WMPaint var Message TWMPaint message WM_PAINT end 10 3 Definieren eigener Botschaften Eine Vielzahl v
63. Ort der Deklaration und reicht bis zum Ende des aktuellen Blocks einschliesslich aller darin geschachtelten Bl cke Wenn Sie einen Bezeichner inner halb eines geschachtelten Blocks berschreiben Neudekla ration erstreckt sich der G ltigkeitsbereich des neuen Be zeichners nur ber den geschachtelten Block und nicht aus serhalb Ein Typbezeichner ist nur lokal in dem Block g ltig in dem die Typdeklaration erfolgt Rekursive Deklarationen sind nur bei Zeigertypen m glich sonst darf eine Deklaration keine Teile von sich selber enthalten Es folgt ein Beispiel mit zwei Bl cken und einer Neudeklara tion program Outer Beginn des ausseren G ltigkeitsbereichs type TInt Integer Deklariere I als Ganzzahltyp var Te ELINT Deklariere T Global procedure Inner Beginn innerer G ltigkeitsbereich type TNew TInt Neudeklaration T als Ganzzahltyp lokal var TNew Neudeklaration lokal begin BR ky end Ende des inneren G ltigkeitsbereichs begin Hauptblock T 1 end Ende usserer G ltigkeitsbereich 12 2 3 Sichtbarkeit von Units F r den G ltigkeitsbereich von Bezeichnern Variablen Pro zeduren Funktionen etc die man im interface Abschnitt einer Unit deklariert gelten dieselben Regeln wie f r Bl cke DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programmstruktur 170 Zus tzlich erstreckt sich der G ltigkeitsbere
64. Parameter auch eine String Konstante sein Auf der Basis der folgenden Prozedurdekla ration procedure PrintStr const S array of Char var nteger begin for I 0 to High S do if S I lt gt 0 then Write S I else Break DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programmstruktur 176 end sind z B folgende Prozeduraufrufe zul ssig PrintStr Hello world PrintStr A Leere Strings werden bei bergabe als offenes Zeichen Array in einen String mit einem einzigen Element konvertiert das ein Nullzeichen enth lt Die beiden Anweisungen PrintStr undPrintStr 0 sind daher identisch 12 5 Rekapitulation 12 5 1 Zusammenfassung Der Giltigkeitsbereich eines Bezeichners innerhalb eines Programms einer oder mehrerer Units gibt an ob der Be zeichner von anderen Prozeduren und Funktionen im Pro gramm oder der Unit benutzt werden kann oder nicht Die Sichtbarkeit eines Bezeichners in Klassen In Klassen las sen sich Eigenschaften Felder und Methoden deklarieren wird durch das Sichtbarkeitsattribut bestimmt von denen private protected puplic und published zur Ver f gung stehen Statische und besonders dynamische Variablen sind eine Voraussetzung f r offene und flexible Datenstrukturen wel che mit offenen Parametern keine W nsche offen lassen 12 5 2 Kapiteltest 1 Ermitteln Sie im folgenden Help Beispiel was an der Syn tax falsch ist
65. Plane Car TCar Bicycle TBicycle AvailableDays Integer begin car TCar create plane Tplane create bicycle TBicycle create AvailableDays StrTolInt Edit1l Text case AvailableDays of 1 3 Plane showMove 4 6 Car showMove else Bicycle showMove end end end 9 8 Rekapitulation 9 8 1 Kapiteltest 1 Erlautern Sie Unterschiede und Gemeinsamkeiten von Records und Klassen 2 Richtig oder falsch a Der Aufruf eines Konstruktors initialisiert automatisch alle Elemente einer Instanz b Dynamische Methoden ruft man gleich auf wie virtuelle sie haben aber andere Auswirkungen auf die Perfor mance der Applikation c Jede Instanz einer Klasse besitzt eine eigene Kopie der im Klassentyp deklarierten Felder und Methoden d Eine Nachkommenklasse enth lt alle Felder ihres Vor fahren Sie kann neue hinzuf gen oder geerbte Felder entfernen 3 Gibt es Polymorphie ohne Vererbung DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Eigenschaften und Windows Botschaften 140 10 Eigenschaften und Windows Botschaften Re Nun wenden wir uns der komplexeren Materie sprich der Steuerung im Hintergrund sowohl von Delphi wie auch von Windows zu e Sie lernen mit den automatischen Mechanismen der Ei genschaften umzugehen e Sie verstehen die Technik der Windows Botschaften und e Sie lernen das Definieren von eigenen Botschaften 10 1 Was sind Eigenschaften Pr
66. Ref den Wert nil ist das Ergebnis immer False Der Compiler meldet den Fehler Typen nicht miteinander vereinbar Type mismatch wenn bekannt ist dass die deklarierten Typen von ObjectRef und ClassRef nicht verwandt sind Dies ist der Fall wenn der deklarierte Typ von ObjectRef weder Vorfahr noch Nachkomme ist Der is Operator wird h ufig im Zusammenhang mit einer if Anweisung benutzt um eine berwachte Typumwandlung auszuf hren wie z B if ActiveControl is TEdit then TEdit ActiveControl SelectAll Wenn die is Abfrage den Wert True liefert kann ActiveControl Sicher in die Klasse TEdit umgewandelt werden Wenn man den is Operator mit anderen boolschen Ausdr cken mixt muss man den is Test in Klammern set zen LF Sender is TButton and TButton Sender Tag lt gt 0 then 11 3 2 Der Operator as Der Operator as erm glicht berpr fte Typumwandlun gen Die Syntax des as Operators lautet wie folgt ObjectRef as ClassRef Ergebnis ist eine Referenz auf das Objekt auf das ObjectRef verweist jedoch mit dem Typ auf den ClassRef verweist Zur Laufzeit muss ObjectRef den Wert nil enthalten oder eine Instanz der ber ClassRef angegebenen Klasse oder einer davon abgeleiteten Klasse sein Ist keine dieser Bedingungen erf llt wird eine Excepti on ausgel st Ansonsten hnliches Verhalten wie der is Operator DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Exception Handling und R
67. Sichtbarkeit sp tes Binden Steuerelement String Typ strukturierte Anweisungen strukturierter Typ Symbolleiste Tastenk rzel Teilbereichstyp Token typenumwandelnder Opera tor typisierte Konstante bergeordnetes Element Varianttyp Vererbung ver ffentlicht verschachtelte Eigenschaf ten virtuell Vorfahr Wertespalte Zahl Zeichenketten Zeigertyp Ziehmarke zirkul re Referenz zusammengesetzte Anwei sungen Zuweisungsanweisung Zuweisungsoperator 179 speed button menu menu designer descendant modeless dialog box object browser object files object inspector object designator public polymorphism private project file project options project manager procedural Type qualified method identifier code editor precedence of operators reserved word button radio group box loop Hint visibility late binding control string type structured statements structured Type speed bar keyboard shortcuts subrange type token type casting operator typed constant parent variant type inheritance published nested properties virtual ancestor value column number character strings pointer type sizing handle circular reference compound statements assignment statement assignment operator DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Glossar 14 Glossar 180 Das folgende Glossar ist ein Auszug aus dem Glossar der Online Hilfe von Delphi 2 0 actu
68. TTI 164 Der as Operator wird h ufig im Zusammenhang mit einer with Anweisung benutzt wie z B with Sender as TButton do begin Caption amp 0K OnClick OkClick end ar Wird der as Operator in einer Variablenreferenz benutzt muss die as Typenumwandlung in Klammern eingeschlos sen sein Sender as TButton Caption amp 0Ok 11 4 Klassenreferenzen 11 4 1 Klassenreferenztypen ce Klassenreferenztypen erm glichen die direkte Durchf h rung von Operationen auf Klassen Dies unterscheidet sie von Klassentypen bei denen Operationen auf Instanzen von Klassen durchgef hrt werden Klassenreferenztypen werden manchmal auch als Metaklassen oder Metaklas sentypen bezeichnet class reference typ class object type identifier class of Klassenreferenztypen sind in folgenden Zuisammenh ngen vorteilhaft e zusammen mit einem virtuellen Konstruktor zum Erzeu gen eines Objekts dessen Typ zum Zeitpunkt der Compi lierung noch nicht bekannt ist e zusammen mit einer Klassenmethode zum Durchf hren einer Operation auf einer Klasse dessen Typ zum Zeit punkt der Compilierung noch nicht bekannt ist e als Operand auf der rechten Seite eines is Operators zum Durchf hren einer dynamischen Typ berpr fung ei nes Typs der zum Zeitpunkt der Compilierung noch nicht bekannt ist e als Operand auf der rechten Seite eines as Operators zum Durchf hren einer berpr ften Typumwandlung ei nes Typs der zu
69. USER 0 WM_MYSECONDMSG WM_USER 1 CM_LADEN CM_FIRST 100 CM_SPEICHERN CM_FIRST 101 Solche benutzerdefinierten Botschaften dienten fr her dazu auf die Auswahl eines Men s reagieren zu k nnen Ich kann mich noch erinnern als wir zum ersten Mal den Begriff Mes sage Response Methoden h rten und glaubten in einem Marketingseminar zu stecken Hier noch ein vollst ndiges Beispiel einer benutzerdefinierten Nachricht welche z B f r eine Aktualisierung herhalten k nnte const MY_UPDATE WM_USER 0 type TForml class TForm procedure memEditKeyDown protected procedure MYUpdate var message TMessage message MY_UPDATE end implementation DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Eigenschaften und Windows Botschaften o0O00SODOIP ODPD _ 153 procedure TForml memEditKeyDown begin PostMessage Handle MY_Update 0 0 eigene message auf queue legen end procedure TFrmEditor MYUpdate var message TMessage begin do something end 10 3 2 Generelle Botschaftsbearbeitung Das zentrale Ereignis OnMessage tritt ein wenn Ihre An wendung eine Windows Nachricht empf ngt Durch Erzeu gen einer Ereignisbehandlungsroutine vom Typ OnMessage in Ihrer Anwendung k nnen Sie andere Handler aufrufen die auf die Nachricht reagieren Eine Ereignisbehandlungs routine vom Typ OnMessage l sst Ihre Anwendung die Nachricht abfangen bevor
70. Visuelle Programmierung RADIOBUTTON LISTBOX m os COMBOBOX LE SCROLLBAR E GROUPBOX ee tii RADIOGROUP a PANEL a MASKEDIT 61 Optionsschaltfeld mit dem man eine Reihe sich gegenseitig ausschliessender Optionen im Gruppenfeld TGroupBox darstellen kann Listenfeld mit dessen Hilfe sich ein oder mehrere Listenele mente auswahlen lassen Element das ein Editierfeld mit einer Liste kombiniert An wender innen k nnen entweder Text im Editierfeld einge ben oder einen Eintrag aus der Liste selektieren Windows Bildlaufleiste zum Bl ttern in einem Fenster For mular oder Steuerelement Standard Windows Gruppenfeld mit der verwandte Ele mente z B Markierungsfelder in einem Formular angeord net werden k nnen Gruppenfeld das die Aufgabe Optionsschaltfelder zu grup pieren vereinfacht Bedienfeld auf dem andere Steuerelemente z B speed buttons eingef gt werden k nnen 4 4 2 Die Komponenten des Registers Additional Die Komponenten im Register ADDITIONAL der Komponen tenpalette realisieren eine Reihe spezialisierter Windows Steuerelemente f r Ihre Delphi Anwendungen Standard Additional wings Data Access Data an Win 3 1 Dialogs System _4 Abb 17 Das Register ADDITIONAL Schaltflache die zur Anzeige einer Bitmap dienen kann Schaltflache die als Trager einer Bitmap dienen kann da fur aber keine Beschriftung mit Text bietet Speedbuttons werden als
71. Zu stand des Programms zu untersuchen Indem Sie die Werte von Variablen die Hierarchie der aufgerufenen Funktionen und die Programmausgabe inspizieren k nnen Sie sicher stellen dass der untersuchte Bereich des Programmcodes wie beabsichtigt arbeitet Sie finden diese Instrumente unter den folgenden Men punkten Run App BREAKPOINT oder Mausklick am linken Rand der Zeile im Quelltexteditor gt Zeile wird rot unterlegt VIEW BREAKPOINTS Run ADD WATCH Bezeichner oder CTRL F5 VIEW WATCHES VIEW CALL STACK 2 7 Rekapitulation 2 7 1 Kapiteltest 1 Was heisst IDE 2 Z hlen Sie die zehn verschiedenen Elemente der Ent wicklungsumgebung auf beschreiben Sie ihre Funktion und teilen Sie sie in die zwei Kategorien beim Start sicht bar und beim Start nicht sichtbar ein 3 Welche der folgenden Bezeichner sind g ltig Max Verkaeufe DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Installation und Handhabung 39 Dies_ist_der_laengste_Bezeichner_den_ich_mir in_einem_Delphiprogramm_vorstellen_kann Ein Wort _1994Absatz 1994Absatz Absatz_1994 x 4 Geben Sie f r die folgenden Aussagen an ob sie richtig oder falsch sind a Die Hauptdatei eines Projektes hat die Endung dfm b Der Objektinspektor zeigt alle Eigenschaften einer aus gew hlten Komponente c Ein Projekt hat mindestens so viele Units wie es For mulare hat 2 7 2 bung Generieren Si
72. al parameter ancestor array block Boolean child class compiler directive A variable expression or constant that is substituted for a formal parameter in a procedure or function call An object from which another object is derived An ances tor class can be a parent or a grandparent A group of data elements identical in type that are ar ranged in a single data structure and are randomly ac cessible through an index The associated declaration and statement parts of a pro gram or subprogram Examples In the var block of the routine declare an integer variable Follow the then of your if then statement with a begin to start a block of code that will be executed only if the condition is met A data type that can have a value of either True or False Data size byte 1 A child class is any class that is descended from an other For example in type B class A B is a child of A 2 The child of a window appears inside that window and cannot draw outside of its bounds This is called a child or child window A list of features representing data and associated code assembled into single entity A class includes not only features listed in its definition but also features inherited from ancestors The term class is interchangeable with the term object type An instruction to the compiler that is embedded within the program for example R turns on range checking DELPHI V2 0 Applikationsentwi
73. amentale Char Typen 101 fundamentale Integer Typen 84 Fundamentaltypen 100 Funktionsdeklaration 122 Funktionswert 119 generische Integer Typen 84 100 generische String Typ 101 generische Typen 100 generischer Char Typ 101 global 104 117 Globale Bezeichner 172 Glyph 41 Graphen 177 Graphische Formulardatei 35 G ltigkeitsbereich 104 172 G ltigkeitsbereichsregeln 171 187 Icons 36 IDE 23 If Anweisung 105 Implementationsteil 47 Implementierung der Methode 134 implizite Referenzierung 177 indirekte Unit Referenzen 49 Indizierung 148 information hiding 115 Initialisierungsteil 47 Instanz 128 129 integer 85 Integer 84 Integrated Development Environment 23 Integrierter Debugger 25 interface 174 Interface Teil 47 Kapselung 127 Klassen 128 Klassenreferenz 167 Klassenreferenztypen 168 Klassentypen 118 Kommentar 43 Kompatibilit t der Datentypen 100 kompilierte Datei 36 Komponenten 29 Komponentenpalette 24 29 147 konkatenieren 90 Konstante 74 Konstante Parameter 116 Konstruktor 135 kurzer String Typ 88 langer String Typ 88 late binding 128 140 Laufvariable 109 Laufzeitbibliothek 161 Laufzeitfehler 160 Liste der aktuellen Parameter 116 Liste der formalen Parameter 116 Listen 177 DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Index lokal 80 104 116 117 LongBool 86 longint 85 Mengentyp 94 Men Designer 2
74. amm ffnen klicken Sie auf den Ordner Borland Delphi 2 0 der ungef hr einer Programmgruppe unter Mi Windows 3 1 entspricht Der Inhalt sollte etwa wie in Abb 2 aus sehen Sie finden sicher eine Verkn pfung mit der Entwicklungs Delphi 2 0 umgebung selbst C Delphi20E Delphi 2 0 BIN Borland Delphi 2 0 Datei Bearbeiten Ansicht fe ReportSmith 3 0 ReportSmith Report DataBase Desktop Database Explorer Viewer Image Editor WinSight32 a O Q Database Explorer Local SQL Help Object PascalHelp ReportSmith 3 0 Help Help O Q O Q BDE Configuration Component Writers Delphi 2 0 Help Visual Component Win32 Help H Help Library Help 8 56 KB Abb 2 Inhalt des Ordners Borland Delphi 2 0 Je nach Version und installierten Werkzeugen erscheinen daneben der Report Smith der Image Editor und di verse Datenbanktools Ausserdem sind die verschiedenen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Installation und Handhabung 23 Teile der Online Hilfe aufgelistet Dank ihres systematischen Aufbaus und ihrer Ausf hrlichkeit ist die Online Hilfe ein un entbehrliches Arbeitsinstrument Sie sollten sich deshalb mit ihrer Handhabung so bald wie m glich vertraut machen Nach diesem kurzen berblick von aussen werden wir nun die Entwicklungsumgebung laden um sie von innen kennen zulernen Die Entwicklungsumgebung l sst sich ffnen indem man entwe der das Icon Delphi 2 0 im noc
75. application All global variables occupy a constant space in memory A independently compileable code module consisting of a public part the interface part and a private part the im plementation part Every form in Delphi has an associated unit The source code of a unit is stored in a PAS file A unit is compiled into a binary symbol file with a DCU extension The link process combines DCU files into a single EXE or DLL file A procedure or function parameter that is passed by value that is the value of a parameter is copied to the local memory used by the routine and therefore changes made to that parameter are local A subroutine parameter that is passed by reference Changes made to a variable parameter remain in effect after the subroutine has ended An identifier that represents an address in memory the contents of which can change at run time Calls are resolved at run time by name A component that is visible or can be made visible on a form at run time DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Index 15 Index amp 68 43 44 43 Aktueller Parameter 179 ancestor 58 AnsiChar 101 Anweisungen 103 Anweisungsteil 44 Anweisungsteil eines Blocks 104 Arraytypen 93 Aufz hlungstypen 87 Ausdr cke 74 Ausnahmebehandlung 160 Ausnahmezust nde 162 Ausrichtungspalette 55 Backup Dateien 35 B ume 177 Bedingte Anweisungen 105 benutzerdefinierte Typen
76. arfarbe wechseln Mit dieser Beschriftung ist bereits angedeutet welche Funk tion die Schaltflache haben soll Damit Sie diese auch um setzen k nnen ben tigen Sie das vierte sichtbare Element n mlich den Quelltexteditor 2 3 4 Der Quelltexteditor Mit dem Quelltexteditor haben Sie Zugriff auf den gesam ten Quellcode eines Projektes DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Installation und Handhabung 31 Kopfleiste mit Namen der ge oroin pat ffneten Datei Close Page Ctr F4 Open File at Cursor Ctrl Enter Register mit dem Namen New Edit Window der lUJnit Browse Symbolletlsursor Topic Search FA Programmcode der Unit gests Toggle Breakpoint F5 Forms Dialogs StdCtrls Run to Cursor Lokales Men des Quelltext Evaluate Modity editors rechte Maustaste Ses N ERa T frmprogi class TForm View amp s Form Aere btnFarbwechsel TButton Read Only Anzeige des Modus Message View Anzeige der aktuellen Properties Cursorzeile und Spalte Abb 9 Elemente des Quelltexteditors Wie bei allen Elementen der Entwicklungsumgebung finden Sie zus tzliche Information in der Hilfe W hlen Sie HELP HELP TOPICS In der angezeigten Liste ffnen Sie mit einem Doppelklick das Buch Using Delphi und darin den Titel Programming Environment Sie erhalten eine Liste samtli cher Elemente der Entwicklungsumgebung Offnen Sie Code editor und doppelklicken Sie das Thema Abou
77. ath ist meistens leer denn der Pfad wird nur f r jene Units angegeben die in einem anderen Ordner ge speichert sind als die Projektdatei Doch die Dateiverwaltung dient nicht nur zur Anzeige Mit Hilfe der Schaltfl chen am oberen Rand k nnen Sie auch Units zum aktuellen Projekt hinzuf gen oder vom Projekt entfernen zwischen Units und Formularen wechseln sowie die Optionen eines Projekts ndern Mit der rechten Maus taste erhalten Sie wie bei Quelltexteditor Zugang zu einem lokalen Men Zur Zeit existiert f r Ihr Projekt nur das Formular frmprog1 in der Unit upro1frm1 die in der gleichnamigen Datei mit der En dung pas gespeichert ist Zum Formular wechseln Sie indem Sie frmprogl1 doppelklicken Klicken Sie die Projektverwaltung an um sie erneut zu aktivieren und schliessen Sie sie 2 5 Die Dateien eines Projekts Delphi ist ein echter und extrem schneller Compiler Die aus f hrbaren EXE und DLL Dateien enthalten Maschinencode der vom Prozessor direkt ausgef hrt werden kann Deshalb sind die mit Delphi erzeugten Applikationen vor allem ge gen ber interpretierten Sprachen betr chtlich schneller Doch die weitere Optimierung des Compilers bei der Version 2 0 f hrt dazu dass Delphi Applikationen auch schneller sind als andere kompilierte Programme beispielsweise von C Grunds tzlich unterscheidet man drei Kategorien von Datei en die bei Delphi Projekten vorkommen DELPHI V2 0 Applikationsentwic
78. auszuf hren solange oder bis eine Bedingung erf llt ist Object Pascal bietet Ihnen drei Arten von Schleifen aus de nen Sie je nach Situation ausw hlen k nnen Es gibt eine feste Anzahl Schleifendurchl ufe Die Bedingung wird vor Eintritt in die Schleife gepr ft so dass die Schleife eventuell nicht durchlaufen wird Die Schleife wird mindestens einmal durchlaufen bevor die Bedingung gepr ft wird Welche Art Sie w hlen h ngt davon ab welche Aktionen Sie in der Schleife ausf hren m chten und wieviel Sie ber die Bedingungen vor Eintritt in die Schleife wissen Bei While und Repeat Schleifen m ssen die Variablen der Bedingung im Innern der Schleife ver ndert werden so dass es nicht zu einer Endlosschleife kommt Falls Sie beim Test in einer Endlosschleife h ngen geblieben sind dann hilft unter Windows 95 das gleichzeitige Dr cken von CTRL ALT DEL und anschliessend ein Klick auf TASK BEENDEN 7 4 1 Die For Schleife Eine For Schleife f hrt eine durch eine Laufvariable festge setzte Anzahl Schleifendurchl ufe aus Hier die allgemeine Syntax For Laufvariable Anfangswert to downto Endwert einfache_oder_zusammengesetzt do Anweisung CT Ct For Schleifen sind sinnvoll wenn Sie zu Beginn genau wis sen wie viele Male die Schleife durchlaufen werden soll Die Laufvariable beginnt immer beim Anfangswert und endet beim Endwert Sie werden nun eine weitere If Anweisung und eine For Sc
79. ble zul ssig sind und welche Operationen mit diesen Werten ausgef hrt werden k nnen 3 Wert Der Wert ist die Information die an der Speicher adresse der Variablen gespeichert ist Auf Maschinen ebene ist dies nur eine Abfolge von Null und Eins Erst durch den Typ l sst sich eine solche Abfolge als Buch stabe A oder als Zahl 65 interpretieren DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Konstanten und Variablen 76 4 Speicherplatz und Speicheradresse F r jede Variable wird im Arbeitsspeicher unter einer eindeutigen Adresse Platz reserviert Der Typ bestimmt die Gr sse des reser vierten Speicherplatzes Dank Variablen nimmt der Com piler Ihnen die m hsame Arbeit ab direkt mit Speicher adressen zu hantieren 5 4 2 Variablendeklaration Auch Variablen deklariert man in einem Deklarationsteil Sie werden mit dem reservierten Wort var eingeleitet Die gene relle Syntax einer Variablendeklaration sieht folgender massen aus var Variablennamel Typel Variablenname2 Variablenname2 Type2 Variablenname3 Type3 Das reservierte Wort var leitet einen Variablendeklara tionsteil ein Die einzelnen Variablendeklarationen setzen sich aus Bezeichner Doppelpunkt und Typ zusammen Auch diese Deklarationen schliesst der in Pascal obligate Strichpunkt ab Wenn Sie in einem Deklarationsblock meh rere Variablen des gleichen Typs definieren m chten dann ist es nicht n tig f r jede eine einzelne Deklarati
80. ch mussten Windows Programmierer auswendig wissen oder nachschlagen was jeder Parameter enth lt Microsoft hat nun die Parameter mit Namen versehen Die ses sogenannte Extrahieren von Botschaften macht es nun viel einfacher die mit jeder Botschaft verkn pften Infor mationen zu verstehen Beispielsweise heissen die Parame ter der Botschaft WM_KEYDOWN jetzt VKey und KeyData Die hierdurch zur Verf gung gestellte Information ist sehr viel genauer als in wParam und lParam Delphi definiert einen besonderen Recordtyp f r jeden Bot schaftstyp der jeden Parameter mit einem mnemonischen Namen versieht Mit dem Mausbotschafts Record z B m s sen Sie sich nicht mehr darum k mmern welche Koordinate in welches Datenwort geh rt da Sie sich ber die Namen XPos und YPos auf die Parameter beziehen k nnen 10 2 5 Eigene Botschaften versenden Bei unseren bisherigen Betrachtungen haben wir nur die eingehenden Botschaften bearbeitet Delphi kann sich je doch auch aktiv am Nachrichtenverkehr beteiligen indem Sie eigene Botschaften versenden Ein Beispiel gef llig Procedure frmEdior BtnScrSaveClick Sender TObject begin PostMessage hWnd_BroadCast wm_SysCommand sc_ScreenSave 0 end Testen Sie diese Aktion kurz im Editor Beispiel DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Eigenschaften und Windows Botschaften 151 Ihnen ist sicher die API Funktion PostMessage aufgefallen zu der sich noch Send
81. chen Der generische Char Typ ist Char In der aktuellen Implementation von Object Pascal ent spricht Char dem Fundamentaltyp AnsiChar aber Imple DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen 100 mentationen f r andere CPUs und Betriebssysteme k nnten Char als wideChar definieren cg Der generische String Typ string kann entweder einen langen dynamisch zugewiesenen String den grundlegen den ANSI String oder einen kurzen statisch zugewiesenen String bezeichnen Dies ist abh ngig von der Compilerdirek tiven SH oder SLONGSTRINGS ON d Anwendungen sollten m glichst generische Formate ver wenden um beste Ergebnisse mit der zugrundeliegenden CPU und dem Betriebssystem zu erzielen Die Fundamen tal Typen sollten nur verwendet werden wenn der aktuelle Bereich und oder das Speicherformat mit der Anwendung nicht korreliert Weil ein generischer Typ f r mehrere fundamentale Typen steht sind die Regeln f r die Zuweisungskompatibilit t von generischen Typen einfacher als jene von fundamentalen 6 6 Rekapitulation 6 6 1 Kapiteltest 1 Weisen Sie den folgenden Variablen den geeigneten Typ zu Achten Sie dabei auch auf den Speicherbedarf a i ein Z hler um eine Schleife 12 mal zu durchlaufen b PositionBrett Position einer Figur type TFigur auf einem Schachbrett 8 x 8 Felder c VermoegenBGates Verm gen von Bill Gates 2 Sie haben im Abschnitt ber Strings zwei Arten ken
82. chon vorher zu tun indem man das Men be nutzt W hlen Sie SAVE PROJECT AS im Men FILE und speichern Sie Ihre Projektdatei unter PProg 2 4 Die Projektverwaltung Delphi ist eine Sprache welche die Wiederverwendung von Code stark unterst tzt Ein wichtiger Schritt in diese Rich tung ist dass sich ein Projekt aus verschiedenen Units zu sammensetzt Units sind Sammlungen von Konstanten Ty pen Variablen Prozeduren und Funktionen die von mehre ren Anwendungen gemeinsam verwendet werden k nnen Das Kapitel 3 geht sp ter ausf hrlich darauf ein Wenn Sie sich einen berblick verschaffen m chten welche Units zu einem Projekt geh ren dann hilft die Projektver waltung weiter ffnen Sie im Men ViEW das Untermen PROJECT MANAGER Ein Dialogfenster wie in Abb 11 ffnet sich Klicken Sie auf die Zeile die mit u prolfrml beginnt DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Installation und Handhabun Datei hinzuf gen Datei entfernen Datei im Quelltexteditor anzeigen Formular anzeigen Dialogfeld Projektoptionen ffnen Aktualisieren der aufgeliste ten Dateien g 34 Project Manager Ausgew hlte Unit Liste der Units und Formula re In der ersten Spalte sehen Sie eine Liste der vorhandenen Units und in der zweiten Spalte die damit verkn pften For mulare Jedes Formular hat eine eigene Unit Da es auch Units ohne Formulare gibt kann diese Spalte leer sein Die Spalte P
83. cklung mit Delphi DEL Glossar component constant control descendant dynamic encapsulate exception expression event event handler field 181 1 The elements of a Delphi application iconized on the Component palette Components including forms are objects you can manipulate Forms are components that can contain other components forms are not ico nized on the Component palette 2 In Delphi any class descended from TComponent is itself a component In the broader sense a compo nent is any class that can be interacted with directly through the Delphi Form Designer A component should be self contained and provide access to its features through properties An identifier with a fixed value in a program At compile time all instances of a constant in source code are re placed by the fixed value A visual component Specifically any descendant of TControl An object derived from another object A descendant is type compatible with all of its ancestors A form of virtual method which is more space efficient but less speed efficient than simple virtual To provide access to one or more features through an interface that protects clients from relying upon or having to know the inner details of the implementation An event or condition that if it occurs breaks the normal flow of execution Also an exception is an object that contains information about what error occurred and where it ha
84. cneeeeeeeeeeeseeeetnneeeeeeeees 173 12 2 1 Sichtbarkeit von Routinen ccc ccceecceeccecceeececceececceecaeececeueeceeceecaeeceeeues 173 12 2 2 Sichtbarkeit von BIOCKEN ccc ceccecceecceccecececceceeeececcueccecceecaeeceeceeeneeeeeesaes 174 12 2 3 Sichtbarkeit von Units 2 ccc cececccecceccceccecceeececcueececcecaeeceeeeeeseecuesaeeceeeaes 175 12 2 4 Sichtbarkeit von Interface und Standardbezeichnenn 22 220 175 12 2 5 Sichtbarkeit von KlASSEN ceccceceececcececeececceeececceececceeeaeeceeceeeaeeceeesaes 176 SATE eTEN o1 EEE 177 12 3 1 Statische Variablen ae r a a i e iaia iN 177 12 3 2 Dynamische Variablen 2 2 22 rue 178 12 4 Offene Parameter c ccccccccecccecceecceccecceeeceeceecaeeceeceeaeeceecaecceecueeaeeceecueeaeeaseeaes 179 12 4 1 Offene String Parameter 222444400000n4nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 179 12 4 2 Offene Array Parametern c cceh cece iii 179 12 ROK ADIUIAUOI vere ersten 181 125 1 Zusammehfass ngsz ur he eeeicHeiikeisiicHeibninliHeiisrie 181 125 2 Kapllellesi nie 182 125 3 l Bihgtssrakseraer areas An E 182 12 6 SCHIUSSPEOICKTE Al atl a er 182 13 Begriffsverzeichnis Deutsch Endlisen a eek 184 IREI el ATEA ERAL LEEA EE TENTE ASE tet een te teen te tO te ne 185 VAG OK E EE A E A E A AE E A ges ia ee 191 DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Einleitung 1 Einleitung 1 1 Kursziel Delphi bietet
85. den kann oder nicht Im folgenden sehen wir wie der G ltigkeitsbereich von Variab len durch verschiedene Strukturen beeinflusst werden kann Noch kurz eine kleine Entflechtung der Begriffe G ltigkeit und Sichtbarkeit Eigentlich spricht man im Zusammenhang von Variablen oder Bezeichnern vom G ltigkeitsbereich wel cher sich dann auf die Sichtbarkeit der entsprechenden Struktur Routine Klasse Unit etc ausweitet 12 2 1 Sichtbarkeit von Routinen Der G ltigkeitsbereich einer Variablen in einer Routine kann entweder lokal oder global sein Lokale Bezeichner sind nur f r die Routinen und Deklarationen sichtbar die in dem Block enthalten sind in welchem der Bezeichner deklariert wird Globale Bezeichner werden im Interface Abschnitt der Unit deklariert und sind f r alle Routinen und Deklarationen innerhalb dieser Unit sichtbar Hier ein Beispiel zur Abgrenzung lokal versus global program scopeLocalGlobal var A integer Globale Variable procedure SetA var A integer Erzeugt eine lokale Variable A begin A 4 end Zerst rt lokale Variable A begin A 3 Weist globaler Variable A einen Wert zu SetA Ruft Prozedur SetA auf Writeln A Wert von A 3 nicht 4 end DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programmstruktur OONDOARWND 169 12 2 2 Sichtbarkeit von Bl cken In einem Block beginnt der G ltigkeitsbereich eines Be zeichners oder Labels am
86. die Kunst der defensiven sprich sicheren und robusten Programmierung eingef hrt e Sie lernen auf Ausnahmen zu reagieren e anwenderfreundliche Fehlermeldungen zu definieren e und mit Laufzeitinformationen umzugehen 11 1 Was sind Ausnahmebehandlungen Auch mit der Ausnahmebehandlung folgt Delphi bekannten Konzepten anderer OOP Sprachen Exceptions sind Objek te die Informationen ber Fehlerzust nde enthalten de rentwegen ein Programm eine Operation nicht wie geplant ausf hren konnte zum Beispiel aus Speichermangel wegen einer Schutzverletzung oder einer Division durch Null Trat bisher eine derartige Bedingung auf brach das Programm mit einem Laufzeitfehler ab Um dies zu vermeiden ben tig te man immer tiefer geschachtelte IF Statements mit alterna tiven Ausf hrungspfaden Exceptions erlauben statt dessen geb ndelte Fehlerbehandlung Eine Exception ist ganz allgemein eine Fehlerbedingung oder ein anderes Ereignis das den normalen Ablauf einer Anwendung unterbricht Wenn eine Exception ausgel st wird geht die Programmsteuerung von der gerade ausge f hrten Anweisung auf eine Exception Behandlungsroutine ber Object Pascal unterst tzt die Ausnahmebehandlung durch die Bereitstellung einer Struktur mit welcher der Compiler die normale Programmlogik von der Behandlung der Ausnahmef lle trennt Dies f hrt zu besser wartbaren und erheblich robusteren Anwendungen Object Pascal stellt Exceptions durch Objekte dar Die
87. e Fehler Delphi bietet Funktionen zur Fehlerbeseitigung die im integ rierten Debugger zusammengefasst sind und die Sie bei der Suche nach Fehlern in Ihrem Programm und deren Behe bung unterst tzen Der integrierte Debugger versetzt Sie in die Lage e die Ausf hrung Ihres Programms zu steuern e Werte von Variablen und Elementen in Datenstrukturen zu berwachen e und Werte von Datenelementen w hrend einer Ausf h rung unter Kontrolle des Debuggers zu modifizieren Vor dem Gebrauch des Debuggers m ssen Sie Ihr Pro gramm mit symbolischen Debug Informationen kompilieren DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Installation und Handhabung Instrument Haltepunkt breakpoint set zen Liste der Haltepunkte anse hen Ausdruck berwachen watch Liste der Uberwachten Aus dr cke ansehen Aufrufhierarchie ansehen 38 Danach k nnen Sie eine Debug Sitzung beginnen indem Sie Ihr Programm unter Delphi ausf hren Der integrierte Debugger bernimmt jedesmal die Kontrolle wenn Sie Ihren Programmcode ausf hren berpr fen oder schrittweise ab arbeiten lassen Das Programm verh lt sich bei der Ausf hrung unter der Kontrolle des Debuggers genauso wie sonst auch Es er zeugt Fenster nimmt Benutzereingaben an berechnet Wer te und zeigt Resultate an Wenn das Programm gerade nicht ausgef hrt wird liegt die Kontrolle beim Debugger und Sie k nnen dessen Funktionen benutzen um den aktuellen
88. e Methoden auch Konstruktoren Konstruktoren werden benutzt um neue Objekte zu erzeu gen und zu initialisieren Dazu muss der Konstruktor ber den Bezeichner der Klasse statt der Instanz aktiviert wer den Wenn ein Konstruktor ber den Bezeichner der Klasse aktiviert wird geschieht folgendes e Speicherplatz f r das neue Objekt wird auf dem Heap zugewiesen e Der zugewiesene Speicherbereich wird initialisiert Alle ordinalen Werte werden auf Null alle Zeiger und Objekt instanzen werden auf nil und alle String Felder werden auf leer gesetzt e Die benutzerdefinierten Aktionen des Konstruktors wer den ausgef hrt DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Klassen und Instanzen 133 e Eine Referenz auf den neu zugewiesenen und initialisier ten Speicherbereich wird vom Konstruktor zur ckgege ben Folgendermassen k nnen Sie etwa den vorhin deklarierten Button erzeugen var MeinKnopf TButton begin MeinKnopf TButton Create frmHaupt end Falls f r eine Klasse bereits eine Instanz existiert l sst sich der Konstruktor auch ber eine Objektreferenz d h den Namen der Instanz aufrufen In diesem Fall werden nur die benutzerdefinierten Anweisungen des Konstruktors ausge f hrt aber es wird kein neues Objekt erzeugt Der erste Befehl eines Konstruktors ist h ufig der Aufruf ei nes ererbten Konstruktors um die ererbten Felder des Ob jektes zu initialisieren Danach initialisiert der
89. e Typen Seit es Delphi f r Win95 gibt unterscheidet Object Pascals zwischen Fundamentaltypen und generische Typen Der Bereich und das Format von Fundamentaltypen ist von der zugrundeliegenden CPU und vom Betriebssystem unab h ngig und ndert sich bei verschiedenen Implementationen von Object Pascal nicht Der Bereich und das Format von generischen Typen h ngt von der vorhandenen CPU und vom Betriebssystem ab Es gibt gegenw rtig drei Kategorien von vordefinierten Ty pen die zwischen Fundamental und generischen Typen unterscheiden e Integer Typen e Char Typen e String Typen Fur alle anderen Klassen sollten Sie die vordefinierten Ty pen als Fundamentaltypen ansehen Die generischen Integer Typen sind Integer und Cardinal Der Integer Typ stellt eine generische Ganzzahl mit Vorzeichen und der Cardinal Typ eine generische Ganz zahl ohne Vorzeichen dar Die aktuellen Bereiche und Speicherformate des generi schen Typs variieren bei verschiedenen Implementationen von Object Pascal entsprechen aber im allgemeinen denen die aus der effektivsten Integer Operation der zugrundelie genden CPU und des Betriebssystems resultieren Object Pascal definiert zwei fundamentale Char Typen und einen generischen Char Typ Die fundamentalen Char Typen sind e AnsiChar nach dem erweiterten ANSI Zeichensatz ge ordnet e WideChar nach dem Unicode Zeichensatz geordnet die ersten 256 Unicode Zeichen entsprechen den ANSI Zei
90. e das Register PREFERENCES im Men TOOLS OPTI ONS und markieren Sie die beiden Eintr ge unter AUTOSAVE OPTI ONS Ausserdem empfiehlt es sich auch SHOW COMPILER PROGRESS zu aktivieren um einmal den schnellsten Compiler der Welt bei der Arbeit zu beobachten 2 3 Sichtbare Elemente der Entwicklungsum gebung 2 3 1 Das Formular Ein Formular wie Sie es in Abb 4 sehen ist der Grundbau stein jeder Delphi Applikation unter Windows Es bietet eine leere Fl che die Sie mit Hilfe vorgefertigter Komponenten zur Benutzerschnittstelle ihres Programms gestalten wer den Auf dem Formular plazieren Sie Men s Kn pfe Ein gabefelder und alles was es dazu sonst noch an visuellen Elementen braucht um mit der Benutzerin zu kommunizie ren DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Installation und Handhabung Systemmen Verstellbare R nder Titelleiste 26 ai Formi Schliessen Vergr ssern Abb 4 Ein Windows95 Standardfenstef kleiner Ein Formular enth lt ohne eine Zeile Programmcode bereits die Grundfunktionalit t eines Windows Fensters n mlich e Titelleiste e Systemsteuerung e R nder mit denen die Gr sse ge ndert werden kann e Schaltfl chen um das Formular zu verkleinern vergr s sern oder schliessen Dies probieren Sie gleich aus Beim ffnen der Entwicklungsum gebung hat Delphi f r Sie unter dem Namen Project1 bereits das Grundger st f r ein neues Projekt eingeric
91. e ein Projekt PProgi_2 in dem Sie mit Hilfe der Label Komponente aus dem Register Standard das ber hmte Hello world mit grosser gelber fetter Schrift in der Mitte eines dunkelblauen Formulars anzeigen Andern Sie den Formulartitel und vergeben Sie Formular und Label Namen gem ss den Na menskonventionen aus Kapitel 1 5 3 DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programme und Units BL 4 a amp 40 3 Programme und Units Im vorangehenden Kapitel haben Sie bereits geh rt dass ein Projekt sich aus verschiedenen wiederverwendbaren Units d h Sammlungen von Konstanten Typen Variablen Prozeduren und Funktionen zusammensetzt In diesem Ka pitel werden wir uns die Struktur von Projekten und Units genauer anschauen Sie lernen dass Units zwei Teile enthalten einen ersten in dem die Kommunikation mit anderen Units geregelt wird und einen zweiten der den Programmcode der Routinen der Unit enth lt Ausserdem schliessen Sie Bekanntschaft da mit wie Units sich gegenseitig aufrufen k nnen Sie werden mit Hilfe eines Beispielprogramms folgende Themen bearbeiten e Syntax eines Programms e Syntax einer Unit e Interface und Implementationsteil einer Unit e Zirkulare und indirekte Referenzen 3 1 Ein Beispielprogramm Delphi vereinfacht die Programmierung indem es allgemei nen Code automatisch in ein Projekt einf gt Auch mit rudi mentaren Vorkenntnissen kann man deshalb ein Beispiel p
92. e einer Liste der Dateien im aktuellen Verzeichnis Anzeige der Verzeichnisstruktur des aktuellen Laufwerks damit die Benutzer innen das aktuelle Verzeichnis wechseln k nnen Anzeige einer Liste der aktuellen definierten Laufwerke Filter bzw Auswahlmaske um nur ausgew hlte Dateien in der Liste anzuzeigen Steuerungseinheit im VCR Stil mit deren Hilfe sich Video und Audio Dateien abspielen lassen 4 4 9 Weitere Register und Komponenten Alle weiteren Register beinhalten Komponenten die erst im fortgeschrittenen Stadium interessant sind oder Beispiele Sie werden nicht n her vorgestellt 4 5 Das Editor Projekt Lang ist der Weg durch Lehren kurz und wirksam durch Beispiele Seneca r mischer Dichter und Philosoph 4 v Chr 65 n Chr Als n chste bung werden Sie einen kleinen Texteditor bauen Sie schliessen dabei n here Bekanntschaft mit eini gen der vorgestellten Komponenten Im Verlauf des Kurses werden Sie dieses Projekt mit weiteren Routinen Tests und Experimenten ausbauen 1 Starten Sie ein neues Projekt mit einem Standardformular FILE NEW APPLICATION 2 Klicken Sie im Register ADDITIONAL der Komponentenpalette mit der Maus auf BITBTN und anschliessend ins Formular DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Visuelle Programmierung 67 3 Verschieben Sie den Button nach unten rechts im Form Jede Komponente l sst sich auch pr zise mit der Tastatur ver schieben indem Sie
93. echende Bezeichner verwendet also z B AnzahlFelder statt 64 2 Oft ist es sinnvoll nicht nur universelle Werte wie Pi durch Konstanten auszutauschen sondern auch h ufig verwen dete Werte eines Programms durch Konstanten zu er setzen Das Programm wird dadurch besser wartbar denn falls ein h ufig verwendeter Wert sich ndert m s sen Sie den neuen Wert nur in der Konstantendeklaration ersetzen statt an jedem Ort wo dieser Wert verwendet wird 5 3 2 Konstantendeklaration Konstanten deklariert man im Deklarationsteil nach dem re servierten Wort const In Kapitel 3 haben Sie geh rt dass Deklarationen normalerweise am Anfang von Interface und Implementationsteil einer Unit stehen Wie Sie sp ter noch sehen werden kann es auch innerhalb von Prozeduren und Funktionen wieder einen Deklarationsteil geben Die generelle Syntax einer Konstantendeklaration sieht fol gendermassen aus DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Konstanten und Variablen 74 const Konstantennamel Konstantenwertl Konstantenname2 Konstantenwert2 Konstantenname3 Konstantewertl Konstantenwert2 Das reservierte Wort const leitet den Deklarationsteil ein Dann folgen die einzelnen Konstantendeklarationen mit Be zeichner Gleichzeichen und Wert Ein Strichpunkt schliesst jede einzelne Deklaration ab Bei der Vergabe von Bezeich nern unterliegen Sie wie Sie bereits auf Seite 27 gesehen haben
94. edenen Varianten aus e Delphi 2 Standard ist eine vollst ndige visuelle Entwick lungsumgebung die auf der objektorientierten Sprache Object Pascal basiert Mit den enthaltenen 32 Bit Kompo nenten lassen sich einfache Windows Anwendungen im Drag and Drop Verfahren erstellen F r Windows 3 1 Ent wicklungen wird die 16 Bit Version Delphi 1 0 mitgeliefert e Delphi 2 Developer enth lt ber die Standardversion hin aus einige Werkzeuge die sie f r gr ssere professionelle Projekte zum Beispiel Datenbanken besonders geeignet machen F r Datenbankberichte steht Report Smith zur Verf gung und ein Installations Experte erleichtert die Weitergabe Ihrer Applikationen F r Komponentenent DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Installation und Handhabung 20 wickler unentbehrlich sind Handbuch und Quellcode der visuellen Komponentenbibliothek e Die Delphi 2 Client Server Suite erweitert die vorangehen de Version zu einem echten 32 Bit Client Server Entwick lungssystem f r den beliebig skalierbaren Datenbank zugriff W hrend die Sprache Object Pascal selbst immer in Eng lisch definiert ist gibt es die Entwicklungsumgebung mit Hil fesystem und Handb chern in verschiedenen Sprachver sionen Da auf der CD mit der deutschen Version auch die englische enthalten ist empfiehlt es sich die Version in der Landessprache zu kaufen auch wenn Sie die englische Ver sion installieren m chten Sie k nnen dann n
95. edure procName formale_Parameterliste Beispiel f r Prozedurdeklaration im Interface Teil procedure Init_Datum var Jahr Monat Tag integer Beispiel f r Funktionsdeklaration im Interface Teil Function Verdoppeln intZahl integer integer 8 4 6 Eine eigene Funktion erstellen Nun haben Sie das R stzeug zusammen um selbst eine Funktion zu schreiben Wir machen im Editor Projekt bei jener Methode weiter die Sie in Kapitel 7 geschrieben ha ben Sie lernen in dieser Ubung nicht nur wie man eine ei gene Funktion deklariert sondern auch wie man sie aufruft und anderen Units verf gbar macht Sie erinnern sich Sie haben einen Button erstellt mit dem sich bei einer geladenen Datei Zeilennummern anf gen oder entfernen lassen Die zweite Aufgabe war etwas schwieri ger ging es doch darum den Leerschlag zwischen Zeilen nummer und Text zu suchen und den restlichen String zu r ckzuliefern Dies ist eine Aufgabe die sich ausgezeichnet f r eine Funktion eignet Damit eine solche Funktion in vie len Situationen verwendbar ist beschr nken wir uns beim gesuchten Zeichen nicht auf einen Leerschlag sondern las sen beliebige Zeichen vom Typ char Zu Wir erstellen also unter dem Bezeichner StringNachZeichen eine Funktion der ein String und ein beliebiges Zeichen als Werteparameter bergeben werden und dessen Funktions wert den Reststring nach dem Zeichen zur ckliefert ffnen Sie das Editor Pro
96. eeees 17 2 Installation und Handhabung un lee lid 19 2 1 Installation und Laden der Entwicklungsumgebung 4444444ssnnnss sense 19 2 1 1 Versionen und Varianten von Delphi uusss444242nnnnnnnnnnnnnnnnnnnnnnnn 19 2 1 2 Die IMST a ON EEE REN 20 2 1 3 Die Entwicklungsumgebung laden 244444040ssnnnnn nn nnnnnnnnnnnnnnnnnnnnnnnn 21 2 2 Die Delphi Oberfl che ea aaa ee ee 23 2 2 1 Wichtige Einstellungen der IDE 2224444000004444nnnnnnnnnnnnnnnnnnnnnnnnnnnn 25 2 3 Sichtbare Elemente der Entwicklungsumgebung 4444444040nnnnn nennen 25 2 341 Das Form lar ent nn ee ee ee 25 2 3 2 Der Obleklinspekl fu nisse era 26 2 3 3 Die Komponentenpalette n ss 2 ee 29 2 3 4 Der Quelltexteditor zn am secevecsies Voss tneccvetVeosecasyutetMeenter as 30 2 3 5 Die Symbolleiste ame ee ee er Bde 32 2 4 Die Projektverwaltung re ee ee ade hea dees A 33 2 5 Die Dateien eines Projekis unnseneinee ae RA Eee 34 2 6 Der integrierte Debugger 24444444000nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 37 2PRekKapiiilationies teen une u Te ee een 38 2 11 Kapitetest pneri nre ereere tete ee ehe 38 27 2 OUI sa aaa ee ae 39 3 Programmie ind Uhse ae een 40 3 1 Ein Beispielprogramm arzt uratts eee reed Ae oe 40 DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Inhalt 3 3 2 Die Syntax eines Programms 44 uuunnnssnnnnnnnnnnnnnnnnnnnnn
97. eil einer Unit umfasst das reservierte Wort initialization gefolgt von einer Liste von Ausdr cken welche die Unit initialisieren Initialisierungsteile von Units innerhalb eines Programms werden in der gleichen Reihenfolge ausgef hrt in der die Units in der Uses Klausel des Hauptprogramms aufgef hrt sind Der Finalization Teil ist optional und kann nur erscheinen wenn eine Unit auch einen Initialisierungsteil enth lt Der Finalization Teil besteht aus dem reservierten Wort finalization gefolgt von einer Liste von Ausdr cken welche die Unit beenden Finalization ist das Gegenteil zur Initialisierung und jede Ressource Speicher Dateien usw die von einer Unit w hrend seiner Initialisierung er worben wird werden typischerweise im Finalization Teil wie der freigegeben Sowohl Initialisierungsteil wie Finalization Teil sind optional Unser Beispielprogramm enth lt weder das eine noch das andere DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programme und Units 49 3 4 Indirekte und zirkulare Referenzen Im allgemeinen sind Units Uber mehrere Stufen miteinander verkn pft Im folgenden sehen wir uns zwei Spezialf lle an 3 4 1 Indirekte Unit Referenzen Die Uses Klausel eines Moduls muss nur die Namen der Units enthalten die dieses Modul direkt verwendet Da eine Unit A in ihrer Uses Klausel die Unit B auff hren kann und Unit B wiederum eine weitere Unit C in ihrer Uses Klausel aufnehmen kann ist A
98. eisst ich kann st ndig Instanzen mit dem gleichen Be zeichner aufrufen die sich dann vielgestaltig manifestieren unit Polymrph interface uses SysUtils WinTypes WinProcs Messages Classes Graphics Controls Forms Dialogs StdCtrls type TForml class TForm Buttonl TButton Editl TEdit procedure ButtonlClick Sender TObject end TVehicle class TObject DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Klassen und Instanzen 138 procedure showMove procedure goAway virtual end TPlane class TVehicle procedure goAway override end TCar class TVehicle procedure goAway override end TBicycle class TVehicle procedure goAway override end var Forml TForml implementation SR DFM procedure TVehicle showMove begin goAway Polymorphie end procedure TVehicle goaway begin messageDlg Fly something else mtInformation mbOk 0 end procedure TPlane goaway begin MessageDlg Fly the digital freedom mtInformation mbOk 0 end procedure TCar goaway begin MessageDlg Drive the crash car mtInformation mbOk 0 end procedure TBicycle goaway begin MessageDlg Ride on a Klein Bike mtInformation mbOk 0 end DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Klassen und Instanzen 139 procedure TForml ButtonlClick Sender TObject var Plane T
99. eiten Anderung bleibt die Eigenschaft CAPTION dage gen unber hrt Gewisse Eigenschaften z B FONT haben selbst wieder Ei genschaften sogenannte verschachtelte Eigenschaften Im Objektinspektor erkennt man sie am vorangestellten Pluszeichen Wenn man dieses doppelklickt ffnet sich eine Liste mit Eigenschaften wie COLOR HEIGHT und NAME Geht man in die Wertespalte der Eigenschaft Font dann erscheint rechts eine Schaltfl che mit drei Punkten Ein Mausklick darauf ffnet ein Dialogfenster in dem die ver schachtelten Eigenschaften von FONT gesetzt werden k n nen Um sich mit der nderung der Eigenschaften im Objektinspektor vertraut zu machen k nnen Sie beispielsweise noch die Farbe des Formulars ndern Klicken Sie in das Eingabefeld rechts von COLOR so dass sich ein Listenfeld mit verschiedenen Farboptio nen ffnet Im unteren Teil finden Sie Farben der Windows Um gebung im oberen reine Farben Suchen Sie clyellow um das Formular mit einem sonnigen Gelb einzuf rben 2 3 3 Die Komponentenpalette Komponenten sind ein entscheidender Schritt beim ber gang von der herk mmlichen Software Entwicklung zur Soft DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Installation und Handhabung Zeigersymbol Bildlaufpfeil 29 ware Montage Komponenten k nnen sichtbare Bestandteile von Programmen sein z B Schaltfl chen aber auch un sichtbare beispielsweise Timer Statt selbst die ganze Be nutzerschnitts
100. eklarationsteil gibt dann steht er vor dem Anweisungsteil In unserem Beispiel programm umklammern begin und end den Anweisungs teil Achten Sie auch auf die Verwendung des Strichpunkts mit dem eine Anweisung abgeschlossen wird Im Normalfall wird jede Zeile mit einem Strichpunkt abgeschlossen weil sie genau eine Anweisung enth lt Ausnahmen sehen Sie in den Zeilen 3 7 9 und 14 Die Aufz hlung der Units nach uses ist eine einzige Anweisung so dass erst nach der letz ten Unit ein Strichpunkt folgt Auf Compiler Befehle und Kommentare folgt ebenfalls kein Strichpunkt Die reservier ten W rter begin und end bilden aus mehreren Anweisun gen eine zusammengesetzte Anweisung die als einzelne Anweisung behandelt wird Deshalb folgt erst nach end nicht aber nach begin ein Strichpunkt Das letzte end ei nes Programms wird statt mit einem Strichpunkt mit einem Punkt abgeschlossen 3 2 2 Die allgemeine Syntax eines Programms Aus dem Beispielprogramm l sst nun die folgende generelle Syntax extrahieren program Name uses lt Liste der verwendeten Units gt const lt Liste von Konstanten gt type lt Liste von benutzerdefinierten Typen gt var lt Liste von Variablen gt lt Liste von Funktionen und Prozeduren gt begin lt Anweisungen gt end Jedes Pascal Programm f ngt mit dem reservierten Wort program an Klein und Grossschreibung spielen bri gens in Pascal keine Rolle es k nnte also auch ProG
101. elnen Properties im Objektinspektor wie NAME sind alle an den Kapit lchen erkennbar Die Formatierung Code wird f r Listings von Programmcode verwendet oder f r Bezeichnungen wie form1 die von der Entwicklungsumgebung vergeben werden und Teil des Pro grammcodes sind Ihre eigenen Eingaben die Sie bei bungen ber die Ta statur oder durch die Auswahl von Listenfeldern machen m ssen sind dagegen mit dieser kursiven Formatierung ge kennzeichnet Tastaturk rzel und Funktionstasten wie CTRL C oder F1 erkennen Sie an den Grossbuchstaben Fett formatiert ist Wichtiges beispielsweise die Einf hrung eines neuen Begriffs Ordner und Dateinamen wie uClose pas stehen in speziellen Anf hrungszeichen 1 5 2 Piktogramme Zus tzlich zu den Formatierungen kennzeichnen Piktogram me in der Randspalte bestimmte Textteile Folgende Symbo le kommen vor ci Lernziel Einf hrung eines neuen Begriffs g Wichtige Information Codebeispiel DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Einleitung amp o Analyse eines Codebeispiels ca bung Diese optischen Hilfsmittel erleichtern Ihnen sp ter be stimmte Lerneinheiten rasch wieder zu finden 1 5 3 Delphi Namenskonventionen Um Programmcode transparenter zu machen hat es sich eingeb rgert Bezeichner gem ss gewissen Konventionen zu vergeben Typen werden beispielsweise immer mit einem grossen T begonnen Buchstabenk rzel geben Hinweise auf den Typ ein
102. em Elternobjekt ndern oder verschieben auch die Komponen ten auf dem abgeleiteten Formular sich automatisch mitver schieben Bei der Alltagsarbeit h ufig ben tigte Funktionen zur Komponentenentwicklung und Datenbankpflege ordnete man eigenen Men punkten zu wobei thematisch verwandte Funktionen jetzt zusammengefasst sind So kann man zwischen den Standardelementen Men Schalter Liste u a den Zusatz Steuerelementen Timer Tabelle Spreadsheet u a den grafischen Elementen den Dialogfenster Elementen den Datei und Verzeichnis Aus wahlboxen den Datenbank Steuerelementen und den gleich bin ich fertig durch Visual Basic beliebt gewordenen VBX Controls w hlen Die Gruppen sind durch Hinzuf gen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Einleitung 11 neuer Elemente beliebig erweiterbar wodurch dem erfahre nen Entwickler das Zukaufen von zus tzlichen Controls obwohl m glich von Drittanbietern erspart bleibt Doch Delphi bietet noch wesentlich mehr Jedes der Standardele mente ist sowohl in 2D als auch in 3D verf gbar Wird ein Element auf einer Form plaziert so wird der zugeh rige Quellcode automatisch erzeugt Jedes eingef gte Steuer element ist eine echte Instanz Objekt der zugeh rigen Klasse und der Entwickler hat somit mit Hilfe des Objektin spektors die M glichkeit von dieser alten Klasse eine neue Klasse abzuleiten die Eigenschaften und Methoden des Vorfahren in der Klassenhierarchie
103. en Das Benutzerhandbuch hilft dabei weiter Als n chstes erweitern Sie nun Ihr Formular mit einem Schaltfeld Klicken Sie dazu auf die Komponente Schaltfeld und anschlies send in ihr Formular rmprogl um das Schaltfeld zu plazieren Ein Doppelklick auf die gew nschte Schaltfl che der Komponen tenpalette h tte das Schaltfeld genau in der Mitte des Formulars abgesetzt Da die Komponente zur Zeit ausgew hlt ist sollte sie wie in Abb 7 von acht Quadraten umrahmt sein mit deren Hilfe sich die Gr sse ver ndern l sst DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Installation und Handhabung 30 x Mein erstes Delphi Programm Iof x Caption Ziehmarke Abb 7 Andern der Komponentengr sse Ziehen Sie an der rechten unteren Ecke um den Button zu ver gr ssern Um ihn in der Mitte des Formulars zu zentrieren ben tigen Sie die ALIGNMENT PALETTE Ausrichtungspalette die Sie im Men VIEW finden Mit den zwei Symbolen in der mittleren Kolon ne l sst sich die Schaltfl che zentrieren In Formular zentrieren Abb 8 Ausrichtungspalette Vielleicht haben Sie schon bemerkt dass im Objektinspektor ein neues Objekt namens Buttonl vom Typ TButton erschienen ist Die von der IDE vergebenen Namen sollte man so schnell wie m glich in aussagekr ftigere Bezeichnungen umwandeln Des halb geben Sie nun rechts von NAME gem ss den eingef hrten Namenskonventionen binFarbwechsel ein Unter Caption kommt Formul
104. en Prozeduren und Funkti onen Funktionen unterscheiden sich von Prozeduren dadurch dass sie direkt einen Wert den Funktionswert zur ck liefern Prozeduren tauschen dagegen mit dem restlichen Code Daten nur indirekt aus das heisst ber die Parameter liste Funktionsaufrufe lassen sich deshalb als Teile von An weisungen einsetzen zum Beispiel im rechten Teil einer Zuweisungsanweisung oder als Werteparameter in einem Prozeduraufruf Prozeduraufrufe sind dagegen immer eigen st ndige Anweisungen 8 4 2 Implementierung von Prozeduren Die Implementierung einer Prozedur verbindet einen Be zeichner und einen Anweisungsblock zu einer Prozedur Die generelle Syntax sieht folgendermassen aus Kopf Procedure Prozedurname Parameterliste Deklarationsteil const constl Wert var varl Typl weitere lokale Deklarationen Anweisungsteil begin Anweisungl Anweisung2 end Als konkretes Beispiel sehen Sie hier eine Prozedur die ein Datum initialisiert indem sie die Variablenparameter f r Jahr Monat und Tag setzt DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Prozeduren und Funktionen 118 procedure Init_Datum var Jahr Monat Tag integer begin Jahr 60 Monat 1 Tag 1 end 8 4 3 Implementierung von Funktionen Das reservierte Wort Function definiert einen Programm teil der einen Wert berechnet und als Funktionsergebnis zur ckgibt Der Kopf der Funktion
105. enbankserver erm glicht Durch die Einbindung von Micro softs ODBC Schnittstelle hat man Zugriff auf weitere Daten banken wie z B FoxPro und Access All das macht Delphi 2 meines Erachtens nach zu einem fast konkurrenzlosen Pro dukt Ein weiteres Highlight soll auch der Import von Klassen aus DLLs sein von denen dann weitere Unterklassen abgeleitet werden k nnen Die Unterst tzung der alten und neuen Standards wie DDE und OLE 2 0 geh rt ebenfalls zum Um fang des Systems Konkurrenzlos ist auch die Tatsache dass der in Delphi integrierte Compiler reine EXE Dateien erzeugt die dann keinen Interpreter in Form einer oder meh rerer DLLs mehr brauchen Beeindruckend ist auch die Aus f hrungsgeschwindigkeit der Programme 1 2 4 Kompaktere neue Umgebung Zu den Hauptbestandteilen der Entwicklungsumgebung in Delphi 2 geh rt in erster Linie die sogenannte Speedbar die dem Entwickler in Form von Speedbuttons nicht nur die wichtigsten Funktionen zur Projektverwaltung sondern auch Steuerelemente verschiedener Kategorien zur Verf gung stellt Die Men struktur hat Borland grundlegend berarbei tet Neben neuen Eintr gen liessen sich auch viele Unter punkte neu zusammenfassen und strukturieren Unter dem Men punkt lt File New gt lassen sich die Befehle nun kom pakter abrufen Besonders das abgeleitete Formular ist neu So k nnen Formulare als Elternobjekt dienen mit der Besonderheit dass wenn sich die Komponenten auf d
106. end Dies ist viel klarer als bei jedem Aufruf der Funktion auf Null testen zu m ssen Durch die Verwendung von Exceptions k nnen Sie den normalen Ausdruck Ihres Algorithmus fest legen und f r die Ausnahmef lle vorsorgen Ohne Excepti ons m ssen Sie jedesmal untersuchen ob Sie den n chsten Schritt in der Berechnung auch wirklich ausf hren d rfen 11 1 3 Nochmaliges Ausl sen einer Exception Wenn Ihre lokale Behandlungsroutine die Behandlung abge schlossen hat entfernt sie nat rlich die Exception Instanz und die Behandlungsroutine des umschliessenden Blocks kann nicht mehr aktiv werden Wenn eine Exception auftritt wollen Sie f r den Anwender wahrscheinlich eine Meldung ausgeben und anschliessend mit der Standardbehandlung fortfahren Hierzu definieren Sie eine lokale Exception Behandlungsroutine die die Mel dung anzeigt und danach aufruft Man nennt dies die Excep tion nochmals ausl sen Nach diesem Muster k nnen Sie im Prinzip jede Ausnahmebedingung abfangen Das folgende Beispiel illustriert dieses Verfahren procedureTForml Button4Click Sender TObject var realFloat real begin try Anweisungen try besondere Anweisungen realFloat realFloat 0 except on EZeroDivide do begin Behandlung nur der besonderen Anweisungen MessageDlg EZeroDivideist ausgeldst mtError mbOK 0 DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Exception Handling und RTTI
107. eneherneeeeeneereneehee 128 9 1 Objektorientierte Programmierung ssssssessssssssssssssssssssssessssssssesesesessseseeees 128 9 2 Begtiffsdefiniti nenz trls a sie ee 130 9 2 1 Klassen Felder und Methoden nsnonun anne 130 92 2 InSlanzensa ee ee neue ara drat toeieea tre Beene 130 9 23 ODIERIE nie em CRP CRT ENT RT ORT Rea RT eee 131 9 24 Ei genschafte Gaerne ee aa ee ee 131 9 2 5 Komponenten und OOP auch an caus anaa toh auackactiadas art 132 9 3 Die Syntax einer Klasse severest seiciccsnecte ce setocseaenccte cs netocsesenecbecanntososmesteeseeentecaes 132 DACP OGTR islets Saisie A anna na ae ida ints cia tabula ein are 134 9 4 1 Methoden allgemein rn 2 nn en 135 9 4 2 Konstruktoren und Destruktoren uuuuuuuusnsnunnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 136 9 4 3 Eine eigene Suchmethode erstellen 24444444440000Hnnnnnnn nenn 138 9 5 Die Klasse TAppliealionz 2 ee tere 139 Mb VOrehDUNG ee ee ae 140 9 7 Virtuelle und dynamische Methoden 222444440000n44nnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 141 9 7 1 OW MONO Me ne ee ee ee ove hceeeeeaheasoeacdv ec ceeaee eee 141 9 7 2 Virtuelle Methoden und late DINGING eeeceeeeeeeeeeeeeeeeeeeeeeneeeeeeeeeeeeeeees 141 DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Inhalt 6 SB RERapI U AO mE a ale ee Be lt en al 144 981 Kapitelldst 34204242 Bear 144 10 Eigenschaften und Windows Botschaften uuu
108. ent Server Suite ca 1499 Upgrade Ich m chte hier n her auf den Leistungsumfang der C S Suite eingehen Mit der Delphi 2 C S Suite erhalten Sie ein kom DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Einleitung 12 plettes 32 Bit Client Server Entwicklungssystem das Ihnen einen vollst ndig skalierbaren Datenbankzugriff erm glicht Entwicklern bietet dies folgende Vorteile Entwickeln Sie im Team mit dem integrierten Version Control System Intersolv PVCS Mit dem SQL Database Explorer haben Sie die M glichkeit Server Parameter direkt aus der Oberfl che zu ndern Sie erhalten einen berblick ber Ihre Datenban ken Stored Procedures und Triggers Der SQL Monitor ist in der Lage Interaktionen zwischen ihrer Anwendung und ei nem SQL Server zu berwachen Dadurch k nnen Sie SQL Anwendungen testen und ein Feintuning durchf hren Beim Upsizing Ihrer Datenbank hilft Ihnen der DataPump Experte Dieser Experte ist in der Lage Datenbanken zwi schen Formaten und Plattformen zu skalieren Der Visual Query Builder ist ein visuelles Tool mit dem Sie SQL Abfra gen bersichtlich erstellen k nnen Dabei erstellen Sie mit dem VQBuilder automatisch fehlerfreie manchmal ist ein wenig Feinarbeit schon noch vonn ten ANSI SQL 92 Be fehle F r den Zugriff auf verschiedene Server stehen Ihnen High Performance 32 Bit SQL Links zur Verf gung 16 Bit Entwickler erhalten mit der Delphi 2 C S Suite sowohl die 16 Bit Version al
109. enten angleichen und dann die ganze Gruppe in der Mitte des Formulars plazieren Wenn Sie mehrere Komponenten selektiert haben k nnen Sie nicht nur alle gemeinsam verschieben sondern Sie k n nen auch Eigenschaften bei mehreren Komponenten gleich zeitig ndern Wenn Sie verschiedene Arten von Komponen ten gleichzeitig ausw hlen zeigt der Objektinspektor nur noch jene Eigenschaften an die allen gemeinsam sind F gen Sie zu den drei bestehenden Buttons noch ein Label hinzu 3 Komponente von links im Register STANDARD W hlen Sie mit der Umschalt Taste alle vier Komponenten des Formulars aus Klicken Sie im Objektinspektor auf das Pluszeichen links von der Eigenschaft FONT Tragen Sie in der Wertespalte neben dem neu erschienenen SIZE den Wert 12 ein Die Beschriftung aller ge w hlten Komponenten sollte jetzt in der neuen Schriftgr sse er scheinen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Visuelle Programmierung akWNM E 55 4 2 3 Komponenten l schen Eine oder mehrere Komponenten zu l schen ist genau so einfach wie ihre Erzeugung Sie selektieren eine oder meh rere Komponenten die Sie l schen m chten und dr cken die Taste DELETE Wenn Sie dies r ckg ngig machen m chten w hlen Sie EDIT UnDELETE oder CTRLZ Delphi entfernt nicht nur die Schaltfl chen auf dem Formu lar sondern auch die Eintr ge unter der Typendeklaration von TForm1 im Quellcode Selektieren Sie als erstes die ebe
110. er Variablen oder einer Komponente Weil Ob ject Pascal nicht kontextsensitiv ist kann man auch in die Gross und Kleinschreibung gewisse Informationen verpa cken Reservierte W rter werden beispielsweise immer klein geschrieben Bei Bezeichnern dagegen schreibt man das Typenk rzel am Anfang klein w hrend man den eigenen Teil des Namens mit einem Grossbuchstaben beginnt Da die Bezeichner relativ lang sein d rfen empfiehlt es sich trotz der zus tzlichen Tipparbeit m glichst sprechende Be zeichner auszuw hlen Hier werden nur die gebr uchlichsten in den bungen ver wendeten K rzel erw hnt DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Einleitung 18 arr Array arrMatrix btn Schaltfl che Button btnFarbwechsel btnbit Bitmap Schalter btnbitClose btnradgrp Komponente Radiogroup btnradgrpWoher byt Byte Zahl bytPosition Gar Kardinalzahl carPosition chr Char chrZeichen chx Checkbox Komponente chxGanzesWort dlg Dialogkomponente aAlgSuchen frm Formular frmCloseApp LNE Integer Zahl intAnzahlPersonen bed Label lblHelloWorld man Memo Komponente memEditor mnu Men komponente mnuHauptmenu mnuit Men ltem mnuitLaden pnl Panel Komponente pnlButtons Per Pointer ptrAdresse rec Record recPerson real Realzahl realDistanz set Menge setZeichen Sic ie String strSuchtext Auch Dateinamen werden mit dem Anfangsbuchstaben ge kennzeichnet Projektdateien dpr beginnen mit p z B pApp2_1 dpr und
111. ered a global variable by that code A variable global to one part of a program may be inaccessible to another part of the same program and hence considered local in that context A bitmap that displays on a BitBtn or SpeedButton com ponent with the component s Glyph property Text that gives the name of a routine followed by a list of formal parameters followed in the case of a function by the function s return type In a unit a routine may have a header entered into the interface part and then again in the implementation part The second appearance of the header may be an exact duplicate of the header in the interface part or may be only the name of the routine A programmer defined name for a specific item a con stant type variable procedure function unit program or field The second private part of a unit that defines how the elements in the interface part the public portion of the unit work The assumption of the features of one class by another A variable of an object type Actual memory is allocated The integrated debugger is contained within the Inte grated Development Environment This debugger lets you debug your source code without leaving Delphi The functionality of this debugger can be reached through the Run and View menus The first public part of a unit that describes the con stants types variables procedures and functions that are available within it DELPHI V2 0 Applikationsentwicklu
112. erfolgt im Implemen tationsteil der Unit und ist von zwei Unterschieden abgese hen identisch mit der Implementierung einer normalen Funk tion oder Prozedur 1 Der erste Unterschied besteht darin dass der Metho denkopf im Implementationsteil einen qualifizierten Bezeichner d h dem Namen der zugeh rigen Klasse gefolgt von einem Punkt enth lt Der qualifizierte Be zeichner in Zeile 3 des folgenden Beispiels ist fett mar kiert implementation SR DFM procedure TfrmEditor btnOpenClick Sender TObject 2 Der zweite Unterschied besteht darin dass bei jedem Me thodenaufruf das zugeh rige Objekt implizit bergeben wird Die Methode kann also auf alle Datenfelder eines Objekts zugreifen und Ver nderungen an ihnen vorneh men ohne dass man die Datenfelder in der Parameterlis te bergeben muss Bis jetzt haben Sie in den bungen vor allem eine Art von Methoden kennengelernt n mlich Ereignisbehandlungs routinen Ereignisbehandlungsroutinen sind spezialisierte Methoden die automatisch aufgerufen werden wenn das zugeh rige Ereignis eintritt Ereignisse repr sentieren Akti onen des Benutzers bzw der Benutzerin oder interne Sys temnachrichten die Ihr Programm erkennen kann beispiels weise ein Mausklick F r Ereignisbehandlungsroutinen gibt es also keinen expliziten Methodenaufruf Es kann aber trotzdem vorkommen dass Sie Methoden schreiben m chten die nicht automatisch von Ereignissen ausgel st sonde
113. es Formulars Sie sehen dass die objektorientierte Programmierung das rasche Entwickeln neuer stabiler Applikationen aus vorge fertigten Komponenten erheblich vereinfacht ja vielleicht berhaupt erst m glich gemacht hat 9 3 Die Syntax einer Klasse Damit Sie nicht nur auf vorhandene Klassen zugreifen son dern auch Ihre eigenen Klassen deklarieren k nnen m s sen Sie mit der Syntax einer Klasse vertraut sein Eine Klasse oder einen Objekttyp deklarieren Sie global Eine Klasse kann nicht im Deklarationsteil einer Variablen oder innerhalb einer Prozedur Funktion oder eines Metho denblocks deklariert werden Die Deklaration einer Klasse steht deshalb im Interface Teil einer Unit innerhalb eines mit type eingeleiteten Typendeklarationsteils Das reservierte Wort class nach Typenbezeichner und Gleichzeichen macht ersichtlich dass es sich hier um den Kopf einer Klas sendeklaration handelt Dahinter steht in Klammern der Typ des Vorfahren Klassen bei denen diese Klammer fehlt stammen automatisch von der Urmutter aller Klassen TObject ab Nach diesem Klassenkopf folgt eine meist lange einger ck te Auflistung der dazugeh renden Objektfelder und Metho den Bei den Objektfeldern finden sich die folgenden vier Elemente Feldbezeichner Doppelpunkt Typ des Feldes meist auch eine Klasse und Strichpunkt F r die Methoden wird nur der mit einem Strichpunkt abgeschlossene Metho denkopf also procedure oder function Methodenbe
114. eserviert Dies geschieht erst mit dem Aufruf des Konstruktors Diese spezielle Methode werden Sie im n chsten Unterkapitel kennenlernen 9 4 Methoden Klassen sind eine Art erweiterte Recordtypen Wie diese fas sen sie verschiedenartige Daten zu einer Einheit zusammen Zu Klassen geh ren im Unterschied zu Records aber auch Methoden das heisst Prozeduren und Funktionen die nur f r die Verarbeitung der Daten der zugeh rigen Klasse zu st ndig sind 9 4 1 Methoden allgemein Wie Sie bereits vernommen haben geh rt zu einer Methode erstens eine Methodendeklaration innerhalb der Deklaration der zugeh rigen Klasse im Interface Teil einer Unit und zweitens eine Implementierung im Implementationsteil der selben Unit Die Deklaration einer Methode entspricht etwa der Dekla ration einer Prozedur oder Funktion Allerdings gibt es die folgenden Unterschiede DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Klassen und Instanzen OPOD 131 e F r Methoden ist die Deklaration im Gegensatz zu Proze duren und Funktionen nicht optional sondern zwingend e Die Deklaration einer Methode erfolgt innerhalb der De klaration der zugeh rigen Klasse e Sie kann mit einer der drei Standardanweisungen virtual dynamic oder override versehen sein Mit diesen drei Standardanweisungen dringen wir in fortge schrittene Konzepte von OOP vor Sie m ssen deshalb noch bis zum Kapitel 9 7 warten Die Implementierung der Methode
115. eventuell einer weiteren mit else einge leiteten Anweisung Vor else darf in If Anweisungen nie ein Strichpunkt stehen Die Anweisung im Then Teil wird nur ausgef hrt falls die Bedingung zutrifft Wenn sie nicht zu trifft wird falls vorhanden die Anweisung im Else Teil aus gef hrt Sonst wird die Ausf hrung bei der n chsten Anwei sung nach der If Anweisung fortgesetzt Beispiel f r eine einfache If Anweisung If intZahl gt 8 then intzahl 8 intZahl2 intZahl DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Ablaufsteuerung OU P OD ROD 105 Beispiel flr If Then Else if intzZahl lt 5 then intZahl intZahl 3 else intZahl intZahl 2 Statt einer einzelnen Anweisung k nnen im Then und im Else Teil auch zusammengesetzte Anweisungen der folgen den Art stehen if intZahl lt 5 then begin intZahl2 intZahl intZahl intZahl 3 end else begin intZahl3 intZahl intZahl intZahl 2 end Then und Else Teil r ckt man normalerweise gegen ber dem if um eine Position ein um anzudeuten dass diese zwei Teile dem if untergeordnet sind Dies wird insbeson dere beim Verschachteln wichtig If Anweisungen lassen sich n mlich ber mehrere Ebenen verschachteln Damit dies nicht zu syntaktischer Mehrdeutigkeit f hrt bezieht sich else immer auf das zuletzt angegebene if dem noch kein else zugeordnet ist Im folgenden Codebei
116. ex als dass ein paar Kompo nenten gen gten Um eine Server Anwendung zu schreiben m ssten Sie die Schnittstellen des Common Object Modells verwenden und eigene COM Klassen schreiben Der Ent wickler verf gt trotzdem ber eine erweiterte Funktionalit t die es erlaubt fremde Programme aufzurufen und sie aus der Delphi Applikation heraus zu benutzen Ahnlich wie Mi crosoft setzt auch Borland auf die neue Generation der wie derverwendbaren Komponenten OleCustomControls OCX So ist es z B kein Problem eine Zeitreihe aus einer Paradox 7 Datenbank mit Delphi 2 als Frontend in Excel 7 aufzubereiten 1 2 3 Client Server inside Ein weiteres wichtiges Feature von Delphi ist wie gesagt die Unterst tzung von Client Server Anwendungen Aus diesem Grunde ist auch das Entwicklungssystem in drei Versionen erh ltlich in einer Standard Version einer selbst ndigen Developer Version mit der Local Interbase Engine und einer Client Server Version geb ndelt mit dem eigenen Daten bankserver Interbase 4 0 f r Windows NT und Netware zu s tzlich die SQL Links zur Ankopplung an die Daten bankserver von Oracle das Oracle von Delphi Syba se Microsoft und Informix Von der Konzeption her ist es DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Einleitung 10 nicht verwunderlich dass die Borland Entwickler eine eigene Datenbank Engine integriert haben Sie enth lt die BDE Technologie die Zugriff auf die bereits erw hnten Da t
117. f r jedes Del phi Projekt aufgerufen wird Abgesehen von Anwendungen die einen OLE Automatisierungs Server enthalten f hrt Initialize keinerlei Aktion durch Bei Projekten die keine OLE Automatisierungs Server enthalten k nnen Sie den Aufruf von Initialize ohne Probleme l schen In den n chsten Zeilen erzeugt das Hauptprogramm die zur Anwendung geh rigen Formulare In unserem Fall ist dies bis jetzt nur ein einziges Formular n mlich frmEditor in Zeile 2 und 3 Die Methode CreateForm erzeugt ein neues Formular des Typs der durch den ersten Parameter ange geben wird und weist es der Variablen die durch den zwei ten Parameter gegeben ist zu Der Besitzer des neuen For mulars ist die Instanz Application Das Formular das durch den ersten Aufruf von CreateForm in einem Projekt erzeugt wird wird zum Hauptformular des Projekts Wenn Sie Ihr Programm ausf hren wird die Programmethode Run aufgerufen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Klassen und Instanzen 136 9 6 Vererbung Ein Objekttyp kann Komponenten von einem anderen Klas sentyp erben Die erbende Klasse ist ein Nachkomme die vererbende Klasse ist ein Vorfahr Vererbung ist transitiv wenn z B T3 von T2 erbt und T2 von T1 erbt dann erbt T3 auch von T1 Der Bereich eines Klas sentyps erstreckt sich ber den Klassentyp selbst und alle seine Nachkommen Eine Nachkommenklasse enth lt implizit alle Komponenten die von ihren Vorfahren
118. f und zuklappen l sst aber hinter den einzelnen Men Items steht noch keine Funktionalit t F r das Laden und Spei chern haben wir bereits Routinen geschrieben die Sie nun wie derverwenden k nnen Klicken Sie auf das Ment ltem amp Laden und wechseln Sie im Objektinspektor in das Register EVENTS Statt mit einem Doppelklick eine neue Ereignisbehandlungs routine f r das einzige Ereignis ONCLICK zu erzeugen holen Sie aus der Liste btnOpenClick Auf dieselbe Weise verbinden Sie amp Speichern mit der Routine btnSaveClick Nur f r amp Ende haben wir noch keine Routine weil die entsprechende Schaltfl che diese Funktionalit t bereits eingebaut hat Selektieren Sie deshalb das Ment ltem amp Ende ndern Sie den Namen in mnuitEnde und doppelklicken Sie dann in das Feld neben ONCLICK und tragen Sie die Anweisung close ein Schliessen Sie den Men Editor speichern Sie Ihr Projekt und lassen Sie es laufen 8 5 Forward und External Deklarationen Prozeduren und Funktionen m ssen nicht immer an jenem Ort deklariert werden wo der Routinenkopf steht Stattdes sen kann es sich auch um eine Forward oder eine External Deklaration handeln DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Prozeduren und Funktionen 123 8 5 1 Forward Deklaration Mit der Standard Anweisung forward k nnen Sie eine Pro zedur oder Funktion deklarieren wobei der Anweisungs block erst zu einem sp teren Zeitpunkt definiert werden muss Zw
119. fe unter USING DELPHI BASIC SKILLS WORKING WITH COM PONENTS 4 2 1 Eine Komponente auf einem Formular plazieren Sie haben bereits gelernt wie man eine Schaltfl che auf einem Formular plaziert Das Vorgehen f r andere visuelle Komponenten ist hnlich und umfasst immer die folgenden Schritte 1 W hlen Sie in der Komponentenpalette das Register mit der gew nschten Komponente 2 Selektieren Sie die Komponente indem Sie darauf kli cken 3 Klicken Sie mit der Maus auf jene Stelle des Formulars wo Sie die linke obere Ecke der Komponente haben m chten und ziehen Sie mit gedr ckter Maustaste nach unten rechts bis die gew nschte Gr sse erreicht ist 4 Wenn Sie mit der Plazierung noch nicht zufrieden sind k nnen Sie die Komponente nachtr glich mit gedr ckter Maustaste an jeden beliebigen Ort versetzen Die Gr sse l sst sich mit den Ziehmarken anpassen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Visuelle Programmierung 53 4 2 2 Mehrere Komponenten plazieren Wenn Sie mehrere gleichartige Komponenten auf einem Formular ben tigen dann m ssen Sie die Anweisung oben nur f r die erste Komponente befolgen Alle weiteren k nnen Sie mit EDIT Copy CTRL C kopieren und mit EDIT PASTE CTRL V einf gen 1 W hlen Sie FILE NEW Sie erhalten das Dialogfenster NEw ITEMS Versichern Sie sich dass APPLICATION im Register NEW ausgew hlt ist bevor Sie OK dr cken Wie beim Start von Del phi er
120. g erweitern Sinnvolles Beispiel daf r ist die in Delphi beste hende Exception Klasse EInOutError Type EInOutError Class Exception ErrorCode Integer end Neben allen Elementen der Klasse Exception definiert EInOutError auch noch das Feld ErrorCode das die Fehlernummer der fehlgeschlagenen Ein Ausgabeoperation unter DOS enthalt 11 3 Run Time Type Information Typinformation zur Laufzeit Diese aus der C Welt ererbte Gut bringt eine enorme Fle xibilisierung mit sich Delphi gibt den Programmen zur Lauf zeit Zugriff auf Informationen Uber den Objekttyp Insbeson dere kann man den neuen Operator is benutzen um zu bestimmen ob ein gegebenes Objekt von einem gegebenen Typ oder einer seiner Nachkommen ist 11 3 1 Der Operator is Der Operator is erm glicht dynamische Typ berpr fungen Mit dem is Operator k nnen Sie berpr fen ob der aktuelle zur Laufzeit vorliegende Typ einer Objektreferenz DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Exception Handling und RTTI 163 zu einer bestimmten Klasse geh rt Die Syntax des is Operators lautet wie folgt ObjectRef is ClassRef Dabei ist ObjectRef eine Objektreferenz und ClassRef eine Klassenreferenz Der is Operator liefert einen Boole schen Wert Das Ergebnis ist True wenn ObjectRef eine Instanz der ber ClassRef angegebenen Klasse oder einer davon abgeleiteten Klasse ist Andernfalls ist das Ergebnis False Enth lt Object
121. ge Methode ermittelt Dies spielt vor allem dort eine Rolle wo die Methode einer Instanz aus der Methode eines Vorfahren heraus aufgerufen wird Virtuelle Methoden und sp tes Binden late binding Bei virtuellen Methoden steht nach der Deklaration der Befehl virtual Eine Referenz auf eine virtuelle Methode wird nicht schon w hrend der Compilierung sondern erst w h rend der Laufzeit in Abh ngigkeit vom Objekttyp aufgel st Tabelle virtueller Methoden virtual method table VMT Das sp te Binden ist nur m glich weil f r jede Klasse eine Tabelle virtueller Methoden aufgebaut wird welche die Ad ressen aller virtuellen Methoden dieser Klasse verwaltet Dynamische Methoden Bei dynamischen Methoden steht nach der Deklaration der Befehl dynamic Dynamische Me thoden verwendet man genau gleich wie virtuelle Sie unter scheiden sich von diesen nur durch den Zuteilungsmecha nismus der dazu f hrt dass dynamische Methoden weniger Arbeitsspeicher als virtuelle ben tigen ihre Zuteilung dage gen etwas langsamer ist DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Klassen und Instanzen 126 Viele dieser Konzepte werden erst im Laufe des Kapitels und anhand konkreter Beispiele klarer werden 9 2 Begriffsdefinitionen Im folgenden werden einige Grundbegriffe der OOP noch vertieft erkl rt 9 2 1 Klassen Felder und Methoden Der Begriff Klasse wird in diesem Skript wie in den Delphi Handb chern synonym zu Objektt
122. gs System _4 Abb 19 Das Register DATA ACCESS Weil Datenbankprogrammierung kein Thema dieses Kurses ist sondern erst im Delphi Aufbaukurs vorkommt werden die Komponenten dieses Registers nicht einzeln vorgestellt 4 4 5 Die Komponenten des Registers Data Controls Die Komponenten im Register DATA CONTROL der Kompo nentenpalette stellen Ihren Delphi Anwendungen spezielle Datenbank Steuerelemente bereit DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Visuelle Programmierung 64 Standard Additional Wires DataAccess Data Controls win 3 1 Dialogs System _4 gt Abb 20 Das Register DATA CONTROL F r dieses Register gilt wie f r das vorangehende dass die einzelnen Komponenten nicht vorgestellt werden weil sie nur f r die nicht behandelte Datenbankprogrammierung not wendig sind 4 4 6 Die Komponenten des Registers Win 3 1 Die Komponenten im Register WIN 3 1 der Komponentenpa lette stellt Ihren Delphi Anwendungen Windows3 1 Steuer elemente zur Verf gung BEE a win95 Data Access Data Controls Win 3 1 Dialogs System _4 gt Abb 21 Das Register Win 3 1 Die Komponenten dieses Registers sichern vor allem die Kompatibilit t mit Windows 3 1 und Delphi 1 0 F r Win dows95 und NT Anwendungen sollte man dieses Register nicht verwenden sondern die neuen Komponenten im Re gister W n95 oder DATACONTROLS benutzen D
123. h benutzerdefinierter Botschaften die man an ein bestimmtes Objekt leitet in Methodenaufrufe bersetzt Es sollte niemals never say never notwendig sein dass Sie dieses Botschaftszuteilungssystem ndern m ssen Ihre Aufgabe besteht nur darin ad quate Botschaftsbehand lungsmethoden zu erzeugen d h die Reaktion auf die Nach richt zu bestimmen Der gr sste Vorteil dieses Botschaftszuteilungssystems liegt jedoch darin dass Sie jede beliebige Botschaft an jede beliebige Komponente zu jeder beliebigen Zeit senden k nnen Besitzt die Komponente keine f r die Botschaft de finierte Behandlungsroutine wird die Standardbehandlung wirksam DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Eigenschaften und Windows Botschaften 150 10 2 4 Was enth lt eine Windows Botschaft Eine Windows Botschaft stellt einen Daten Record vom Typ TMessage dar der verschiedene n tzliche Felder enth lt Das wichtigste Feld ist ein Integer Wert der die Botschaft identifiziert Windows definiert sehr viele Botschaften und die Unit Messages deklariert Bezeichner f r jede dieser Botschaften Weitere n tzliche Informationen einer Nachricht befinden sich in zwei Parameterfeldern und in einem Ergeb nisfeld Der Windows Programmcode bezieht sich h ufig auf diese Werte als wParam und 1Param also word parame ter und long parameter siehe Abb 26 In vielen Fallen enthalt jeder Parameter mehr als nur eine Information d Urspr ngli
124. h ge ffneten Ordner doppelklickt oder indem man das gleichnamige Icon unter Start in der Task Leiste anklickt W hrend des Ladens wird die Entwicklungs umgebung gleichzeitig in die Task Leiste aufgenommen 2 2 Die Delphi Oberfl che Delphi besteht aus der Entwicklungsumgebung und einigen externen Tools Die Entwicklungsumgebung heisst in Eng lisch Integrated Development Environment oder abge k rzt IDE Nach dem Start der Entwicklungsumgebung sieht man wie in Abb 3 jene Elemente der Delphi Oberfl che die man f r die Erstellung von Windows Applikationen am h ufigsten ben tigt DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Installation und Handhabung Symbolleiste Objektinspek tor Komponenten palette Quelltexteditor Formular 24 i Delphi 2 0 Projecti File Edit Search View Project Run Component Database Tools Help Standard Additional Win95 Data Access Data Controls Win 3 1 Dialogs System QReport OCX Samples Unitli pas orm TForm Properties Events unit Uniti ClientHeight _ Clientwidth interface ses Windows Messages SysUtils Classes Graphics Controls Forms Dis type private Private de public j Public deci end Formi TForm1 implementation R DFM MStart GY Explorer C Delphi20E5 BY Microsoft Word Text Ku _4C Deiphi20E Delphi 2 0 fit Deiphi 2 0 T SING 17 Abb 3 Die Entwicklungsumgebung von Delphi
125. halten Sie ein neues Projekt mit einem leeren Formular 2 W hlen Sie im Register STANDARD die bereits bekannte But ton Komponente und plazieren Sie sie in der oben beschrie benen Art im Formular 3 Dr cken Sie CTRL C 4 Driicken Sie anschliessend CTRL V 5 Bewegen Sie die kopierte Schaltfl che an den gew nschten Ort im Formular 6 Wiederholen Sie Schritt 4 und 5 Sie haben jetzt ein Formular mit drei Schaltfl chen Delphi hat sie selbst ndig Button1 Button2 und Button3 benannt und f hrt sie unter diesen Namen in der Liste des Objektse lektors Beschriftet sind allerdings alle drei mit Button1 Es gibt noch eine zweite elegante Art mehrere gleichartige Komponenten in einem Formular zu plazieren Wenn Sie bei der Auswahl der Komponente in der Komponentenpalette die UMSCHALT Taste gedr ckt halten dann erh lt das Symbol der Komponente einen blauen Rand und jedes Kli cken ins Formular erzeugt von da an ein neues Exemplar dieser Komponente Aufheben k nnen Sie diese Mehrfach funktion wenn Sie in die Komponentenpalette klicken Sie k nnen bestimmte Aktionen an mehreren Komponenten gleichzeitig vollziehen Dazu m ssen Sie aber erst mehrere Komponenten ausw hlen Klicken Sie auf Button1 Halten Sie die UMSCHALT Taste ge dr ckt und klicken Sie auf Button2 und dann auf Button3 Die grauen Rechtecke in den vier Ecken einer Komponente zeigen Ihnen dass sie ausgew hlt ist Fahren Sie mit der Maus ber eine de
126. he innerhalb der Case Anweisungen d rfen sich also nicht berlappen Der Typ der Case Konstanten muss ein ordina ler Typ und mit dem Typ des Selektors kompatibel sein Es ist zwar nicht zwingend f hrt aber zu schnelleren Program men wenn Sie die Case Konstanten in aufsteigender Rei henfolge angeben Die Case Anweisung f hrt genau eine mit einer Case Konstanten markierte Anweisung aus und zwar diejenige deren Case Konstante mit dem Wert des Selektors berein stimmt Statt einer einzelnen Anweisung kann nach der Kon stanten wie im Then und Else Teil einer If Anweisung eine zusammengesetzte Anweisung stehen Im Gegensatz zur If Anweisungen ist es deshalb bei einer Case Anweisung m g lich dass vor einem else ein Strichpunkt steht F r eine Zahl vom Typ Cardinal l sst sich das erste Co debeispiel mit den verschachtelten If Anweisungen Seite 107 auch als Case Anweisung der folgenden Art formulieren Case carZahl of 0 3 carZahl carZahl 4 carZahl 2 carZahl else carZahl 3 carZahl end Wenn es m glich ist verschachtelte If Anweisungen als Ca se Anweisungen zu formulieren dann ist letzteres vorzuzie hen weil es den Code lesbarer macht DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Ablaufsteuerung For to downto do While do Repeat until 108 7 4 Schleifen Programmierung Schleifen englisch loops erm glichen es eine oder meh rere Anweisungen wiederholt
127. hleife in Ihr Editor Programm einbauen ffnen Sie das Editor Projekt und f gen Sie einen weiteren Button in Ihr Hauptformular ein Nennen Sie diesen Button binZeilenNr und beschriften Sie ihn mit Zeilennummern anzeigen Verlangern Sie den Button bis die ganze Beschriftung sichtbar ist DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Ablaufsteuerung oOoONOOUOIP OD 109 Erg nzen Sie die Ereignisbehandlungsprozedur f r ONCLICK die ses Buttons mit folgender If Anweisung If btnZeilenNr caption Zeilennummern anzeigen then begin btnZeilenNr caption Zeilennummern l schen end else begin btnZeilenNr caption Zeilennummern anzeigen end Setzen Sie die Eigenschaft VISIBLE des neuen Buttons auf false Suchen Sie im Quelltexteditor die Prozedur TfrmEditor btn OpenClick und f gen Sie im Then Teil von deren If Anweisung folgende Anweisung an binZeilenNr Visible true F hren Sie das Programm in diesem Zustand aus ffnen Sie eine Datei und testen Sie was die If Anweisung ihres neuen Buttons bewirkt Wenn Sie alles richtig gemacht haben ist der neue Knopf so lange unsichtbar bis Sie eine Datei ffnen Wenn Sie ihn nun mehrmals anklicken wechselt die Beschriftung Der Zweck dieses Knopfes ist es vorne an jede Zeile eine Zei lennummer anzuf gen Dazu verwenden Sie einen Z hler und eine For Schleife Fahren Sie folgendermassen fort Gehen Sie zur ck zu der neuen Prozedur TfrmEditor btn
128. htet und ein For mular Form1 angelegt W hlen Sie jetzt RUN im Men RUN o der dr cken Sie F9 damit dieses Projekt kompiliert und ausge f hrt wird Mit diesem Tastendruck haben Sie Ihr erstes Delphi Programm erstellt Es ist zwar noch absolut nutzlos aber es l sst sich bereits wie jedes Programm unter Windows 95 verkleinern vergr ssern auf dem Bildschirm herumschieben und schliessen Testen Sie es Um mit der Programmierung weiterzufahren m s sen Sie Ihre Anwendung auf jeden Fall schliessen Der Objektin spektor steht zur Laufzeit n mlich nicht zur Verf gung Mit dieser bung haben Sie auch bereits mit dem integrier ten Debugger Bekanntschaft gemacht Es ist Ihnen vermut lich gar nicht aufgefallen denn wie der Name es schon sagt ist der Debugger nahtlos in die Entwicklungsumgebung in tegriert so dass Sie ihn beim Kompilieren fehlerfreier Pro gramme gar nicht bemerken Bei der Fehlersuche werden Sie seine Dienste u a Syntax berwachung und Halte punkte bald sch tzen lernen 2 3 2 Der Objektinspektor Wenn Sie an ihrem Programm weiterarbeiten m chten dann ben tigen Sie dazu als n chstes den Objektinspektor Mit diesem Element lassen sich Darstellung und Eigenschaften von Formularen und darauf enthaltenen Komponenten w h rend des Entwurfs anpassen Eigenschaften die nur zur DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Installation und Handhabung Objektselektor Register Properties Eigen
129. i allen Anderungen der Projektoptionen aktualisiert Bin rdatei die das Anwendungs Icon und andere im Projekt verwendete externe Ressourcen enth lt In dieser Datei werden die Desktop Einstellungen gespei chert die Sie f r das Projekt im Dialogfenster Umgebungs optionen angegeben haben Kopie der DPR PAS und DFM Dateien wie sie vor dem letzten Speichern existierten DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Installation und Handhabung EXE Kompilierte aus fuhrbare Datei DCU Unit Objekt Code DLL Kompilierte dynami sche Link Bibliothek BMP Bilddateien WMF ICO Icons HLP Windows Hilfedateien 36 Vom Compiler erstellte Dateien gibt es die folgenden Dies ist die vertreibbare ausf hrbare Datei Ihrer An wendung In sie werden alle notwendigen DCU Dateien beim Kompilieren Ihrer Anwendung aufgenommen Ihre An wendung kann also ohne weitere DCU Dateien vertrieben werden Beim Kompilieren wird f r jede PAS Datei Ihres Projekts ei ne DCU Datei erzeugt Information ber die Erzeugung von DLLs entnehmen Sie bitte dem Delphi Komponentenhandbuch Dazu kommen noch die nicht von Delphi erstellten Dateien Die Bitmaps BMP WMF Dateien k nnen Sie in Kompo nenten vom Typ TImage oder TBitBtn verwenden Sie werden in die ausf hrbare Datei des Projekts aufgenom men Icons k nnen Sie im Dialogfenster Projektoptionen oder f r ein Formular als Merkmal angeben Wie B
130. i durch die Benutzer definierbare Von den zehn vordefinierten Typen geh ren f nf zu den Integer Typen vier zu den Booleschen Typen Char ist eine eigene Kategorie 6 2 1 Integer Typen Integers sind Ganzzahlen Object Pascal unterscheidet ab h ngig von Vorzeichen und Bereich die folgenden f nf fun damentalen und zwei generischen Integer Typen diese Un terscheidung wird in Kapitel 6 5 2 erkl rt DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen shortint smallint longint byte word generische Typen integer cardinal Bereich 128 127 32 768 32 767 2 147 483 648 2 147 483 647 Ors 255 0 65 535 32 768 32 767 oder 2 147 483 648 2 147 483 647 0 65 535 oder 0 2 147 483 647 84 Format 8 bit mit Vorzeichen 16 bit mit Vorzeichen 32 bit mit Vorzeichen 8 bit ohne Vorzeichen 16 bit ohne Vorzeichen 16 bit mit Vorzeichen 32 bit mit Vorzeichen 16 bit ohne Vorzeichen 32 bit ohne Vorzeichen Sie k nnen durch Typumwandlung Werte vom Typ Integer explizit in einen anderen Integer Typ konvertieren Die Deklaration von Integer Variablen k nnte etwa so aus sehen Var intTemperatur bytZaehler carBillGatesGehalt 6 2 2 Boolesche Typen integer byte cardinal Werte vom booleschen Typ k nnen nur einen der vordefi nierten Konstantenbezeichner False oder True annehmen False entspricht dabei dem Wert 0 und True dem
131. iben Sie folgende Zeile if dlgSaveText Execute then memEditor Lines Save ToFile digSave Text FileName 17 In der SaveDialog Komponente k nnen Sie die Eigenschaft OPTIONS durch Doppelklicken vergr ssern um die einzelnen Felder ein und auszuschalten Stellen Sie so sicher dass vor dem Uberschreiben einer Textdatei eine Kontrollfrage er scheint 18 Mit F9 testen Sie Ihr Programm Ihr Windows Programm l uft nun ab bis Sie es mit ENDE oder ALT E schliessen Es gibt nun verschiedene Techniken dieses Programm wei ter auszubauen und zu verbessern wie etwa die Ver wendung eines Men s von Suchroutinen Ausnahmebe handlungen oder Zugriffsroutinen auf die wir im Verlauf die ses Kurses im Zusammenhang mit Object Pascal noch zu sprechen kommen 4 6 Modale und nichtmodale Dialogfenster Am Editor Projekt l sst sich auch gerade der Unterschied zwischen modalen und nichtmodalen Dialogfenstern er kl ren Die zwei Komponenten OPENDIALOG und SAVEDIALOG ffnen n mlich zwei modale Dialogfenster Ein modales Dialogfenster muss geschlossen werden bevor man wieder zur ck zum aufrufenden Fenster gelangt Sie k nnen dies ausprobieren indem Sie Ihr Editor Programm laufen lassen den Speichern Button bet tigen und versu chen das Hauptformular anzuklicken solange der Spei cherdialog ge ffnet ist Wie Sie sehen ist ein Wechsel zwi schen den Fenstern den Sie aus anderen Anwendungen kennen mit einem modalen Fenster nicht m glich
132. ibt hier freundlicherweise das Formular an das zu einer Unit geh rt Jedes Formular hat n mlich seine eigene Unit Zeile 7 enth lt einen Compiler Befehl in englisch compiler directive genannt Compiler Befehle sind spezielle An weisungen f r den Compiler obwohl sie sich wie Kom mentare in geschweiften Klammern befinden Das von ei nem Buchstaben gefolgte Zeichen das eventuell noch von einem Dateinamen erg nzt wird unterscheidet die Direktive von einem gew hnlichen Kommentar SR RES gibt an dass alle Ressourcendateien im Projektverzeichnis mit der Endung res in das Programm aufgenommen werden sollen Das reservierte Wort begin in Zeile 9 leitet die An weisungen des Hauptprogramms ein Das von einem Punkt gefolgte end in Zeile 14 ist das Gegenst ck zu begin und bildet den Schlusspunkt der Applikation Dazwischen befin den sich drei Anweisungen mit denen die Applikation initiali siert erstellt und aufgerufen wird Erst das Kapitel ber Klassen und Instanzen wird dazu weitere Erkl rungen lie fern Im Hauptprogramm sieht man bereits die klassische Zweitei lung die auch bei den Units vorhanden ist und eine grund legende Charakteristik von Object Pascal darstellt Jeder DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programme und Units 44 Object Pascal Block das Konzept Block finden Sie in Ka pitel 7 weist einen optionalen Deklarationsteil und einen Anweisungsteil auf Wenn es einen D
133. ich auf alle Pro gramme die sich der Unit bedienen Mit anderen Worten wird ein Bezeichner im interface Abschnitt einer Unit dekla riert ist er f r andere Programme und Units verf gbar die in ihren uses Anweisungen die Unit mit dem betreffenden Be zeichner angeben Die erste Unit in der uses Anweisung stellt den ussersten G ltigkeitsbereich dar die letzte Unit den innersten G ltig keitsbereich Wenn ein Bezeichner in mehreren Units dekla riert wird folgt daraus dass eine unqualifizierte Referenz auf den Bezeichner diejenige Instanz ausw hlt die von der zu letzt aufgef hrten Unit in der uses Anweisung deklariert wurde Vermeiden Sie also beim Design von Units doppelte Bezeichner Um eine Instanz auszuw hlen die in einer an deren Unit deklariert wurde verwenden Sie einen qualifizier ten Bezeichner d h einen Unit Bezeichner mit nachfolgen dem Punkt und dem Bezeichner Der G ltigkeitsbereich der System Unit ist global so dass jedes Programm Zugriff auf die Standardbezeichner von Ob ject Pascal hat Die System Unit muss nicht in der uses Anweisung angegeben werden 12 2 4 Sichtbarkeit von Interface und Standardbe zeichnern Programme oder Units die Uses Anweisungen enthalten haben Zugriff auf die Bezeichner die im Interface Teil der dort genannten Units deklariert sind Jede in einer Uses Anweisung angebene Unit ergibt einen neuen G ltigkeitsbe reich der die verwendeten Units und das Programm oder
134. ie Eigenschaft GLYPH Ein GLYPH ist eine Grafik die bis zu vier verschiedene Darstellungsformen eines Bitmap Schalters in einem einzigen Bitmap speichert Klicken Sie in die Wertespalte neben der Eigenschaft GLYPH Rechts er scheint wie bei FONT eine Schaltfl che mit drei Punkten Wenn Sie diese anklicken erscheint ein Dialogfenster Picture Edi tor Dabei handelt es sich nicht um den bereits erw hnten Bildeditor mit dem Bitmaps und Icons bearbeitet werden k n nen Der Picture Editor erlaubt es nur f r bestimmte grafische Komponenten Bitmaps zu laden 7 Klicken Sie auf LOAD und wechseln Sie ins Windows Verzeichnis Dort sollten diverse kleine Bitmaps vorhanden sein W hlen Sie Karo bmp oder eine beliebige andere Datei und klicken Sie dann auf OFFNEN Beendet wird die Aktion in dem Sie im Picture Editor OK dr cken Wenn Sie erfolgreich waren dann erscheint auf dem Bitmap Schalter links von der Beschriftung die ausgew hlte Grafik 8 Wechseln Sie ins Register EVENTS Doppelklicken Sie in die Wertespalte neben dem Ereignis ONCLICK 9 Wie Sie bereits wissen wechselt Delphi in den Quelltexteditor und erstellt f r Sie den Kopf einer Prozedur zur Behandlung dieses Ereignisses Geben Sie die folgenden zwei Zeilen ein MessageDlIg Applikation schliessen mtInformation mbOK 0 Close Als n chstes k nnen Sie Ihr Projekt testen Zuerst speichern Sie aber die Unit mit FILE SAVE FILE As unter dem Dateinamen UCl
135. ie Win 3 1 Komponenten werden deshalb nicht einzeln vorgestellt Falls Sie Informationen ben tigen k nnen Sie wie bei jeder Kom ponente das Icon anklicken und F1 dr cken um die ent sprechende Seite in der Online Hilfe aufzurufen 4 4 7 Die Komponenten des Registers Dialogs Die Komponenten im Register DIALOGS der Komponenten palette stellen Ihren Delphi Anwendungen die Standard dialoge der Windows Oberfl che zur Verf gung Diese Standarddialoge bieten zusammen eine einheitliche Schnitt stelle f r die Dateiverwaltung also f r Operationen wie das Offnen Speichern und Drucken von Dateien Standard Additional Win95 Data ae Data Controls Win 3 1 Dialogs System 4 Abb 22 Das Register DIALOGS DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Visuelle Programmierung OPENDIALOG SAVEDIALOG ET Ih i E FONTDIALOG COLORDIALOG PRINTDIALOG PRINTERSETUPDIALOG 5 w el E FINDDIALOG at REPLACEDIALOG 65 Ein Standarddialogfenster wird ge ffnet wenn dessen Me thode Execute aufgerufen wird Jede der Standarddialogkomponenten ausser der Kompo nente zur Druckereinrichtung PRINTERSETUP hat eine OP TIONS genannte Gruppe von Eigenschaften die Sie mit dem Objektinspektor bearbeiten k nnen Die Eigenschaften der Options Gruppe betreffen Erscheinungsbild und Verhalten der Standarddialoge Sie k nnen die einzelnen Eigen schaften und ihre Belegung durch einen Doppelklick auf OP TIONS
136. ie in den Zeilen 13 bis 15 nach der Zeigervariablen anf gen Bevor man Zeiger dereferen zieren kann muss man sie allerdings erst mit der Prozedur New erzeugen wie dies in Zeile 11 und 12 geschieht Nach Gebrauch oder sp testens bei Programmende sollte man den f r die dynamische Variable reservierten Speicher mit der Prozedur Dispose wieder freigeben siehe Zeile 18 und 19 Typen Variablendeklaration und Verwendung f r Zeiger typen sehen folgendermassen aus type TptrAdresse TrecAdresse TrecAdresse record strName string strOrt string end var ptrString string ptrAdresse TptrAdresse begin new ptrString new ptrAdresse ptrAdresse strName Meinname ptrString Keine Adresse ptrAdresse strOrt ptrString lblTest caption ptrAdresse strName DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen 1 18 19 20 98 ptrAdresse strOrt dispose ptrAdresse dispose ptrString end Wenn Sie Zeiger auf einen eigenen Typ erstellen wollen dann m ssen Sie wie Zeile 3 bis 6 diesen Typ innerhalb der gleichen Typendeklaration definieren Das reservierte Wort nil bezeichnet eine Zeigerkonstante die auf nichts zeigt Unter Delphi 2 0 hat die Bedeutung von selbstdeklarierten Zeigern abgenommen denn es stehen mit Objekten und den langen Strings Sprachelemente zur Verf gung die den Speicher automati
137. ignis ONMOUSEMOVE reagiert An den Einr ckungen erkennt man dass diese Prozedur zur Klasse TfrmMauslauf geh rt Komponenten sind n mlich in Delphi Klassen bzw Objekte Wie Sie bereits geh rt ha ben nennt man eine Prozedur oder Funktion die zu einer Klasse geh rt Methode Die Implementierung der Methode FormMouseMove befindet sich im Implementationsteil Die Methodendeklaration im Interface Teil und der Kopf der Me DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Visuelle Programmierung 59 thode im Implementationsteil sind mit Ausnahme des Quali fizierers TfrmMauslauf identisch Der Name des Komponententyps gefolgt von einem Punkt ist als Qualifizierer notwendig um Methoden verschiedener Komponenten zu unterscheiden die auf dieselben Ereignis se reagieren Funktionen Prozeduren oder Methoden ben tigen beim Auf ruf h ufig zus tzliche Informationen Diese Informationen liefert man in Form von Parametern In der Klammer nach dem Methodennamen folgt deshalb eine Liste der ber gebenen Parameter An erster Stelle kommt der Parameter Sender vom Typ TObject der Delphi dar ber orientiert welche Komponente das Ereignis empfangen und infolgedessen die Ereignis behandlungsroutine aufgerufen hat Der zweite Parameter shift gibt bei Tastatur und Mauser eignissen den Status der Maustasten und der Tasten ALT CTRL und UMSCHALT an Die n chsten zwei Parameter X und Y geben die relative Position der Ma
138. ihe von Seiten die f r die Erstellung mehrseitiger PAGECONTROL Dialogfelder verwendet wird i Steuerung und Anzeige eines Strukturbaums d h der logi e TREEVIEW schen hierarchischen Beziehung einer Reihe von Objekten Anzeige einer Liste in Spalten kann Daten in verschieden LISTVIEW sten Ansichten anzeigen I Bilderliste d h Sammlung von Bildern gleicher Gr sse von IMAGELIST denen jedes ber seinen Index erreicht werden kann DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Visuelle Programmierung 63 berschriftensteuerung mit der Sie oberhalb von Text o HEADERCONTROL der Zahlenspalten eine berschrift anzeigen k nnen Steuerung f r formatierte Memos im Rich Text Format m EI RICHEDIT Tl Statusleiste zur Angabe des Zustands von Aktionen im un ae Steuerbalken mit Schieberegler zur Anzeige und Ver nde site TRACKBAR rung eines Wertes Fortschrittsanzeiger mit dem man die Benutzer innen ber PROGRESSBAR den Fortgang eines Ablaufs orientiert Pfeiltasten f r das Erh hen und Vermindern von Werten UPDown Steuerung die ein Tastenk rzel mit einer Komponente ver JAK Di HOTKEY indet 4 4 4 Die Komponenten des Registers Data Access Die Komponenten im Register DATA ACCESS der Komponen tenpalette erlauben Ihren Delphi Anwendungen den durch spezialisierte Steuerelemente kontrollierten Zugriff auf Da tenbanken Standard Additional wings Data Access Data Controls Win 3 1 Dialo
139. ikationsentwicklung mit Delphi DEL Eigenschaften und Windows Botschaften 146 Grund besitzen solche Bibliotheken auch einen besonderen amp Namen der mit dem Begriff DLL einhergeht und f r Dy namic Link Library Dynamische Laufzeitbibliothek steht DLLs f r Windows besitzen blicherweise die Dateinamen erweiterungen EXE DLL oder DRV Zur ersten Gruppe ge h ren die Bibliotheken KRNLx86 EXE USER EXE und GDI EXE welche eigentlich schon das ganze Windows ver k rpern In KRNLx86 EXE finden Sie berwiegend Funktionen die Windows zur System und Speicherverwaltung ben tigt Da gegen beinhaltet USER EXE haupts chlich Funktionen zur Darstellung und Verwaltung von Fenstern oder Men s Sie d wissen ja dass Windows jeden Button jedes Steuerelement Atom Management Funktionen oder Kontrollfeld allgemein als Fenster verwaltet In der drit ten Systemlibrary GDI EXE finden Sie Graphik und Ausga befunktionen f r Fenster Nun wollen wir uns erst einmal prim r mit folgender Frage besch ftigen Warum lassen sich API Funktionen ohne wei teres innerhalb unseres Programms aufrufen Solange es sich bei den ben tigten API Aufrufen um die er w hnten Hauptbibliotheken handelt reicht es aus wenn Sie die Unit windows in Ihr Programm einbinden da in deren Interface Teil alle ben tigten Deklarationen codiert sind Somit k nnen Sie anschliessend alle Funktionen in Ihrem Programm aufrufen als w ren Sie im Sprachu
140. im Fenster des Objektinspektors anzeigen lassen Windows Standarddialog zum ffnen einer Datei Windows Standarddialog zum Speichern einer Datei Windows Standarddialog zur Auswahl von Schriftarten Windows Standarddialog zur Auswahl von Farben Windows Standarddialog zur Steuerung des Druckvorgangs Windows Standarddialog zur Druckereinrichtung Windows Standarddialog zur Suche von Text in einer Datei Windows Standarddialog zum Ersetzen eines gesuchten Textstrings 4 4 8 Die Komponenten des Registers System Die Komponenten im Register SYSTEM der Komponenten palette stellen Ihren Delphi Anwendungen bestimmte Steu erelemente zur Systemkontrolle zur Verf gung Additional Win95 Data Data Controls Win 3 1 Dialogs System lt gt Abb 23 Das Register SYSTEM Im Register System lernen Sie nur die erste Halfte der Kom ponenten kennen denn die Komponenten auf der rechten DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Visuelle Programmierung EA 7H TIMER PAINTBOX FILELISTBOX DIRECTORYLISTBOX DRIVECOMBOBOX FILTERCOMBOBOX MEDIAPLAYER 66 Seite dienen f r DDE und OLE Diese zwei Themen behan delt erst der Aufbaukurs nicht sichtbare Komponente welche die Verkn pfung von Ereignissen mit zeitlichen Intervallen erlaubt rechteckiger Bereich innerhalb eines Formulars zur Ab grenzung f r in diesem Bereich geplante Zeichen bzw Malaktionen durch die Anwendung Anzeig
141. ischen der Forward Deklaration und der Definition der Prozedur ist die Deklaration anderer Prozeduren und Funk tionen m glich Auf diese Weise ist eine Rekursion der sich berkreuzende Bezug zwischen mehreren Prozeduren rea lisierbar Nach der Forward Deklaration muss die Prozedur oder Funktion durch eine Deklaration des Anweisungsblocks der Routine definiert werden Diese Deklaration kann die Para meterliste des Prozedur oder Funktionskopfs entbehren 8 5 2 External Deklaration ber die Standard Anweisung external ist Ihr Programm in der Lage mit gesondert kompilierten Prozeduren und Funktionen zu arbeiten die in Assembler geschrieben wur den oder sich in DLLs befinden In Prozeduren und Funktionen die aus DLLs importiert wur den nimmt die External Anweisung den Platz einer Dekla ration sowie der Anweisungsteile ein die ansonsten vor handen w ren Der externe Code wird mit der Pascal Unit oder dem Programm ber die Compilerdirektive L gelinkt 8 6 Rekapitulation 8 6 1 bung8_1 Schreiben Sie eine Prozedur die f r einen Zahlenarray array 1 10 of integer die folgenden drei Werte als Integer Zahlen zur ckliefert Durchschnitt Minimum und Maximum Benutzen Sie f r die Prozedur einen offenen Ar ray Parameter damit sich auch Arrays anderer L nge ber geben lassen siehe unter open array parameters in der Online Hilfe DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Klassen und Instanzen
142. itmap Dateien werden sie in das Projekt aufgenommen BMP und ICO Dateien lassen sich mit dem Bildeditor von Delphi erstellen Im Dialogfenster Projektoptionen k nnen Sie f r ein Projekt eine Online Hilfedatei angeben Die HLP Datei kann mit dem mit Delphi ausgelieferten Microsoft Hilfe Compiler oder einem Hilfekompiler eines anderen Drittanbieters erstellt werden Sehen Sie sich die Dateien Ihres Projektes an Wechseln Sie da zu in den Explorer und suchen Sie den Ordner mit ihren Projekt dateien Falls die Endungen nicht angezeigt werden k nnen Sie dies ndern indem Sie im Men ANSICHT auf Optionen klicken das Register ANSICHT w hlen und das Kreuzchen bei Keine MS DOS Erweiterungen entfernen Fasst man die Beziehung der wichtigsten Dateien eines Pro jektes in einer Grafik zusammen dann ergibt sich das Bild in Abb 12 DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Installation und Handhabung 37 Projekt IS Unit PAS Formular i EXE oder DLL Abb 12 Die wichtigsten Dateien eines Projektes 2 6 Der integrierte Debugger Gleichg ltig wie sorgf ltig Sie beim Schreiben des Quell textes vorgehen Ihre Programme werden vermutlich Fehler bugs enthalten die verhindern dass die Programme so ausgef hrt werden wie Sie es w nschten Den Prozess des Aufsp rens und Behebens dieser Fehler nennt man De bugging Es gibt drei Arten von Fehlern e Syntaxfehler e Laufzeitfehler Logisch
143. jekt und suchen Sie im Quelltexteditor die Methode TfrmEditor btnZeilenNrClick an der Sie im Kapitel 7 gearbeitet haben Plazieren Sie die folgende Funktion unmittelbar vor dieser Metho de Sie m ssen die Funktion vor die Methode setzen weil Sie sie in der Methode aufrufen m chten und Routinen nur vom Ort ihrer Deklaration bis zum Ende Blocks g ltig sind function StringNachZeichen strQuelle string chrZeichen char string DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Prozeduren und Funktionen oo NO VOIP 121 ver carPosSpace cardinal begin carPosSpace pos chrZeichen strQuelle result copy strQuelle carPosSpace 1 Length strQuelle carPosSpace end Nun k nnen Sie die Methode TfrmEditor btnZeilenNr Click berarbeiten Die lokale Variable carPosSpace haben Sie in die Funktion ausgelagert so dass sie in der Methode nicht mehr l nger ben tigt wird L schen Sie also deren Deklaration in der Methode Wenn Sie die alten Teile dieser Methode nicht l schen m chten dann k nnen Sie sie stattdessen als Kommentare in geschweifte Klammern setzen Im Anweisungsteil der Methode steht eine If Anweisung deren Else Teil in einer For Schleife die Zeilennummern entfernt Den ganzen Code innerhalb der For Schleife werden Sie nun durch den folgenden Funktionsaufruf ersetzen memEditor Lines carAnzZeilen StringNachZeichen memEditor Lines carAnzZeilen Da Sie diese Funktion
144. klassen definiert worden sind Eine Nachkommenklasse kann zu den geerbten Komponenten neue hinzuf gen aber sie kann die Definition einer Kom ponente in einer Vorfahrenklasse nicht r ckg ngig machen Der vordefinierte Klassentyp TObject ist der oberste Vor fahr aller Klassentypen Wenn die Deklaration eines Klas sentyps keinen Vorfahrentypen spezifiziert d h der Verer bungsteil in der Deklaration der Klasse wurde ausgelassen wird der Klassentyp von TObject abgeleitet TObject ist in der Unit System deklariert und definiert eine Anzahl von Methoden die auf alle Klassen angewendet werden 9 7 Virtuelle und dynamische Methoden 9 7 1 Polymorphie In diesem Schritt geht es nun um den dritten und faszinie rendsten Pfeiler der OOP um die Polymorphie Vielgestal tigkeit Dahinter verbirgt sich die Idee virtuelle Methoden mit gleichem Bezeichner auf alle Instanzen einer vererbten Objekthierarchie anwenden zu k nnen obwohl sie innerhalb dieser Methoden eben unterschiedlich reagieren Dies abstrakten Gesetze treffen wir auch in der Wirklichkeit an wo z B jedes Fortbewegungsmittel die Methode goAway kennt jedoch anders darauf reagiert Eben diese F higkeit gleichartige Prozesse in unserer Umwelt zu erkennen und aus ihnen ein abstraktes Prinzip herzuleiten ist die Motivati on der Polymorphie Die Vielgestaltigkeit soll also dem Ent wickler helfen die Informatik n her an die Realit t zu brin gen DELPHI V2 0 Applikation
145. klung mit Delphi DEL Installation und Handhabung DPR Projektdatei PAS Unit Quellcode DFM Graphische Formu lardatei DOF Projektoptionendatei Delphi 1 0 OPT RES Compiler Ressourcen Datei DSK Desktop Einstellungen Backup Dateien 35 e beim Entwurf erstellte Dateien e vom Compiler erstellte Projektdateien e nicht von Delphi erstellte Ressourcendateien Bitmaps Icons und Hilfe Dateien Die folgende Tabelle aus der Online Hilfe gibt einen ber blick ber die verschiedenen Dateiendungen in der ersten Kategorie Object Pascal Quellcode der Hauptdatei des Projekts Listet alle Formulare und Units des Projekts auf und enth lt Code f r die Initialisierung der Anwendung Wird beim ersten Speichern des Projekts erstellt F r jedes Formular das im Projekt enthalten ist wird eine PAS Datei erstellt wenn das Projekt zum ersten Mal ge speichert wird Selbstverst ndlich kann Ihr Projekt auch PAS Dateien enthalten die nicht mit Formularen verbunden sind Enth lt alle Deklarationen und Prozeduren ein schliesslich der Event Handler des Formulars Bin rdatei Textdatei in Delphi welche die Entwurfsmerkma le eines im Projekt enthaltenen Formulars enth lt F r jedes Formular wird zusammen mit der entsprechenden PAS Da tei eine DFM Datei beim ersten Speichern des Projekts er stellt Textdatei welche die aktuellen Projektoptionen enth lt Wird beim ersten Speichern angelegt und be
146. laration enth lt Das heisst private Komponentenbezeichner verhalten sich in dem Modul mit der Klassentypdeklaration wie ffentliche Komponentenbezeichner ausserhalb des Moduls sind sie jedoch unbekannt und es ist kein Zugriff auf sie m glich Protected Die Bezeichner von gesch tzten Klassenkomponenten und deren Nachkommen sind nur sichtbar wenn der Zugriff ber einen Klassentyp erfolgt der im aktuellen Modul dekla riert ist In allen anderen F llen sind die Bezeichner ge sch tzter Komponenten verborgen Der Zugriff auf die gesch tzten Komponenten einer Klasse ist nur zur Implementierung von Methoden der Klasse und ihrer Nachkommen m glich Deshalb werden Klassenkom ponenten in der Regel mit protected deklariert wenn sie ausschliesslich bei der Implementierung von abgeleiteten Klassen verwendet werden sollen Man bezeichnet dies auch als Entwicklerschnittstelle Public Komponentenbezeichner die man in ffentlichen Abschnit ten mit public deklariert unterliegen hinsichtlich ihrer Sichtbarkeit keinen besonderen Einschr nkungen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programmstruktur 172 Published Die Sichtbarkeitsregeln f r ver ffentlichte Komponenten ent sprechen denen f r ffentliche Komponenten Der einzige Unterschied besteht darin dass f r die Felder und Eigen schaften von ver ffentlichten Komponenten Typinformation zur Laufzeit erzeugt wird ver ffentlichte Komponenten las se
147. le sn nennen ee 112 7 4 3 Die Repeat Schleife ac a a AA ea A ent 113 Poy C121 0 0 F100 a ten fen entre rere E creer ree ee cee 113 2231 O oloi ale TAE M E E E EE EEE E SEEN SERNSERNEERNEERNSERNSERNEERNEEE NETT 113 8 Prozeduren und Funktionen a2 lad 115 S 1JEINTEINTIING AA A A E A E A el ta ls 115 82 Parameler nee RN LERNTE RENTEN 116 8 3 Lokale Dekl r tionstelle 1a leute een 118 8 4 Prozeduren und Funktionen uuu 22uusnnsunennnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 120 8 4 1 Unterschiede zwischen Prozeduren und Funktionen u 22uu0002000 2 120 8 4 2 Implementierung von Prozeduren 222444444000nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 120 8 4 3 Implementierung von Funktionen 224444000nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 121 8 4 4 Prozedur und Funktionsaufrufe eee cece ccc ee cece eeceseeeeeeeeeeeueeeeeueeeeeeeeeees 122 8 4 5 Deklaration im Interface Teil ccc ceccccceeceseeeseseeeseeeeesseeueeeueeeeeueeeeuaeeees 123 8 4 6 Eine eigene Funktion Grstellen sus 0000 Bee 123 8 5 Forward und External Deklarationen 00u00020usnnenennnnnennnnnnnnnnnnnnnnnnnnnnnnnn 126 8 5 1 Forward Dekl ralion nssaresetiiitleiakakakskehiikh 126 8 9 2 Ext rnal DeklaratiO N uns ate sate he ort hale ence iraa nied te nical baie ashe ara atan 126 8 6 PGK SDMA ON mesener a eE E aee Eae E aae EErEE e Eaei 127 8 68 11 BUNG Win E E EEE E EE EA 127 9 Klassen und Instanzen e
148. le Deklarationsteile verwenden sollten e was Prozeduren von Funktionen unterscheidet e und schliesslich wie Prozeduren und Funktionen imple mentiert aufgerufen und deklariert werden Der Aufbau des Kapitels geht vom Teil zu Ganzen Sie ler nen also zuerst Parameterlisten und lokale Deklarationsteile kennen denn die Syntax dieser zwei Elemente ist f r Pro zeduren und Funktionen gleich Erst wenn Sie die Bausteine dieser Routinen kennen werden Sie in deren Implementie rung und Aufruf eingef hrt 8 1 Einf hrung Anspruchsvollere Windows Applikationen bestehen meist aus mehreren Tausend Zeilen Programmcode Um bei der Entwicklung den berblick zu behalten empfiehlt es sich ein Programm in kleinere voneinander relativ unabh ngige Einheiten aufzuteilen Object Pascal bietet daf r diverse Sprachelemente an Bereits kennengelernt haben Sie Units Bl cke und zusammengesetzte Anweisungen Eines der m chtigsten Sprachkonstrukte um Ordnung und bersicht in Pascal Code zu bringen sind Routinen manchmal auch Subroutinen genannt Unter diesem Begriff fasst man Prozeduren Funktionen und Methoden zusam men Routinen bestehen aus einem Routinenkopf einem optionalen lokalen Deklarationsteil und einem Anwei sungsteil Damit hat man eine Routine definiert in Aktion tritt sie aber erst durch einen Routinenaufruf Wenn man eine Routine auch anderen als jener Unit zug nglich ma DELPHI V2 0 Applikationsentwicklung mit Delphi
149. legt den Bezeichner die formalen Parameter soweit vorhanden und den Ergebnis typ der Funktion fest Funktionen k nnen Werte jeden Typs ausser Dateitypen zur ckgeben Eine Funktion kann nach dem Funktionskopf einen Deklara tionsteil enthalten Abgesehen vom Funktionskopf und von jener Anweisung die den Funktionswert zuweist ist die Syn tax einer Funktion mit jener einer Prozedur identisch Kopf Function Funktionsname Parameterliste Typ_des_Funktionswerts Deklarationsteil const constl Wert var varl Typl weitere lokale Deklarationen Anweisungsteil begin Anweisungl Anweisung2 Result Ausdruck end Anstelle der impliziten Variablen result kann auch der Funktionsname in der Zuweisungsanweisung erscheinen Das folgende Beispiel verdoppelt eine Zahl DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Prozeduren und Funktionen 119 Function Verdoppeln intZahl integer integer begin result 2 intZahl end Ein weiteres konkretes Beispiel f r eine Funktion finden Sie in der Ubung im Abschnitt 8 4 6 8 4 4 Prozedur und Funktionsaufrufe Die syntaktischen Unterschiede zwischen Prozeduren und Funktionen sind zwar gering aber f r den Aufruf spielen sie eine Rolle Ein Prozeduraufruf ist eine eigene Anweisung ein Funktionsaufruf dagegen ein Teil einer anderen Anwei sung z B einer Zuweisungsanweisung oder eines Proze duraufrufs Hier die Syntax eine
150. likationsentwicklung mit Delphi DEL Konstanten und Variablen o00O0NODOIP t S 78 Willkommenstext Willkommen im selbstgebauten Editor var strwillkommen string 50 begin strWillkommen Willkommenstext memEditor Lines Add strWillkommen end Bevor Sie den Inhalt der Variable den Zeilen der Memokom ponente anf gen initialisieren Sie sie in Zeile 9 Und zwar weisen Sie der Variable nicht direkt einen Wert zu sondern den Wert der Konstanten willkommenstext die Sie in den Zeilen 3 bis 5 deklariert haben Nat rlich k nnten wir wie in der folgenden Zeile auch direkt einen String statt Kon stanten und Variablen verwenden memEditor Lines Add Willkommen im selbstgebauten Editor Aber ich wollte Ihnen ja ein Beispiel f r Variablendeklara tionen und Zuweisungen liefern Bei Zuweisungen muss man unbedingt beachten dass der Wert zuweisungskompatibel mit dem Typ der Variablen ist Um zu verstehen welche Typen zuweisungskompatibel sind werden wir uns im n chsten Kapitel zuerst ansehen was Typen berhaupt sind und welche Arten von Typen es gibt 5 5 Typisierte Konstanten Typisierte Konstanten sind bei Entwicklern und Entwick lerinnen sehr beliebt denn trotz des Namens handelt es sich nicht um Konstanten sondern um initialisierte Variablen Die Deklaration typisierter Konstanten sieht wie eine Mischung aus Variablen und Konstantendeklaration aus const initialisierteVariable integer
151. llen wichtig ist wo eine einzelne Anweisung erwartet wird beispielsweise bei If oder Case Anweisungen 7 1 3 Bl cke Bl cke sind nicht das gleiche wie zusammengesetzte An weisungen Ein Block besteht aus einem Deklarations und einem Anweisungsteil Der Deklarationsteil eines Blocks kann Labels Konstanten Typen Variablen Prozedur Funktionsdeklarationen und Export Anweisungen enthalten Der Anweisungsteil eines Blocks ist eine zusammenge setzte Anweisung Bl cke sind Teil der Prozedurdeklaration Funktionsdeklaration Methodendeklaration oder eines Pro gramms bzw einer Unit Zusammengesetzte Anweisungen bilden somit immer den Anweisungsteil eines Blockes Dar ber hinaus k nnen sie aber auch in einzelnen Anweisungen z B innerhalb von If oder Case Anweisungen auftreten Diese zwei Arten von bedingten Anweisungen werden wir uns in den n chsten zwei Unterkapiteln ansehen 7 1 4 G ltigkeitsbereiche Bl cke sind ein wichtiges Konzept von Object Pascal weil Bl cke die G ltigkeitsbereiche englisch scopes von Kon stanten Typen Variablen Prozeduren und Funktionen fest legen Der G ltigkeitsbereich eines Bezeichners innerhalb eines Programms oder einer Unit gibt an ob der Bezeichner von anderen Prozeduren und Funktionen im Programm oder der Unit benutzt werden kann oder nicht Der G ltigkeitsbereich kann entweder lokal oder global sein Lokale Bezeichner sind nur f r die Routinen und Dekla rationen sichtbar
152. lt Initialisierungs Anweisungen gt lt Finalization Anweisungen gt end 3 3 3 Die Teile einer Unit In der generellen Syntax einer Unit erkennt man f nf Teile 1 Unit Kopf 2 Interface Teil 3 Implementationsteil 4 Initialisierungsteil 5 Finalization Teil ce Der Unit Kopf besteht aus dem reservierten Wort unit und einem eindeutigen Bezeichner Dieser Bezeichner erscheint in der Uses Klausel von anderen Programmen und Units welche diese Unit ben tzen GY Im Beispielprogramm finden Sie den Unit Kopf in Zeile 1 qe Der Interface Teil einer Unit bestimmt was f r jedes Pro gramm oder jede andere Unit die diese Unit verwenden sichtbar und zug nglich ist Der Interface Teil beginnt mit dem reservierten Wort interface und endet vor dem reservierten Wort implementation Der Interface Teil deklariert Konstanten Typen Variablen Prozeduren und Funktionen f r public ffentlich Dadurch k nnen sie von anderen Programmen oder Units benutzt werden Von Prozeduren und Funktionen erscheint nur die Kopfzeile im Interface Teil denn sie sind im Implementationsteil imp lementiert GY Die Zeilen 3 bis 23 im Beispielprogramm bilden den Inter face Teil Sie finden keine Konstantendeklaration aber eine Uses Klausel in den Zeilen 5 bis 8 die Deklaration eines Typs von Zeile 10 bis 19 und eine Variable in Zeile 22 cg Der Implementationsteil einer Unit enth lt den Programm teil aller ffentlichen Prozeduren und F
153. m Zeitpunkt der Compilierung noch nicht bekannt ist DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Exception Handling und RTTI oOOSNSOOIP OD 165 11 5 Rekapitulation 11 5 1 Zusammenfassung Exceptions sind Objekte die Informationen ber Fehlerzu st nde enthalten derentwegen ein Programm eine Operati on nicht wie geplant ausf hren konnte zum Beispiel aus Speichermangel wegen einer Schutzverletzung oder einer Division durch Null Trat bisher eine derartige Bedingung auf brach das Programm mit einem Laufzeitfehler ab Um dies zu vermeiden ben tigte man immer tiefer geschachtel te IF Statements mit alternativen Ausf hrungspfaden Ex ceptions erlauben statt dessen geb ndelte Fehlerbehand lung Manchmal ist es notwendig hilfreich oder auch nur sicherer wenn man zur Laufzeit abfragen kann welchen Typ ein Ob jekt hat Auch beim Konzept der Polymorphie ist es usserst hilfreich zu wissen welche Klasse sich hinter dem vielgestal tigen Objekt zur Laufzeit tats chlich verbirgt Dazu dient die Typinformation zur Laufzeit mit den entsprechenden Klas senreferenzen 11 5 2 Kapiteltest 1 Wahr oder falsch Die Reihenfolge eines on do State ment ist wichtig 2 Worin unterscheiden sich Klassenreferenzen und Klas sentypen 3 Versuchen Sie einige Hardware Exceptions der Exception Klasse zu beschreiben 4 Wozu dient das folgende erneute Ausl sen einer Excepti on function GetFileList const Path
154. m try Abschnitt der try finally Anweisung werden in der normalen Reihenfolge ausgef hrt Geschieht dies fehlerfrei also ohne dass man eine Excepti on ausl st dann wird der finally Abschnitt ausgef hrt Wenn im try Abschnitt eine Exception ausgel st wird geht die Programmsteuerung ebenfalls auf den try Abschnitt ber nach Ausf hrung dieses Abschnitts wird die Exception jedoch erneut ausgel st Dies hat die Wirkung dass der finally Abschnitt in jedem Fall ausgef hrt wird d h un abh ngig davon auf welche Weise man den try Abschnitt beendet Hier eine Ereignisbehandlungsroutine die Speicher zuweist und einen Fehler erzeugt Division durch Null aber den noch den zugewiesenen Speicher wieder freigibt procedure TForml ButtonlClick Sender TComponent var APointer Pointer AnlInteger ADiv Integer begin ADiv 0 GetMem APointer 1024 1K Speicher zuweisen try DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Exception Handling und RTTI 158 AnInteger 10 div ADiv dies erzeugt inen Fehler finally FreeMem APointer 1024 die Ausf hrung wird trotz des Fehlers hier wieder aufgenommen end end In typischen Anwendungen werden try finally Anweisungen immer h ufiger eingesetzt als try except Anweisungen Beispielsweise verlassen sich Entwickler die die VCL verwenden normalerweise auf deren standardm ssige Exception Behandlung so dass man
155. mcode Ihrer Unit sollte folgendermassen aussehen unit uClose interface uses windows Messages SysUtils Classes Graphics Controls Forms Dialogs StdCtrls Buttons type TfrmCloseApp class TForm btnbitClose TBitBtn procedure btnbitCloseClick Sender TObject DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programme und Units 46 private Private declarations public Public declarations end var frmCloseApp TfrmCloseApp implementation SR DEM procedure TfrmCloseApp btnbitCloseClick Sender TObject begin MessageDlg Applikation schliessen mtInformation mbOK 0 Close end end 3 3 2 Die Syntax einer Unit Vieles im Code einer Unit kennen wir bereits vom Programm her Es lasst sich folgende generelle Syntax einer Unit ext rahieren unit Name interface uses lt Liste der verwendeten Units gt const lt Liste von Konstanten gt type lt Liste von benutzerdefinierten Typen gt var lt Liste von Variablen gt lt Liste von Deklarationen exportierter Funktionen und Prozeduren gt implementation uses lt Liste der lokal verwendeten Units gt const lt Liste von Konstanten gt type lt Liste von benutzerdefinierten Typen gt var lt Liste von Variablen gt lt Implementierung von Funktionen und DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programme und Units 47 Prozeduren gt begin
156. mfang von Delphi enthalten bzw im Deklarationsteil explizit deklariert 10 2 2 API Funktionen nach Gebieten aufgeteilt Mapping Funktionen Programmausf hrungsfunktionen Speicherverwaltungsfunktionen 32 Bit Speicherverwaltungsfunktionen Men funktionen Callback Funktionen Caret Funktionen Zwischenablage Clipping Funktionen Kommunikationsfunktionen Koordinatenfunktionen Mauszeigerfunktionen DDE Funktionen Botschaftsfunktionen Meta Datei Funktionen Modulverwaltungsfunktionen OLE Funktionsgruppen Palettenfunktionen Zeichenstiftfunktionen Zeiger Validierungsfunktionen Druckersteuerungsfunktionen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Eigenschaften und Windows Botschaften Debug Funktionen Ger tekontexfunktionen Dialogfensterfunktionen Anzeigefunktionen DragDrop Zeichenwerkzeugfunktionen Ellipsen und Polygon Funktionen Fehler Funktionen Datei l O Funktionen Schrift Funktionen GDI Funktionen Hardware Funktionen Hook Funktionen Symbol Funktionen Informationsfunktionen Initialisierungsdatei Funktionen Version Funktionen 147 Eigenschaftsfunktionen Rechteckfunktionen Regionfunktionen Registrierungsfunktionen Ressourcenverwaltungsfunktionen Bildlauffunktionen Segment Funktionen Shell Funktionen Stress Funktionen String Manipulationsfunktionen Systemfunktionen Task Funktionen Text Funktionen Toolhelp Funktionen TrueType Funktionen User Funktionen Kernel Funktionen 10 2 3 Wi
157. mit Bitmaps dekorierte symbolische Abk r zungen f r irgendwelche Befehle zusammengefasst und fungieren dann als Komponenten einer Werkzeugleiste Editierfeld das im Gegensatz zu EDIT die M glichkeit bietet besondere Formatangaben in bezug auf Dateneingabe und anzeige festzulegen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Visuelle Programmierung 62 Gitterform die Sie benutzen k nnen um Strings in Spalten E STRINGGRID und Zeilen anzuzeigen je a Gitterform die Sie benutzen k nnen um Daten in Spalten DRAWGRID und Zeilen anzuzeigen Anzeige von Bitmap Icon oder Meta Dateien IMAGE Komponente die geometrische Figuren zeichnet zur Aus SHAPE wahl stehen Ellipse Kreis Rechteck und Quadrat mit und ohne abgerundete Ecken Linien oder Rahmen in einer dreidimensionalen modellier BEVEL ten Darstellung in der Gr sse ver nderlicher Ausschnitt der bei Bedarf au SCROLLBOX tomatisch Bildlaufleisten anzeigt fi i pe 4 4 3 Die Komponenten des Registers Win95 Im Register WIN95 der Komponentenpalette finden Sie f r Ihre Delphi Anwendungen die Standardsteuerelemente der Win95 Benutzerschnittstelle Standard Additional In FE Abb 18 Das Register W n95 nem Karteikasten oder Notizbuch vergleichen l sst f r ein mehrseitiges Dialogfeld eignet sich PAGECONTROL besser als TABCONTROL einfache Registermenge die sich mit einem Verteiler in ei TABCONTROL eine Re
158. mlich im Ver zeichnis Runtime das eine vollst ndige installierte Versi on enth lt zus tzlich auch auf die Online Hilfe in Ihrer Mut tersprache zugreifen 2 1 2 Die Installation Die vorangehenden Ausf hrungen zu Versionen und Varian ten von Delphi waren notwendig weil sich die Installation je nach Variante etwas unterscheidet Sie ist aber weitgehend selbsterkl rend Folgende Schritte m ssen Sie f r die In stallation durchf hren 1 Starten Sie Windows 95 oder NT falls Sie sich nicht be reits darin befinden 2 Delphi 2 0 wird nicht mehr auf Disketten ausgeliefert son dern nur noch auf CD ROM Legen Sie also die Delphi CD in Ihr CD ROM Laufwerk ein 3 Wenn Sie jetzt mit dem Windows Explorer der in Win dows 95 den Dateimanager ersetzt die Verzeichnisse der CD betrachten ergibt sich f r die Developer Version bei spielsweise das Bild in Abb 1 4 ffnen Sie f r die deutsche Version den Ordner Install oder f r die englische Instalus und doppelklicken Sie die Datei Setup 5 Folgen Sie den Anweisungen des _Installationspro gramms DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Installation und Handhabung 21 EN Explorer F INSTALUS Datei Bearbeiten Ansicht Extras E Instalus et Ei Deutsche Version Alle Ordner Inhalt von F INSTALUS Delphi 1 02 3 Name Gr eltyp Ge ndetem Eg Arbeitsplatz fs _inst32i ex_ EX_ Datei 09 01
159. n 12 1 Entwurf der Struktur Jeden Bezeichner den Sie in Object Pascal verwenden und ihm einen Wert zuweisen oder in einem Ausdruck aufneh men m ssen Sie vorher deklarieren Ab dieser Deklaration ist der Bezeichner bis zum Ende seines G ltigkeitsbereiches Scope verwendbar Beim Entwurf einer Programmstruktur beachten Sie drei G ltigkeitsbereichsregeln e Jeder Bezeichner hat nur in dem Block eine Bedeutung in dem er deklariert wird Innerhalb des Blocks ist er nach der Stelle bekannt an dem er deklariert wird e Wenn man einen globalen Bezeichner innerhalb eines Blocks neu definiert erh lt die innerste die am tiefsten geschachtelte Definition von der Stelle der Deklaration Vorrang bis zum Ende des Blocks e Wenn Prozeduren rekursiv aufgerufen werden zeigt eine Referenz einer globalen Variable immer auf die Instanz dieser Variable im zuletzt erfolgten Prozeduraufruf Wir behandeln folgende Arten von Sichtbarkeit e Sichtbarkeit von Routinen e Sichtbarkeit von Bl cken e Sichtbarkeit von Units e Sichtbarkeit von Interface und Standardbezeichnern DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programmstruktur OONDOARWND 168 e Sichtbarkeit von Klassen 12 2 G ltigkeitsbereich von Bezeichnern Der Gultigkeitsbereich eines Bezeichners innerhalb eines Programms einer oder mehrerer Units gibt an ob der Be zeichner von anderen Prozeduren und Funktionen im Pro gramm oder der Unit benutzt wer
160. n die Ausnahme wurde direkt an die Laufzeitbibliothek weitergelei tet Error D EZeroDivide ist ausgel st Abb 29 Abfangen der Exception mit eigenem Dialog Passpro Hier spielen wir Schutzverletzung und werfen einen selbstausgel sten GPF Abb 30 Eigene Exception mit eigenem Fehlertext d Gem ss einer Statistik geh rt die Division durch Null immer noch zu den h ufigsten Fehlern Kurzer Blick ins Delphi Handbuch zeigt folgendes Bild Schwerwiegende Fehler Diese Fehler f hren in jedem Fall zum sofortigen Programmabbruch 200 Division by zero Division durch Null Das Programm hat versucht w hrend einer mod oder div Operation eine Zahl durch Null zu dividieren DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Exception Handling und RTTI 162 11 2 Die Exception Klasse Eigene Exceptions zu erzeugen ist nat rlich m glich Dazu reicht es schon aus eigene Referenzen von bestehenden Exceptions zu erzeugen Type MyException Class EMathError Dabei bildet die Klasse Exception die Mutter aller in Delphi existierenden Exceptions Suchen Sie einmal im Browser unter SEARCH und BROWSE SYMBOL nach exception Sie sehen dann die gesamte Exception Hierarchie Nun haben Sie zwar auch einen Nachfolger von Exception gebildet aber MyException ist gleichzeitig auch als eigene Klasse definiert Wir k nnen also MyException ganz im Sinne der Theorie der objektorientierten Programmierun
161. n zusammengesetzte Anwei sungen und Bl cke 7 1 1 Anweisungen qe Anweisungen statements sind die kleinsten Einheiten ei nes Programms Sie beschreiben algorithmische Aktionen die ein Programm ausf hren kann Die einzelnen Anweisun gen werden durch Strichpunkt getrennt ce Es gibt zwei Grundtypen von Anweisungen n mlich einfa che und strukturierte Zu den einfachen Anweisungen ge h ren neben den Zuweisungsanweisungen die Sie schon fters angetroffen haben noch Goto Anweisungen die Sie besser gleich wieder vergessen und Prozedur Anweisungen mit denen eine Prozedur Funktion oder Me thode aufgerufen wird Die strukturierten Anweisungen umfassen zusammengesetzte bedingte und With Anweisungen sowie Schleifen 7 1 2 Zusammengesetzte Anweisungen Zusammengesetzte Anweisungen bestehen aus einer o der mehreren Anweisungen die zwischen den reservierten W rtern begin und end eingeschlossen sind Die einzelnen Anweisungen werden mit einem Strichpunkt getrennt Zu sammengesetzte Anweisungen geben an dass die enthal tenen Anweisungen in der Reihenfolge ausgef hrt werden sollen in der sie aufgeschrieben sind Die allgemeine Syntax DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Ablaufsteuerung 103 einer zusammengesetzten Anweisung sieht folgendermas sen aus begin Anweisungl Anweisung2 AnweisungN end Die zusammengesetzte Anweisung wird wie eine einzige Anweisung behandelt was an den Ste
162. n erstellte Komponente Label und l schen Sie sie Verschieben Sie dann Formular und Quell texteditor so dass der folgende Abschnitt des Quellcodes auch dann sichtbar ist wenn das Formular aktiviert ist TForml class TForm Button3 TButton Button2 TButton Buttonl TButton private Selektieren Sie die drei Schaltfl chen und dr cken Sie DELETE Achten Sie darauf wie die drei Eintr ge verschwinden und wieder erscheinen wenn Sie jetzt CTRL Z dr cken 4 2 4 Gruppieren von Komponenten Ausser dem Formular selbst bietet Delphi diverse Kom ponenten GroupBox Panel Notebook TabbedNote book und Scrollbox die andere Komponenten beinhal ten k nnen Diese werden h ufig als Container Kompo nenten bezeichnet Sie k nnen diese Container Kompo nenten dazu verwenden andere Komponenten zu gruppie ren so dass sie sich zur Entwurfszeit wie eine Einheit be nehmen So lassen sich z B Komponenten wie speed but tons Mauspalettenschalter und check boxes Markierungs felder gruppieren um dem Benutzer zusammengeh rige Optionen zu bieten Bei der Plazierung von Komponenten innerhalb von Con tainer Komponenten erzeugen Sie eine neue Beziehung zwischen dem bergeordneten Container und den darin ent haltenen untergeordneten Komponenten Operationen die Sie zur Entwurfszeit an der bergeordneten Container Komponente vornehmen wie etwa Verschieben Kopieren oder L schen wirken sich
163. n sich mit published deklarieren Die Laufzeitinformati onen erm glichen einer Anwendung die dynamische Abfra ge von Feldern und Eigenschaften eines Klassentyps die andernfalls unbekannt w ren d Die Bibliothek visueller Komponenten Visual Component Library VCL von Delphi greift mit Hilfe der Typinformation zur Laufzeit auf die Werte der Eigenschaften einer Kompo nente zu um Formulardateien zu speichern und zu laden Ausserdem verwendet die Delphi Entwicklungsumgebung diese Informationen um die Liste der Komponenteneigen schaften festzulegen die im Objektinspektor angezeigt wird Sichtbarkeitsattribute im berblick Zugriff auf Attribut Klassen Methode Instanz Vererbte Klasse Private Ja Nein Nein Protected Ja Nein Ja Public Ja Ja Ja 12 3 Variablen Typen 12 3 1 Statische Variablen Typisierte Konstanten sind mit initialisierten Variablen ver gleichbar das sind Variablen deren Werte beim Eintritt in den entsprechenden Block definiert werden Anders als bei untypisierten Konstanten sind bei der Deklaration einer typi sierten Konstanten sowohl der Typ als auch der Name der Konstanten vereinbart Bei einer lokalen Deklaration ent spricht eine typisierte Konstante einer statischen Variablen in C static da sie beim Verlassen des lokalen Bereichs ihren Wert nicht verliert DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programmstruktur CONDoRWNDY gt 173 12 3 2 Dynamische Variablen Die
164. nd erfordert keinen zus tzlichen Code DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen 88 Der kurze String Typ ist vor allem f r die R ckw rtskompati bilit t mit fr heren Versionen von Delphi und Borland Pascal vorhanden Es folgt ein Beispiel zu Deklaration und Anwendung des ge nerischen Typs Var strKurzerString string strLangerString string strKurzerString Dieser String ist kurz strLangerString Dieser String ist so lang dass er nicht in einen kurzen String mit 255 Zeichen passt Dieser String ist so lang dass er nicht in einen kurzen String mit 255 Zeichen passt Dieser String ist so lang dass er nicht in einen kurzen String mit 255 Zeichen passt Dieser String ist so lang dass er nicht in einen kurzen String mit 255 Zeichen passt Beachten Sie dass strKurzerString unter Delphi 2 0 zwar ein kurzer String aber vom langen String Typ ist Be achten Sie ausserdem dass der lange String Typ im allge meinen weniger Speicherplatz beansprucht als der kurze weil er nur Platz f r die effektive Anzahl Zeichen und f r die vier Bytes des Zeigers beansprucht w hrend ein kurzer String Typ immer Speicherplatz f r die maximale statt f r die effektive Anzahl Zeichen belegt Damit Sie den obigen Code verwenden k nnen muss die Compilerdirektive H gesetzt sein Dies k nnen Sie direk
165. ndows Messages Ein Kernpunkt der traditionellen Windows Programmierung liegt in der Behandlung der Botschaften die Windows an Anwendungen sendet Delphi behandelt beinahe alle g ngi gen Botschaften f r Sie Bei einer flexiblen und unabhangi gen Entwicklung kann es jedoch vorkommen dass Sie Bot schaften erzeugen m ssen die Delphi noch nicht behandelt oder dass Sie Ihre eigenen Botschaften erzeugen die nat r lich anschliessend auch von Delphi behandelt werden m s sen Drei wichtige Aspekte sind bei der Arbeit mit Botschaften zu beachten e Das Botschaftsbehandlungssystem im Detail e Ver ndern der Botschaftsbehandlung e Erweitern neuer Botschaftsbehandlungsroutinen Alle Delphi Objekte besitzen eingebaute Mechanismen zur Behandlung von Botschaften die man Botschaftsbehand lungsmethoden oder eben Event Handler nennt Das DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Eigenschaften und Windows Botschaften 148 grundlegende Konzept von Botschaftsbehandlungsroutinen gt besteht nun darin dass eine Fensterfunktion im Objekt wie auch immer geartete Botschaften empf ngt und sie zuteilt Den fortlaufenden Event Loop mit den drei API Funktionen getMessage translateMessage und dispatchMes sage erledigt Delphi v llig automatisch im Hintergrund Wer ct fen Sie einmal einen Blick auf die Application Run Me thode in der Projektdatei Diese Methode ist der Startpunkt der ganzen Komplexit t Dabei wird abh ngig von de
166. nen gelernt wie man die L nge eines kurzen Strings be stimmt Finden Sie mit der Online Hilfe die Funktion mit der man die deklarierte Maximall nge eines kurzen Pas cal Strings erfragt 3 Schauen Sie sich noch einmal das erste Codebeispiel im Abschnitt ber Mengen an Welche Elemente umfasst die Menge setLetter3 nach der Zuweisung in der letzten Zeile 4 Welche der folgenden Zuweisungen sind g ltig der Typ steht am Anfang des Bezeichners DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen 101 a stringSatz charZeichen 64000 cardinalZahl b cardinalZahl smallintZahl 5 Was passiert wenn Sie den String Hallo Welt einer Vari ablen vom Typ string 5 zuweisen 6 Richtig oder falsch a Auf die Felder eines Records k nnen Sie Uber ihre Po sitionsnummer im Record zugreifen b Eine boolesche Variable kann als Index in einem Array verwendet werden DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Ablaufsteuerung 102 7 Ablaufsteuerung RB In diesem Kapitel lernen Sie einige einfache Sprachelemen te von Object Pascal kennen mit denen Sie den Programm ablauf kontrollieren k nnen Sie erfahren e wie Anweisungen zusammengesetzte Anweisungen Bl cke und G ltigkeitsbereiche definiert sind e wie Sie die If Anweisung verwenden e wie Sie die Case Anweisung verwenden e und wie Sie verschiedene Arten von Schleifen in Ihre Programme einbauen k nnen 7 1 Anweisunge
167. ng mit Delphi DEL Glossar late binding local variable loop method modal modeless module nonvisual component object type ordinal type override owner parameter parent pointer private procedure 183 When the address used to call virtual methods or dy namic methods is determined at run time A variable declared within a procedure or function A statement or group of statements that repeat until a specific condition is met Procedure or function associated with a particular object The run time state of a form designed as a dialog box in which the user must close the form before continuing with the application A modal dialog box restricts access to all other areas of the application The run time state of a form designed as a dialog box in which the user can switch focus away from the dialog box without first closing it A self contained routine or group of routines A unit is an example of a module A component that appears at design time as a small pic ture on the form but either has no appearance at run time until it is called like TSaveDialog or simply has no appearance at all at run time like TTimer A class Any Object Pascal type consisting of a closed set of or dered elements Redefine an object method in a descendant object type An object responsible for freeing the resources used by other owned objects A variable or value that is passed to a function or proce
168. nicht identisch mit string in fr heren Versionen l sst sich aber gleich ver wenden Dieser neue String Typ bietet drei Vorteile 1 Die f r Pascal Strings blichen String Operationen lassen sich weiterhin verwenden 2 Dadurch dass lange Strings immer nullterminiert sind siehe unten hat sich die Kommunikation mit Windows API Funktionen erheblich vereinfacht 3 Nur der vorhandene Speicherplatz begrenzt die Gr sse dieses neuen String Typs In fr heren Versionen war ein String auf 255 Zeichen be grenzt Ab Delphi 2 0 ist string ein generischer Typ der abh ngig von der Compilerdirektiven SH entweder auf 255 Zeichen begrenzt ist kurzer String Typ oder eine dy namische Lange aufweist die maximal 2 Gigabyte betragen kann langer String Typ Sie k nnen also getrost Ihre Me moiren in einen String verpacken Wenn es erforderlich ist in einer 32 Bit Anwendung zwi schen kurzen und langen String Typen zu unterscheiden verwenden Sie statt des generischen Typs string f r kurze Strings den fundamentalen Typ shortstring und f r lange Strings den fundamentalen Typ ansistring Intern ist eine lange String Variable ein Zeiger auf einen dy namisch verwalteten Speicherbereich in dem die L nge des Strings ein Referenzz hler sowie der eigentliche String Inhalt enthalten ist Der Zeiger selbst ist nur vier Bytes gross Die Verwaltung des dynamisch zugewiesenen Spei chers einer langen String Variablen geschieht automatisch u
169. nitions streamable Streamable features are visible at design time An identifier that contains a period that is includes a qualifier A qualified identifier forces a particular feature of an object record or unit to be used regardless of other features of the same name that may also be visible within the current scope An identifier followed by a period that precedes a method or other identifier to specify a particular symbol reference A structured data type that consists of one or more fields A programming technique in which a subroutine calls it self Use care to ensure that a recursion eventually exits Otherwise an infinite recursion will cause a stack fault A procedure or function The visibility of an identifier to code within a program or unit A collection of zero or more elements of a certain scalar or subrange base type The simplest unit in a program statements are separated by semicolons Resolved at compile time as are calls to procedures and methods DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Glossar string type typed constant unit value parameter variable parameter variable virtual visual component 185 A sequence of characters that can be treated as a single unit of data A description of how data should be stored and ac cessed Contrast with variable the actual storage of the data A variable that is given a default value upon startup of the
170. nn sind die Zahlen Daten und die Methodik um sie zusammenzuz hlen die Routine Objekte oder Klassen die wir sp ter behandeln werden sind Zwitter denn sie verbinden Daten und die zu den Daten geh rigen Routinen In diesem und dem n chsten Kapitel wenden wir uns als erstes den Daten und ihren Typen zu Verschiedene Arten von Routinen lernen Sie dann in den folgenden Kapiteln kennen Und das Kapitel Klassen und Instanzen erhellt schliesslich was Klassen Objekte und Instanzen sind DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Konstanten und Variablen 72 5 2 Grundelemente von Object Pascal Bevor Sie Konstanten und Variablen kennenlernen ist eine kurze Einf hrung in einige Grundeinheiten der Sprachsyntax notwendig denn alle weiteren Sprachelemente bauen sich aus diesen Grundelementen auf 5 2 1 Tokens Tokens sind die kleinste sinnvolle Texteinheit in Object Pas cal Tokens sind e Zeichenketten Strings e Bezeichner e Labels e Zahlen e Reservierte W rter e Spezielle Symbole z B Operatoren Nur zur Erinnerung Bezeichner und ihre Namenskonven tionen sind schon in Kapitel 2 3 2 eingef hrt worden 5 2 2 Operatoren Operatoren sind Symbole z B und lt oder reservierte W rter wie div und or die anzeigen dass einige Opera tionen auf ein oder mehrere Daten angewandt werden Da sich Operatoren in Ausdr cken kombinieren lassen gibt es eine Rangfolge die festlegt welche Operationen
171. nnnnnnnnnnnnnnnnnnnnnnnnnannnnnn 42 3 2 1 Die Syntax des Beispielprogramms ccccccccccccccccececeeeeeeeeeeeeeeeeeeeeeeeeeess 42 3 2 2 Die allgemeine Syntax eines Programms u 4444444444000nnnnnnnnn nenn 44 3 2 3 Reihenfolge der Deklarationen 2224444000004444nnnnnnnnnnnnnnnnnnnnnnnnnnnn 45 33 Die Struktur einer Unitra ee a a N er 45 3 3 1 Die Unit uClose des Beispielprogramms 44444444440nnnnnnnnn nennen 45 3 3 2 Die Syntax einer Unit en 2a ee 46 3 39 38 Die Telle einer Unit eini a IHR 47 3 4 Indirekte und zirkul re Referenzen 2u000222220000Rnnnnnnnennnnnnnnnnnnnnnnnennnnnnnne nennen 49 3 4 1 Indirekte Unit Referenzen u 4444444444400nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 49 3 4 2 Zirkul re Unit Referenzen uuuuss444444444nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 49 3 5 Hekapiiilationie uz r es 2220200 sas aanne Br ae a a heile ke 50 33 1 ZusammenfaSsS Ng a E aa aaa 50 SRSA AICO EA a cts ce cates EEA ES EEEN EEN EAEN 50 4 Visuelle Programmierung zarten ee 52 4 1 Die Philosophie von Windows Applikationen usussssssssnnnnnnnnnnnnnnnnnnnnnnnnnn 52 4 2 FORMUlArdESIgNa na ee eet ate nn nneeet 53 4 2 1 Eine Komponente auf einem Formular plazieren 44400sssnnn nn 53 4 2 2 Mehrere Komponenten plazieren 22244444400nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 54 4 2 3 Komponenten l
172. om gleichen Typ wie die Properties Zum Beispiel speichert der Compiler den Zeiger der Metho de OnClick in einem Feld namens FOnClick des Typs TNotifyEvent Die Deklaration des Ereignis Property OnClick sieht wie folgt aus type TControl class TComponent Feld deklarieren das den Methodenzeiger enthalten soll private FOnClick TNotifyEvent protected property OnClick TNotifyEvent read FOnClick write FOnClick end Wie bei jeder anderen Property k nnen Sie auch den Wert eines Ereignisses zur Laufzeit setzen oder ndern Der Hauptvorteil dass Ereignisse auch Properties sind liegt jedoch darin dass Anwender Ereignissen Behandlungs routinen mit dem Objektinspektor im Entwurfsmodus direkt zuweisen k nnen 10 2 Windows Nachrichten 10 2 1 Windows API Funktionen Das Windows API stellt quasi eine Art Toolbox dar eigent lich ist es die gr sste Toolbox der Welt mit der Sie Anwen dungen erstellen Es umfasst insgesamt mehr als 700 Funk tionen Ein ganze Reihe sicherlich weniger als 50 akti viert Ihr Programm dauernd den Rest ben tigen Sie oder Delphi nur sehr selten oder gar nicht Die verschiedenen Funktionen des APIs sind nach bestimmten Kriterien in un terschiedlichen Bibliotheken verteilt Die Funktionen werden aber nicht beim Linken hinzugef gt und fest ins Programm eingebunden sondern erst zur Laufzeit bei Bedarf dyna misch ins System geladen und ausgef hrt Aus diesem DELPHI V2 0 Appl
173. on Standardkomponenten definiert Botschaf ten f r den internen Gebrauch Die h ufigsten Gr nde f r das Definieren von Botschaften liegen in Rundrufinformatio nen Broadcast Messages welche die Windows Standardbotschaften nicht abdecken und Benachrichtigun gen ber Statuswechsel oder Statusinformationen anzeigen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Eigenschaften und Windows Botschaften oOOSNSODOIP OD 152 10 3 1 Deklarieren eines eigenen Botschaftsbezeich ners Ein Botschaftsbezeichner ist eine Integerwert Konstante Windows reserviert die Botschaften unterhalb 1024 f r sei nen eigenen Gebrauch Wenn Sie Ihre eigenen Botschaften deklarieren sollten Sie also erst oberhalb dieser Ebene be ginnen Die Konstante WM_USER stellt die Anfangszahl f r benutzerdefinierte Botschaften dar Wenn Sie Botschaftsbe zeichner definieren sollten diese auf WM_USER basieren Denken Sie daran dass einige Windows Standarddialogele mente Botschaften im benutzerdefinierten Bereich verwen den Dies betrifft Listenfenster Kombinationsfenster Editier fenster und Befehlsschalter Wenn Sie aus einem dieser Elemente eine Komponente ableiten und f r diese eine neue Botschaft definieren wollen m ssen Sie die Unit Messages berpr fen damit Sie wissen welche Botschaften Windows f r das betreffende Dialogelement bereits reserviert hat Als Beispiel sehen Sie 4 benutzerdefinierte Botschaften const WM_MYFIRSTMSG WM_
174. on zu schreiben Sie k nnen stattdessen wie in der mittleren Zeile die Variablen durch Kommas trennen und ihnen dann ge meinsam einen Typ zuweisen Eine konkrete Variablendeklaration k nnte so aussehen var Formhoehe Formbreite integer Kundenname string 20 Eine Variablendeklaration reserviert erst Speicherplatz weist aber im Gegensatz zu einer Konstantendeklaration noch keinen Wert zu Nach der Deklaration ist somit eine Variable immer noch undefiniert Bevor man im Code auf sie zugreifen kann muss man sie also initialisieren d h einen Wert zuweisen Der Compiler f ngt eine solch fehlende Initi alisierung nicht ab was zu unangenehmen Fehlern im Pro gramm f hren kann 5 4 3 Variablenzuweisungen Eine Zuweisung weist dem Bezeichner auf der linken Seite des Zuweisungsoperators den Wert des Ausdrucks DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Konstanten und Variablen NOOUP OD w N E 77 auf der rechten Seite zu Zugewiesen werden Werte Kon stanten andere Variablen oder Resultate aus Operationen sofern sie mit dem Typ der Variablen zuweisungskompatibel sind Dies ist die allgemeine Form einer Variablenzuweisung Variablennamel 5 Variablenname2 Konstantennamel Variablenname3 Variablenname2 Variablenname4 2 Variablennamen3 Variablendeklaration und Zuweisung werden Sie nun an hand des Editor Projekts ausprobieren Wir erganzen den Editor so dass im Te
175. operties Wenn wir jetzt k nftig von Properties sprechen sind eigent lich auch Eigenschaften gemeint Denn die Properties sind eine der besonders wichtigen sprachlichen Neuerungen von Delphi und verk rpern sozusagen das OOP Paradigma welches besagt d Ein Property einer Instanz sollte man nur ber die dazuge h rige Klassenmethode ver ndern k nnen Und genau dazu dienen die Properties Denn die Daten sind in den Properties mit definierten Methoden verbunden die diese Daten ver ndern k nnen Jedesmal wenn Sie einem Property einen Wert zuweisen oder das Property nur lesen z B den Wert einer anderen Variablen zuweisen ruft Del phi automatisch die entsprechende Methode auf so dass diese auf jede Anderung reagieren kann Somit sind Proper ties also nur vereinfachte Methodenaufrufe 10 1 1 Vorteile von Properties Properties vermitteln dem Anwender die Illusion dass er den Wert einer Variablen in der Komponente setzt oder aus liest Dem Entwickler hingegen erm glichen sie die zugrun de liegende Datenstruktur zu verbergen oder Nebeneffekte Side Effects des Zugriffs zu vermeiden Der Einsatz von Properties bietet dem Entwickler mehrere Vorteile e Properties k nnen Werte oder Formate pr fen w hrend der Anwender diese zuweist Die Validierung der Anwen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Eigenschaften und Windows Botschaften 141 dereingaben beugt Fehlern vor die man durch ung ltige Wer
176. operty Caption end Das reservierte Wort Type in Zeile 1 muss nicht vor jeder Klassendeklaration stehen sondern nur vor der ersten De klaration in einem Typendeklarationsteil In Zeile 2 erfahren wir dass hier die Klasse TButton als Nachfahr von TButtonControl deklariert wird Die Sicht barkeitsattribute in Zeile 3 11 17 und 21 teilen die Deklara tion in vier Teile auf Die Zeilen 4 bis 8 deklarieren private DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Klassen und Instanzen 130 Felder In Zeile 18 wird eine ganz spezielle Methode dekla riert n mlich der Konstruktor Konstruktoren und ihre Ge genst cke die Destruktoren stehen immer im Public Teil Im n chsten Unterkapitel ber Methoden erfahren Sie mehr dar ber Im Teil published ab Zeile 21 finden Sie dann noch zwei der unz hligen Eigenschaften die diese Kompo nente aufweist Wechseln Sie in Ihr Editor Projekt und suchen Sie im Quelltextedi tor im oberen Teil der Unit uMainEdi die Deklaration der Klasse TfrmEditor Analysieren Sie die einzelnen Felder und Metho den dieser Klasse Bis jetzt haben Sie erst das Backrezept n mlich die Dekla ration des Klassentyps Bevor Sie damit etwas anfangen k nnen m ssen Sie eine Variable dieses Typs deklarieren z B in der folgenden Art var MeinKnopf TButton Im Gegensatz zu Records und anderen statischen Typen haben Sie damit aber noch keinen Speicherplatz f r Ihre Instanz r
177. ose pas in einem neuen Ordner Prog2_1 Anschliessend speichern Sie das Projekt mit FILE SAVE PROJECT AS unter dem Dateinamen pApp2_1 dpr F hren Sie das Programm jetzt aus indem Sie F9 die Schaltfl che Run in der Symbolleiste oder das Men Run RUN bet tigen Wenn Sie bei der laufenden Anwendung auf den Schalter An wendung schliessen klicken sollten Sie dasselbe wie in Abb 13 erhalten DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programme und Units 42 m Ein Bitmap Schalter um Programme zu schliessen Iof xi Information x gt Anwendung schliessen i Gi Applikation schliessen Abb 13 Das Programm pApp2_1 zur Laufzeit E OONDOARWND 3 2 Die Syntax eines Programms Vielleicht ist es Ihnen noch nicht aufgefallen aber bis jetzt haben Sie den Code der Projektdatei gar nicht zu Gesicht bekommen Delphi halt die DPR Datei absichtlich versteckt weil sie automatisch generiert und aktualisiert wird Eine manuelle Bearbeitung empfiehlt sich nur f r Fortgeschritte ne 3 2 1 Die Syntax des Beispielprogramms Mit VIEW PROJECT SOURCE holen Sie den Code der Projektdatei in den Quelltexteditor Sie sollten folgenden Code sehen program pApp2_1 uses Forms uClose in uClose pas frmCloseApp SR RES begin Application Initialize Application CreateForm TfrmCloseApp frmCloseApp Application Run end Die Projektdatei ist gewissermassen das Hauptprogramm
178. outinen allen An weisungen zug nglich zu machen Stattdessen gibt es glo bale und lokale G ltigkeitsbereiche Die Konstanten Typen Variablen und Routinen eines Deklarationsteils sind nur in dessen G ltigkeitsbereich zug nglich Routinen bilden nun eigene lokale G ltigkeitsbereiche Pro zeduren und Funktionen k nnen einen eigenen Deklara tionsteil aufweisen in dem wie im Deklarationsteil einer Unit lokale Konstanten Typen Variablen und Routinen deklariert werden Es ist allerdings zu beachten dass Klassentypen nicht in Prozeduren und Funktionen sondern immer nur in Units und Programmen deklariert werden k nnen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Prozeduren und Funktionen 116 Ein lokaler Deklarationsteil steht zwischen Routinenkopf und dem vom reservierten Wort begin eingeleiteten Anwei sungsteil Die Syntax eines lokalen Deklarationsteils ent spricht genau jener einer Unit d h die einzelnen Teile wer den mit const type var eingeleitet und mit den einzelnen Deklarationen fortgesetzt Routinenkopf const lokale_Constl Wert 1 type lokaler_typl Typl var lokale_varl lokaler_typl lokale_var2 integer procedure lokale_Prozedur Deklarationsteil begin Anweisungsteil lokale Prozedur Anweisung end begin Anweisungsteil Routine Diese lokalen Bezeichner sind nur innerhalb der Routine verf gbar und werden bei Verlassen der Prozedur oder F
179. pisierte Parameter Formale nicht typisierte Pa rameter sind konstante oder Variablenparameter ohne Typ Angabe Damit kann der aktuelle Parameter beim Routinenaufruf jede Variablen oder Konstantenreferenz beliebigen Typs sein DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Prozeduren und Funktionen d 115 5 Offene Array Parameter Mit offenen Array Parametern ist es m glich Arrays verschiedener Gr sse an eine Pro zedur oder Funktion zu bergeben Weitaus die wichtigsten dieser f nf sind Variablen und Wer teparameter Formale Parameterlisten stehen im Kopf einer Routine zwi schen runden Klammern Die einzelnen Parameter deklarationen sind durch Strichpunkt getrennt Eine einzelne Parameterdeklaration hat die Syntax optional_reserviertes_Wort Bezeichner Typ Mehrere Parameter der gleichen Art und des gleichen Typs lassen sich in der gleichen Parameterdeklaration zusam menfassen Ihre Bezeichner werden dann mit Kommas ge trennt Es folgen ein paar Beispiele f r formale Parameterlis ten Werte Variablen und konstante Parameter intZahll intZahl2 Integer var strSl string const intZahl3 integer Offener Array Parameter var S array of Char Nicht typisierte Parameter var X Y 8 3 Lokale Deklarationsteile Bereits das Unterkapitel ber G ltigkeitsbereiche auf Sei te 105 hat Sie damit vertraut gemacht dass es nicht sinnvoll ist in einem Programm alle Daten und R
180. ppened Part of a statement that represents a value or can be used to calculate a value A user action such as a button click or a system occur rence such as a preset time interval recognized by a component Each component has a list of specific events to which it can respond Code that is executed when a particular event occurs is called an event handler A form method attached to an event The event handler executes when that particular event occurs One possible element of a structured data type that is a record or object a field is an instance of a specific data type Compare with property DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Glossar form formal parameter function global variable glyph header identifier implementation inheritance instance integrated debugger interface 182 To an end user a form is merely another window In Del phi a form is a window that receives components placed by the programmer at design time or created dynamically with code at run time regardless of the intended run time functionality of the window An identifier in a procedure or function declaration head ing that represents the arguments that will be passed to the subprogram when it is called A subroutine that computes and returns a value A variable used by a routine or the main body of a pro gram that was not declared by that routine or a var part of the main body is consid
181. pplikationsentwicklung mit Delphi DEL Installation und Handhabung E a A w N 32 frmprog1 color clred Mit dieser Zeile weisen Sie der Eigenschaft color des For mulars frmprog1 neu die Farbe clred d h Rot zu Abge schlossen wird jede Anweisung in Object Pascal mit einem Strichpunkt Sie sollten jetzt also den folgenden Code vor sich haben procedure Tfrmprogl btnFarbwechselClick Sender TObject begin frmprogl color clred end Klicken Sie in der Symbolleiste auf den gr nen Pfeil RUN um das Projekt zu kompilieren und anschliessend laufen zu lassen Wenn Sie alles richtig gemacht haben err tet ihr Formular sobald Sie auf die Schaltfl che klicken 2 3 5 Die Symbolleiste Die Handhabung der Symbolleiste d rfte Ihnen aus anderen Windows Anwendungen bekannt sein so dass auf sie hier nicht speziell eingegangen wird Wenn Sie mit der Maus auf die einzelnen Symbole zeigen erhalten Sie Schnellhinweise ber deren Funktion Schnellhinweis Abb 10 Symbolleiste Benutzen Sie jetzt die Schaltfl che SAVE FILE um Ihr Projekt zu speichern Als erstes erhalten Sie die Dialogmaske Save Uniti As Unter Dateiname ist Uniti eingetragen Weil es sich um eine Unit handelt die zum ersten Formular Ihres ersten Projektes geh rt tragen Sie als Dateiname nun beispielsweise uproTfrm1 ein Da wir uns unter Windows 95 befinden k nnen Sie selbstver standlich auch einen l ngeren Namen eingeben Die Eingabe
182. r den in Zeile 30 bis 32 zu einem String zusammengesetzt und mit Hilfe des Labels 1b1Meldung angezeigt Statt einer RadioGroup Komponente k nnten Sie f r eine Auswahl auch ein Listenfeld in das Formular einf gen F r die Ereignisbehandlungsroutine k nnen Sie den bestehen den Code verwenden Sie gehen folgendermassen vor DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen OONDOARWND 97 Holen Sie sich aus dem Register STANDARD eine Komponente LISTBOX Benennen Sie diese stxWoher Offnen Sie den Stringlis teneditor mit einem Doppelklick in die Wertespalte neben der Ei genschaft ITEMS Nun tragen Sie wieder zwei Zeilen mit dem glei chen Text namlich Schweiz und Ausland ein und schliessen den Stringlisteneditor Im Register Events holen Sie sich neben ONCLICK die bereits bestehende Methode btnradgroWoherClick aus der Liste Wenn Sie jetzt das Programm mit F9 laufen lassen k nnen Sie die Staatsb rgerschaft entweder mit den Radio buttons oder mit dem Listenfeld eingeben 6 4 Zeigertypen Eine Zeigertyp Variable englisch Pointer enthalt keinen Wert sondern die Speicheradresse einer dynamischen Va riablen eines Basistyps Die dynamische Variable auf die eine Zeigervariable zeigt wird wie in Zeile 2 oder 8 des Co debeispiels durch Schreiben des Zeigersymbols vor der Variablen referenziert Um auf Werte der dynamischen Va riablen zuzugreifen muss man den Zeiger dereferenzieren d h das Zeigersymbol w
183. r drei Tasten dr cken Sie die linke Maustaste und gehen Sie mit gedr ckter Maustaste an eine andere Stelle Hellgraue Kontu ren zeigen Ihnen an dass Sie jetzt alle drei Buttons verschieben Erst wenn Sie die Maustaste loslassen werden die Komponenten am neuen Ort abgesetzt DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Visuelle Programmierung 54 Wie Sie eine Komponente mit Hilfe der Ausrichtungspalette VIEW ALIGNMENT PALETTE im Formular zentrieren k nnen haben Sie bereits in den vorangehenden Kapiteln gesehen Nat rlich k nnen Sie damit auch mehrere Komponenten ausrichten Wenn Sie mit Text besser zurechtkommen als mit Symbolen dann erreichen Sie denselben Effekt mit dem Dialogfenster ALIGNMENT aus dem Men EDIT ALIGN i Vertical 1 No change Lett sides Tops C Centers Centers Right sides Bottoms Space equally C Space equally Center in window Center in window coed ww Abb 14 Das Dialogfenster ALIGNMENT Hier k nnen Sie angeben ob Sie mehrere Komponenten horizontal oder vertikal ausrichten m chten Besonders praktisch ist die Option SPACE EQUALLY mit der die Abst n de zwischen den gew hlten Komponenten ausgeglichen werden Wenn Sie mehrere Komponenten selektiert haben bezieht sich CENTER IN WINDOW nicht auf jede einzelne Komponente sondern auf die ganze Gruppe In zwei Schrit ten k nnen Sie also zuerst die Abst nde zwischen mehreren Kompon
184. r em pfangenen Botschaft eine Methode aus einer angegebenen Auswahl aufgerufen Ob ein Event Handler vorhanden ist oder nicht berpr ft in Delphi der interne Dispatcher nicht zu verwechseln mit dem Windows Dispatcher der eine API Funktion darstellt Existiert f r eine bestimmte Botschaft kei ne besondere Methode wird die Standardbehandlungsrouti ne Default Handler ausgef hrt In der klassischen Win dows Programmierung ben tigte man fr her noch umfang reiche Case Strukturen mit Eintr gen f r jede Botschaft Das folgende Schema illustriert das Botschaftszuteilungs system und pr sentiert zugleich die komplexe Nachrichten architektur unter Windows DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Eigenschaften und Windows Botschaften 149 Windows Nachrichtenfluss Delphi Program l Event Loop procedure Win Main while getMessage do begin translateMessage dispatchMe ssage Windows x function WndProckwindow HWnd Message WParam Replication Qusus word LParam longint longint export case Message of wm_Timer begin Fensterfunktion ae eee WMTimerBee p z Exit Application Queue end Dispatcher WMTimerBeep begin MessageBeep Q end API Library Application Programing Interface MK Chart Abb 26 bersicht ber den Windows Nachrichtenfluss Die Delphi Komponentenbibliothek definiert ein Botschafts zuteilungssystem das alle Windows Botschaften ein schliesslic
185. r lange Strings AnsiString langer String ShortString kurzer String Strukturierte Typen Arraytypen Dateitypen Klassentypen Klassenreferenztypen Recordtypen Mengentypen Zeigertypen Prozedurale Typen Globale Prozedurzeiger Methodenzeiger Varianttypen generische Typen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen 83 In den folgenden Abschnitten werden die wichtigsten dieser Typen beschrieben 6 2 Einfache und String Typen Einfache Typen definieren geordnete Wertemengen Es gibt zwei Basisklassen von einfachen Typen e Ordinale Typen e Realtypen Ordinale Typen sind eine Untermenge der einfachen Typen und enthalten eine endliche Anzahl von Elementen Alle Werte eines ordinalen Typs sind eine geordnete Menge Je der Wert kann ber seine Indexposition innerhalb der Menge bestimmt werden Mit Ausnahme der Werte vom Typ Integer hat das erste Element jedes ordinalen Typs die Indexpositi on 0 das n chste 1 und so weiter Der Index eines Wertes vom Typ Integer ist der Wert selbst Da ordinale Typen eine geordnete Menge sind bietet Pascal Standardfunktionen an mit denen sich die Position in der Menge Ord der vorangehende Pred und der nachfol gende Wert Succ sowie der erste und der letzte Wert Low High holen lassen Weitere Informationen zu diesen Funktionen finden Sie in der Hilfe Wie Sie in der Tabelle bereits gesehen haben gibt es zehn vordefinierte ordinale Typen und zwe
186. ram NAME in der ersten Zeile stehen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programme und Units 4 4 BER hl E S RWN OOONDAARWN 45 3 2 3 Reihenfolge der Deklarationen Im Deklarationsteil deklariert man ausser Units auch Kon stanten Typen Variablen Prozeduren und Funktionen W hrend unit interface und uses immer in dieser Rei henfolge erscheinen m ssen ist die hier vorgeschlagene Reihenfolge f r Deklarationen zwar h ufig anzutreffen aber nicht zwingend Das Benutzerhandbuch empfiehlt beispiels weise die Reihenfolge Typen Variablen Konstanten Rou tinen Sie k nnen auch mehr als einen Deklarationsteil der gleichen Art verwenden Allerdings gilt dabei die eiserne Regel dass Sie nur auf das Bezug nehmen k nnen was Sie bereits deklariert haben Wenn Sie also eine Variable strMeinName vom Typ TMeinTyp definieren dann m ssen Sie vorher TMeinTyp bereits deklariert haben Auch innerhalb von Routinen ist wieder ein Deklarationsteil f r lokale Typen Variablen und Routinen anzutreffen 3 3 Die Struktur einer Unit Units bilden die Grundlage der modularen Programmierung Mit Units bilden Sie Bibliotheken und unterteilen grosse Programme in logisch gruppierte Module Der Begriff Modul wird meistens synonym zu Unit gebraucht 3 3 1 Die Unit uClose des Beispielprogramms Unser Beispielprogramm hat eine einzige Unit an der Sie die allgemeine Syntax einer Unit studieren k nnen Der Pro gram
187. ray behan deln In diesem Fall gibt das Array Property dem Benutzer Zugriff auf ein bestimmtes Element einen String in einer gr sseren Datenmenge dem Memotext Array Properties funktionieren genau so wie andere Proper ties und lassen sich im wesentlichen in der gleichen Weise deklarieren Ein Array Property funktioniert nach aussen hin wie ein normales Array Sie greifen also beispielsweise mit color 0 clWhite auf das nullte Element des Properties Color zu eigentlich m sste es jetzt genaugenommen Colors heissen Bei der Deklaration unterscheidet das fehlende of und das Anreihen von Dimensionen das Array Property von einem normalen Array property Color n Byte TColor read GetColor write SetColor Die Schreib und Lesemethoden sind nun jeweils um einen oder mehrere Indexparameter erweitert function GetColor n Byte TColor procedure SetColor n Byte newColor TEOLOGEN 10 1 5 Ereignisse sind auch Properties Abschliessend noch eine Erg nzung die bereits jetzt ihr Ur vertrauen in Delphi festigen sollte DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Eigenschaften und Windows Botschaften OOOSNSODOUOIP OD 145 Komponenten verwenden auch Properties um ihre Ereig nisse zu implementieren Anders als die meisten anderen Properties verwenden Ereignisse keine Methoden um ihre Funktionen read und write zu implementieren Ereignis Properties arbeiten stattdessen mit einem privaten Feld v
188. re Komponenten k nnen jedoch diese Be handlung berschreiben oder auf andere Botschaften inklu sive benutzerdefinierte reagieren Ein Kernpunkt der traditionellen Windows Programmierung liegt in der Behandlung der Botschaften die Windows an Anwendungen sendet Delphi behandelt beinahe alle g ngi gen Botschaften automatisch 10 4 2 Kapiteltest 1 Wahr oder Falsch Die Deklaration eines Properties allein alloziert keinen Speicher f r den Property Wert 2 Wie viele Parameter ben tigt eine Read Methode 3 Wie viele Parameter ben tigt eine Write Methode 4 Welche Gruppe von API Funktionen sind f r ger te unabh ngige Grafiken Device Independent Bitmaps verantwortlich 5 Welche 6 Parameter beinhaltet ein Nachrichten Record in Delphi 10 4 3 bung Senden Sie an einen Button Ihrer Wahl die Nachricht das er gedr ckt wird DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Eigenschaften und Windows Botschaften 155 PostMessage Buttonl Handle cn_Command bn_Clicked 0 berschreiben Sie die schon erw hnte Botschaft wM_PAINT mit einer Methode welche als Reaktion ein Message Beep 0 von sich gibt Sie werden staunen wie oft Windows diese Botschaft aktiviert d Vergessen Sie auf gar keinen Fall die Vorfahr Methode mit inherited aufzurufen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Exception Handling und RTTI 156 11 Exception Handling und RTTI In diesem Teil werden Sie in
189. rn konventionell aufgerufen werden Dies gt ist mit einem qualifizierten Methodenaufruf m glich Wie DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Klassen und Instanzen 132 sonstige Prozedur und Funktionsaufrufe besteht ein Metho denaufruf aus dem Namen der Methode gefolgt von der aktuellen Parameterliste Der einzige Unterschied zu einem konventionellen Prozedur oder Funktionsaufruf besteht dar in dass die Methode nat rlich nur von der Instanz ihrer Klasse oder eventuell von deren Nachfahren aufgerufen werden darf und deshalb durch Voranstellen des Namens der Instanz als zu dieser Instanz zugeh rig gekennzeichnet wird Hier der Aufruf der Methode Draw als Beispiel frmHauptformular Canvas Draw 0 0 Bildl 9 4 2 Konstruktoren und Destruktoren Konstruktoren und Destruktoren sind spezielle Methoden zum Erzeugen und Freigeben von Objekten Objekte sind n mlich wie Zeiger dynamische Sprachelemente die nicht schon zu Beginn der Laufzeit eine bestimmte Menge Spei cherplatz fest reservieren sondern den Speicher je nach Bedarf beanspruchen und wieder freigeben Dazu dienen die Konstruktoren und Destruktoren Eine Klasse kann keinen einen oder mehrere Konstruktoren und Destruktoren f r die Objekte des Klassentyps haben Die reservierten W rter constructor und destructor stehen am Anfang jeder Deklaration an Stelle von procedure oder function Konstruktoren und Destrukto ren lassen sich vererben wie ander
190. rogramm erstellen mit dem sich die Teile eines Projektes erlautern lassen Ihre Beispielapplikation soll folgende Charakteristiken auf weisen Sie werden ein Formular mit einem Bitmap Schal ter erzeugen der nach dem Anzeigen einer Dialogbox die Applikation schliesst Ein Bitmap Schalter unterscheidet sich von der in der ersten Ubung verwendeten Schaltflache ein zig dadurch dass er neben der Beschriftung noch eine Gra fik eben ein Bitmap enthalt Gehen Sie folgendermassen vor 1 Offnen Sie Delphi falls dies nicht bereits geschehen ist 2 Solange die Entwicklungsumgebung nicht anders konfiguriert worden ist hat Delphi beim Offnen f r Sie bereits ein neues Projekt Project1 mit einem leeren Formular Formi und ei ner Unit Unit1 pas erzeugt ndern Sie im Register PROPER TIES des Objektinspektors den Namen des Formulars in DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programme und Units 41 frmCloseApp und geben Sie unter CAPTION Ein Bitmap Schalter um Programme zu schliessen ein 3 Doppelklicken Sie auf den Bitmap Schalter der sich ganz links im Register ADDITIONAL der Komponentenpalette befindet Der Schalter wird damit automatisch in der Mitte des Formulars plaziert 4 Verl ngern Sie den Button mit Hilfe der sichtbaren Ziehmarken 5 Wechseln Sie in den Objektinspektor nennen Sie den Schalter btnbitClose und beschriften Sie ihn mit Anwendung schlies 17 sen 6 Suchen Sie d
191. rossbuchstaben T am Anfang kenn zeichnet Die allgemeine Syntax f r den Typendeklarations teil sieht also folgendermassen aus type TTypnamel Typldefinition TTypname2 Typ2definition Konkrete Beispiele haben Sie bereits bei den Aufz hl und Teilbereichstypen gesehen In den folgenden Unterkapiteln finden Sie weitere Beispiele f r strukturierte Datentypen F r kompliziertere Typen wie Klassen m ssen Sie sich bis zum Kapitel 9 gedulden 6 3 2 Arraytypen Arrays sind ein oder mehrdimensionale Bereiche die viele Variablen des gleichen Typs enthalten Auf jede Variable im Array l sst sich ber den Namen des Arrays und den Index der Variable zugreifen der in Klammern angegeben wird Um einen Arraytyp zu spezifizieren ben tigt der Compiler den ordinalen Indextyp eines Arrays der die Anzahl der Ele mente angibt und den Basistyp Die Anzahl der Elemente in einem Array ist das Produkt der Anzahl der Werte in jedem Indextypen Die generelle Syntax sieht folgendermassen aus Type TArray array Indextypl Indextyp2 IndextypN of type Hier sehen Sie Beispiele f r einen ein und einen zweidi mensionalen Arraytyp type TDateiattribut array 1 4 of char TFigur Koenig Dame Laeufer Springer Turm Bauer TSchachbrett array 1 8 1 8 of TFigur var arrDateiattribut TDateiattribut arrMatrix array 1 10 1 10 of string Um auf Elemente des Arra
192. rozedur so dass sie folgendermassen aussieht DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen 96 1 procedure TfrmRecords btnradgroupWoherClick 2 Sender TObject 3 type 4 TPerson record 5 Name string 40 6 case Schweizer boolean of 7 true Heimatort string 40 8 false 9 Geburtsort string 40 10 Land string 20 11 end 12 var recPerson TPerson 13 begin 14 recPerson Name 15 inputbox Name Name 16 if btnradgrpwoher itemindex 0 then 17 begin recPerson Schweizer true 18 recPerson Heimatort inputbox 19 Heimatort Heimatort 20 1blMeldung Caption Sie sind 21 recPerson Name aus 22 recPerson Heimatort in der Schweiz 23 nd else begin 24 recPerson Schweizer false 25 recPerson Geburtsort inputbox 26 Geburtsort Geburtsort 27 recPerson Land inputbox 28 Land Land 29 1blMeldung Caption Sie sind 30 recPerson Name aus 31 recPerson Geburtsort 32 recPerson Land 33 end 34 end F hren Sie Ihr Programm mit Run RUN oder mit F9 aus Mit diesem Code haben Sie einen Record mit den zwei fes ten Feldern name Zeile 5 und Schweizer Zeile 6 sowie den varianten Feldlisten Heimatort Zeile 7 oder Geburtsort Land Zeile 9 und 10 deklariert Mit Hilfe der Komponente TGroupbox und der Funktion inputbox ha ben Sie allen Feldern Werte zugewiesen Diese Werte wu
193. rte Strings ie 92 6 3 SI fUKEUKIEre TYDeN ar e a aa aaa Ee aana EA a EA aA aia a EA aa EAER ERRANA Ea TASTA 93 6 3 1 Benutzerdefinierte TY POM ses elle 93 3 2 PLAY LY DCI Wissel rd Herne eee 94 6 3 3 Mengentypen 43 4e 00s natant nee ae eee eet 95 6 34 Record DOIN ike sce ne rien nennen Gelert euere 96 6 4 ZEIGENWVPEN een aaa ei ev ee ee ee ee E EaR Denk 99 6 5 Kompatibilit t von Datenlypen a Hesssnsereesnereseserksenknrenenie 100 6 5 1 Typen und Zuweisungskompatibilit t uuunusssssnnnnnnnnnnnnnnnnnnnnnnnnn 101 6 5 2 Fundamental und generische Typen 2 ccceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeees 101 8 5 MEKApIUIENOM sate eh aan an a ELENA SEELE 102 6 6 1 Kapltelles gt man ei 102 TADIAUISIEUErINd eee aala eiaeia aaa eaaa lesa L EAE srinaaurrn 104 7 1 Anweisungen zusammengesetzte Anweisungen und Bl cke 2222 104 PNET ANWEISUNGEN ara een 104 7 1 2 Zusammengesetzte Anweisungen unessnssssssnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 104 221 3 BIOCKO nn Eee re EE AET E EAIA a a a ie a LE 105 7 1 4 GUlligkeiisbereichesan vaste eae eat e 105 7 2 Die lf Anweisung te ee ee Eee RE 106 DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Inhalt 5 7 3 Die Gase AnWelsung ct ae nein 109 7 4 Schleifen Programmierung 442 44444000HRnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 110 7 4 1 Die Eor Schlelless st uttnsinieiieeitiuetriie 110 7 4 2 Die Whlle Sschlel
194. rue wenn beide Operanden true ergeben ergibt true wenn mindestens ein Operand true ergibt ergibt true wenn genau ein Operand true ergibt invertiert den Wert des Operanden Das folgende Codebeispiel verdoppelt beispielsweise 4 und 5 und verdreifacht alle anderen Zahlen if intZahl gt 3 and not intZahl gt 6 then intZahl 2 intZahl else intZahl 3 intZahl Mit etwas gedanklicher Vorarbeit lassen sich mit diesen Konstrukten bedingte Anweisungen beliebiger Komplexit t realisieren 7 3 Die Case Anweisung Eine Case Anweisung ist eine bedingte Anweisung die sich besonders f r Situationen mit mehr als zwei Alternati ven eignet Eine Case Anweisung haben Sie im varianten Teil eines Records bereits kennengelernt Die Case Anweisung Fallunterscheidung besteht aus ei nem Ausdruck dem Selektor und einer Liste von An DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Ablaufsteuerung akWwND 107 weisungen Vor jeder Anweisung stehen ein oder mehrere Case Konstanten ein Case Bereich oder das reservierte Wort else Nach jeder Anweisung steht wie immer ein Strichpunkt Die allgemeine Syntax sieht folgendermassen aus Case Selektor of Konstantel oder Konstantenbereichl Anweisungl Konstante2 oder Konstantenbereich2 Anweisung2 KonstanteN oder KonstantenbereichN AnweisungN end Die Case Konstanten m ssen eindeutig sein die Bereic
195. s Prozeduraufrufs Prozedur Bezeichner parameterl parameter2 Im Gegensatz zu den formalen Parametern sind die aktuel len Parameter zwischen den Klammern durch Kommas ge trennt und weisen keine Typen mehr auf Hier der Aufruf f r unser Prozedurbeispiel von vorhin Init_Datum intJahr intMonat intTag Abgesehen davon dass sie in eine Anweisung eingebettet sind sehen Funktionsaufrufe genau gleich aus varl Funktions Bezeichner paraml param2 Unser Funktionsbeispiel von vorhin ruft man folgender massen auf intZahll Verdoppeln intzZahl2 Weil Funktionen auch Teil von Funktions und Prozedur aufrufen sein k nnen sind die folgenden verschachtelten Aufrufe ebenfalls g ltig lblAnzeige caption inttostr Verdoppeln intZahl2 intZahll Verdoppeln Verdoppeln intZahl2 8 4 5 Deklaration im Interface Teil Prozeduren und Funktionen sind wie Sie bereits geh rt ha ben im Normalfall nur in der Unit g ltig wo sie implemen tiert sind Wenn Sie sie anderen Units zug nglich machen m chten dann m ssen Sie im Interface Teil der Ursprungs Unit eine Funktions oder Prozedurdeklaration einf gen Ei DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Prozeduren und Funktionen 1 2 120 ne solche Deklaration besteht in der Wiederholung des Rou tinenkopfs mit seiner formalen Parameterliste an einem be liebigen Ort im Interface Teil Allgemeine Syntax Proc
196. s auch neue 16 Bit SQL Links Ferner erhalten Sie mit der Suite einen kompletten Hand buchsatz zum Thema Delphi und Entwicklung Delphi 2 C S ist mit diesem Lieferumfang ein abgeschlossenes Entwick lungssystem f r Client Server Profis und Entwickler 1 2 7 Unterschied zwischen Delphi und Delphi Cli ent Server Delphi 2 Client Server ist f r Client Server und professionelle Datenbankentwickler gedacht Die Client Server Version enth lt alle Komponenten des Delphi Developer und Standard Paket Zus tzlich enth lt Delphi Client Server die folgenden Komponenten SQL Links Ver 2 5 sind dabei Diese Version enth lt native Treiber Hochleistungstreiber f r Oracle Sybase MS SQL Server Informix und Interbase Diese Links sind weder im Delphi Paket enthalten noch sind sie einzeln erh ltlich Sie erm glichen unlimited royalty free deployment across servers d h man darf beliebig viele Clients welche auf be liebig viele Server zugreifen k nnen erstellen ohne dabei Lizenzgeb hren an Borland entrichten zu m ssen Dies gilt brigens nur f r die Anwendung die von Delphi er zeugt wurde und nicht f r Delphi selbst Wenn ein Team DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Einleitung 13 von 10 Entwicklern zusammen auf ein Client Server Projekt hinarbeiten m ssen 10 Kopien der SQL Links sprich 10 Ko pien von Delphi C S gekauft werden Durch das Local Interbase Deployment Kit kann der Delphi C S Ent
197. s hat eine Reihe von Vorteilen zu denen als wichtigste z hlen e Exceptions lassen sich durch Vererbung hierarchisch gruppieren e Neue Exceptions sind verwendbar ohne bestehenden Code zu beeinflussen e Ein Exception Objekt kann Informationen wie z B eine Fehlermeldung oder einen Fehlercode vom Ort der Aus l sung bis zum Ort der Behandlung transportieren DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Exception Handling und RTTI OOONDOARWND _ d 157 In der Unit SysUtils ist die Erzeugung und Behandlung von Exceptions f r die Object Pascal Laufzeitbibliothek imp lementiert Wenn eine Anwendung die Unit SysUtils ver wendet wandelt die Unit alle Laufzeitfehler automatisch in Exceptions um Dies hat zur Folge dass Fehlerbedingungen wie z B nicht ausreichender Platz auf dem Heap die sonst zum Abbruch der Anwendung f hren w rden abgefangen und gezielt behandelt werden k nnen 11 1 1 try finally Construct Wenn man in einem Codeabschnitt eine Ressource anfor dert muss oft auch daf r gesorgt werden dass sie wieder freigegeben wird und zwar unabh ngig davon ob der Code fehlerfrei ausf hrbar ist oder eine Ablaufunterbrechung we gen einer Exception erf hrt Beispielsweise ist es in der Re gel sinnvoll nach dem Offnen und Bearbeiten einer Datei diese in jedem Fall wieder zu schliessen In solchen Situa tionen l sst sich die try finally Anweisung verwen den Die Anweisungen i
198. sbehandlung mit folgendem Code try frmAbout showModal finally frmAbout Release end Wenn Sie alles richtig gemacht haben sollten Sie etwa das folgende Ergebnis erhalten ay Editor Datei Bearbeiten Info willkommen im selbstgebauten Editor Erstellt von Kleiner Kommunikation und Rothen Ecotronics N leiner ommunikation A Laden Speichen ff Ende Abb 32 Der fertige Editor mit einer Info Box Falls Sie noch Zeit und Lust haben k nnen Sie einen weite ren Men eintrag f r die Funktion Ersetzen erstellen und die entsprechende Routine dazu schreiben DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Begriffsverzeichnis Deutsch Englisch 13 Begriffsverzeichnis Deutsch Englisch Anweisung Anweisungsteil Aufzahlungstyp Ausdruck Ausnahmebehandlung Ausrichtungspalette Bedienfeld Bedienfeldkomponente Bedingte Anweisung Besitzer Bezeichner Bildeditor Bildlaufleiste Bitmap Schalter Bl cke Botschaft Codeblock Compiler Befehl Datenbankoberfl che Datensteuerung Datenzugriff Deklarationsteil Dialogfenster Eigenschaft Eigenschaftsspalte einfacher Typ Entwicklungsumgebung Entwurfszeit Ereignis Exception ausl sen Exception Behandlungs routine Fehlerbehandlung Fehlerpr fung Feldkennzeichner Formular Formularschablone Freigabecode gesch tzt gesch tzter Block Gruppenfeldkomponente G ltigkeitsbereich Gel tungsbereich G ltigkeitsbereich von Bl cken Instanz integrier
199. sch dynamisch verwalten 6 5 Kompatibilitat von Datentypen Dass Pascal streng typisiert ist bedeutet nicht dass Sie Zuweisungen nur zwischen Daten vom gleichen Typ vor nehmen k nnen Die Regeln welche Typen einander zuge wiesen werden k nnen fasst man unter dem Stichwort Ty penkompatibilit t oder Zuweisungskompatibilit t zusammen Da die neuen generischen Typen in Delphi 2 0 im Vergleich zu den Fundamentaltypen die Regeln f r die Typenkompati bilit t wieder etwas vereinfachen findet sich in diesem Un terkapitel auch ein Abschnitt ber fundamentale und generi sche Typen 6 5 1 Typen und Zuweisungskompatibilit t Kompatibilit t zwischen zwei Typen wird in Ausdr cken oder in relationalen Operationen gefordert Die Regeln welche Typen zueinander kompatibel sind findet man in der Online Hilfe unter dem Stichwort type compatibility Kompatibili t t der Datentypen Kompatibilit t der Datentypen ist eine Voraussetzung f r Zuweisungskompatibilit t Diese Re geln sehen Sie sich nun in der Hilfe an ffnen Sie mit HELP HELP ToPics die Online Hilfe wechseln Sie ins Register INDEX geben Sie das Stichwort type compatibility ein und lesen Sie die angezeigte Seite durch Klicken Sie dann auf ASSIGNMENT COMPATIBILITY unter SEE ALSO und lesen Sie die Re geln f r die Zuweisungskompatibilit t ebenfalls durch DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen 99 6 5 2 Fundamental und generisch
200. schaftspalte Verschiebbares Spaltentrennzei chen Verschachtelte Eigenschaften 27 Laufzeit existieren zeigt der Objektinspektor nicht an Wenn Sie sich in der Online Hilfe die Liste der Properties einer Komponente zeigen lassen dann sind diese Laufzeit Eigen schaften mit einem kleinen gr nen Dreieck gekennzeichnet Object Inspector ix Caption sip l E ClientHeight 273 Register Ereignisse Clientwidth 427 Color clBtnFace True crDefault Wertespalte True TFont fsNormal 300 0 TControlScrollBar None KeyPreview False Left 200 Menu fren Abb 5 Der Objektinspektor Der Objektselektor unterhalb des Titelbalkens zeigt Namen und Typ des ausgew hlten Objekts Wenn Sie auf den Pfeil rechts klicken erscheint eine Liste aller zum Formular geh rigen Komponenten Zur Zeit befindet sich hier nur Form weil Sie noch keine Komponenten hinzugef gt haben Die zwei Register PROPERTIES Eigenschaften und EVENTS Ereignisse sind Schnittstellen zu den Eigenschaften und Ereignisbehandlungsroutinen der Komponenten Suchen Sie im Register PROPERTIES die Eigenschaften CAPTION und NAME Im Feld rechts werden Sie bei beiden Form1 finden Als n chstes geben Sie Ihrem Formular eine neue Beschriftung Tragen Sie unter NAME nun frm ein Wie Sie sehen hat sich auch der Eintrag unter CAPTION ge ndert Es ist ausserst wichtig den Unterschied zwischen CAPTION und NAME zu verstehen Unter NAME tragt man den Be zeichner
201. schaltet ist die Sie im Register COMPILER des Men s PROJECT OPTIONS im Feld ASSIGNABLE TYPED CONSTANTS einstellen k nnen Borland scheint diese Programmierpraxis aber nicht zu m gen Dass lokale typisierte Konstanten erhalten bleiben wird verschwiegen und vom Gebrauch typisierter Konstanten als Variablen wird in der Online Hilfe mit folgenden Worten aus dr cklich abgeraten Die Compilerdirektive J erm glicht die Deklaration von ty pisierten Konstanten die ge ndert werden k nnen Typisier te Konstanten die im Standardzustand J deklariert wer den k nnen nur gelesen und nicht ver ndert werden Aus Gr nden der Abw rtskompatibilit t zu lteren Versionen von Delphi und Borland Pascal k nnen typisierte Konstanten die im Zustand J deklariert wurden ge ndert werden Prin zipiell handelt es sich dabei um initialisierte Variablen F r neue Anwendungen ist der Einsatz des Zustands J nicht empfehlenswert Da Borland keine Alternativen f r Static Variablen und das im Beispiel genannte Problem erw hnt d rften typisierte Konstanten auch weiterhin beliebt bleiben DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Konstanten und Variablen 80 5 6 Rekapitulation 5 6 1 Kapiteltest 1 Geben Sie von den folgenden Operationen an ob sie das Resultat true oder false ergeben Sehen Sie bei Be darf in der Hilfe unter precedence of operators nach 6 8 3 gt 60 8 gt 7 and 2 gt 1 xor
202. schen 22244444000nn44nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 56 4 2 4 Gruppieren von Komponenten u4 s Herne 56 4 2 5 Owner und Parents RB RE LE 58 4 3 Ereignisbehandl ngsroutinen a 2 334er 58 4 4 Die wichtigsten Komponenten 2224444000nnn44nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 60 4 4 1 Die Komponenten des Registers Standard 4444444sn0nnnnnn ernennen 61 4 4 2 Die Komponenten des Registers Additional 24444400snnnn rn 62 4 4 3 Die Komponenten des Registers Win95 usssssss4snnnnnnnnnnnnnnnnnnnnnnne 63 4 4 4 Die Komponenten des Registers Data Access 22222444400nnnnnn nenn 64 4 4 5 Die Komponenten des Registers Data Controls 22444400ssnnn ss 64 4 4 6 Die Komponenten des Registers Win 3 1 uuuuusssssssssnnnnnnnnnnnnnnnnnnnnnn 65 4 4 7 Die Komponenten des Registers Dialogs 22244444400nnnnn nn nnn nn 65 4 4 8 Die Komponenten des Registers System uuuuusssnsssssnnnnnnnnnnnnnnnnnnnnnnnn 66 4 4 9 Weitere Register und Komponenten 444444400nnnnnnnnnnnnnnnnannnnnnnnnnnnnnnn 67 4 5 Das Edil r Projekti une er ee alle 67 4 6 Modale und nichtmodale Dialogfenster 244444400snnnnnnnnnnnnnnnnnnnnnnnnennnnnn 69 ARE AIM ON a ee ade ere nee 70 4 7 1 Kapllellestir 2 eAu nt set tals cee bhiset ne el el hl 70 4 7 2 BUNG een 70 5
203. sen in der Deklaration des Recordtyps zugewiesen werden Der feste Teil eines Recordtyps legt die Liste der statischen Datenfelder mit jeweils einem Bezeichner und einem Typ fest Jedes Feld enth lt Informationen die immer auf die gleiche Art und Weise gewonnen werden Der variante Teil eines Recordtyps verteilt den Speicherplatz f r mehr als eine Liste von Feldern Damit k nnen Sie auf Information in mehr als einer Art zugreifen Die allgemeine Deklaration eines Recordtyps mit festem und variantem Teil sieht so aus type Ttypname record fester Teil feldnamel feldname2 typl feldname3 typ2 varianter Teil case feldname4 typ3 of Wertl feldname5a typ2 feldname6a typl Wert2 DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen 95 feldname5b typ2 Wert3 feldname5c typ4 end Das reservierte Wort record in Zeile 2 leitet einen Record ein In Zeile 4 und 5 folgen die Felddeklarationen des festen Teils Falls es einen varianten Typ gibt folgt eine Case Anweisung die ein weiteres festes Feld definiert und dieses zur Unterscheidung der verschiedenen Varianten des vari anten Teils benutzt Die Case Anweisung finden Sie in Zeile 7 und in Zeile 8 bis 14 die Feldlisten fur drei verschiedene Varianten Jede Feldliste ist eine Variante die den gleichen Platz im Speicher belegt Jede Variante wird mit einer Konstanten unterschieden Alle Konstanten m ssen eindeu
204. sentwicklung mit Delphi DEL Klassen und Instanzen OONDOARWND 137 9 7 2 Virtuelle Methoden und late binding Diese zur Laufzeit generierte Flexibilit t ist aber nur m glich wenn die Referenz auf eine Methode nicht schon beim Kompilieren sondern erst wahrend der Laufzeit in Abhan gigkeit des Typen festgelegt wird Object Pascal eigentlich auch alle anderen OOP Sprachen l st das Problem des late binding mit Hilfe der sogenannten Virtual Method Ta bles VMT die ein Teil jeder Klasse ist Das sind Tabellen mit Methodenzeigern die f r jede Klasse mit Hilfe des Kon struktors automatisch angelegt werden sofern die Klasse ber virtuelle Methoden verf gt Nun genug der Abstraktion anhand des folgenden konkreten Beispiels steuern wir auf den Kern der Sache zu denn Programmieren geht ber Stu dieren Stellen Sie sich eine abstrakte Oberklasse Fortbewegungs mittel vor die sich in Zeile 18 befindet Von dieser Klasse vererben wir je drei neue Fortbewegungsmittel n mlich ein Flugzeug Zeile 24 ein Auto Zeile 29 und ein Velo Zeile 34 Selbstverstandlich kommt nun eine virtuelle Methode namens goAway dazu welche in der Basisklasse virtual und in den abgeleiteten override deklariert wird und un terschiedlich reagiert Und genau das ist der Punkt Beim Aufruf der einzelnen Methoden ShowMove in Zeile 87 bis 89 entscheidet nun die Methode ShowMove dynamisch zur Laufzeit in Zeile 46 wie darauf zu reagieren ist Das h
205. sich nur element weise zugreiffen Ein offenes Array l sst sich nur als offener Array Parameter oder untypisierter Variablenparameter an andere Prozeduren und Funktionen bergeben F r Wertparameter eines offenen Arrays erzeugt der Compi ler eine lokale Kopie des aktuellen Parameters bzw der ak tuellen Funktion auf dem Stack Bei der bergabe grosser offener Arrays als Wertparameter besteht daher die Gefahr des Stack berlaufs DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programmstruktur OONDOOARWDY 175 Bei Anwendung auf einen offenen Array Parameter liefert die Standardfunktion Low den Wert Null High liefert den Index des letzten Elements des aktuellen Array Parameters und die Funktion Sizeof liefert die L nge des aktuellen Ar ray Parameters Hier nun das vollst ndige Beispiel welches die Summe von 0 bis 100 ermittelt type TOpArray array 0 100 of integer procedure LoadNumbers var A array of integer var I Word begin for I 0 to High A do A I I end function Summe const A array of integer integer var I Word S integer begin S 0 for I 0 to High A do S S A I Summe S forml canvas textOut 5 5 inttoStr S end procedure TForml Button6Click Sender TObject var opArray TOpArray begin LoadNumbers opArray Summe opArray end Wenn ein Element eines offenen Array Parameters vom Typ Char ist kann der aktuelle
206. sowohl eine benutzerfreundliche visuelle Ent wicklungsplattform als auch eine m chtige objektorientierte Programmiersprache Deshalb lassen sich mit Delphi nicht nur in k rzester Zeit kleine Windows Applikationen ent wickeln die gegen ber interpretierten Sprachen betr cht liche Geschwindigkeitsvorteile aufweisen sondern der ob jektorientierte Ansatz erlaubt es auch diese kleinen Pro gramme zu immer gr sseren und komplexeren Applikatio nen weiterzuentwickeln Am Ende des Kurses sind Sie mit der Handhabung der Del phi Entwicklungsumgebung vertraut und kennen die wichtig sten Elemente von Object Pascal so dass Sie f hig sind kleinere Windows Applikationen zu entwickeln 1 2 Strategischer Hintergrund Der in diesem Unterkapitel 1 2 folgende Artikel bietet einen strategischen berblick was Delphi 2 als Entwicklungs umgebung bietet Die meisten Anbieter von Entwicklungsumgebungen r sten nun auf die 32 Bit Welt um Neben dem gravierendsten Fort schritt dem Wegfall der 64K Datensegmentgrenze n tzt Borland die Umstellung um Delphi 2 mit neuen Features und Komponenten abzurunden 1 2 1 Neues aus Borland Borland hat jetzt eine umfassende Strategie f r ihre Client Server Aktivit ten bekanntgegeben Dazu geh ren neue Produkte und strategische Partnerschaften mit denen das Unternehmen seine Stellung auf dem Client Server Markt untermauern will Anl sslich der Presseveranstaltung Borland Spring Tour in Z rich vom
207. spiel bezieht sich deshalb das else in Zeile 5 auf das innere if in Zeile 3 Die Variable intZahl hat deshalb am Ende dieses Codes den Wert 6 intZahl 2 if intZahl lt 5 then if intZahl gt 3 then intZahl 2 intZahl else intZahl 3 intZahl Wenn die Anweisung in Zeile 6 dagegen zum Else Teil des usseren if in Zeile 2 geh ren soll so dass intZahl den Wert 2 beh lt dann gibt es drei L sungen 1 Man kann innere und ussere If Anweisung vertauschen if intZahl gt 3 then if intZahl lt 5 then intZahl 2 intZahl else intZahl 3 intZahl 2 Man kann unmittelbar nach else ein zweites else ein f gen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Ablaufsteuerung OOUOP OD OOPOD Logischer Operator Art bin r bin r bin r un r 106 if intZahl lt 5 then if intZahl gt 3 then intZahl 2 intZahl else else intZahl 3 intZahl 3 Man kann aus dem Then Teil des usseren if eine zu sammengesetzte Anweisung machen if intZahl lt 5 then begin if intZahl gt 3 then intZahl 2 intZahl end else intZahl 3 intZahl Man kann nicht nur If Anweisungen sondern auch die Be dingungen verschachteln Daf r stehen die logischen Opera toren and or xor und not sowie Klammern zur Verf gung Zur Auswertung solch verschachtelter Bedingungen wird die boolesche Logik verwendet Boolesche Logik ergibt t
208. sssssnnnnessnnnnnnnnnnnnnnnnnnnnnnnnnnen nennen nn 145 10 1 Was sind Eigenschaften Properties uuuu 24424444444nnnnnnnnnnnnnnnnnnnnnnnnnnnnn nn 145 10 1 1 Vorteile von Pfoperlles am a nlelanc seca ete ile eldsacaletdsedadetivecadetsuelavets 145 10 1 2 Properties selbst deklarieren sc ccc ciesdicepiecdecsblastisebienaletlanteiebixehiahienteeeelaes 146 10 1 3 Standardwerte von Properties c ccceceeeeeeeeeeeeneeeeeeeeeeeeeeeseneeeeeeeeees 148 10 1 4 Erzeugen von Altay Propetlles unserer nek ee 149 10 1 5 Ereignisse sind auch Properliesa 2 ax ze aa 150 10 2 Windows Nachrichten nino 0 04 ieee oe lieleken 150 10 2 1 Windows AP Funktionen 2a eek 150 10 2 2 API Funktionen nach Gebieten aufgeteilt 44444444nen nenn 151 102 3 WindoWS M6883985 4 4 4 4 een ger ere 152 10 2 4 Was enth lt eine Windows Botschaft usussssssennnnnnnnnennnnnnnnn 155 10 2 5 Eigene Botschaften versenden assessment 155 10 2 6 berschreiben von Botschaften 44444444000nnnnnnnnnnnnnnnnnnnnnnnnnnnn 156 10 3 Definieren eigener Botschaften uuus4444444444nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 156 10 3 1 Deklarieren eines eigenen Botschaftsbezeichners 157 10 3 2 Generelle Botschaftsbearbeitung 444400u0nn44nnnnnnnnnnnnnnnnnnnnnnn 158 10 4 FRR cape AUN as rcs een ee et 159 10 4 T ZUSAMIMENTASSUAG eene eneen enea E E E
209. st Wenn Sie zum Beispiel eine Komponente aus der Komponentenpalette in ein Formular einf gen erzeugt Delphi die Komponente durch Aufrufen des Konstruktors der Komponente der den Anfangswert des Property der Komponente festlegt Zum Deklarieren eines Standardwerts f r ein Property f gen Sie den Befehl default an die Deklaration oder Neudeklara tion des Property an gefolgt vom Standardwert property Color TColor read GetColor write SetColor default clBlue d Die Deklaration eines Standardwerts in der Deklaration setzt den Property nicht automatisch auf diesen Wert Sie als Entwickler m ssen sicherstellen dass der Konstruktor der Klasse das Property tats chlich auf den eingegebenen Wert setzt DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Eigenschaften und Windows Botschaften 144 Constructor TMyClass Create AOwner TComponent begin inherited Create AOwner FColor clBlue end 10 1 4 Erzeugen von Array Properties In der Regel haben Read Methoden keine Parameter hier folgt nun die m gliche Ausnahme Einige Properties bieten sich f r eine Indizierung an im Stil von Arrays Sie bestehen dann aus mehreren Werten die einer Art von Indexwert entsprechen Ein Beispiel bei den Standardkomponenten ist das Property Lines der Memo Komponente Lines ist eine indizierte Liste von Strings die den Text des Memos siehe unser Beispiel Editor ausma chen und diese Liste l sst sich wie ein String Ar
210. t Das Be DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Klassen und Instanzen 127 nutzerhandbuch von Borland nennt Objekte Datentypen setzt sie also mit Klassen gleich In Turbo Pascal gab es n mlich den reservierten Begriff class noch nicht sondern damals hiess es object Gewisse andere Autoren brauchen den Begriff dagegen synonym zu Instanz H ufig ist die Bezeichnung Objekt dort anzutreffen wo es keine Rolle spielt ob es sich um eine Klasse oder die dazugeh rige Instanz handelt Der Begriff Schwarzw ldertorte kann ja auch sowohl f r diesen Typ Torte wie f r ein ganz konkretes Exemplar davon verwendet werden Wir schliessen uns diesem Sprachgebrauch an Im Skript wird Objekt dann verwendet wenn es sowohl um die Klasse wie um die Instanz geht w hrend die pr ziseren Be griffe benutzt werden wenn es nur um die Klasse oder nur um die Instanz geht 9 2 4 Eigenschaften Eigenschaften properties sind ein weiteres zentrales Ele ment von Objekten mit dem Sie bereits mehrmals gearbeitet haben Beispiele von Eigenschaften sind die H he eines Formulars die Beschriftung eines Buttons oder die Gr sse einer Schriftart usw Eigenschaften sehen zwar wie Objektfelder aus sind aber eine nat rliche Erweiterung von diesen Sowohl Objektfelder wie Eigenschaften k nnen dazu benutzt werden Attribute eines Objekts auszudr cken Aber w hrend Felder Elemen te sind die sich direkt untersuchen und ndern lassen
211. t im Code angeben oder f r das ganze Projekt in den Projekt optionen einstellen ffnen Sie das Men PROJECT OPTIONS und w hlen Sie das Register COMPILER In der Gruppe SYNTAX OPTIONS finden Sie unter anderem HUGE STRINGS Dieses Feld sollte defaultm ssig angekreuzt sein Auch den andern Feldern dieses Registers ent sprechen Compilerdirektiven Klicken Sie auf die Schaltfl che HELP um sich die Informationen dazu anzeigen zu lassen F r Strings deren maximale L nge bekannt ist kann man den String Typ mit einem Gr ssenattribut erg nzen Die An gabe des Gr ssenattributs f hrt automatisch zu einem kur zen String Typ entspricht also unter Delphi 2 0 dem funda mentalen Typ shortstring DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen OONOARWND 89 Eine Ganzzahl in eckigen Klammern gibt dabei die maximale Anzahl Zeichen an Sie haben diese Syntax bereits in der Ubung auf Seite 79 verwendet strwillkommen string 50 Strings sind indexiert so dass Sie ber den Index direkt auf die einzelnen Zeichen eines Strings zugreifen k nnen Der Index des ersten Zeichens in einem String ist 1 Bei kurzen Strings shortstring oder string mit H enth lt das Element mit Index 0 die dynamische L nge des Strings Mit dem Pluszeichen lassen sich ausserdem l ngere Strings aus mehreren Teilstrings zusammensetzen konkatenieren In der folgenden bung probieren Sie dies aus indem Sie das Editor Programm
212. t begin und end zu einer zusammenge setzten Anweisung zu verbinden denn repeat und until bilden bereits eine Klammer um die Anweisungen Unsere While Schleife von vorhin l sst sich auch als Re peat Schleife formulieren carZahl 2 Repeat carZahl carZahl carZahl lblwhile caption inttostr carZahl until carZahl gt 256 Diese Repeat Schleife liefert genau das gleiche Resultat wie die While Schleife solange wir die Variable carZahl in der ersten Zeile nicht auf den Wert 256 setzen In diesem Fall wird die While Schleife nicht durchlaufen und folglich auch kein Wert angezeigt die Repeat Schleife zeigt dagegen den Wert 65 536 an 7 5 Rekapitulation 7 5 1 Ubung7_1 Schreiben Sie mit m glichst wenig Zeilen Code ein Pro gramm das eine Listbox mit den Grossbuchstaben des Al phabets f llt und wenden Sie dazu Ihr neu erworbenes Wis sen ber Schleifen an DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Prozeduren und Funktionen Be 112 8 Prozeduren und Funktionen Eines der wichtigsten Mittel um komplexe Programme in kleinere bersichtliche und wiederverwendbare Einheiten zu zerlegen sind Prozeduren und Funktionen Sie lernen in diesem Kapitel e was Prozeduren und Funktionen sind und weshalb man sie verwendet e was Parameter sind welche verschiedenen Arten es gibt und wie man sie verwendet um Daten in Prozeduren und Funktionen zu bergeben e wie und weshalb Sie loka
213. t the Code editor Lesen Sie den Text durch d Den Umgang mit der Online Hilfe sollten Sie sich bald zur Routine machen Sowohl f r den Umgang mit der Entwick lungsumgebung wie f r die Sprachelemente von Object Pascal ist sie die beste Quelle ja in manchen F llen sogar die einzige beispielsweise f r Anderungen von einer Versi on zur n chsten Sie werden nun Programmcode schreiben Klicken Sie daf r zu cs erst auf ihre Schaltfl che btnFarbwechsel Damit wird dieses Objekt im Objektinspektor aktiviert Wenn Sie ins Register EVENTS wechseln erhalten Sie eine Liste von Ereignissen F r jedes da von k nnten Sie jetzt Routinen schreiben mit denen das ce Programm auf dieses Ereignis reagieren soll Routine ist bri gens ein Sammelbegriff f r Prozeduren Funktionen und Metho den Windows Programme sind ereignisgesteuert Die Entwick lung von Windows Applikationen unter Delphi besteht deshalb zu einem grossen Teil darin Ereignisbehandlungsroutinen zu pro grammieren Vorerst wollen wir nur eine Routine schreiben die auf einen Mausklick reagiert Das Ereignis dazu ist das oberste in der Liste mit Namen ONCLICK Wenn Sie in das Feld daneben doppel klicken passiert erstaunliches Delphi wechselt von selbst in den Quelltexteditor und erstellt den Kopf der Prozedur zur Behandlung dieses Ereignisses Sie finden auch bereits begin und end vor so dass Sie in der Zeile dazwischen nur noch eingeben m ssen DELPHI V2 0 A
214. te verursachen kann e Das Programm kann bei Bedarf geeignete Werte erzeu gen Der vielleicht h ufigste Fehlertyp ist das Referenzieren einer Variable welche keinen Anfangswert besitzt Indem Sie den Wert zu einem Property erkl ren default k nnen Sie je doch sicherstellen dass der aus dem Property ausgelesene Wert immer g ltig ist Im Gegensatz zu einem Feld kann ein Property Details sei ner Implementierung vor dem Benutzer verbergen Bei spielsweise lassen sich Daten intern verschl sseln f r das Setzen oder Lesen des Property aber unverschl sselt an zeigen Obwohl der Wert eines Property sich nach aussen nur als einfache Zahl darstellt k nnte die Komponente die sen Wert in einer Datenbank abfragen oder mit komplizier ten Verfahren errechnen Properties bieten auch erhebliche Vorteile im Komponen tenbau sowohl f r Sie als Komponentenentwickler als auch f r die Benutzer Ihrer Komponenten Properties lassen sich im Entwurfsmodus im Objektinspektor anzeigen publis hed darin liegt ihr offensichtlichster Vorzug Denn auch Ihre Programmierarbeit wird dadurch erleichtert Sie brau chen n mlich nicht eine Menge von Parametern zu verarbei ten um ein Objekt zu konstruieren Sie brauchen lediglich die vom Benutzer zugewiesenen Werte einzulesen 10 1 2 Properties selbst deklarieren Die Deklaration eines Property und ihrer Implementierung ist einfach und konsistent Die Deklaration eines Property enth lt drei Dinge
215. telle zu programmieren greift man teilweise auf vorgefertigte Komponenten zur ck Die Vorteile davon sind mannigfaltig Kosten und Zeitbedarf f r die Entwicklung reduzieren sich es treten weniger Fehler auf und Aussehen und Handhabung der Programme werden vereinheitlicht Um das nackte Formular mit Komponenten einzukleiden greifen Sie zur Komponentenpalette Komponenten des Regis ters Standard his Abb 6 Die Komponentenpalette Funktional zusammengeh rige Komponenten sind in ver schiedenen Registern der Komponentenpalette zusammen gefasst Ein Klick auf das Register DIALOGS f rdert beispielsweise Win dows Standarddialoge zutage mit denen sich u a Dateien ffnen drucken und speichern lassen Um sich Hilfe zu den einzelnen Komponenten der Palette anzeigen zu lassen klicken Sie mit der rechten Maustaste in die Palette und w hlen im Kontextmen HELP Die erscheinende Hilfeseite gibt Ihnen Zugang zur Hilfe f r die verschiedenen Register und Komponenten Probieren Sie es aus indem Sie sich im Register STANDARD die Hilfe zu der Schalt feldkomponente holen Mit Schalter Schaltfl che oder Schalt feld bezeichnet Delphi brigens das was man auf gut Neu deutsch einen Button nennt Die Komponentenpalette enth lt nicht nur zahlreiche vor gefertigte Komponenten sondern sie l sst sich auch mit ei genen und zugekauften Komponenten erweitern Sie k nnen die Palette ganz nach Ihren eigenen Bed rfnissen konfigu rier
216. tem amp Suchen an geben Sie im den Namen mnuitSuchen und weisen Sie ihm das Tastaturk rzel Ctrl F zu Erstellen Sie mit Doppelklick auf ONCLICK eine Prozedur TfrmEditor mnuit SuchenClick f r das Men ltem und tragen Sie folgende An weisung ein dlgSuchen Execute Dieser Befehl ffnet nur ein Dialogfenster und nimmt den Such string entgegen f hrt aber keine Suche durch Die eigentliche Suchmethode plazieren Sie in der Komponente dlgSuchen als Ereignisbehandlungsroutine von ONFIND Erg nzen Sie diese Routine bis sie folgendermassen aussieht procedure TfrmEditor dlgSuchenFind Sender TObject var strSuchText string strQuelle string carLaenge cardinal carPosition cardinal begin strSuchText dlgSuchen FindText carLaenge Length strSuchText strQuelle frmEditor memEditor Text carPosition Pos strSuchText strQuelle If carPosition gt 0 then begin frmEditor BringToFront frmEditor ActiveControl memEditor memEditor SelStart carPosition 1 memEditor SelLength carLaenge nd else begin MessageDlg strSuchText nicht gefunden mtInformation mbOK 0 end end In der ersten Zeile implementieren Sie den Methodenkopf Beachten Sie dass vor dem Methodennamen der Name der zugeh rigen Klasse und ein Punkt stehen In der Para meterliste steht nur ein einziger Wertparameter namlich Sender vom Typ TObject
217. ten bytPosition byte begin bytPosition ord Herz end Wenn Sie die Funktion Ord auf den Wert eines Aufz hlungs typs anwenden erhalten Sie dessen Position im Wertebe reich Der Variablen byt Position in Zeile 10 wird also der Wert 2 zugewiesen 6 2 5 Realtypen Ein Realtyp ist eine Untermenge der reellen Zahlen die als Gleitkommazahl mit einer festen Stellenanzahl dargestellt werden k nnen Es gibt f nf Arten von Realtypen Sie unterscheiden sich in ihrem Wertebereich der Genauigkeit der Werte und im Speicherplatzbedarf Bereich Signifikante Bedarf in Stellen Bytes 290310 ta Re are a kD 11 12 6 Doe Os oa tO 7 8 4 50 10 241 210 2 15 16 8 T ein Ose 19 20 10 at 19 20 8 922 337 203 685 477 5808 19 20 8 922 337 203 685 477 5807 Der Typ currency ist ein Datentyp mit vier Nachkomma stellen f r Finanzberechnungen DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen 87 Der Typ real wird wegen der Abw rtskompatibilit t mit fr heren Versionen von Delphi und Borland Pascal bereit gestellt Da das Speicherformat des Typen Real in den Intel CPUs nicht vorgesehen ist sind Operationen mit Realtypen langsamer als mit den anderen Gleitkommatypen 6 2 6 String Typen Ein Variable des Typs String ist eine Zeichenfolge mit dyna mischer L nge Die L nge ist abh ngig von der tats chli chen Zeichenanzahl w hrend der Programmausf hrung Der neue Typ string in Delphi 2 0 ist
218. ter Debugger Interface Teil Kapselung Klasse Komponentenbibliothek Komponentenpalette Konstantendeklaration Laufzeit Laufzeit Typinformation lokales Men des Quell texteditors Markierungsfelder statement statement part enumerated type expression exception handling alignment palette panel Panel component conditional statement owner identifier image editor scroll bar bitmapbutton component blocks message block compiler directive Database desktop Data Control data access declaration part dialog box property property column simple Type development environment design time event to raise an exception exception handler error handling error checking field designator form form template cleanup code protected protected block GroupBox component scope block scope instance integrated debugger interface section encapsulation class component library component palette constant declaration run time run time type information code editor speed menu check boxes Mauspalettenschalter Men Men Designer Nachkomme nichtmodales Dialogfenster Objekt Browser Objektdateien Objektinspektor Objektkennzeichner ffentlich Polymorphie privat Projektdatei Projektoptionen Projektverwaltung prozeduraler Typ qualifizierter Methodenidentifizierer Quelltexteditor Rangfolge der Operatoren reserviertes Wort Schaltfeld Schaltfeldgruppenfeld Schleife Schnellhinweis
219. tig und vom gleichen Typ wie das unterscheidende Feld sein Sie k nnen auf den ganzen Record oder auf jedes Feld ein zeln zugreifen Um auf ein einzelnes Feld zuzugreifen schreiben Sie den Namen des Records einen Punkt und dann den Feldbezeichner siehe Zeile 14 im Codebeispiel unten Um auf mehrere Felder des Records zuzugreifen ohne den Recordbezeichner wiederholen zu m ssen ver wenden Sie with Da Records eine Art Vorstufe von Klassen und Klassen wie derum die wichtigsten Typen von Object Pascal sind wer den Sie nun Ihr Wissen ber Records mit einer Ubung etwas vertiefen Starten Sie mit FILE NEW APPLICATION ein neues Projekt Benen nen Sie das neue Formular frmRecords und beschriften Sie es mit Records Sichern Sie das Projekt mit FILE SAVE ALL in einem neuen Ordner Prog6_1 indem Sie die Unit unter uRecord pas und das Projekt unter pRecord dpr abspei chern F gen Sie aus dem Register STANDARD eine Komponente LABEL ein Die Eigenschaft NAME ersetzen Sie durch b Meldung und die Wertespalte neben Caption l schen Sie F gen Sie aus dem Register STANDARD eine Komponente RADIOGROUP ein benennen Sie diese btnradgroWoher und be schriften Sie sie mit Staatsb rgerschaft Doppelklicken Sie in die Wertespalte neben ITEMS und tragen Sie im Editor Schweiz und Ausland in zwei verschiedenen Zeilen ein Wechseln Sie ins Register EVENTS und doppelklicken Sie ins Feld neben ONCLICK Erganzen Sie die Rumpfp
220. tring ist kein reserviertes Wort und l sst sich daher als benutzerdefinierter Bezeichner neu deklarieren Zudem hat die Bedeutung von Strings in DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programmstruktur 174 Delphi 2 sowieso eine neue Dimension erhalten vgl Kapitel 6 5 2 Bei offenen String Parametern k nnen die aktuellen Para meter Variablen eines beliebigen String Typs sein In der Prozedur oder Funktion sind die Gr ssenattribute des forma len und des aktuellen Parameters gleich d h ihre maximale L nge ist identisch Offene String Parameter verhalten sich genauso wie Vari ablenparameter eines String Typs ausser dass sie nicht als normale Variablenparameter an andere Prozeduren oder Funktionen bergeben werden k nnen Die erneute Uber gabe als offene String Parameter ist jedoch m glich Im fol genden Beispiel ist der Parameter s der Prozedur StringZuweisen ein offener String Parameter procedure StringZuweisen var S OpenString begin S Liebe auf den ersten Klick end 12 4 2 Offene Array Parameter Ein formaler Parameter der als array of Type function Summe const A array of integer integer deklariert wird ist ein offener Array Parameter Type muss ein Typbezeichner der aktuelle Parameter eine Variable vom Typ Type oder eine Array Variable mit Elementen vom Typ Type sein Aktueller Parameter der Funktion Summe opArray Auf formale offene Array Parameter l sst
221. try except Anweisungen hier kaum noch ben tigt Die folgenden Ressourcen sollten Sie zum Beispiel immer freigeben e Dateien e Speicher e Windows Ressourcen e Objekte 11 1 2 try except Construct Nun schreiten wir zu dem was bisher verschiedenen Prasi denten und Regierungen vorbehalten war Ausnahmezu stande verhangen Mit den im letzten Abschnitt beschriebe nen Aktionen ist der Ausnahmezustand jedoch noch nicht aufgehoben Nach der Ausf hrung des finally Blocks wird das Exception Objekt so lange eine Aufrufebene h her ger reicht bis ein except Block zur Verf gung steht Eine Exception Behandlungsroutine besteht aus Code der eine oder mehrere bestimmte Exceptions behandelt die innerhalb eines gesch tzten Code Blocks auftreten Um eine Exception Behandlungsroutine zu definieren betten Sie den Code den Sie sch tzen wollen in einen Block ein und ge ben die Anweisungen zur Behandlung der Exception im Ab schnitt except des Blocks an Bleiben wir weiterhin bei unserer ungl cklichen Division durch Null Sie k nnen eine Exception Behandlungsroutine f r die Divi sion durch Null definieren um ein Standardergebnis zu erhalten function GetAverage Sum NumberOfltems Integer Integer DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Exception Handling und RTTI oOOSNSNODOIP OD oo SNSODOIPW 159 begin try Result Sum div NumberOfltens except on EDivByZero do Result 0 end
222. tton in einer Reihe aus zurichten und die Abst nde gleich gross zu machen Schie ben Sie die ganze Gruppe an den unteren Formularrand und zentrieren Sie sie horizontal in der Mitte des Formulars DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Konstanten und Variablen 71 5 Konstanten und Variablen W hrend Sie bis jetzt vor allem Delphi als Entwicklungsum gebung kennengelernt haben folgt in den n chsten Kapiteln eine Einf hrung in die Sprache Object Pascal Wenn Sie mit strukturierter Programmierung vertraut sind oder Turbo Pascal kennen wird dies gr sstenteils eine Repetition f r Sie sein Dieses Kapitel f ngt mit den grundlegenden Elementen der Programmiersprache an n mlich mit Konstanten und Vari ablen Sie lernen e dass ein Programm sich aus Daten und Routinen zu sammensetzt e was Konstanten sind und wie Sie sie deklarieren e was Variablen sind und wie Sie sie deklarieren e wie Sie Variablen mit Hilfe des Zuweisungsoperators Werte zuweisen e und was typisierte Konstanten sind 5 1 Daten und Routinen Jede Programmiersprache setzt sich aus einer begrenzten Menge von Sprachelementen zusammen Diese Sprachele mente lassen sich grunds tzlich einmal einerseits in Daten und andererseits in Routinen zur Verarbeitung der Daten einteilen Zu den Daten geh ren Konstanten und Variablen zu den Routinen dagegen Funktionen Prozeduren und Me thoden Wenn wir das Beispiel einer Addition nehmen da
223. unktion aus dem Arbeitsspeicher gel scht Da in grossen Programmen Bezeichner durchaus mehrfach vorkommen k nnen gibt es eine Hierarchie Der lokalste Bezeichner hat dabei immer Vorrang vor allen anderen Wenn Sie also eine globale Variable i vom Typ Integer de klariert haben und den Bezeichner i innerhalb einer Proze dur f r eine andere Variable i verwenden dann ist die globa le Variable i in dieser Prozedur nicht verf gbar weil dieser Bezeichner von der lokalen Variablen beansprucht wird Die globale Variable wird von den Aktionen der Prozedur aber auch nicht tangiert und steht nach Verlassen der Prozedur wieder unver ndert zur Verf gung Eine Rolle spielt dies insofern weil es in Pascal leider m g lich ist in Routinen auch auf die Daten der umgebenden Bl cke zuzugreifen ohne dass sie in der Parameterliste U bergeben worden sind Dies ist aber schlechte Programmier praxis und lauft dem Sinn und Zweck von Routinen diamet ral entgegen Sie sollten deshalb auf diese M glichkeit v llig verzichten und in Routinen nur lokale oder in der Parameter liste Ubergebene Konstanten Variablen und Typen verwen den DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Prozeduren und Funktionen 117 8 4 Prozeduren und Funktionen Prozeduren und Funktionen haben eine sehr hnliche Struk tur Sie weisen beide einen Kopf mit Parameterliste einen optionalen Deklarations und einen Anweisungsteil auf 8 4 1 Unterschiede zwisch
224. unktionen die im In terface Teil der Unit deklariert wurden Er deklariert auch Konstanten Typen Variablen Prozeduren und Funktionen die privat sind Die genaue Bedeutung der Begriffe public DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programme und Units 48 und private werden Sie erst nach dem Kapitel Programm struktur besser verstehen Der Implementationsteil einer Unit ist der private Teil In die sem Teil enthaltene Deklarationen k nnen nur in diesem Abschnitt der Unit verwendet werden Alle Konstanten Ty pen Variablen Prozeduren und Funktionen die im Inter face Teil deklariert wurden sind im Implementationsteil sichtbar Implementierungen von Prozeduren und Funktionen die im Interface Teil deklariert wurden k nnen in jeder Abfolge des Implementationsteils definiert werden In der Implementierung kann eine Uses Klausel unmittelbar nach dem reservierten Wort implementation folgen Wenn Sie eine Uses Klausel in den Interface Teil einer Unit einf gen dann sind die in der Uses Klausel aufgef hrten Units f r die definierende Unit nicht sichtbar Im Beispielprogramm finden Sie den Implementationsteil ab Zeile 24 In Zeile 28 bis 34 sehen Sie die Implementierung einer Methode Prozeduren und Funktionen werden Metho den genannt wenn sie zu einer Klasse geh ren Die Dekla ration dieser Methode erfolgte innerhalb der Klasse T frmCloseApp und zwar in Zeile 13 und 14 Der optionale Initialisierungst
225. uren und Funktionen 122 Selektieren Sie nun s mtliche Schaltfl chen gleichzeitig schnei den Sie sie mit CTRL X aus aktivieren Sie mit einem Klick die Panel Komponente und f gen Sie die Schaltfl chen mit CTRL V auf dem Panel ein Das Panel dient dazu die Fl che der Memo Komponente zu begrenzen Wenn Sie jetzt n mlich die Memo Komponente aktivieren und die Eigenschaft ALIGN in a Client n dern f llt die Memo Komponente immer den verbleibendem Raum bis zum Panel Um ein Men einzuf gen setzen Sie die Komponente MAINMENU aus dem Register STANDARD an einem beliebigen Ort auf dem Formular ab Ein Doppelklick auf das Icon ffnet den Men Editor und generiert die erste leere Kolonne des Men s Tragen Sie in Caption amp Datei ein Sobald Sie diesen Eintrag mit RETURN abschliessen wird das erste Men der zweiten Kolonne generiert Hier tragen Sie amp Bearbeiten ein Untermen s erzeugen Sie indem Sie das Feld amp Datei anklicken und in das darunter entstehende Feld amp Laden eintragen Unter SHORTCUT holen Sie sich Ctrl O damit sich der Befehl auch mit diesem Tastaturk rzel aufrufen l sst Ins darunterliegende Feld tragen sie amp Speichern und das Tastaturk rzel Ctrl S ein Bevor Sie auch noch amp Ende und Alt F4 von Hand da nicht in Liste eintragen m chten Sie einen trennenden Strich In dieses Feld tragen Sie deshalb einen Bindestrich ein In diesem Stadium haben Sie zwar bereits ein echtes Men das sich au
226. us im Fenster an wobei oben links 0 0 ist Diese zwei Parameter haben Sie verwendet um die Maus position anzuzeigen Weil sie vom Typ Integer sind lassen sie sich nicht direkt im Caption der Label Komponente 1b1lMausPosition anzeigen sondern m ssen zuerst mit der Funktion IntToStr in Strings umgewandelt werden Wie Sie gesehen haben nimmt Delphi Ihnen bei der Erstel lung von Behandlungsroutinen f r Standardereignisse die Routinearbeit weitgehend ab indem es den Prozedurkopf im Interface und im Implementationsteil selbst ndig erstellt Sie m ssen nur den eigentlichen Code mit dem das Pro gramm auf bestimmte Ereignisse reagieren soll eingeben 4 4 Die wichtigsten Komponenten Bis jetzt haben wir nur mit wenigen visuellen Komponenten aus den Registern STANDARD und ADDITIONAL gearbeitet Hier lernen Sie nun die meisten Komponenten aus der Komponentenpalette kennen Zu den restlichen Komponenten k nnen Sie sich Hilfe holen indem Sie entweder die gesuchte Komponente anklicken und dann F1 dr cken oder wenn Sie einen berblick ber alle Komponenten eines Registers m chten in der Online DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Visuelle Programmierung MAINMENU Es POPUPMENU x CHECKBOX 60 Hilfe im Register INHALT USING DELPHI PROGRAMMING ENVI RONMENT COMPONENT PALETTE COMPONENT PALETTE PA GES ffnen und die gew nschte Seite anklicken Sie sollten sich auf jeden Fall angew hnen
227. verwenden Sie sie mit Bedacht Wenn Sie unn tigerweise Gebrauch davon machen dann machen sie Ihr Programm schwieriger in der Wartung und eher anf llig f r Fehler DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Programme und Units 50 3 5 Rekapitulation 3 5 1 Zusammenfassung In diesem Kapitel haben Sie die grundlegende Struktur von Programmen und Units kennengelernt Im Detail ging es um folgende Themen Sie haben in einem Beispielprogramm ein einfaches For mular mit einer Schaltflache erzeugt und eine Ereignisbe handlungsroutine geschrieben mit der sich das Formular schliessen l sst Sie haben den Code dieses Beispielprogramms analysiert und dabei die Syntax von Programmen und Units kennen gelernt Sie kennen die f nf Teile einer Unit n mlich Unit Kopf Interface Teil Implementationsteil Initialisierungs teil und Finalization Teil Im letzten Teil sind zirkul re und indirekte Unit Referen zen eingef hrt worden 3 5 2 Kapiteltest 2 2 Un in us im en Un in us im Richtig oder falsch a Von den f nf Teilen einer Unit ist nur der Finalization Teil optional b Bei strMeinName und strmeinname handelt es sich um zwei verschiedene Variablen c Die Programmdatei und alle Unit Dateien gliedern sich in einen Interface und einen Implementationsteil Was passiert wenn Sie folgenden Code kompilieren it uEins terface es uZwei plementation d it uZwei terface
228. vielleicht spater in anderen Units benutzen m chten setzen Sie nun noch eine Funktionsdeklaration in den Interface Teil der Unit Markieren Sie den ganzen Funktionskopf bis zum Strichpunkt und kopieren Sie ihn mit CTRL C Suchen Sie im oberen Teil der Unit das reservierte Wort implementation und f gen Sie mit CTRL V den Funktions kopf eine Zeile vorher ein Damit ist die Funktion f r andere Units verf gbar wenn Sie den Namen der Unit uMainEdi in deren Uses Klausel aufnehmen Lassen Sie Ihr Programm laufen und testen Sie ob die Zeilen nummern immer noch richtig eingef gt und entfernt werden Obwohl die folgende bung keine unmittelbare Anwendung zu Funktionen und Prozeduren ist werden Sie nun das Edi tor Projekt weiter ausbauen indem Sie den Editor mit einer Men leiste versehen Eine Men leiste ben tigen wir f r die Ubungen im n chsten Kapitel Ausserdem ist Ihnen be stimmt schon aufgefallen dass sich zwar der Editor vergr s sern l sst nicht aber das Memofeld in dem der Text steht Mit einem Panel k nnen Sie diesen Sch nheitsfehler behe ben Vergr ssern Sie im Editor Projekt das Hauptformular gegen un ten so dass unterhalb der Schaltfl chen ein leerer Streifen zum Vorschein kommt der etwas h her als die Schaltfl chen ist Set zen Sie eine Panel Komponente aus dem Register Standard in diesen Streifen und stellen Sie bei ALIGN a Bottom ein DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Prozed
229. wickler die Local Interbase Engine kostenlos mit sei ner Anwendung vertreiben ohne irgendwelche Lizenzgebth ren zu zahlen Die Local Interbase Engine unterst tzt nur 1 Client Teamentwicklung mit check in check out Verwaltung von Entwicklungsprojekten im Netz und Versionskontrolle PVCS Ver 5 1 von InterSolv erforderlich Die SQL Version von ReportSmith ReportSmith SQL ist dabei Der Visual Query Builder Visual Tool fur Generierung von Queries und SQL Statements und die Quelltexte der Visual Component Library Zielgruppe fur Delphi Standard und Developer sind demnach Windows Entwickler und Programmierer lokaler Datenbank anwendungen 1 2 8 Portierung von bestehenden Anwendungen In den meisten Fallen wird das Portieren von 16 Bit Delphi Anwendungen auf 32 Bit reibungslos ablaufen Dennoch gibt es einige Punkte zu beachten nderungen im Windows API lassen sich bei den meisten Programmen von der VCL abfangen D h auf normale Del phi Applikationen wird dies keinen Einfluss haben Sollten Sie jedoch ein spezielles API ansprechen dass in Win95 NT nicht vorhanden ist m ssen sie diesen Bereich manuell anpassen F r den gleichzeitigen Umgang mit Integer Werten bei 16 und 32 Bit unterschiedlicher Speicherbedarf der Integer Werte von je 2 bzw 4 Bytes enth lt der Bereich Integer Datentypen weitere Informationen Zudem sollten Sie be achten Die Gr sse von Integer ohne weitere Angaben ist betriebssystemabh ngig
230. wohl Aufzahlungs wie Teilbereichstypen sind keine vor definierten sondern benutzerdefinierte Typen siehe auch Kapitel 6 3 1 Teilbereichstypen sind vom Benutzer definierte Wertebe reiche aus einem ordinalen Typ Die Definition eines Teilbe reichstyps spezifiziert den kleinsten und den gr ssten Wert im entsprechenden Teilbereich Sie k nnen zwar im Typen deklarationsteil explizit einen Teilbereichstyp deklarieren wenn Sie ihn mehrmals verwenden m chten H ufig gen gt es aber den Teilbereichstyp nur in der Variablendeklaration anzugeben Aufz hlungstypen definieren geordnete Wertemengen indem einfach die Bezeichner der betreffenden Werte aufge listet werden Die Anordnung der Werte wird durch die an gegebene Reihenfolge der Bezeichner bestimmt Das erste DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen real single double extended comp currency OOONDUIARWN _ t 86 Element erhalt den Wert 0 das zweite den Wert 1 und so weiter In Zeile 2 und 5 des Beispiels unten sehen Sie die Deklara tion und anschliessende Verwendung eines Teilbereichs typs Zeile 6 zeigt die Alternative dazu namlich die direkte Verwendung des Teilbereichs in der Variablendeklaration Zeile 3 zeigt die Typendeklaration fur einen Aufzahlungstyp type Twuerfelzahl 1 6 TKarten Kreuz Pik Herz Karo var Wuerfeln TWuerfelzahl wuerfeln2 1 6 KarteZiehen TKar
231. xtfenster zu Beginn der String Will kommen im selbstgebauten Editor erscheint Gehen Sie ins Editor Projekt W hlen Sie im Objektselektor das Formular memEditor Doppelklicken Sie im Register EVENTS in die Wertespalte neben OnCreate Die Ereignisbehandlungs routine die Sie nun schreiben werden wird immer als erstes aus gef hrt sobald das Programm gestartet und das Hauptformular erzeugt wird Die Routine zur Behandlung des Ereignisses ONCREATE des Hauptformulars eignet sich f r allgemeine Initiali sierungen z B von globalen Variablen weil sie zuerst ausgef hrt wird Erg nzen Sie die Rumpfprozedur so dass Sie den folgenden Co de erhalten procedure TfrmEditor FormCreate Sender TObject var strWillkommen string 50 begin memEditor Lines Add strWillkommen end Fuhren Sie diesen Code mit F9 aus Bei der Ausf hrung erscheint nun im Textfeld eventuell nichts eventuell ein beliebiger String Wir haben n mlich genau das gemacht vor dem das letzte Unterkapitel ge warnt hat In Zeile 3 und 4 haben wir eine Variable deklariert und in Zeile 6 haben wir sie den Zeilen der Memokomponen te zugewiesen ohne dass sie initialisiert wurde Wie Sie se hen f hrt dies weder zu einer Fehlermeldung beim Kompi lieren noch zu einem Laufzeitfehler Mit den folgenden kursiv markierten Erg nzungen korrigieren Sie Ihren Fehler procedure TfrmEditor FormCreate Sender TObject const DELPHI V2 0 App
232. yp verwendet Eine Klas se ist ein Typ der Daten und Programmcode zu einer Ein heit verbindet Die Daten Variablen etc werden bei der Klasse Felder genannt und die zur Klasse geh rigen Pro zeduren und Funktionen nennt man Methoden Felder k n nen nicht nur einfache und strukturierte Typen sein sondern auch Instanzen von Objekten Klassen haben viel mit Backrezepten gemeinsam Beide verbinden Daten und Methoden zu einer Einheit Bei den Kochrezepten sind die Daten die Zutaten 3 Eier 100 g Mehl und die Methoden die Anweisungen was damit zu tun ist Schlagen Sie die Eier ins Mehl und r hren Sie kr ftig durch 9 2 2 Instanzen Auch bei der Unterscheidung von Klassen und Instanzen gehen die Parallelen zum Backen weiter Klassen sind nicht Dinge an sich sondern Typen also Rezepte f r die Erstel lung von Dingen Das konkrete Exemplar einer Klasse das zur Laufzeit existiert nennt man dagegen Instanz Um es zu konkretisieren Unser Backrezept ist eine Klasse der Ku chen den wir damit backen ist dagegen eine Instanz Bevor wir eine Klasse in einem Delphi Programm verwenden k n nen m ssen wir erst eine Instanz das heisst eine Variable dieses Objekttyps deklarieren und generieren 9 2 3 Objekte Den Begriff Objekt haben wir bis jetzt umgangen obwohl es um objektorientierte Programmierung also um OOP geht Der Grund ist dass der Begriff Objekt im Gegensatz zu Klasse und Instanz nicht sehr pr zise definiert is
233. ys zuzugreifen f gen Sie dem Arraybezeichner eckige Klammern und einen oder mehrere Indexwerte hinzu Die folgenden Zeilen weisen beispielswei DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen oOoNOOIP OD 93 se das dritte Element der Arrayvariablen arrDateiattri but und das Element 1 1 von arrMatrix zu arrDateiattribut 3 h arrMatrix 1 1 arrDateiattribut 3 Die zweite Zuweisung ist m glich weil ein Char intern gleich wie ein String der L nge 1 behandelt wird und somit typen kompatibel zum Typ String ist Auf die Zuweisungskompa tibilit t von Typen werden wir am Ende des Kapitels noch eingehen 6 3 3 Mengentypen Ein Mengentyp ist eine Ansammlung von Objekten vom gleichen ordinalen Typ Um einen Mengentyp zu deklarie ren verwenden Sie die reservierten W rter set of gefolgt vom Basistyp Der Wertebereich eines Mengentyps ist die Potenzmenge eines bestimmten ordinalen Typs des Basistyps Jeder m gliche Wert eines Mengentyp ist eine Untermenge der m glichen Werte des Basistyps Eine Mengentypvariable kann keinen oder alle Werte der Menge enthalten Jeder Mengentyp kann den Wert enthal ten der leere Menge genannt wird Der Basistyp darf nicht mehr als 256 m gliche Werte haben Deshalb k nnen Sie zwar ein set of byte nicht aber ein set of integer deklarieren Die ordinalen Werte der O ber und Untergrenze des Basistyps m ssen im Bereich von
234. zerdefinierte Typen Obwohl es in Delphi eine ganze Reihe vordefinierter Typen gibt ist es f r eine Programmiersprache die M glichkeit benutzerdefinierte Datentypen einzuf hren unbedingt n tig In Pascal gab es die Option selbst Typen zu deklarieren von Anfang an Eigene Typendeklarationen machen Programme nicht nur lesbarer sondern sie stellen auch sicher dass Variablen keine unpassenden Werte zugewiesen erhalten Wenn Sie beispielsweise Wochentage als byte deklarieren m ssen Sie selbst sicherstellen dass Sie keine Werte gr sser als 7 zuweisen Wenn Sie stattdessen einen Aufz hltyp Mon Die Mit Don Fre Sam Son deklarieren werden Zuweisungen von anderen Werten bereits bei der Compilie rung entdeckt Die zwei benutzerdefinierten Typen Aufz hltyp und Teilbe reichstyp die zu den einfachen Typen geh ren haben Sie bereits kennengelernt Alle anderen benutzerdefinierten Ty pen geh ren zu den strukturierten Typen Typendeklarationsteile lassen sich im Interface und im Im plementationsteil von Units ebenso wie in Prozeduren Funk tionen und Methoden antreffen Ein Typendeklarationsteil wird mit dem reservierten Wort type eingeleitet Dann fol gen die einzelnen Deklarationen die wie in jedem Deklara tionsteil ein Strichpunkt abschliesst Es ist zwar nicht zwin DELPHI V2 0 Applikationsentwicklung mit Delphi DEL Typen 92 gend hat sich aber eingeb rgert dass man einen Typenbe zeichner mit dem G
Download Pdf Manuals
Related Search
Related Contents
Boomerang. La vogue du boomerang. 23 Secrétaire du comité d`entreprise oui - Groupe GMI Baumatic BHC700 Technical Drawing SATO CT408IDT CAXA Draft User's Manual Copyright © All rights reserved.
Failed to retrieve file