Geschrieben von vercetti am 21.05.2006, 16:10

Hi,
hier möchte ich euch beschreiben, wie man ganz einfach Konsolenprogramme unter Delphi schreiben kann. Ich verwende dazu Delphi 2005. D.h. Die Menübefehle stimmen mit denen von Delphi2005 überein. Es ist nützlich wenn man schon eine andere Programmiersprache kann!

Als erstes müsst ihr bei Delphi unter "Neu"-> "Weitere" -> "Delphi für Win32" -> "Konsolenanwedung" auswählen.

Da habt ihr dann normalerweise den Code (Ohne die von Mir in {* *} geschriebenen Kommentare):


program Project1; {*program definiert den Namen der Anwendung. Ausserdem wird die .pas Datei unter dem Namen gespeichert*}

{$APPTYPE CONSOLE}  {*Definiert, dass dies eine Konsolenanwendung ist.*}

uses     {*Definiert, welche anderen Units eingebunden werden sollen*}
  SysUtils;

begin  {*Hier beginnt der Hauptteil*}
  { TODO -oUser -cConsole Main : Hier Code einfügen }
end.  {*Hier ist das Ende des Programms*}

Nun wollen wir einen Text ausgeben. Dazu verwenden wir den Befehl WriteLn. Die Syntax des Befehls:

WriteLn('Text, der Ausgegeben werden soll')

Nach jedem Befehl in Delphi kommt ein Semikolon (;), es gibt aber auch Ausnahmen, die werden in diesem Tutorial aber nicht genau beschrieben.
Also schreiben wir nun zwischen begin und end. die folgenden Befehle:


   WriteLn('Hallo');
   WriteLn('Dies ist mein erstes Konsohlenprogramm! Schreib doch was!');
   sleep(10000);

Der Befehl sleep bewirkt, dass die Anwendung wartet. Das ist dazu da, da das Programm sonst einfach ausgeht. Die Syntax ist:

sleep(Zeit in Millisekunden)

In diesem Fall 10 000 Millisekunden => 10 Sekunden.
Das Programm können wir nun ausführen.

Wie man sehen kann, soll der Benutzer etwas eingeben. Dazu ist der Befehl ReadLn da. Syntax:
ReadLn(Variable, in dem der eingegebene String gespeichert werden soll)
Nun brauchen wir eine Variable, die Deklariert man, indem man über dem Hauptteil, var und die Variablendefinition schreibt, dass kann so aussehen:


var Variable1: String;

Erklärung:
var Variablenname: Variablentyp;

Mehrere Variablen werden untereinander geschrieben, nach jeder ein Semikolon:
var Variable1: String,
Variable2: Integer,
Variable3: Boolean;
[quote]

Es gibt mehrere VariablenTypen: String - Ein Text ~ Integer - Eine Zahl ~ Boolean - True oder False (d.h. Wahr oder Falsch) und mehr. Wir werden in diesem Tutorial nur String und Integer verwenden, ist ja auch ein Anfänger Tutorial.

Nun schreiben wir über begin die folgende Variablendefinition:
[quote]
var usereingabe: string;
    counter: integer;

Die Variable Counter brauchen wir später zum Zählen.
Wir entfernen jetzt den Befehl sleep(10000); und fügen folgenden Code ein:


   ReadLn(usereingabe);
   WriteLn('Du hast geschrieben: '+usereingabe);
   sleep(10000);

Wie ihr sehen könnt, kann man bei WriteLn auch eine Variable anstatt einen Text eingeben. Wenn man aber beides Haben will, muss man dazwischen ein Plus machen. Bisjetzt muss das Programm so aussehen, testet es doch noch einmal:


program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var usereingabe: string;
    counter: integer;

begin
   WriteLn('Hallo');
   WriteLn('Dies ist mein erstes Konsohlenprogramm! Schreib doch was!');
   ReadLn(usereingabe);
   WriteLn('Du hast geschrieben: '+usereingabe);
   sleep(10000);

end.

Nun soll der Benutzer selber entscheiden, wann das Programm beendet wird. Wie geht das? Mit einer While Schleife. Und ausserdem, soll der Benutzer ab und zu erinnert werden, mit welchem Befehl er das Programm beenden kann. Wir nehmen mal Exit.

Nun... Die Syntax von While:

While(BEDINGUNG) do begin
   Code der ausgeführt wird, solang die bedingung erfüllt ist
end;

