Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll...

75
Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005

Transcript of Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll...

Page 1: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

Von Pascal zu Delphi

Eine Einführung in die Entwicklung

ereignisgesteuerter Programme

Gregor Noll2005

Page 2: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 2

Delphi für die Schule ?Delphi setzt die Tradition von Pascal fort und erweitert sie um moderne Sprachkonzepte

Ansprechende Benutzungsschnittstellebei der Programmentwicklungbei der Programmausführung

Unterstützung der Programmentwicklung

visuelle Komponentenbibliothek VCLkontextsensitives HilfesystemDebuggerautomatische Programmergänzung

Objektorientierungstets präsent: Objekte - Methoden - Ereignisseein Einstieg ist ohne vertiefte Kenntnisse der OOP möglich

Page 3: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 3

Versionen

1995 Delphi 116-Bit Compiler für Windows 3.x Plattform

2002 Delphi 6 und Delphi 7Personal - Professional - Enterprise - Architect32-Bit Compiler (seit Delphi 2)Klassenbibliothek für Cross-Plattform-EntwicklungKomponenten für Internet und Web-ServiceUnterstützung von UML (Vers. 7 ab Enterprise)

2005 Delphi 2005.Net-Version

Page 4: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 4

SchulversionenDelphi 3 Professional

vertrieben mit dem Buch "Delphi für Kids" (ca. 25 Euro) im mitp-Verlag Bonn

Delphi PersonalVers. 7 auf der Begleit-CD zur c't 8/2004Vers. 2005 auf Begleit-DVD PC-Magazin 5/2005kostenlose Registrierung bei Borland erforderlich

Schulversionen im Handelz. B. Delphi Professional Klassenraum-Lizenz 20 Plätze ca. 650 €

Page 5: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 5

Wir starten ...... mit der Entwicklung eines Simulationsprogramms

Wir brauchen:

Ein- und Ausgabemöglichkeiten

Etwas zum Starten der Berechnung

Benutzungs-schnittstelle

Die Entwicklung der Weltbevölkerung schreitet rasch voran: Im Jahr 1999 wurde die 6 Milliardengrenze überschritten; zur Zeit wächst die Weltbevölkerung jährlich um ca. 1,3 %. Kann das so weitergehen?

Mit Hilfe eines kleinen Programms wollen wir die jährliche Entwicklung der Weltbevölkerung verfolgen.

(vgl. K. Becker - "Ereignisgesteuerte Programmierung" auf informatikag.bildung-rp.de/html/weiterbildung_viii__2_.html)

Page 6: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 6

Benutzungsschnittstelle

Graphical User Interface

Button

Edit

Label

Wir gestalten das GUI mit der Delphi Entwicklungs-umgebung - visuelle Programmierung

Page 7: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 7

Entwicklungsumgebung

Komponentenpalette

Objektinspektor

Quelltextfenster

Formular

Delphi 6

Programmstart

Page 8: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 8

Öffnen Sie ...

... Delphi und seine Entwicklungsumgebung

Speichern Sie, bevor Sie etwas verändern, das von Delphi generierte Projekt sofort mit Datei - Alles speichern in einen eigenen Ordner mit einem geeigneten Namen für das Projekt

Es werden zwei Dateinamen vorgeschlagen unit1.pas und project1.dpr, die Sie übernehmen oder auch umbenennen können. Die beiden Namen müssen verschieden sein.

Das neue Projekt ist direkt ein lauffähiges Programm. Wenn Sie es starten, erzeugt Delphi im Projektordner eine exe-Datei und auf dem Bildschirm eine typisches Windows-Fenster

Page 9: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 9

Projektaufbau

Von Pascal her erwarten wir eine Struktur aus Hauptprogramm und Units. Auch Delphi-Projekte sind so aufgebaut

Page 10: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 10

GUI-Objekte erzeugen

Aktivierung der Komponente

anschließend auf

das Formular klicken

Positionieren Sie einige Komponenten auf das Formular und beobachten Sie dabei mit dem Objektinspektor, wie Delphi automatisch Bezeichnungen und weitere Eigenschaften vorgibt

Page 11: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 11

Bezeichnungen

Delphi vergibt automatisch Namen an die GUI-Objekte, z. B. Label1, Button1, Button2

