Delphi-Projekt
anlegen
Als erstes wollen wir ein Hello World Programm programmieren.
Dazu starte Delphi, dann sollte dich das Formularfenster begrüßen, in
dieses fügen wir nun ein Label ()
in das Formularfenster ein. Diese Komponente wird ein Beschriftungsfeld.
Bei der Label-Komponente verändern wir nun die "Caption"-Eigenschaft
im Objektinspektor, mit ihr wird die Beschriftung der Label-Komponente
verändert. Wir ändern sie in "Bitte Namen eingeben:". Daneben
fügen wir nun die Edit-Komponente ()
ein. Sie soll den einzugebenden Namen aufnehmen. Damit beim Start des
Programms die Edit-Komponente leer ist, muss die "Text"-Eigenschaft
im Objektinspektor verändert werden. Diese Eigenschaft steuert den Inhalt
der Komponente. Lösche also den Text aus der "Text"-Eigenschaft.
Zum Schluss fügen wir noch die Button-Komponente ()
ein. Sie soll später das Begrüßungsfenster auslösen. Die Beschriftung
des Knopfes muss noch verändert werden, dies geschieht mit der mittlerweile
schon bekannten Eigenschaft "Caption". Ändere sie in "Begrüßen" im Objektinspektor um. Nun sollte dein Formular in etwa so aussehen:
Quellcode
für den Button eingeben
Nun geht es an das einfügen von Quellcode für die einzelnen Ereignisse
(Sachen die passieren sollen). Doppelklicke auf die Button-Komponente
und füge folgenden Quelltext zwischen die beiden Anweisungen begin und end; ein:
Name := Edit1.Text;
ShowMessage('Hello World. Hallo '+Name);
Bei Name
:= Edit1.Text wird der Variablen Name der Inhalt der Edit-Komponente
zugewiesen (:= ist der Zuweisungsoperator). Die nächste Anweisung erzeugt
ein Meldungsfenster mit der Aufschrift "Hello World. Hallo" und dann dem eingegebenen Namen, der in der Variable Name gespeichert
ist. mit dem + vor dem Variablennamen wird die Variable mit dem Meldungstext
verbunden (dies heißt mit Fachausdruck Zeichenkettenverkettung).
Variablen
vereinbaren
Wenn wir das Programm jetzt ausführen wollten bekämen wir die Fehlermeldung
"Typ nicht definiert" und das mit gutem Grund! Wir müssen erst
die Variable vereinbaren. Scrolle in dem Quelltextfenster weiter hoch,
bis du die Anweisung var Form1: TForm1; findest, füge dahinter
die Anweisung
Name: String;
an. Hier mit
wird die Variable Name vereinbart. Die Vereinbarung funktioniert
folgendermaßen:
Variablenname: Variablentyp;
Nun dürfte
unser erstes Programm laufen. Zum Testen drücke [F9], nun sollte das Programm
starten. Wenn ihr euren Namen eingegeben habt und auf den "Begrüßen"-Button
gedrückt habt, gegrüßt das Programm die Welt und euch.
Was
beim Speichern zu beachten ist
Noch was zum Speichern: Wenn du abspeicherst, achte darauf, dass die
.pas-Datei und die Projektdatei (.dpr) unterschiedliche Namen haben!
Noch
ein Projekt
Ich möchte noch ein anspruchsvolleres Programm schreiben, da das Begrüßungsprogramm
doch sehr einfach war. Ich habe vor, ein Zahlenratespiel zu programmieren.
Formulardesign
Lege ein neues Projekt an, ziehe nun eine Label-Komponente auf und
platziere sie im oberen Drittel des Formulars. Ändere dann die Eigenschaft
"Caption" in "Ich denke mir eine Zahl zwischen 1 und 1000".
Erstelle dann eine Button-Komponente und ändere die "Caption"-Eigenschaft
in "Rate mal" um. Nun sollte dein Formular so aussehen:
Quellcode
für den Start des Formulars eingeben
Nun ist die Arbeit im Formular abgeschlossen. Nun geht es an die Arbeit
im Quelltext. Es soll jedes Mal eine neues Zahl erfunden werden, dazu
wird eine Zufallszahl erstellt. Da die Zufallszahl schon zum Start des
Programms verfügbar sein muss, werden die Anweisungen dazu in die FormCreate-Prozedur
geschrieben. Doppelklicke dazu auf eine freie Fläche im Formular. Gib
dann folgenden Quelltext zwischen die beiden Anweisungen begin und end; ein:
Randomize;
Zufall := Random (1000) + 1;
Zahl := 500;
Mit der Anweisung Randomize wird der Zufallszahleneditor gestartet, danach wird der
Variable Zufall die Zufallszahl zugewiesen. Dies geschieht folgendermaßen: Random(Zahlenraum), d.h. eine Zufallszahl im Zahlenraum
bis 1000 soll erstellt werden. Nun ist da aber ein Denkfehler vorhanden:
Delphi fängt mit 0 an zu zählen so dass auf die Zufallszahl noch eins
dazu gezählt werden muss, bis die gewünschten 1 bis 1000 vorhanden sind.
Die letzte Anweisung weist der Variable Zahl den Wert 500 zu, du
wirst später erfahren warum das nötig ist.
Variablen
vereinbaren
Damit wir es später nicht vergessen müssen wir noch die Variablen Zufall und Zahl vereinbaren. Suche also wieder die Anweisung var [...] und füge folgendes dahinter an:
Zufall, Zahl: Integer;
Hier siehst
du gleich, dass man mehrere Variablen auf einmal vereinbaren kann.
Quellcode
für den Button eingeben
Nun wollen wir mal die Anweisungen für den Knopf einfügen und das
sind einige. Doppelklicke also auf die Button-Komponente und gib folgendes
zwischen die beiden Anweisungen begin und end; ein:
Eingabe := InputBox('Rate mal', 'Zahl eintippen', ¬
IntToStr (Zahl));
Zahl := StrToInt (Eingabe);
{Aktuelle Eingabe auswerten, ob zu klein / groß}
If Zahl < Zufall Then
Begin
Label1.Caption := 'Deine Zahl ist zu klein!';
Vers := Vers + 1;
End;
If Zahl> Zufall Then
Begin
Label1.Caption := 'Deine Zahl ist zu groß!';
Vers := Vers + 1;
End;
{Wenn richtig geraten, neues Spiel anbieten}
If Zahl = Zufall Then
Begin
Label1.Caption := 'RICHTIG!!!';
ShowMessage ('Du hast ' +IntToStr (Vers)+ ¬
'mal geraten');
Weiter in der nächsten Spalte -» |
Knopf := Application.MessageBox ¬
('', 'Neues Spiel?', 32+4);
{Wenn neues Spiel gewünscht, Startwert/
Zufallszahl neu}
If Knopf = idYes Then
Begin
Label1.Caption := 'Ich denke mir eine ¬
Zahl!';
Button1.Caption := 'Rate mal!';
Zufall := Random (1000) + 1;
Zahl := 500;
Vers := 0;
End
{Wenn kein neues Spiel, Programmende}
Else
Close;
End
{Wenn nicht richtig geraten, noch mal}
Else
Button1.Caption := 'Noch mal!'; |
Mit der ersten
Anweisung wird der Variable Eingabe der Inhalt der InputBox zugewiesen. Die InputBox ist ein Eingabefenster in das die geratene
Zahl kommen soll. Wobei der erste Textabschnitt ('Rate mal') der Titel
ist, der nächste Textabschnitt der Text und der letzte der Vorgabewert
der im Eingabefeld steht. Hier kommt beim erste Aufruf die Zahl 500 herein
die wir in der FormCreate-Prozedur der Variable Zahl zugewiesen
haben. IntToStr ist ein sogenannter Umwandlungsoperator, du musst
wissen, dass wir die Variable Zahl als Integer vereinbart
haben, eine InputBox aber nur String-Zeichenketten aufnehmen
kann. So wandeln wir einfach die Integer-Zahl in eine String-Zeichenkette
um. Die Anweisung darunter macht genau das Gegenteil, sie wandelt die
eingegebene String-Zeichenkette in eine Integer-Zahl um,
damit wir sie mit der Zufallszahl vergleichen können.
Bedingungsabfrage
Bei den nächsten Zeilen handelt es sich um eine Bedingungsabfrage,
mit ihnen wird überprüft ob eine bestimmte Bedingung erfüllt ist - bei
uns ob die eingegebene Zahl mit der Zufallszahl übereinstimmt. Die Struktur
sieht folgendermaßen aus: If Bedingung Then Anweisung. Da
bei uns mehrere Anweisungen ausgeführt werden müssen, müssen die Anweisungen
in begin und end; gesetzt werden. So sieht die Struktur
folgendermaßen aus:
If Bedingung Then
Begin
Anweisung
End;
Die ersten
beiden If-Strukturen überprüfen, ob die eingegebene Zahl größer oder kleiner
als die Zufallszahl ist, und ändern die Beschriftung der Label-Komponente
entsprechend. Dann wird die Variable Vers um eins erhöht, was es
mit dieser Variable auf sich hat werde ich in Kürze auflösen.
Verschachtelte
Bedingungsabfrage
Die dritte Bedingungsabfrage ist für den Fall das man richtig geraten
hat, sie ist eine verschachtelte If-Then-Else-Konstruktion da bei Erfüllung
der Bedingung wieder eine Bedingung abgefragt wird. Wenn die erste Bedingungen
nicht erfüllt wird, wird mittels else eine Alternative ausgeführt.
Dann wird die Beschriftung der Label-Komponente in "Richtig!!!"
geändert.
Die
Variable Vers
Nun kommt unsere Variable Vers zum Einsatz. Mit ihr wird angegeben
wie oft geraten wurde, da es sich um eine Integer-Variable handelt
wird, muss diese mittels IntToStr in eine Zeichenkette umgewandelt
werden. Den Zeichenkettenverkettungsoperator (+) kennst du ja bereits.
Die
anderen Anweisungen
Mit der nächsten Anweisung wird der Variable Knopf eine MessageBox (ist in etwa das gleiche wie eine ShowMessage-Anweisung, man
kann jedoch mehr Parameter einstellen) zugewiesen. Die Meldung hat keine
Beschriftung, der Titel ist "Neues Spiel?" und die Zahlen geben
an wie die Meldung aussehen soll (32 steht für Fragezeichen (16 für Warnkreuz,
48 für Ausrufezeichen und 64 für Infozeichen) und 4 steht für die Knöpfe
'Ja' und 'Nein' (0 für OK, 1 für OK und Abbrechen, 2 für Abbrechen und
Wiederholen und Ignorieren, 3 für Ja und Nein und Abbrechen und 5 steht
für Wiederholen und Abbrechen).
Die nächste Anweisung überprüft ob 'Ja' gedrückt wurde (idYes), falls
ja, dann wird ein neues Spiel gestartet und dazu die einzelnen Variablen
auf ihren Standardwert zurück gebracht. Wenn nicht 'Ja' gedrückt wurde,
also 'Nein', dann wird das Spiel beendet. Wenn falsch geraten wurde, dann
wird die Beschriftung des Buttons in "Noch mal" geändert.
Variablen
vereinbaren
Nun müssen nur noch die Variablen Eingabe, Knopf und Vers vereinbart werden. Erweitere die Integervereinbarung so weit, dass
sie folgendermaßen aussieht:
Zufall, Zahl, Knopf, Vers: Integer;
und schreibe dahinter noch:
Eingabe: String;
Nun sollte das Zahlenratespiel funktionieren.
Zur
Weitergabe
Zur Weitergabe der selbsterstellten Programme ist nur zu sagen, dass
sie ohne zusätzliche Dateien laufen. Also brauchst du keine zusätzliche
Systemdateien mitzuliefern und ein Installationsprogramm erzeugen.
|