Wichtige Delphi-Sprachelemente

application.terminate;
Beenden des Programms


application.processmessages;
Finden in einer Schleife umfangreiche Berechnungen und Aktionen statt, ist der Rechner für geraume Zeit nicht ansprechbar und reagiert nicht auf Tastendruck und Mausbewegung. Dieser Befehl lässt Delphi alle Ereignisse abfragen. So kann z.B. eine Prozedur gestartet werden, die die Schleife vorzeitig beendet.


Komponentenbezeichnung.color:=clFarbbezeichnung;
Farbe einer Komponente wählen, z.B. Form1.Color:=clyellow;
Vordefinierte Farbwerte beginnen mit cl und enden mit einer englischen Farbbezeichnung, z.B. clwhite
Farbwerte können auch durch eine 8-stellige Hexadezimalzahl angegeben werden:
zunächst $ als Hexadezimal-Kennzeichnung, dann 00, dann der Blau-Wert als 2-stellige Hexadezimalzahl, danach der 2-stellige Grün-Wert und dann der 2-stellige Rot-Wert. Beispiel: $00A728CC


Komponentenbezeichnung.refresh;
Werden in einer Schleife viele Berechnungen ausgegeben oder als Grafikanwendungen in mehreren Schritten Teile der Grafik gezeichnet, erledigt Delphi das im Hintergrund und gibt erst nach Beendigung der ganzen Aufgabe das Ergebnis aus.
Möchte man das Entstehen der Zwischenergebnisse live verfolgen, geht das mit der Eigenschaft refresh. Jedesmal, wenn refresh aufgerufen wird, wird der bis dahin erstellte Bildschirmaufbau neu angezeigt.


var Variable : Variablentyp;
Diese Vereinbarung steht nach Implementation oder nach der ersten Zeile einer Prozedur (vor begin). Damit wird einem Speicherplatz ein Name (Variable) gegeben. Auf der Inhalt des Speicherplatzes kann dann mit diesem Namen zugegriffen werden.
Der Variablentyp gibt an, was in der Speicherzelle enthalten ist, z.B. eine ganze Zahl (Typ integer) oder eine Zeichenkette (Typ string).
Beispiele:


Tabellen (1-dimensional)

var Variable := array [Anfangswert .. Endwert] of Variablentyp ;
Während ein Variablen-Name lediglich einen Speicherbereich kennzeichnet, kann man mit Tabellen viele Speicherbereiche unter dem selben Namen ansprechen. Zur Unterscheidung werden die einzelnen Speicherbereiche in Art eines Index voneinander unterschieden. Der Inhalt aller Teile der Tabelle muss aber vom selben Datentyp sein.
Der Name der Tabelle ist ein normaler Variablenname. Die Indizes laufen von Anfangswert bis Endwert. Dabei sind diese Werte (zunächst) vom Typ integer oder char und der Anfangswert ist kleiner als der Endwert (beim Typ char gemäß der ASCII-Tabelle).
Die einzelnen Elemente der Tabelle können angesprochen werden durch Angabe des Variablennamens mit angehängtem Index, der in eckige Klammern eingeschlossen ist. Beispiel:
var Kasten : array [3 .. 7] of integer; i : integer;
Dann sind folgende Anweisungen korrekt:
i := Kasten[5];
Kasten[7] := 3*i-4;

Tabellen (n-dimensional)

var Variable := array [Anfangswert1 .. Endwert1,Anfangswert2 .. Endwert2, ... ,Anfangswertn .. Endwertn] of Variablentyp ;
Der Unterschied zu 1-dimensionalen Tabellen besteht darin, dass nun auch Doppel-, Dreichfach-, ... , n-fach-Indizes zur Verfügung stehen. Bei einer 3-dimensionalen Tabelle sind die Werte z.B. wie in einem Raum mit den drei Dimensionen Länge, Breite und Höhe angeordnet.
Beispiel: Kasten[5,2,7]:=27;
Vorsicht! Der Speicherbedarf für solche Tabellen kann schnell ins Unermessliche steigen!
Beispiel: Bei der Definition var Kasten : array [5,12,20] of integer; reserviert der Rechner Speicherplatz für 5*12*20=1200 integer-Zahlen.



Verbunde

Während bei Tabellen nur Daten gleichen Typs angesprochen werden können, sind bei Verbunden Daten unterschiedlichen Typs unter einem Variablennamen zugänglich.
var Variablenname : record
           Variablenname1 : Typ1 ;
           Variablenname2 : Typ2 ;
           ..... ;
           Variablennamen : Typn ;
       end;

Angesprochen werden die einzelnen Elemente des Verbundes durch Angabe des Variablennamens, nachfolgendem Punkt und dann Angabe des Unter-Variablennamens.
Beispiel: Bei folgender Definition:
var Teilnehmer : record Name:string; Alter:integer; Beitrag:=extended
sind folgende Anweisungen möglich:
Teilnehmer.Alter:=13;
Teilnehmer.Beitrag:=Teilnehmer.Beitrag+2;
Teilnehmer.Name:='Hugo';



