DELPHI FÜR ELEKTRONIKER



Ähnliche Dokumente
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, mneueintrag, meintrag, morderedlist;

Komponente NumEdit für Delphi 5.0

Programmierung in Delphi

Ziehen Sie jetzt mit gedrückter linker Maustaste ein Rechteck auf dem Formulareditor auf. Lassen Sie die Maustaste dann los. Was passiert?

Aufzählung, Bennenung, Bedienung der wichtigsten Steuerelemente Verwenden von Menüs, Schaltflächen, Bildlaufleisten und Kontrollkästchen

Delphi eine Einführung

GK Informatik /08 (bumue) Klausur

Erstellen eines Referates in Word

Achtung, Speichern nicht vergessen!

Workshop 1 Idealgewicht, Version 1 Starten Sie Delphi. Erstellen Sie ein Formular, das ungefähr so aussieht wie die folgende Abbildung:

LERN-ONLINE.NET AUFGABENBLATT INFORMATIK

5.7 Listen und Aufzählungen

Programmierung mit Delphi

Delphi Grundkurs Seite 31

Drucken und Löschen von angehaltenen Druckaufträgen

Ausführen eines Makros beim Starten von OpenOffice.org

Objektorientierte Programmierung. Agenda für heute, 1. April, Eines der drei wichtigsten Programmierparadigmen

1 Erster Schritt. Lernziele. Programme in das Startmenü aufnehmen. Programme suchen und starten

Algorithmen und ihre Programmierung

Drucken und Löschen von angehaltenen Druckaufträgen

Name. Aufgabe 1) Zur Erinnerung:

LCD-Verwaltungssoftware LCD-VSW

Adobe Acrobat Professional - Portfolio. Leibniz Universität IT Services Anja Aue

3G FL760 Anleitung zur Installation

Softwareentwicklung I

Ü 211 Fenstertechnik und -aufbau

Termingestaltung mit Outlook

Word 2010 Wasserzeichen erstellen

Inhalt OpenOffice Writer: Grafik und Tabelle

Anleitung. Mooy Logistics Servicedesk. Version: 1.2 Date:

Schriftliche Reifeprüfung aus INFORMATIK: Klasse 8D Haupttermin 2002/03

Objektorientierte Programmierung. Agenda für heute, 26. März, Eines der drei wichtigsten Programmierparadigmen

Objektorientierte Programmierung OOP Programmieren mit Java

IT > Anleitungen > Windows, Outlook Verteilerlisten erstellen (vor 2010) Verteilerliste erstellen

Rezepte in der Klammer-Strich-Methode schreiben

-Abwesenheitsnachricht einrichten

Rezepte in der Klammer-Strich-Methode schreiben

CD Inhalt anzeigen und kopieren

Ü 211 Fenstertechnik und -aufbau

Schnell und sicher im Internet arbeiten. mit dem Internet Explorer 9. Markus Krimm. 1. Ausgabe, 1. Aktualisierung, April Grundlagen INT-IE9

Studienseminar Koblenz - Fachseminar Informatik Visualisierung von Sortieralgorithmen

Formulare. Datenbankanwendung 113

Wordpress Kurzanleitung

LEGO-Mindstorms-Roboter im Informatikunterricht -mit Delphi-

Geschützte und ungeschützte Abschnitte in Smart-Templates 2

9. Abfrage erstellen (Query Builder Report)

Menüband bedienen. Text eingeben. Menüband für den Touchscreen anpassen. Befehle über das Menüband aufrufen. Cursor platzieren

ECDL - Europäischer Computer Führerschein. Peter Wies. 1. Ausgabe, März 2014

Aufgaben. Kommunikation 73

Internet-Projekte Kurt Stettler Tel

Favoriten speichern und verwalten im Internetexplorer 6.0

Brainloop Secure Courier - Kurzanleitung