Als Bedingung nehmen wir:
usereingabe <> 'exit'
Das heisst, solange die usereingabe nicht exit ist, soll der Code ausgeführt werden. Nun vor der While schleife schreiben wir aber
counter := 0;
Das setzt die Variable Counter auf 0... So kann man den Inhalt jeder Variable definieren: Variable := Inhalt;
So. Nun brauchen wir noch eine If abfrage, die überprüft, ob eine Bedingung erfüllt ist, wenn ja führt sie den Code, der der If Abfrage zugeordnet ist, aus.
Das geht so:
If(Bedingung) then begin
Code der ausgeführt werden soll
end;

Nun, wir entfernen wiedermal das sleep(10000); und fügen nun folgendes an der Stelle ein:


counter&nbsp;:=&nbsp;0;
&nbsp;&nbsp;&nbsp;WriteLn('Exit&nbsp;eingeben&nbsp;zum&nbsp;Beenden');
&nbsp;&nbsp;&nbsp;While(usereingabe&nbsp;<>&nbsp;'exit')&nbsp;do&nbsp;begin&nbsp;&nbsp;{*solang&nbsp;die&nbsp;Usereingabe&nbsp;nicht&nbsp;exit&nbsp;ist*}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;counter&nbsp;=&nbsp;5&nbsp;then&nbsp;begin&nbsp;&nbsp;{*Wenn&nbsp;der&nbsp;Counter&nbsp;auf&nbsp;5&nbsp;steht*}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WriteLn('Exit&nbsp;eingeben&nbsp;zum&nbsp;Beenden');&nbsp;&nbsp;{*Hinweis&nbsp;zeigen*}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;counter&nbsp;:=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{*counter&nbsp;zurück&nbsp;auf&nbsp;0&nbsp;setzen*}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReadLn(usereingabe);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{*Usereingabe*}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;counter&nbsp;:=&nbsp;counter+1;&nbsp;&nbsp;&nbsp;{*Counter&nbsp;wird&nbsp;um&nbsp;1&nbsp;erhöt*}
&nbsp;&nbsp;&nbsp;end;

Nun sieht der ganze Code so aus:


program&nbsp;Project1;

{$APPTYPE&nbsp;CONSOLE}

uses
&nbsp;&nbsp;SysUtils;

var&nbsp;usereingabe:&nbsp;string;
&nbsp;&nbsp;&nbsp;&nbsp;counter:&nbsp;integer;

begin
&nbsp;&nbsp;&nbsp;WriteLn('Hallo');
&nbsp;&nbsp;&nbsp;WriteLn('Dies&nbsp;ist&nbsp;mein&nbsp;erstes&nbsp;Konsohlenprogramm!&nbsp;Schreib&nbsp;doch&nbsp;was!');
&nbsp;&nbsp;&nbsp;ReadLn(usereingabe);
&nbsp;&nbsp;&nbsp;WriteLn('Du&nbsp;hast&nbsp;geschrieben:&nbsp;'+usereingabe);
&nbsp;&nbsp;&nbsp;counter&nbsp;:=&nbsp;0;
&nbsp;&nbsp;&nbsp;WriteLn('Exit&nbsp;eingeben&nbsp;zum&nbsp;Beenden');
&nbsp;&nbsp;&nbsp;While(usereingabe&nbsp;<>&nbsp;'exit')&nbsp;do&nbsp;begin&nbsp;&nbsp;{*solang&nbsp;die&nbsp;Usereingabe&nbsp;nicht&nbsp;exit&nbsp;ist*}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;counter&nbsp;=&nbsp;5&nbsp;then&nbsp;begin&nbsp;&nbsp;{*Wenn&nbsp;der&nbsp;Counter&nbsp;auf&nbsp;5&nbsp;steht*}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WriteLn('Exit&nbsp;eingeben&nbsp;zum&nbsp;Beenden');&nbsp;&nbsp;{*Hinweis&nbsp;zeigen*}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;counter&nbsp;:=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{*counter&nbsp;zurück&nbsp;auf&nbsp;0&nbsp;setzen*}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReadLn(usereingabe);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{*Usereingabe*}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;counter&nbsp;:=&nbsp;counter+1;&nbsp;&nbsp;&nbsp;{*Counter&nbsp;wird&nbsp;um&nbsp;1&nbsp;erhöt*}
&nbsp;&nbsp;&nbsp;end;

end.

Nun probiert dies Programm mal aus. Das wars auch schon. Viel Erfolg :>

Schaut doch mal in die Tutorials von ttobsen rein. Die sind sehr gut gelungen. Davon hab ich auch vieles gelernt. Guckt auch mal in seinen Thread mit Links zu Delphi...

Good Bye :>

Bewertung Anzahl
4
25,0 %
1 Bewertungen
3
50,0 %
2 Bewertungen
2
25,0 %
1 Bewertungen