Es ist besser, eigene Bezeichnungen zu verwenden

Im Objektinspektor über die Eigenschaft Namez. B. : BInit B für Button

GBAuswahl GB für GroupboxLTitel L für Labelusw.

Die Aufschriften von Objekten lassen sich anschließend über ihre Caption - Eigenschaft im Objektinspektor verändern oder später zur Laufzeit zuweisen

Page 12: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 12

Übung 1a

Erstellen Sie das GUI für unser Simulationsprogramm

BWeiter

EAnzahl

LTitel

EJahr

BInit

LJahr

LAnzahl

Schauen Sie sich den von Delphi generierten Quelltext an

Page 13: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 13

unit Unit1;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type TForm1 = class(TForm) LTitel: TLabel; BInit: TButton; BWeiter: TButton; LJahr: TLabel; LAnzahl: TLabel; EJahr: TEdit; EAnzahl: TEdit; private { Private-Deklarationen } public { Public-Deklarationen } end;

var Form1: TForm1;

implementation

{$R *.DFM}

end.

Quelltext

Klassendefinition

Objekte

Objekt

Page 14: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 14

Objekte und Klassen

In unserem Programm begegnen wir verschiedenen Objekten:

EJahr: TEdit

Text = ´´

Left = 208

Top = 80

...

Klassename

EAnzahl: TEdit

Text = ´´

Left = 208

Top = 120

...

BInit: TButton

Caption =´Initiali- sierung´

Left = 104

Top = 176

...

Objektname

Jedes Objekt und jede Klasse ist über den Namen identifizierbar.

Objekte mit gleichem Aufbau werden zu Klassen zusammengefasst.

Page 15: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 15

Objekte

EJahr: TEdit

Text = ´´

Left = 208

Top = 80

...

Attribut Attributwert

Der Aufbau eines Objekts wird u. a. über die Attribute (Eigenschaften) bestimmt. Die Attributwerte legen den aktuellen Objektzustand fest.

Objekt

Page 16: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 16

Modellierung: Daten

const p = 1.3; var Jahr : integer; Anzahl : real;

Informationen:

Im Jahr 1999 wurde die 6 Milliardengrenze überschritten; zur Zeit wächst die Weltbevölkerung jährlich um ca. 1,3 %.

Modellierung:

Entprechend der Aufgabe legen wir die Daten und ihren Datentyp fest:

Page 17: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 17

Modellierung: Operationen

Für folgende Operationen formulieren wir jeweils passende Prozeduren

procedure initPopulation;beginJahr := 1999;Anzahl := 6.0;end;

Die Anfangspopulation (1999: 6.0 Mrd.) wird festgelegt

procedure naechstePopulation;beginJahr := Jahr + 1;Anzahl := Anzahl + p/100*Anzahl;end;

Die nächste Population wird berechnet

Page 18: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 18

Übung 1b

Implementieren Sie die Daten und Operationen im Delphi-Quelltext

Überprüfen Sie, dass das Projekt weiterhin compilierbar und lauffähig ist

Welcher Teil des Programm fehlt noch?

Page 19: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 19

ProgrammablaufEin Delphiprogramm reagiert auf Ereignisse

Ereignisse lassen sich auslösen u. a. über Maus oder Tastatur

OnClickKlicken auf ein Objekt mit der MausOnChange eine Eingabe wird verändert

kein linearer Programmablaufdies erfordert für Pascal Gewohnte ein Umdenken beim ProgrammentwurfAlgorithmen, wie z. B. Sortierverfahren verlieren dennoch nicht an Bedeutung

Page 20: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 20

EreignisbehandlungDie Reaktion auf Ereignisse geschieht mit Ereignisbehandlungsmethoden (EBM)

Sie lassen sich über das Formular oder den Objektinspektor den Objekten zuordnenVerschiedene Objekte können dieselbe EBM erhaltenKleinere Algorithmen lassen sich unmittelbar in der EBM eines Objektes unterbringen. Übersichtlicher wird es, wenn wir die Algorithmen als eigenständige Prozeduren definieren und gegebenenfalls sogar in eigene Units auslagern (ModelViewController-Konzept)

Page 21: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 21

EreignisbehandlungsroutinenEin Doppelklick auf ein Objekt führt zum Quelltext der EBM des Objekts

