Programmieren mit Delphi Eine Einfhrung in Grundkonzepte Gregor















































































- Slides: 79
Programmieren mit Delphi Eine Einführung in Grundkonzepte Gregor Noll 2008
Delphi für die Schule ? Delphi setzt die Tradition von Pascal fort und erweitert sie um moderne Konzepte Objektorientierung Klassen - Objekte - Methoden - Ereignisse visuell unterstützte Programmierung Komponentenbibliothek VCL Zusammenspiel mit UML-Werkzeugen kontextsensitives Hilfesystem - Debugger Alternativen Java (visuell unterstützt durch einen Java. Editor) Blue. J (Objekte von Anfang an) G. Noll 2008 2
Versionen 1995 - 2005 Delphi 1 - Delphi 8, Delphi 2005 2006 Turbo Delphi (BDS 2006 - Delphi 10) hervorragende Entwicklungsumgebung Videos zu Turbo Delphi und OOP unter http: //blogs. codegear. com/nickhodges/articles/26687. aspx kostenlose "Explorer"-Version für zu Hause Schul-Netzwerk-Lizenz 22 Plätze ca. 240, -€ 2007 Delphi 2007 Prof. R 2 (für Vista) Alternative: Free. Pascal mit passender IDE: Lazarus (Vers. 0. 9. 24 Nov. 2007) G. Noll 2008 3
Unsere Ziele heute. . . Einführung in das Arbeiten mit der Entwicklungsumgebung. . . Kennenlernen von Standardkomponenten. . . eine erste Begegnungen mit Klassen und Objekten sowie der UML. . . die Erstellung einfacher Programme nach dem MVC Entwurfsprinzip. . . Blicke auf den Unterricht entsprechend dem neuen Grundfach Lehrplan G. Noll 2008 4
Entwicklungsumgebung Die IDE von Delphi 6 Professional Komponentenpalette Programmstart Quelltextfenster Objektinspektor Formular G. Noll 2008 5
Delphi-Projekt Delphi erstellt automatisch ein neues Projekt Speichern Sie es, bevor Sie etwas verändern, sofort mit Datei Alles speichern in einen neu angelegten Ordner mit einem geeigneten Namen für das Projekt Die automatisch vorgeschlagen Namen unit 1. pas und project 1. dpr können Sie vorerst übernehmen. Wenn Sie die beiden Namen ändern, dann müssen sie verschieden sein. Üblicherweise stellt man dann dem Unitnamen ein m für „Modul“ voran und gibt dem Projekt einen aussagekräftigen Namen Neben den beiden Dateien unit 1. pas und project 1. dpr werden automatisch im Projektordner viele weitere Dateien angelegt und laufend von Delphi verwaltet Das neue Projekt ist ein lauffähiges Programm Wenn Sie es starten, erzeugt Delphi im Projektordner eine exe-Datei und auf dem Bildschirm ein typisches Windows-Fenster - Probieren Sie es aus! G. Noll 2008 6
Projektaufbau Von Pascal her erwarten wir eine Struktur aus Hauptprogramm und Units. Delphi. Projekte sind genauso aufgebaut: G. Noll 2008 7
Ü-01: Ein erstes Programm Kopieren Sie den Ordner 01 Tag. Und. Nacht in Ihr eigenes Verzeichnis Laden und starten Sie dann das Projekt in Delphi und testen Sie seine Funktionalität Beenden Sie das Programm und analysieren Sie den Quelltext Führen Sie auf dem Formular einen Doppelklick auf ein Button-Objekt aus. Was passiert? Wie kommen die Bildchen auf das Fenster? Fügen Sie eine weitere Wolke hinzu Lassen Sie sich über Projekt und Quelltext anzeigen das Hauptprogramm anzeigen. Was geschieht dort? G. Noll 2008 8
Quelltext der Unit unit m. Tag. Und. Nacht; interface Einbinden Systemunits eigene Units uses Windows, Messages, Sys. Utils, Classes, Graphics, Controls, Forms, Dialogs, Std. Ctrls, Ext. Ctrls; Klassendeklaration type TForm 1 = class(TForm) BTag: TButton; BNacht: TButton; Im. Erde: TImage; Im. Sonne: TImage; Im. Mond: TImage; Im. Wolke 1: TImage; Im. Wolke 2: TImage; Im. Wolke 3: TImage; procedure BTag. Click(Sender: TObject); procedure BNacht. Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; //Ende Klassendeklaration Attribute, hier alles Objektvariable var Form 1: TForm 1; implementation {$R *. DFM} G. Noll 2008 Methoden Objektdeklaration Einbinden der Datei des Formularobjekts 9
Methoden der Unit unit m. Tag. Und. Nacht; interface. . . var Form 1: TForm 1; Ereignisbehandlung implementation {$R *. DFM} procedure TForm 1. BTag. Click(Sender: TObject); begin Form 1. Color : = cl. Aqua; Form 1. Im. Mond. Visible : = False; Form 1. Im. Sonne. Visible : = True; end; Zugriff auf Attribute (hier "Properties") eines Objektes procedure TForm 1. BNacht. Click(Sender: TObject); begin Form 1. Color : = cl. Black; Form 1. Im. Sonne. Visible : = False; Form 1. Im. Mond. Visible : = True; end; Qualifizierte Bezeichner end. G. Noll 2008 Lassen Sie einmal bei den Zuweisungen den 1. Teil des Bezeichners weg. Was passiert? 10
Quelltext des Hautprogramms program Tag. Und. Nacht; uses Forms, m. Tag. Und. Nacht in 'm. Tag. Und. Nacht. pas' {Form 1}; {$R *. RES} begin Application. Initialize; Application. Create. Form(TForm 1, Form 1); Application. Run; end. Hier finden wir u. a. die Einbindung von Units und Ressourcen die Erzeugung des Fensterobjektes den Start des Programms G. Noll 2008 11
Programmablauf Delphiprogramme reagieren auf Ereignisse Wir haben keinen festen Programmablauf mehr Ereignisse lassen sich auslösen u. a. über Maus oder Tastatur On. Click Klicken auf ein Objekt mit der Maus On. Change eine Eingabe wird verändert Ereignisse sind Botschaften an Objekte Die Modellierung mit Klassen und Objekten tritt deshalb in den Vordergrund Algorithmische Kenntnisse sind weiterhin wichtig (z. B. Kontrollstrukturen, Sortierverfahren) G. Noll 2008 12
Klassen und Objekte In unserem Programm begegnen wir u. a. folgenden Klassen und Objekten Klassename Objektname Form 1: TForm 1 BTag: TButton BNacht: TButton Color = ´cl. Aqua´ Caption = ´Tag´ Caption =´Nacht´ Height = 270 Left = 24 Left = 168 Auto. Size = false Height = 25 . . procedure BTag. Click() Klassen sind Baupläne für Objekte sind Exemplare einer Klasse G. Noll 2008 13
Objektzustand Objekt BNacht: TButton Attribut Caption =´Nacht´ Left = 168 Height = 25 Attributwert . . . Eine Klasse (bzw. ein Objekt) wird u. a. über seine Attribute (Felder, Eigenschaften) bestimmt. Die konkreten Attributwerte legen den aktuellen Zustand eines Objektes fest. G. Noll 2008 14
UML Notation Unified Modeling Language 1995 erstmalig vorgestellt Heute die Standardnotation um ein objektorientiertes Softwaresystem zu modellieren UMLed ist ein schultaugliches UML-Werkzeug, das eine direkte Verknüpfung von Modellierung und Programmierung in Delphi (oder auch in Java) ermöglicht G. Noll 2008 15
Ein anderer Blick auf TForm 1 Die Klasse TForm 1 besitzt andere Klassen hat - Beziehung (Aggregation, Komposition) Klassendiagramm Komposition Aggregation G. Noll 2008 16
Ü-02: Ein zweites Fenster Die Klasse TForm 1 ist ein Bauplan für Fenster. Wir sollten also problemlos ein weiteres Fenster erzeugen können Kopieren Sie den Ordner 02 Tag. Und. Nacht. F in Ihr eigenes Verzeichnis und laden Sie dann das Projekt in Delphi Ergänzen Sie den Quelltext so, dass ein zweites Fenster (Formular) mit der Caption „Tag und Nacht 2“ erzeugt wird. Wie reagiert das 2. Fenster auf Ereignisse? Ergänzen Sie den Quelltext so, dass auf der Nachtseite des 2. Fensters ein Stern erscheint G. Noll 2008 17
Ein Blick auf den Unterricht Zum LP des Grundfaches Informatik hat die FDK einen möglichen Unterrichtsgang entwickelt (www. informatik-lehren. de) Hierin finden sich konkrete Vorschläge zur unterrichtlichen Umsetzung des LP G. Noll 2008 18
Ü-03: BMI-Rechner Mit einem Programm soll der Body. Mass. Index BMI berechnet werden Erstellen Sie zunächst nur die Benutzungsoberfläche, das Graphical. User. Interface GUI G. Noll 2008 19
GUI-Objekte erzeugen Aktivieren der Komponente Label anschließend auf das Formular klicken und positionieren Edit Group. Box Button Was geschieht bei der Platzierung von Komponenten ? G. Noll 2008 20
Bezeichnungen Delphi vergibt automatisch Namen an die GUI -Objekte, z. B. Label 1, Button 2 Besser ist es, eigene Bezeichnungen zu vergeben Im Objektinspektor über die Eigenschaft Name z. B. : BInit GBEingabe LUeberschrift usw. B für Button GB für Groupbox L für Label Die Aufschriften von Objekten lassen sich anschließend über ihre Caption - Eigenschaft im Objektinspektor verändern oder später zur Laufzeit zuweisen G. Noll 2008 21
Attribute - Methoden Delphi trägt die Komponenten automatisch als Objektvariable in die Klasse TForm 1 ein Durch Doppelklick auf ein Objekt wird eine Ereignisbehandlungsroutine erzeugt und als Methode in der Klassendefinition eingetragen Ereignisbehandlungsroutinen nie per Hand löschen, sondern nur den Prozedurrumpf löschen. Bei der nächsten Compilierung wird die gesamte Prozedur automatisch gelöscht Verschiedene Objekte können die gleiche Ereignisbehandlungsroutine benutzen. Das wird im Objektinspektor eingetragen G. Noll 2008 22
Eingabe und Ausgabe Edit Komponente (Klasse TEdit) einzeiliges Feld für Eingabe und Ausgabe zentrale Eigenschaft Text ( String) antwort: =Edit 1. Text; (property) nützliche Eigenschaften/Methoden Clear Enabled Visible Read. Only Edit 1. Clear; Edit 1. Enabled: =true; Edit 1. Visible: =false; Edit 1. Read. Only: =true; (procedure) (property) nützliche Ereignisse On. Change On. Enter On. Exit z. B. Prüfung der Eingabe vor dem Verlassen G. Noll 2008 23
Daten auf dem GUI Edit-Komponenten arbeiten mit Daten des Typs string. Deshalb sind Konvertierungen notwendig: Variable GUI-Objekt Groesse: =Str. To. Float(EGroesse. text); Gewicht: =Str. To. Float(EGewicht. text); Variable GUI-Objekt EBMI. text: = Float. To. Str. F(bmi, ffnumber, 8, 1); Formatierte Ausgabe: Float. To. Str. F() G. Noll 2008 mehrere Formatierungsmöglichkeiten, meist ausreichend ist Float. To. Str. F(zahl, ffnumber, 8, 2) 24
MVC Konzept Wir wollen von Anfang an eine Trennung von Daten und ihrer Präsentation anstreben. Dies ist das Ziel des MVC-Entwurfsprinzips: Model View Controller : enthält die Daten und die datenspezifischen Operationen (Algorithmen) : Präsentation der Daten : verwaltet die Views und die Benutzeraktionen Wichtig: das Modell kennt weder die Präsentation (View) noch die Steuerung (Controller) und kann auf beide nicht zugreifen G. Noll 2008 25
BMI - Modell Daten und Datenoperationen sind für das BMI -Problem leicht identifizierbar: Körpergröße : real Gewicht : real BMI-Wert : real BMI Berechnungsalgorithmus Später werden noch hinzukommen BMI-Bewertung : string BMI Bewertungsalgorithmus Die Daten werden als private Attribute von TForm 1, die Datenoperationen als private Methoden deklariert G. Noll 2008 26
BMI - Formularklasse Zugriffsschutz ++ published + public – privat Methodenart ! ? Auftrag (procedure) Anfrage (function) Datenmodell Modellprozeduren G. Noll 2008 27
BMI - Programmierung Erstellen Sie das komplette BMI-Programm Ergänzen Sie Ihr Programm mit einer Bewertung des BMI. Die dazu notwendigen Informationen finden Sie über die Google-Suche mit den Stichworten BMI Rechner Düsseldorf Was geschieht bei Fehleingaben? G. Noll 2008 28
Laufzeitfehler Fehler zur Ausführungszeit lassen sich mit einem try-except Block abfangen und mit eigenen Routinen bearbeiten Syntax try // Anweisungen deren Laufzeitfehler abgefangen werden except // Hinweise oder Abfangroutinen falls Fehler (exceptions) // auftreten Voraussetzung end; Das Stoppen bei Delphi-Exceptions ist abgeschaltet. Bei Delphi 6 geschieht dies unter dem Menupunkt Tools-Debugger. Optionen-Sprachexceptions G. Noll 2008 29
Ü-04: Weltbevölkerung Die Entwicklung der Weltbevölkerung schreitet rasch voran: Im Jahr 2006 wurde die 6, 6 Milliardengrenze überschritten. Zur Zeit wächst die Weltbevölkerung jährlich um ca. 1, 2 %. Mit Hilfe eines kleinen Programms wollen wir die jährliche Entwicklung verfolgen. G. Noll 2008 dsw-Datenreport 2006 Ausführliche Infos unter www. dsw-online. de 30
Datenmodell Entprechend der Aufgabe legen wir die Daten und ihren Datentyp fest: Informationen: Im Jahr 2006 wurde die 6, 6 Milliardengrenze überschritten. Zur Zeit wächst die Weltbevölkerung jährlich um ca. 1, 2 %. G. Noll 2008 Modellierung: Jahr Population WFaktor : integer; : real; 31
Ereignisse In unserem Simulationsprogramm wollen wir zwei Ereignisse behandeln: G. Noll 2008 Benutzeraktion bzw. Ereignis: Programmreaktion: Mausklick auf den Button > Aktuelle Werte werden eingelesen und die Population des nächsten Jahres wird berechnet und angezeigt Mausklick auf den Button < Aktuelle Werte werden eingelesen und die Population des vorherigen Jahres wird berechnet und angezeigt 32
Datenoperationen Für die Berechnung formulieren wir passende Prozeduren procedure TForm 1. naechste. Population; begin Jahr : = Jahr + 1; Population : = Population * WFaktor; end; procedure TForm 1. vorherige. Population; begin Jahr : = Jahr -1; Population : = Population / WFaktor; end; G. Noll 2008 33
Programmierung Entwerfen Sie eine eigene Benutzungsoberfläche oder kopieren Sie sich den Ordner 05 Population in eigenes Verzeichnis und benutzen das vorgegebene Programmgerüst Implementieren Sie die Daten und Datenoperationen sowie die Ereignisbehandlungsroutinen. Beachten Sie dabei das MVC Prinzip! Wann wird nach diesem Modell die 7 Millarden Grenze überschritten? Wann wurde die 6 Millarden Grenze überschritten? G. Noll 2008 34
Initialisierungen Für das Wachstumsprogramm wäre es angenehm, wenn beim Programmstart die Daten von 2006 bereits im Formular eingetragen wären Für solche Initialisierungen wird üblicherweise eine Ereignisbehandlungsroutine benutzt, die automatisch beim Erzeugen des Fensters aufgerufen wird: procedure TForm 1. Form. Create(Sender: TObject); begin EJahr. Text: ='2006'; EPopulation. Text: ='6, 6'; EWFaktor. Text: ='1, 2' end; Das Prozedurgerüst von Form. Create wird bei einem Doppelklick auf das Formular angelegt G. Noll 2008 35
Hilfe von und über Delphi unterstützt die Programmentwicklung durch verschiedene Hilfsmechanismen, z. B. Automatische Erzeugung von Prozedurgerüsten Anzeige von Eigenschaften und Methoden hinter der Eingabe eines Objektbezeichners (Strg-Space) Aufruf eines umfassenden, verlinkten Hilfssystems über die Menüleiste Kontextsensitive Hilfe mit F 1 (auch im Fehlerfenster) G. Noll 2008 36
Debugging Neben dem Hilfesystem besitzt Delphi auch einen Laufzeit Debugger Das Debugging muss unter Projekt Optionen - Compiler aktiviert sein Typisches Vorgehen Starten Sie ein Programm mit F 7 Verfolgen Sie den Ablauf im Quelltext und im Programmfenster Beachten Sie die Tooltipps unter dem Cursor im Quelltext. Sie können dazu auch Teile des Quelltextes markieren. Setzen Sie Haltepunkte im Quelltext (auf blauen Punkt klicken), starten Sie dann das Programm mit F 8 G. Noll 2008 37
Ü-05 Euklidischer Algorithmus Eine Aufgabe aus einer Kursarbeit: Der euklidische Algorithmus (modern) gg. T(a, b) (1) r sei der Rest bei der Teilung a/b (2) ist r=0 so gib b als gg. T(a, b) aus und höre auf (3) speichere b in a und r in b ab und fahre mit (1) fort Stelle den Algorithmus mit einem Struktogramm dar Implementiere den Algorithmus als Funktion G. Noll 2008 Verwende zur Eingabe der beiden Zahlen je eine Spin. Edit Komponente (unter "Beispiele") Das Formular soll keinen Button 38
Struktogramm Euklidischer Algorithmus dargestellt im Struktogramm mit Strukt. Ed gg. T(a, b) (1) r sei der Rest bei der Teilung a/b (2) ist r=0 so gib b als gg. T(a, b) aus und höre auf (3) speichere b in a und r in b und fahre mit (1) fort G. Noll 2008 39
Eingabe - Fallunterscheidung Spin. Edit (unter dem Reiter "Beispiele") Edit-Feld für ganze Zahlen Start-Wert Value Minimalwert Min. Value und Maximalwert Max. Value Schrittweite Increment Radiobutton - Radiogroup An- und Abwahl einer Option Gruppe sich ausschließender Optionen Eigenschaft checked (boolean) bzw. Item. Index (Zählung mit 0 beginnend; -1 bei keiner Auswahl) Checkbox An- und Abwahl einer Option Eigenschaft checked (boolean) G. Noll 2008 40
Ein Blick auf den Unterricht ( Auszug aus "Ein möglicher Gang durch das Grundfach Informatik" ) G. Noll 2008 41
Ü-06: Euklid - alte Version Der euklidische Algorithmus (alte Version) gg. T(a, b) (1) falls a=b gib a als gg. T(a, b) aus (2) falls a>b speichere a-b in a sonst speichere b-a in b (3) fahre bei (1) fort Implementieren Sie den Algorithmus alternative Methode im vorherigen Projekt Die Auswahl soll über eine Radio. Group erfolgen G. Noll 2008 42
Laufzeitmessung Eine hochpräzise Messung der Laufzeit ist in Delphi mit folgender Befehlsfolge möglich procedure TForm 1. BZeit. Click(Sender: TObject); var a, e, f: int 64; begin Query. Performance. Frequency(f); Query. Performance. Counter(a); //Befehlsfolge deren Zeitdauer bestimmt werden soll Query. Performance. Counter(e); BZeit. Caption : = Float. To. Str. F(1000*(e-a)/f, FFNumber, 8, 3); //Ergebnis hier in ms end; (nach Easy Delphi Helper unter www. dsdt. info) G. Noll 2008 43
Ü-06 Würfelspiel Eine Aufgabe aus einer Kursarbeit: Ein Würfelspiel Du wirftst vier Würfel und gewinnst, wenn mindestens 2 Würfel die Augenzahl 5 oder 6 zeigen. Schreibe ein Programm, das die vier Augenzahlen auf einem Panel ausgibt und feststellt, ob du gewonnen hast. Erweiterung: Ermitteln Sie mir einer Simulation, wie groß die Chance ist, bei diesem Spiel zu gewinnen? G. Noll 2008 44
Zufallszahlen Pseudozufallszahlen in Pascal zz: =random(n) liefert ganzzahliges zz mit 0 zz < n Würfel: zz: =random(6)+1 Damit der Zufallszahlengenerator stets andere Werte liefert, wird er zu Beginn initialisiert procedure TForm 1. Form. Create(Sender: TObject); begin randomize; end; G. Noll 2008 45
Stringverarbeitung - Parameter Vom System vorgegebene Funktionen und Prozeduren zur Stringverarbeitung eignen sich in besonderer Weise zur Thematisierung von Schnittstellen und ihren Parametern, z. B. function length(S: string): Integer; function Pos(Sub. Str: String; S: String): Integer procedure Delete(var S: String; Index, Count: Integer) procedure Insert(Source: String; var S: String; Index: integer) function Ansi. Upper. Case(S: String): String (in der Unit Sys. Utils) Auf Zeichen eines Strings kann man wie auf die Elemente eines array of char zugreifen Stringverarbeitung lässt sich gut in ein Programmierprojekt zur Kryptographie einbinden G. Noll 2008 46
Ü-07: Eigene Stringverarbeitung Einfache Programmierübungen ergeben sich aus Erweiterungen der Standardoperationen Schreiben Sie ein Programm, das in einem Satz jedes Vorkommen einer Zeichenfolge durch eine andere Zeichenfolge ersetzt: papa kennt den tip mama kennt den tim Verwenden Sie dazu die Standardoperationen pos, delete und insert G. Noll 2008 47
Ein Blick auf den Unterricht G. Noll 2008 48
Ein Blick auf den Unterricht G. Noll 2008 49
Ü-08: Kryptographie Cäsar-Verschlüsselung Text (ohne Umlaute und Sonderzeichen) in ein Memofeld eingeben In Großbuchstaben umwandeln (Ansi. Upper. Case) Buchstabenverschiebung durchführen ASCII-Tabelle: Großbuchstaben haben die Ordnungszahl ORD('A')=65 bis ORD('Z')=90 Verschiebung um k (Schlüsselzahl 0<k<26) Ergebnis: 65+k. . . 90+k falls Ergebnis>90 dann Ergebnis: =Ergebnis-26 neuer Buchstabe CHAR(Ergebnis) beim Entschlüsseln Subtraktion der Schlüsselzahl Ergebnis: 65 -k. . . 90 -k falls Ergebnis<65 dann Ergebnis: =Ergebnis+26 Ergebnis in einem zweiten Memofeld ausgeben Was lässt sich beobachten? Erklärung? G. Noll 2008 50
Stringliste: Ein- und Ausgabe Memo Komponente (Klasse TMemo) mehrzeiliges Feld für Eingabe und Ausgabe zentrale Eigenschaft Lines ( Stringliste) Zählung der "Lines" beginnt mit 0 nützliche Eigenschaften/Methoden für Stringlisten Lines. Clear Lines. Add() Lines. Delete() Lines. Count Lines. Save. To. File() Lines. Load. From. File() G. Noll 2008 löscht alle Einträge (procedure) fügt eine Zeile am Ende hinzu Lines. Delete(0) löscht 1. Zeile Anzahl der Zeilen (property) Speichern in einem Textfile Laden aus einem Textfile 51
Ü-09: Cäsar mit Dateien Ergänzung zum Projekt Cäsar Behandlung von Umlauten, Sonderzeichen und Leerzeichen Klartext aus einer Textdatei in das Memofeld einlesen bzw. in eine Textdatei abspeichern Geheimtext aus dem Memofeld in eine Textdatei abspeichern bzw. aus einer Textdatei einlesen Dateidialoge Open. Dialog und Save. Dialog Komponenten werden nur auf das Formular gebracht der Aufruf erfolgt durch die Methode execute liefert true (Ok-Button) oder false (Abbruch-Button) zurück über die Eigenschaft filename wird auf den gewählten oder eingegebenen Dateinamen zugegriffen G. Noll 2008 52
Ü-10: Wörter sortieren Schreiben Sie ein Programm zum Sortieren einer Folge von Wörtern Einfache Sortierverfahren sind z. B. Bubblesort oder direkte Auswahl (Sortieren durch Minimumsuche) Beschränkung auf 10 Wörter Eingabe über Memofeld - Ausgabe über Listbox Sortieren mit Bubblesort Sortieren mit Minimumsuche Import: Feld f und Feldlänge n Export: Feld f sortiert : = true für start von 1 bis n - 1 wiederhole für pos von 1 bis n - 1 wiederhole minpos : = start f [pos] > f [pos+1] true für pos von start+1 bis n wiederhole false f [pos] < f [minpos] vertausche f [pos] mit f [pos+1] sortiert : = false wiederhole bis sortiert=true G. Noll 2008 true false minpos : = pos vertausche f [start] mit f [minpos] 53
Stringliste: Ausgabe Listbox Komponente (Klasse TListbox) Ausgabe einer Liste von Strings mit der Möglichkeit zum Auswählen, Löschen, Hinzufügen zentrale Eigenschaften/Methoden Items ( Stringliste) List. Box 1. Items. Add('Speyer'); Es sind alle Eigenschaften und Methoden der Stringliste möglich Item. Index Nr. des ausgewählten Strings Zählung beginnt mit 0 Nr. ist -1 falls kein String gewählt wurde (property) Sorted mit der Zuweisung true werden die Strings sortiert (property) Clear löscht alle Einträge (procedure) G. Noll 2008 54
Ü-11: Mit Delphi sortieren Delphi enthält eine eigene Sortierroutine Eine Listbox kann über die Eigenschaft Sorted von Delphi sortiert werden: LBox 1. Sorted: =true Fügen Sie einen Button zur Sortierung mit Delphi ein und vergleichen Sie das Ergebnis mit dem des eigenen Verfahrens Wird jetzt alles richtig sortiert? G. Noll 2008 55
Literatur Delphi - Schulbücher Schumann Delphi für Kids (incl. Delphi 7 Personal Edition) mitp-Verlag, Bonn 2005 Bähnisch Praktische Informatik mit Delphi (2 Bd. ) Cornelsen, Berlin 2001 Damann-Wemßen Objektorientierte Programmierung mit Delphi (2 Bd. +LB) Klett, Stuttgart 2001 -2005 Frischalowski Delphi 5. 0 (2 Bd. ) Herdt-Verlag, Nackenheim 1999 G. Noll 2008 56
Literatur Delphi - Allgemein Binzinger Delphi Markt+Technik, München 2004 Doberenz-Kowalski Borland Delphi 6 Hanser, München 2002 Ebener Delphi 6 - nachschlagen und verstehen Addison-Wesley 2002 UML Oestereich Analyse und Design mit UML 2. 1 Oldenbourg, München 2006 Oesterreich Die UML 2. 0 Kurzreferenz für die Praxis Oldenbourg, München 2006 Balzert UML 2 in 5 Tagen W 3 L Verlag, Herdecke 2005 G. Noll 2008 57
Literatur Internet Eine Google-Suche mit Delphi Unterricht liefert eine unüberschaubare Vielfalt an Seiten http: //www. hsg-kl. de/faecher/inf/index. php http: //www. plauener. de/~lessing/delphi_v. htm http: //www. dsdt. info/grundlagen/ http: //www. delphipraxis. net (Stand: 27. 3. 2008) G. Noll 2008 58
Viel Spaß und Erfolg bei der weiteren Arbeit mit Delphi G. Noll 2008 59
G. Noll 2008 60
Projektverwaltung Delphi sichert im Laufe der Projektentwicklung eine Serien von Dateien, u. a. : *. dpr *. pas *. dfm *. res *. dcu *. dof *. ~? ? *. exe G. Noll 2008 Projektverwaltung (Hauptprogramm) Pascalquelltext (Unit) Formulareinstellungen Ressourcen wie Icons, Sound etc. compilierte Unit Compiler Einstellungen Backup Dateien *. ~pa *. ~dp etc. ausführbares Windows-Programm 61
Cäsar - Dateidialoge TForm 1 = class(TForm) Open. Dialog 1: TOpen. Dialog; Save. Dialog 1: TSave. Dialog; . . procedure BLaden. Geheim. Click(Sender: TObject); procedure BSpeichern. Geheim. Click(Sender: TObject); procedure TForm 1. BLaden. Geheim. Click(Sender: TObject); begin if Open. Dialog 1. Execute then MGeheimtext. Lines. Load. From. File(Open. Dialog 1. Filename); end; procedure TForm 1. BSpeichern. Geheim. Click(Sender: TObject); begin if Save. Dialog 1. Execute then MGeheimtext. Lines. Save. To. File(Save. Dialog 1. Filename); end; G. Noll 2008 62
Delphi-Forum G. Noll 2008 63
Tag und Nacht G. Noll 2008 64
Tag und Nacht mit 2 Fenster G. Noll 2008 65
BMI G. Noll 2008 66
BMI mit try-except G. Noll 2008 67
Population G. Noll 2008 68
Population mit Initialisierung G. Noll 2008 69
Euklidischer Algorithmus G. Noll 2008 70
Struktogrammeditor G. Noll 2008 71
gg. T Algorithmus zur Auswahl G. Noll 2008 72
Laufzeitmessung G. Noll 2008 73
Würfelspiel G. Noll 2008 74
Würfelspiel mit Simulation G. Noll 2008 75
Suchen und Ersetzen G. Noll 2008 76
Cäsar G. Noll 2008 77
Cäsar mit Dateien G. Noll 2008 78
Sortieren G. Noll 2008 79