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.
Form1.Edit1.Text:=IntToStr(Zahl); Der Inhalt der Speicherzelle mit dem Namen "Zahl" wird als string im Edit-Fenster ausgegeben. "Zahl" muss hier vom Typ Integer sein.
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.