Delphi legt das zugehörige Gerüst an und verankert es in der FormulardefinitionKeine eigenständige Veränderungen an den Schnittstellen vornehmen!Leere Prozeduren werden automatisch gelöscht

Page 22: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 22

Ereignisse

In unserem Simulationsprogramm wollen wir zwei Ereignisse behandeln:

Benutzeraktion bzw. Ereignis

Mausklick auf init-Button

Mausklick auf >-Button

Programmreaktion

Die Anfangspopulation (1999: 6.0 Mrd.) wird festgelegt und angezeigt

Die nächste Population (jeweils nach einem Jahr) wird berechnet

und angezeigt

Für die Anzeige von Daten muss ein Daten-austausch mit den GUI-Objekten erfolgen

Page 23: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 23

Datenaustausch mit GUI-Objekten

Unsere GUI-Objekte verwenden Daten des Typs string Numerische Daten werden deshalb konvertiert

Jahr := StrToInt(EJahr.Text);Anzahl := StrToFloat(EAnzahl.Text);

Variablen GUI-Objekte

EJahr.Text := IntToStr(Jahr);EAnzahl.Text := FloatToStr(Anzahl);

Variablen GUI-Objekte

Formatierte Ausgabe:FloatToStrF() - meist ausreichend ist hier

FloatToStrF(zahl,ffnumber,8,2)

Page 24: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 24

Übung 1c

Ergänzen Sie den Quelltext um die noch fehlenden EreignisbehandlungsmethodenErgänzen Sie das Programm um weitere ButtonsBenutzeraktion:

Mausklick auf <-Button

Mausklick auf >>-Button

Mausklick auf <<-Button

Programmreaktion:

Die vorherige Population (jeweils vor einem Jahr) wird berechnet (und angezeigt), sofern das Jahr nicht vor 1999 ist.

Die Population 10 Jahre später wird berechnet (und angezeigt).

Die Population 10 Jahre vorher wird berechnet (und angezeigt). Man kann aber höchstens bis 1999 zurückspringen.

Page 25: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 25

Hilfe von und über DelphiDelphi unterstützt die Programmentwicklung durch verschiedene Hilfsmechanismen, z. B.

Automatische Erzeugung von ProzedurgerüstenAnzeige von Eigenschaften und Methoden hinter der Eingabe eines Objektbezeichners (ctrl-space)

Aufruf eines umfassenden, verlinkten Hilfssystems über die MenüleisteKontextsensitive Hilfe mit

F1(auch im Fehlerfenster)

Page 26: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 26

Debugging

Neben dem Hilfesystem liefert Delphi auch einen Laufzeit Debugger

Das Debugging muss unter Projekt - Optionen - Compiler aktiviert sein

Starten Sie ein Programm mit F7Verfolgen Sie den Ablauf im Quelltext und im ProgrammfensterBeachten 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 F8

Typisches Vorgehen

Page 27: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 27

Übung 1dDas benutzte Wachstumsmodell beschreibt die Bevölkerungs-entwicklung nur in einem begrenzten Zeitraum realistisch. Über längere Zeiträume lässt sich das Bevölkerungswachstum besser durch die angegebene Folge beschreiben:

B0 = 6.0

Bn+1 = Bn + 0.0027*Bn*(11 – Bn)

Ändern Sie das Simulationsprogramm entsprechend ab. Überlegen Sie sich hierzu zunächst, welche Programmteile sie verändern müssen.

- Benutzungsoberfläche ?- Datenmodell ?- Verarbeitungsoperationen ?- Ereignisbehandlungsmethoden?

Page 28: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 28

Ein umfangreicheres Programm

RechentrainerDas Programm soll Aufgaben zu den vier Grundrechenarten anzeigen. Dazu werden zufällig ganze Zahlen aus dem Bereich 0..10 ausgewählt

Auf der Benutzungsoberfläche (GUI) kann die Rechenoperation ausgewählt werden und die Anzeige des zunächst nicht sichtbaren ErgebnissesDurch wiederholtes Anklicken einer der vier Rechenoperationen werden neue Aufgaben generiert

Page 29: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 29

FormularentwurfEin Vorschlag für die Benutzungsschnittstelle

Label

Panel