Objekte

Objekte kann man als Erweiterung in der Reihe Tabellen - Verbunde - Objekte sehen. Bei Objekten kann man unter einem Variablennamen nicht nur Variablen unterschiedlicher Datentypen ansprechen, sondern auch Prozeduren und Funktionen.
Beispiel:
type tBall = class
            x,y,Radius : integer;
            procedure erscheine;
            procedure verschwinde;
            function getroffen : boolean;
          end;
var Ball : tBall;

Die Programmtexte zu den Prozeduren und Funktionen sind gesondert aufzuführen.
Mit dieser Definition sind z.B. folgende Anweisungen möglich:
Ball.x:=120;
Ball.y:=2*Ball.x+10;
Ball.erscheine;
if Ball.getroffen then Ball.verschwinde;



Schleifenstrukturen

for Variable := Anfangswert to Endwert do Anweisung;
Die Anweisung wird mehrfach ausgeführt. Beim ersten Mal hat die Variable dabei den Wert Anfangswert. Nach Beendigung der Anweisung wird der Wert der Variable um 1 erhöht und die Anweisung wieder ausgeführt. Das wiederholt sich so lange, bis die Variable den Endwert erreicht hat.
Falls mehrere Anweisungen wiederholt werden sollen, müssen diese mit begin und end eingeschlossen werden.

for Variable := Anfangswert downto Endwert do Anweisung;
Wie oben, nur wird hier der Variablenwert nach jeder Anweisung um 1 erniedrigt.

repeat Anweisungen until Bedingung;
Die Anweisungen (beliebig viele) zwischen repeat und until werden so oft wiederholt, bis die Bedingung nach until erfüllt ist.
Die Anweisunugen in der repeat-Schleife werden mindestens einmal ausgeführt, da der erste Abbruchtest erst nach dem ersten Durchgang erfolgt.

while Bedingung do Anweisung;
Die Anweisung nach do wird so oft wiederholt, so lange die Bedingung nach while erfüllt ist.
Sollen mehrere Anweisungen wiederholt werden, müssen sie durch begin und end eingeschlossen werden.
Falls die Bedingung nach while zu Beginn nicht erfüllt ist, werden die Anweisungen in der Schleife (im Gegensatz zur repeat-Schleife) gar nicht ausgeführt.



Grafik

Komponentenbezeichnung.Canvas
stellt einen Zugriff auf die Zeichenebene einer Komponente dar.
Durch folgenden Punkt und angehängtem Pen kann auf den Zeichenstift, durch Brush auf die Flächenfüllung zugegriffen werden. Eigenschaften dieser Zeichenwerkzeuge sind z.B. die Farbe Color oder der Zeichenstil Style.
Beispiele: Form1.Canvas.Pen.Color:=clred; stellt die Stiftfarbe auf rot ein.
Form1.Canvas.Brush.Style:=bssolid gibt an, dass Flächen durchgängig eingefärbt werden sollen.
Für weitere Informationen bitte die Delphi-Hilfe benutzen.

Komponentenbezeichnung.Canvas.Moveto(x-Koordinate,y-Koordinate);
setzt den Grafikcursor auf die angegebenen Koordinaten.

Komponentenbezeichnung.Canvas.Lineto(x-Koordinate,y-Koordinate);
zeichnet von den aktuellen Koordinaten zu den angegebenen Koordinaten eine Strecke.

Komponentenbezeichnung.Canvas.RectAngle(x1-Koordinate,y1-Koordinate,x2-Koordinate,y2-Koordinate);
zeichnet ein Rechteck, dessen obere linke und dessen untere rechte Ecke durch die Koordinaten gegeben sind.

Komponentenbezeichnung.Canvas.Ellipse(x1-Koordinate,y1-Koordinate,x2-Koordinate,y2-Koordinate);
zeichnet eine Ellipse oder einen Kreis, die/der in das durch die Koordinaten angegebene Rechteck passt.

Komponentenbezeichnung.Canvas.Pen.Mode:=pmnotxor;
zeichnet in der Folge so, dass die Hintergrundfarbe invertiert wird. Das hat zur Folge, dass bei zweimaligem Zeichnen das Gebilde wieder verschwindet.

Komponentenbezeichnung.Canvas.FillRect(ClientRect);
löscht die Inhalte der zur angegebenen Komponente gehörenden Zeichenfläche.
Dieser Befehl ist identisch mit dem Zeichnen eines über die ganze Zeichenfläche reichenden Rechteckes. Die Ausfüllfarbe muss vorher durch Form1.Canvas.Brush.Color gegeben werden.