Erstellen einer Slideshow Kurzanleitung DVD Slideshow GUI ( ) Festplatte C: Dokumente und Einstellungen\Rex\Eigene Dateien\Eigene Demobilder\

IrfanView Schnelle und einfache Bildbearbeitung

Erstellen von Flucht- und Rettungsplänen mittels Zusatztool Flucht Rettung Feuerwehr `13

Ein erstes "Hello world!" Programm

Das Feld Script können Sie leer lassen. Hier könnten weitere Scripts eingebunden werden, welche Sie z.b. selbst entwickelt haben.

Seriendruck-Assistent

Ausgabe von Word-Serienbriefen mit SchILD-NRW

Microsoft 2010 Express/Beispiel für Grafische Oberflächen

Spielberichte oder News erstellen

EINFACH. Programmier-Grundkurs. Rosa Mistelbauer

Garmin POI-Sammlungen Download und Installationsanleitung

Vorgehensweise zum Update der X-431 Software

Madeleine Malcher 4. Semester FH Aachen bei Prof. Jakobs Computertechnik

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Neues schreiben. Nachrichten Fenster. Klicken Sie auf «Neu», um direkt ins Nachrichtenfenster zu wechseln.

Access Programmierung. Ricardo Hernández García. 1. Ausgabe, November 2013 ACC2013P

1. Die Excel-Arbeitsumgebung

BILDUNG 21 Nutzerleitfaden für Bildungsverantwortliche / Ressortbildungsverantwortliche

Die Nachrichtenerstellung automatisieren

Fachbericht DPR. Name: René Wagener. Klasse: CI3O1. Fachlehrer: Herr Balog

Länderspezifische Buchstaben (z.b. im Schülernamen) drucken

Objektorientierte Programmierung Studiengang Medieninformatik

Word 2007 Einfügen oder Erstellen einer Tabelle

Installation auf Server

NEUE SEITE EINRICHTEN. 1 Klicke auf Datei und dann auf Neu. 2 Im Kontextmenü klicke zuerst auf Allgemeine Vorlagen und in der sich

Erstellen von Datenträgeraustauschdateien für Eingangsrechnungen zur Übergabe an Bankprogramm

Kennen, können, beherrschen lernen was gebraucht wird

Neu: Toshiba LifeSpace

ClipArt Bearbeiten. ClipArt mit Mausklick aktivieren. Mauszeiger auf einen Ziehpunkt, mit gedrückter, linker Maustaste Größe ändern. Forts.!

Das Pfandmodul. Nach der Installation des Pfandmoduls steht Ihnen unter Stammdaten Artikelbearbeitung

Verteilungsfunktionen (in Excel) (1)

Von A bis Z Spielerisches Lernen der Buchstaben

*Hierzu wird Microsoft Word benötigt. Mit freien Textverarbeitungen wie Open Office ist dies leider nicht möglich.

Outlook Formulare - Basiswissen

Kurzhilfen. Andre Koppel Software Die Terminverwaltung. Verfahrensbezogene und allgemeine Terminverwaltung

Hans-Christoph Reitz 1. Ausgabe, Oktober Dateien, Ordner und Programme Ordnung schaffen mit Windows 7 PE-ORDW7

Remote Site / (remote) Server

GSOFT2000 I Windows-Software für das Präzisionsthermometer GMH2000

Export bibliografischer Daten aus der FIS Bildung Literaturdatenbank und Import in die Endnote Literaturverwaltung

2.4 - Das Verwaltungsmodul moveon installieren - MS Access Version

Handbuch ECDL 2003 Professional Modul 3: Kommunikation Aufgaben annehmen und zuweisen

Informatik Kurs 12 André Hoffmann. Delphi. Einführung in die Windows- Programmierung

Download TBase Client 4Dv12sql und Installation

Psi unter Ubuntu-Linux benutzen

1. Erläuterungen zu Office 2 HD für das ipad

Benutzerhandbuch EMAS-LogoGenerator

Transkript:

Kurs DELPHI FÜR ELEKTRONIKER Teil 2 Ein einfacher Taschenrechner Von Detlef Overbeek und Anton Vogelaar Im vorangegangenen ersten Teil des Delphi-Kurs haben wir die integrierte Programmierumgebung Delphi 7 vorgestellt und an elementaren Beispielen die Arbeitsgrundlagen erklärt Diesmal werden wir einen einfachen Taschenrechner programmieren, der sich mit der Maus auf dem Bildschirm bedienen lässt In der nächsten Folge wird der Bildschirm-Taschenrechner an eine Hardware-Tastatur gekoppelt, die am seriellen PC-Port angeschlossen ist 58

Das Projekt Delphi-Taschenrechner besteht aus drei Teilen, hier Schichten genannt: Präsentationsschicht, sie bestimmt das Erscheinungsbild des Taschenrechners auf dem Bildschirm, Verarbeitungsschicht, das Rechenwerk des Taschenrechners, das die mathematischen Operationen ausführt, Treiber-Schicht, Kopplung des Bildschirm-Taschenrechners mit einer Hardware-Tastatur; dieser Teil wird in der nächsten Folge des Delphi-Kurs behandelt Weil sich vermutlich viele Leser zum ersten Mal mit Delphi befassen, wollen wir in dieser Folge nur die Programmierung der Präsentationsschicht und der Verarbeitungsschicht betrachten Präsentationsschicht Die Gestaltung der so genannten grafischen Benutzeroberfläche (GUI = Graphical User Interface) ist durchaus nicht nebensächlich Die GUI soll sowohl zweckmäßig für die Programmbedienung als auch ansprechend für das Auge sein Auch hier gilt der Grundsatz, dass sich hohe Qualität schlecht verkauft, wenn sie unattraktiv verpackt ist Bevor das Ergebnis wie in Bild 1 dargestellt aussieht, müssen wir nicht allzu viel Programmierarbeit leisten Nachfolgend werden wir Schritt für Schritt vorgehen und dabei die delphibzw windows-eigenen Begriffe verwenden; wenn nötig werden wir sie erklären Nachdem Sie Delphi 7 gestartet haben, erscheint ein Form auf dem Bildschirm Dies ist das hellgraue, gepunktete Raster, auf dem die Komponenten platziert werden, die Sie zuvor in der Komponenten-Palette aktiviert haben Mit Hilfe des Objektinspektor, der auf dem Bildschirm normalerweise links unten erscheint, können Sie die Eigenschaften des Form und aller darauf befindlichen Komponenten verändern Zuerst geben Sie dem Form mit Name einen eindeutigen und aussagefähigen Namen, zum Beispiel Fmain (= FormMain) Gehen Sie zu den Eigenschaften Width und Height und setzen Sie die Werte auf 300 bzw 360 Pixel Gehen Sie zur Eigenschaft Color Wenn Sie auf die nach unten gerichtete Pfeilspitze rechts im Eingabefeld klicken, erscheint eine Liste mit Windows-Farben, aus der Sie eine Farbe auswählen können Alternativ können Sie auf das Eingabefeld doppelklicken; dann wird ein Dialogfenster geöffnet, das sämtliche verfügbaren Farben zur Auswahl stellt Wählen Sie eine Farbe nach Ihrem persönlichen Geschmack Der Ziffernanzeige sollten Sie eine Farbe geben, die sich von der Hintergrundfarbe abhebt Das erreichen Sie, indem Sie auf dem Form ein Panel platzieren; Sie finden es in der Komponenten-Palette auf der Karteileiste Standard Aktivieren Sie die Komponente Panel und klicken Sie anschließend auf das graue Feld des Form Die Größe des Panel lässt sich einstellen, indem Sie darauf klicken und mit der Maus den Rahmen in die gewünschte Größe ziehen Sie können die Größe des Panel auch in Pixeln mit dem Objektinspektor einstellen Ziffern kann ein Panel nicht darstellen; es ist zur Abgrenzung von Bereichen auf dem Form gedacht und dient als Hintergrund für andere Komponenten Eine Ziffernreihe (Zahl) kann als Zeichenkette (Text) mit der Komponente Label dargestellt werden Setzen Sie ein Label auf das Panel, indem Sie es in der Karteileiste Standard der Komponenten-Palette aktivieren und danach auf das Panel klicken Die Größe des Label füllt das Panel zunächst nicht aus, es ist willkürlich auf dem Panel angeordnet Die Label-Größe lässt sich über seine Eigenschaft Align im Bild 1 Der mit Delphi programmierte Bildschirm-Taschenrechner Objektinspektor an die Panel-Größe anpassen Wählen Sie in der Liste, die beim Anklicken des Pfeils im Eingabefeld der Eigenschaft Align erscheint, den Eintrag alclient aus Danach haben das Label und das Panel gleiche Größe Wie die Darstellung von Ziffern aussieht, wird sichtbar, wenn Sie im Objektinspektor unter Caption einige Ziffern eintragen Die Schriftart und deren Attribute legen Sie fest, indem Sie auf Font klicken und von dort durch Klicken auf den gepunkteten Schaltknopf das Schriftart-Fenster öffnen Wählen Sie die Schrifteigenschaften nach Ihrem Geschmack aus Für die Eingabe von Zahlen in einen Taschenrechner ist eine Tastatur erforderlich Die Komponenten-Palette bietet mehrere Button-Typen zur Auswahl an Der geeignetste Typ ist der SpeedButton, der auf der Karteileiste Zusätzlich zu finden ist Setzen Sie 16 SpeedButton auf den Form und gruppieren Sie sie nach Art eines Taschenrechners wie in Bild 1 dargestellt Jeder Button hat im Objektinspektor unter der Eigenschaft Name einen Namen mit einer fortlaufenden Nummer: SpeedButton1, SpeedButton2 usw Geben Sie jedem Button einen Namen, der seinen Verwendungszweck charakterisiert, zum Beispiel CalculatorBtn1 Wir haben die kürzere Bezeichnung Btn1 gewählt Ein Kriterium dafür, welcher Button gedrückt ist, liefert die Button-Eigenschaft Tag Im Prinzip kann diese Eigenschaft beliebig genutzt werden; hier soll mit Tag der zuständigen Pro- Anzeige 2/2005 - elektor 59

chert Beim Drücken der zweiten Ziffer wird die vorangegangene Zahl mit 10 multipliziert, anschließend wird die aktuelle Zahl addiert Dieser Vorgang wiederholt sich so oft, bis alle Ziffern eingegeben sind Beim Bildschirm-Taschenrechner werden Ziffern eingegeben, indem man mit der Maus auf den zugehörigen Button klickt Durch Anklicken eines Button kann in einer Delphi-Applikation eine Prozedur (der dazu gehörige Programmteil) gestartet werden Die auslösende Aktion, die die Prozedur startet, wird in Delphi Ereignis genannt Wählen Sie im Form einen Button aus und klicken Sie im Objekt-Inspektor auf die Karteikarte Ereignis Wenn Sie hier in ein Eingabefeld doppelklicken, erzeugt Delphi die zugehörige, jedoch noch leere Prozedur Doppelklicken Sie auf das Eingabefeld des Ereignisses OnClick und betrachten Sie das Ergebnis Die erzeugte Prozedur muss so ergänzt werden, dass sie die einzelnen Ziffern wie bereits beschrieben zu einer Zahl verknüpft In dem von Delphi generierten Programmcode finden Sie oben die Zeilen Bild 2 Einige Einstellungen im Objektinspektor Links die Farbwahl für den Rechner, rechts die Einstellung der Eigenschaft (Property) Align für das Label zedur im Programm die Ziffer des gedrückten Button übergeben werden Geben Sie den Ziffern-Button 0 bis 9 die Tag-Werte 09 und den Rechenoperator-Button +,-,* und / die Tag-Werte 14 Damit ist die Programmierung der Präsentationsschicht schon vollendet Noch eine allgemeine, mehr organisatorische Anmerkung: Es ist sicher nicht falsch, wenn Sie auf der Festplatte für jedes Delphi-Projekt einen eigenen Ordner anlegen Dadurch gehen Sie Konflikten aus dem Weg, die bei Namensgleichheit von Dateien auftreten können Während der Programmerstellung legt Delphi diverse Dateien an, die später nicht mehr benötigt werden Die für ein Projekt unentbehrlichen Dateien haben die Dateinamen-Endungen DPR (Delphi Project Resource), DFM (Delphi Form) und PAS (Pascal Unit) Nur wenn diese Dateien vorhanden sind, kann das Projekt später wieder geöffnet werden Während der Compilierung erzeugt Delphi auch eine EXE-Datei ( Executable, ausführbares Programm), die zum Beispiel Calculatorexe heißt, wenn Sie das Taschenrechner-Projekt Calculator genannt haben Die EXE-Datei ist gewissermaßen das Endprodukt der Programmierarbeit Verarbeitungsschicht Nach der Programmierung des äußeren Erscheinungsbilds folgt nun der Teil des Projekts, der die Rechenoperationen durchführt und das Ergebnis ausgibt Bei Grundrechenarten wie zum Beispiel der Addition besteht eine Operation aus vier Schritten: Eingabe und Speichern des ersten Operanden, Eingabe und Speichern der durchzuführenden Operation, Eingabe und Speichern des zweiten Operanden, Durchführen der Operation nach Drücken der = - Taste Zahlen werden in einen Taschenrechner eingegeben, indem man den zur ersten Ziffer gehörenden Button drückt; der zugehörige Zahlenwert wird vom Taschenrechner gespei- type TFmain = class(tform) Darunter sind die Label, Panel, Button usw aufgelistet, die Sie auf dem Form platziert haben Dann folgen die Zeilen var Fmain: TFmain; Dies bedarf einer kurzen Erklärung: Delphi ist eine objektorientierte Programmiersprache (bzw deren Entwicklungsumgebung) Deshalb wird eine Variable deklariert (Fmain), die einem bestimmten Typ angehört (TFMain) In der Typ- Definition (type TFmain) wird zuerst der Bildschirm-Taschenrechner definiert, danach wird ein Exemplar dieses Taschenrechners angewendet (var Fmain) Diese Struktur ist charakteristisch für objekt-orientierte Programmiersprachen wie Delphi, C++, DotNet, die neuen Versionen von Visual Basic und verschiedene Datenbank- Sprachen Der Taschenrechner-Programmcode sieht nun wie folgt aus: type TFmain = class(tform) Panel1: TPanel; Label1: TLabel; Btn1: TSpeedButton; Btn2: TSpeedButton; procedure Btn1Click(Sender: TObject); private Accu1, Accu2: Integer; procedure AddAccu(x: Integer); public var Fmain : TFMain; Auf den ersten Blick ist deutlich, dass zur Typ-Definition des Form immer dann ein Eintrag hinzukommt, wenn auf dem Form eine neue Komponente platziert wird In ähnlicher Weise gilt dieses Prinzip auch für Prozeduren, die zu Ereignissen gehören Die eigentliche Prozedur steht weiter unten im Delphi-Programmcode, sie gehört zu dem Abschnitt, der mit implementation überschrieben ist 60

Bild 3 Der Speedbutton befindet sich unter der Registerkarte Zusätzlich (Additional) der Komponenten-Palette In Anlehnung an den Stack bei Mikroprozessoren (das ist im Prinzip eine interne Liste, die Daten enthält; für das Speichern und Löschen der Daten gelten spezielle Regeln) haben wir die Variablen, die die beiden Operanden repräsentieren, Accu1 und Accu2 genannt Da diese Variablen zu den Eigenschaften des Taschenrechners gehören, werden sie dort deklariert In diesem Fall werden sie in den Abschnitt private eingefügt, dies hat hier jedoch keine Bedeutung Die beiden Variablen sind vom Typ integer, es sind also ganze Zahlen Auch die Prozedur AddAccu, die die eingegebenen Ziffern zu einer Zahl zusammenfügt, wird hier deklariert Natürlich muss auch diese Prozedur implementiert werden Das geschieht im Abschnitt implementation und sieht wie folgt aus: procedure TFMainAddAccu(x: Integer); Accu1:=Accu1*10+x; // jedes Statement wird mit ; abgeschlossen // doppelte Schrägstriche leiten Kommentare ein Wenn bei der Eingabe einer Zahl mehrere Ziffern-Button nacheinander gedrückt werden, muss eine Prozedur die Ziffern zur Zahl zusammensetzen Dies lässt sich erreichen, indem zuerst die aktuelle Zahl mit 10 multipliziert wird, danach wird der Zahlenwert des gedrückten Button addiert Das Schreiben dieser Prozedur in Delphi ist zwar nicht schwierig, aber auch nicht mehr elementar einfach Die Prozedur muss folgende Aktionen durchführen: Speichern der ersten Ziffer, Einlesen der zweiten Ziffer, erste Ziffer mit 10 multiplizieren, zweite Ziffer addieren, und in gleicher Weise weiter mit der nächsten Ziffer Dazu führen wir eine Hilfsvariable vom Typ Boolean ein; sie kann ähnlich wie eine Logik-Schaltung in der Elektronik die Werte TRUE und FALSE annehmen Wir deklarieren die Variable EntryBsy : Boolean, sie hat zunächst den Wert FALSE Die erste Ziffer wird eingelesen, der Inhalt von Accu1 wird nach Accu2 kopiert, und die eingelesene Ziffer wird in Accu1 gespeichert Danach wird EntryBsy := TRUE gesetzt Beim Einlesen der nächsten Ziffer hat der Wert TRUE zur Folge, dass die vorstehenden Schritte nicht ausgeführt werden Statt dessen wird der Inhalt von Accu1 mit 10 multipliziert, und die aktuell eingegebene Ziffer wird hinzuaddiert Damit sieht die Prozedur wie folgt aus: procedure TFMainAddAccu(x: Integer); if EntryBsy = FALSE then Accu2:=Accu1; Accu1:=X; EntryBsy:= TRUE; end else Accu1:= 10*Accu1+X; Anmerkung: Alle Schlüsselwörter sind hier mit dem Schriftattribut Fett dargestellt Ein Schlüsselwort ist ein reserviertes Wort oder Symbol, das von Delphi als Sprachelement erkannt wird Nun kann das Ergebnis, das aus dem Drücken eines Ziffern-Button resultiert, weiter verarbeitet werden Wählen Sie einen Button aus, zum Beispiel Btn1, gehen Sie zum Objektinspektor, Ereignisse und doppelklicken Sie auf das Eingabefeld von OnClick (= Anklicken des Button) Die folgende Prozedur erzeugt Delphi selbstständig: procedure TFmainBtn1Click(Sender: TObject); Der Variablen X muss ein Wert zugewiesen werden, bevor Anzeige 2/2005 - elektor 61

diese Prozedur aufgerufen wird Eine Prozedur für das Ereignis OnClick existiert bereits Zwischen Begin und End jener Prozedur können wir folgendes Statement einfügen: AddAccu((Btn1Tag); // der Zahlenwert des Tag wird verwendet Jeder Ziffern-Button muss in gleicher Weise behandelt werden, so dass zehn Prozeduren im Programm stehen, die nahezu identisch sind Das lässt sich natürlich auch vereinfachen In der Prozedur steht ein Parameter, der Sender heißt Dieser Parameter erhält die Eigenschaften der Komponente, die die Prozedur aufruft AddAccu kann nun einen geeigneten Wert erhalten; der Eigenschaft Tag hatten wir bereits die Werte 09 zugewiesen: AddAccu((Sender as TComponent)Tag); Jetzt müssen noch alle Ziffern-Button auf diese Prozedur verweisen Gehen Sie nacheinander bei allen Ziffern-Button zum Ereignis OnClick und klicken Sie auf den Schalter rechts im Eingabefeld Wählen Sie die Prozedur Btn1Click aus Die gebildete Zahl muss nun nur noch auf der Anzeige des Bildschirm-Taschenrechners erscheinen (Bild 2) Da Listing 1 Programm des Taschenrechners in Delphi unit Calculator; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls, ExtCtrls; type TFmain = class(tform) Panel1: TPanel; Label1: TLabel; Btn1: TSpeedButton; Btn2: TSpeedButton; Btn3: TSpeedButton; Btn4: TSpeedButton; Btn5: TSpeedButton; Btn6: TSpeedButton; Btn7: TSpeedButton; Btn8: TSpeedButton; Btn9: TSpeedButton; Btn10: TSpeedButton; Btn11: TSpeedButton; Btn12: TSpeedButton; Btn13: TSpeedButton; Btn14: TSpeedButton; Btn15: TSpeedButton; Btn16: TSpeedButton; procedure Btn1Click(Sender: TObject); procedure BtnClrClick(Sender: TObject); procedure BtnAddClick(Sender: TObject); private Accu1, Accu2: Integer; EntryBsy: Boolean; Processing: Integer; procedure AddAccu(X: Integer); procedure ProcessNumbers(proc: Integer); procedure procedure ClearAccu; public { Public declarations } var Fmain: TFmain; implementation {$R *dfm} procedure TFMainAddAccu(X: Integer); if EntryBsy = FALSE then Accu2 := Accu1; Accu1 := X; EntryBsy := TRUE; end else Accu1 := 10*Accu1 + X; procedure TFMainProcessNumbers(proc: Integer); case Processing of 1: Accu1 := Accu2 + Accu1; 2: Accu1 := Accu2 - Accu1; 3: Accu1 := Accu2 * Accu1; 4: Accu1 := round(accu2 / Accu1); Processing := proc; EntryBsy := False; procedure TFMainClearAccu; Accu1 := 0; Accu2 := 0; EntryBsy := False; procedure TFMain Label1Caption := IntToStr(Accu1) procedure TFmainBtn1Click(Sender: TObject); AddAccu((Sender as TComponent)Tag); procedure TFMainBtnAddClick(Sender: TObject); ProcessNumbers((Sender as TComponent)Tag); procedure TFMainBtnClrClick(Sender: TObject); ClearAccu; end 62

Zahlen auch während der Ausführung anderer Programmteile auf der Anzeige dargestellt werden müssen, wird auch hierfür eine eigene Prozedur geschrieben Fügen Sie in die Definition die Prozedur ScreenRefresh ein und ergänzen Sie den Abschnitt implementation wie folgt: procedure TFMain Label1Caption := IntToStr(Accu1); Von der Funktion IntToStr (= Integer to String) wird ein Zahlenwert in eine Zeichenkette (Text) umgesetzt, und diese Zeichenkette wird an Label1Caption übergeben Dadurch wird die Zahl auf dem Bildschirm angezeigt Die Rechenoperationen werden noch nicht ausgeführt, wenn die zugehörigen Button ( +, -, *, / ) betätigt werden; dies geschieht erst beim Drücken des Gleichheitszeichens ( = ) Folglich muss in irgendeiner Weise gespeichert werden, welcher Operator-Button nach Eingabe des ersten Operanden gedrückt wurde Deklarieren Sie die Zahl Processing als Integer: Processing: Integer; Die Eigenschaften Tag der Button +, -, * und / erhalten die Werte 14, der = -Button erhält den Tag- Wert 0 Wir erstellen eine weitere Prozedur, die die beiden Zahlen verarbeitet: procedure TFMainProcessNumbers(proc: Integer); case Processing of 1: Accu1:=Accu2 + Accu1; 2: Accu1:=Accu2 - Accu1; 3: Accu1:=Accu2 * Accu1; 4: Accu1:=round(Accu2 / Accu1); Processing:=proc; EntryBsy := False; Anschließend wird die Variable EntryBsy wieder auf TRUE gesetzt, so dass der Taschenrechner für die Eingabe der nächsten Ziffernfolge bereit ist Diese Prozedur wird von einer anderen Prozedur aufgerufen, die mit einem Ereignis verknüpft ist Doppelklicken Sie auf das Ereignis OnClick des Button + (Addition) Bisher wurde der Variablen Accu2 noch kein Wert zugewiesen Am einfachsten geschieht dies, indem wir in die Prozedur AddAccu ein Statement einfügen, das den Inhalt von Accu1 nach Accu2 kopiert: Accu2 := Accu1; Wir erstellen eine Prozedur, in der die Prozedur Process- Numbers aufgerufen wird: procedure TFMainBtnAddClick(Sender: TObject); ProcessNumbers((Sender as TComponent)Tag); Wählen Sie nun für die übrigen Operator-Button und den = -Button im OnClick-Ereignis diese Prozedur aus (BtnAdd- Click) Nach dem Programmstart haben alle Variablen den Wert 0: Processing = 0 Wenn zum ersten Mal der + -Button gedrückt wird, ist das Ergebnis zunächst 0, es erhält in der Prozedur ProcessNumbers den Wert der Addition Beim zweiten Aufruf der Prozedur wird die Addition tatsächlich ausgeführt, und das Ergebnis erscheint auf der Taschenrechner-Anzeige Das Taschenrechner-Programm ist nun fast vollständig, es fehlt noch der Button Clear Auch hier doppelklicken Sie auf das OnClick-Ereignis im Objektinspektor; hier stellen Sie die Prozedur BtnClrClick ein: procedure TFMainBtnClrClick(Sender: TObject); ClearAccu; Dadurch werden mit der Prozedur ClearAccu die Variablen Accu1 und Accu2 auf 0 gesetzt, und EntryBsy wird FALSE: procedure TFMainClearAccu; Accu1 := 0; Accu2 := 0; EntryBsy:=False; In Listing 1 ist das vollständige Delphi-Programm des Bildschirm-Taschenrechners wiedergegeben; es enthält sämtliche Programmteile, die von Hand eingefügt werden mussten Das Programm kann nun getestet werden Falls der Taschenrechner nicht wie erwartet arbeitet, überprüfen Sie zuerst die Einstellungen der 16 SpeedButton Sind Name, Tag und OnClick bei jedem Button korrekt eingestellt? Sie werden bereits bemerkt haben, dass unser Taschenrechner nur mit ganzen Zahlen rechnen kann; Stellen hinter dem Komma sind ihm unbekannt Lassen Sie sich dadurch nicht die Freude am Erfolg trüben, dies war nur ein Anfang! Wir haben den Schwerpunkt in dieser Folge auf die Details der Programm-Erstellung gelegt, um Ihnen ein erstes Gefühl für den Umgang mit Statements und Prozeduren zu vermitteln In der nächsten Folge werden Aspekte der Hardware im Mittelpunkt stehen Eine Tastatur wird mit dem seriellen PC- Port verbunden, der Datenaustausch zwischen Tastatur und PC ist dabei das wichtigste Thema (040240-2)gd Anzeige 2/2005 - elektor 63

64