GroupBox

GroupBox

Button

Button

Page 30: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 30

Übung 2a

Starten Sie ein neues Projekt

Speichern Sie das neue Projekt mit Datei - Alles speichern unmittelbar nach Beginn in einen eigenen Ordner mit dem Namen "Rechentrainer"

Erstellen Sie eine Benutzungsschnittstelle für das Rechentraining Programm

Verwenden Sie sinnvolle BezeichnerEine Groupbox muss vor den Komponenten platziert werden, die sie aufnehmen sollExperimentieren Sie mit den Eigenschaften der Objekte (Farbe, Schriftart, Textausrichtung etc.)

Page 31: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 31

Übung 2b

Ereignisse:

BAddition.OnClick

BSubtraktion.OnClick

BMultiplikation.OnClick

BDivision.OnClick

BErgebnis.OnClick

Form1.OnCreate

Aktionen:

+Aufgabe erzeugen; Ergebnis berechnen; Aufgabe anzeigen

- Aufgabe erzeugen; Ergebnis berechnen; Aufgabe anzeigen

*Aufgabe erzeugen; Ergebnis berechnen; Aufgabe anzeigen

: Aufgabe erzeugen; Ergebnis berechnen; Aufgabe anzeigen

Ergebnis zeigen

Zufallsgenerator initialisieren

Was soll passieren soll, wenn im Rechen-trainerprogramm ein Button angeklickt wird?

Page 32: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 32

Übung 2c

Modellierung und Implementierung

var Rechenzeichen: char; Zahl1, Zahl2, Ergebnis: integer;

Verarbeitungsoperationen:procedure PlusAufgabeErzeugen;...

Daten:

procedure MinusAufgabeErzeugen;beginZahl1 := random(11);Zahl2 := random(11);Rechenzeichen := '-';end;

...

procedure ErgebnisBerechnen;begincase Rechenzeichen of '+': Ergebnis := Zahl1 + Zahl2; '-': Ergebnis := Zahl1 - Zahl2; '*': Ergebnis := Zahl1 * Zahl2; ':': Ergebnis := Zahl1 div Zahl2;end;

Page 33: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 33

Übung 2d

Modellierung und ImplementierungEreignisbehandlung:

procedure TForm1.BAdditionClick(Sender: TObject);beginPlusAufgabeErzeugen;ErgebnisBerechnen;LZahl1.Caption := IntToStr(Zahl1);LOperator.Caption := Rechenzeichen;LZahl2.Caption := IntToStr(Zahl2);LGleich.Visible := true;LErgebnis.Caption := IntToStr(Ergebnis);LErgebnis.Visible := false;end;

procedure TForm1.BSubtraktionClick(Sender: TObject);beginMinusAufgabeErzeugen;ErgebnisBerechnen;LZahl1.Caption := IntToStr(Zahl1);LOperator.Caption := Rechenzeichen;LZahl2.Caption := IntToStr(Zahl2);LGleich.Visible := true;LErgebnis.Caption := IntToStr(Ergebnis);LErgebnis.Visible := false;end;

Redundan

z

Page 34: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 34

Übung 2e

Modellierung und Implementierung

sind stark redundant

Idee: Wir fassen die Prozeduren zusammen und differenzieren nach dem jeweils angelickten Rechenzeichen bzw. Button

procedure PlusAufgabeErzeugen;procedure MinusAufgabeErzeugen;procedure MalAufgabeErzeugen;procedure DurchAufgabeErzeugen;

procedure TForm1.BAdditionClick(Sender: TObject);procedure TForm1.BSubtraktionClick(Sender: TObject);procedure TForm1.BMultiplikationClick(Sender: TObject);procedure TForm1.BDivisionClick(Sender: TObject);

Die Prozeduren

Page 35: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 35

Übung 2f

Zusammenfassungenprocedure PlusAufgabeErzeugen;procedure MinusAufgabeErzeugen;procedure MalAufgabeErzeugen;procedure DurchAufgabeErzeugen;

procedure AufgabeErzeugen;

erhält als Informationdas Rechenzeichen

Ereignisse:

BAddition.OnClickBSubtraktion.OnClickBMultiplikation.OnClickBDivision.OnClick

nur eine Behandlungsmethode:

procedureTForm1.BRechenzeichenClick(Sender: TObject);

erhält als Informationden Button

Page 36: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 36

Übung 2g

Implementierungprocedure TForm1.BRechenzeichenClick(Sender: TObject);begin

// Aktualisierung der Modelldatenif Sender = BAddition then Rechenzeichen := '+';if Sender = BSubtraktion then Rechenzeichen := '-';if Sender = BMultiplikation then Rechenzeichen := '*';if Sender = BDivision then Rechenzeichen := ':';

// Aufruf der VerarbeitungsoperationenAufgabeErzeugen;ErgebnisBerechnen;

// Aktualisierung der AnzeigeLZahl1.Caption := IntToStr(Zahl1);...

end;

// kurz: Rechenzeichen := TButton(Sender).Caption[1];

Vervollständigen Sie entsprechend Ihr Programm !

Page 37: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 37

Übungen 2h

Erweitern Sie das Rechentrainingsprogramm um die Möglichkeit, zwischen drei Zahlen-bereichen für die Aufgaben zu wählen

z. B. Zahlen von 0..50 oder 0..100 oder -10..10

Erweitern Sie das Rechentrainingsprogramm um die Möglichkeit, einen Lösungsvorschlag in ein Editfeld eingeben zu können. Nach Abschluss der Eingabe bewertet das System den Lösungsvorschlag

Page 38: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 38

Eingabe / Ausgabe

Edit Komponenteeinzeiliges Feld für Eingabe und Ausgabezentrale Eigenschaft

Text ( String) antwort:=Edit1.Text; (property)

nützliche Eigenschaften/MethodenClear Edit1.Clear; (procedure)Enabled Edit1.Enabled:=true; (property)Visible Edit1.Visible:=false; (property)ReadOnly Edit1.ReadOnly:=true;(property)

nützliche EreignisseOnChangeOnEnterOnExit z. B. Prüfung der Eingabe vor dem Verlassen

Zahlen müssen konvertiert werden

Page 39: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 39

Eingabe / Ausgabe

Memo Komponentemehrzeiliges Feld für Eingabe und Ausgabezentrale Eigenschaft

Lines ( Stringliste) zeile4:=Memo1.Lines[3];

nützliche EigenschaftenAlignment Ausrichtung des TextesEnabled - Visible aktiviert - sichtbar

nützliche Methoden/Eigenschaften für Stringlisten

Lines.Clear löscht alle Einträge (procedure)Lines.Add() fügt eine Zeile am Ende hinzuLines.Delete() Lines.Delete(0) löscht 1. ZeileLines.Count Anzahl der Zeilen (property)Lines.SaveToFile() Speichern in einem TextfileLines.LoadFromFile() Laden aus einem Textfile

Page 40: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 40

Eingabe / Ausgabe

Listbox KomponenteAusgabe einer Liste von Strings mit der Möglich-keit zum Auswählen, Löschen, Hinzufügenzentrale Eigenschaften/Methoden

Items ( Stringliste)ListBox1.Items.Add('Speyer');

Es sind alle Eigenschaften und Methoden der Stringliste möglichItemIndex Nr. des ausgewählten Strings Zählung beginnend 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)

Page 41: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 41

Eingabe / Ausgabe

SpinEditEdit-Feld für ganze Zahlen Start-Wert (Value)Minimalwert und MaximalwertIncrement

Eigenschaft checked (boolean)

CheckboxAn- und Abwahl einer Option

Gruppe sich ausschließender OptionenEigenschaft checked (boolean) bzw. ItemIndex (Zählung mit 0 beginnend; -1 bei keiner Auswahl)

Radiobutton - RadiogroupAn- und Abwahl einer Option

Page 42: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 42

Übungen 3

Schreiben Sie ein Programm, das den Bodymass-Index BMI berechnet und bewertet

BMI = Gewicht in kg/(Körperlänge in m)²starkes Untergewicht: kleiner 16Untergwicht: 16 bis unter 18,5Normalgewicht: 18,5 bis unter 25

leichtes Übergewicht: 25 bis unter 30starkes Übergewicht: 30 und mehr(nach WHO)Google Search: BMI Düsseldorf

Page 43: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 43

Laufzeitfehler

Sie lassen sich mit einem try-except Block abfangen und selbst behandeln

Voraussetzungdas Stoppen bei Exceptions ist abgeschaltet

bei Delphi 3 unter Tools-Umgebungsoptionenbei Delphi 6 unter Tools-Debugger-Optionen-Sprachexceptions

Formattry

// Anweisungen deren Laufzeitfehler abgefangen werden

except // Hinweise oder Abfangroutinen falls Fehler

auftreten end;

Page 44: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 44

Übung 4

Eine Aufgabe aus einer Kursarbeit:

Der euklidische Algorithmus

ggT(a,b)(1) r sei der Rest bei der Teilung a/b(2) ist r=0 so gib b als ggT(a,b) aus und höre auf(3) speichere b in a und r in b ab und fahre mit

(1) fort

Verwende zur Eingabe die SpinEdit Komponente (unter "Beispiele")Das Formular soll keinen Button enthalten

Page 45: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 45

Übung 5

Die Zahlenraupe

1 2 4 8

7 14 28

27 54 53 Auf dem ersten Glied

einer Zahlenraupe steht eine beliebige positive NummerHat ein Raupenglied eine gerade Nummer, so steht auf dem nächsten die Hälfte dieser NummerHat es eine ungerade Nummer, so trägt das nächste Raupenglied die um 1 größere NummerSteht auf einem Raupenglied die Nummer 1, so ist es das letzte Glied der Raupe

Schreiben Sie ein Programm, das nach Eingabe der Startzahl die einzelnen Gliedernummern und ihre Anzahl ausgibt

Page 46: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 46

Formularlose Units

Vorteile:übersichtliche Projektgestaltung durch Trennung der Gestaltung der Benutzungsschnittstelle von den algorithmischen Verfahren

Delphi generiert zu jedem Formular automatisch eine Unit. Es lassen sich aber auch formularlose Units erstellen

Model-View-Controller Konzept

wird in eine eigene Datei compiliert (*.DCU)Quelltext danach nicht mehr erforderlich

mehrfach verwendbar

Page 47: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 47

Formularlose Units

Anlage einer Unit über Datei - Neu - Unit

nach außen hin sichtbare Teile

Algorithmen

zu beachten:Einbinden eventuell benötigter Delphi-Units in die formularlose Unit

Einbinden der formularlosen Units in die Unit des Formulars

Mit Datei-Speichern unter... lässt sich der Unitname ändern z.B. uAuswahlsort (nicht im Quelltext von Hand ändern!)

Page 48: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 48

Übung 6Schreiben Sie ein Programm zum Sortieren einer Folge von Strings

Vorschläge:Einfache Sortierverfahren sind z. B. Bubblesort, Einfügesort oder Austauschsort (Sortieren durch Minimumsuche)

Ergänzung:Eine Listbox kann über die Eigenschaft Sorted von Delphi selbst sortiert werden: LBox1.Sorted:=true. Fügen Sie einen Button zur Sortierung mit Delphi ein und verglei-chen Sie das Ergebnis dem des eigenen Sortierverfahrens

Beschränkung auf 10 Strings

Das eigentliche Sortierverfahren soll in eine eigene Unit ausgelagert werden, damit es durch andere Verfahren (Units) ersetzt werden kann

Page 49: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 49

Dialog Komponenten für allg. DateienOpenDialog und SaveDialogKomponenten werden nur im Formular platziert

Dateibehandlung

Delphi stellt die Standarddialoge von Windows zum Öffnen und Speichern von Dateien zur Verfügung

der Aufruf erfolgt durch die Methode executeexecute liefert true (Ok-Button) oder false (Abbruch-Button) zurücküber die Eigenschaft filename wird auf den gewählten oder eingegebenen Dateinamen zugegriffen

Page 50: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 50

Übung 7Ein Telefonverzeichnis

Entwerfen Sie ein Programm, das ein Telefonverzeichnis mit Hilfe einer ListBox-Komponente realisiert

Gespeichert werden Name, Vorname und Telefonnummer Es sollen folgende Funktionen möglich sein:

Hinzufügen eines EintragesÄndern oder Löschen eines ausgewählten EintragesLöschen aller Einträge auf einmalSpeichern und Laden des Telefonverzeichnisses

Eventuell können Sie noch Sortieren und Suchen implementieren

Page 51: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 51

Menü-Komponente

Delphi stellt mit der zur Laufzeit unsichtbaren Komponente MainMenue eine komfortable Menügestaltung zur Verfügung

Doppelklick auf die Komponente im Formular öffnet den Menüeditor

Über den Objektinspektor lässt sich auch eine schon vorhandene Ereignisbehandlungsmethode einbinden

Ein Bindestrich - als Caption erzeugt einen TrennstrichDoppelklick auf den Menüeintrag führt zur EBM

Page 52: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 52

Übung 8

Ändern Sie das Telefonverzeichnis so ab, dass die Optionen zum Laden und Speichern der Verzeichnisdatei als Menü realisiert werden

Page 53: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 53

Aus einer Ansammlung von Quizfragen wird eine Frage zufällig ausgewählt und präsentiertUnter vier möglichen Antworten soll die richtige angekreuzt werdenBei jeder Frage wird die richtige Antwort und eine Bewertung der angekreuzten Antwort ausgegebenDas Spiel ist zu Ende, wenn alle Fragen behandelt wurden

Übung 9

Schreiben Sie ein Programm für ein Quizspiel

Page 54: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 54

Aufteilung in theoretischen und praktischen Teil

Leistungsnachweise

Struktur

Beispiel für einen Leistungsnachweis (1 Std.)

Beispiel für ein Kursarbeit (2 Std.)

zuerst die Theorie bearbeiten, dann diesen Teil abgeben lassen

praktischer Teil am Computer

Page 55: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 55

Schumann Delphi für Kids (incl. Delphi 3 Professional CD)mitp-Verlag, Bonn 2000Fleicher Programmentwicklung mit DelphiDümmler, Bonn 1998Modrow Informatik mit Delphi (2 Bd.)Dümmler-Stam, Köln 1998-2000Bähnisch Praktische Informatik mit Delphi (2 Bd.)Cornelsen, Berlin 2001 Damann-WemßenObjektorientierte Programmierung mit Delphi (2 Bd.)Klett, Stuttgart 2001-2003Frischalowski Delphi 5.0 (2 Bd.)Herdt-Verlag, Nackenheim 1999Pohl Schülerübungen/Klausuren in Delphi (2 Hefte)Verlag J.Pohl, Karlsbad 1997-2001

Literatur

Schulbücher

Page 56: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 56

EllerDelphi 5Addison-Wesley, München 2000

Doberenz-KowalskiBorland Delphi 6Hanser, München 2002

Literatur

Allgemein

InternetGoogle-Suche "Delphi Unterricht"unüberschaubare Vielfalt an Seiten

http://www.delphi-source.dehttp://hsg.region-kaiserslautern.de/faecher/inf/index.php

Page 57: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 57

Viel Spaß und Erfolg

bei der weiteren Arbeit mit Delphi

Page 58: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 58

Page 59: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 59

Projektverwaltung

*.dpr Projektverwaltung (Hauptprogramm)*.pas Pascalquelltext (Unit)*.dfm Formulareinstellungen*.res Ressourcen wie Icons, Sound etc.*.dcu compilierte Unit*.dof Compiler Einstellungen*.~?? Backup Dateien *.~pa *.~dp etc.*.exe ausführbares Windows-Programm

Delphi sichert im Laufe der Projektentwick-lung eine Serien von Dateien, u. a. :

Page 60: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 60

Bevölkerungswachstum

Page 61: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 61

Bevölkerungswachstum

Page 62: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 62

Bevölkerungswachstum

Page 63: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 63

Rechentrainer

Page 64: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 64

Rechentrainer

Page 65: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 65

Rechentrainer

Page 66: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 66

Rechentrainer

Page 67: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 67

BMI

Page 68: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 68

BMI mit try-except

Page 69: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 69

Zahlenraupe

Page 70: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 70

Euklidischer Algorithmus

Page 71: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 71

Sortieren

Page 72: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 72

Dateidialoge

Page 73: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 73

Telefonverzeichnis

Page 74: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 74

Telefonverzeichnis

Page 75: Von Pascal zu Delphi Eine Einführung in die Entwicklung ereignisgesteuerter Programme Gregor Noll 2005.

G.Noll 2005 75

Quiz