If-Then-Else: Eine Einführung in die Programmierung

Aus GEVITAS
Wechseln zu: Navigation, Suche

1 Allgemeines

Die "Intelligenz" eines Formular-Reports ergibt sich aus dem Code, der im Hintergrund ausgeführt wird, denn der Report ausgeführt wird.

Der Code ist eine Programmierung in einer bestimmten Sprache.

2 Sprache

Wir verwenden "Pascal"-Code in unseren Formularen.

FastReport unterstützt diese Sprachen:

  • C++
  • Basic
  • JavaScript
  • Pascal
Achtung!
Wenn Sie die Sprache in einem bestehenden Code nachträglich ändern, wird der komplette Code gelöscht!


3 Wenn-Dann-Sonst

Die wichtigsten Befehle in der Programmierung sind

if
Trifft eine Bedingung zu?
then
Wenn eine Bedingung zutrifft, wird der Code ausgeführt.
else
Wenn eine Bedingung nicht zutrifft, wird der Code ausgeführt. Else ist optional, muss also nicht angegeben werden.

Beispiel:


 // Wenn der Gesamtpreis 0 ist, den Einzelpreis unterdrücken:
 // (z.B. bei 100 % Rabatt)
 if <Positionen."GesBetrag"> = 0 then
 begin
   memoPosEinzelPreis.Visible := False;
   memoPositionenRabattProz.Visible := False;
 end;


Hinweis
Zeilen, die mit // beginnen, sind Kommentare. Diese werden nicht ausgeführt, sondern sollen den Code beschreiben.
Kommentare sollte häufig verwendet werden!


Im Einzelnen:

 if <Positionen."GesBetrag"> = 0 then

Wenn im Feld Positionen."GesBetrag" eine 0 steht, soll der folgende Code ausgeführt werden.

 begin
  ...
 end;

Wenn der folgende Code mehrere Zeilen umfasst, muss man diese mit begin und end einschließen. Wenn der folgende Code nur aus einer Zeile besteht, kann man begin und end weglassen:

 if <Positionen."GesBetrag"> = 0 then
   memoPosEinzelPreis.Visible := False;


4 Verschiedene Abfrage-Typen

Im Beispiel ob wird eine Zahl abgefragt, die 0.

Wenn man einen Text abfragt, muss man diesen in einfache Anführungszeichen setzen:

 // Kennzeichen 3 = Einzelpreise sichtbar Ja/Nein:
 if <RechnungsKopf."KENNZ3"> = 'Nein' then
 begin
   MemHeaderEinzPreis.Visible    := False;
   memoHeaderRabattTitel.Visible := False;
   memoHeaderGesPreis.Visible    := False;
 end;

5 Fallstricke

5.1 Mehrere if-then-else hintereinander

Wenn man mehrere Bedingungen hintereinander schreibt, die das gleiche behandelt, kann das fatal werden.

Beispiel:

Betrachten wir mal diesen Code:


 if <RechnungsKopf."KENNZ1"> = 'gruppe' then
   Memo31.Visible:=True
 else
   Memo31.Visible:=False;
     
 if <RechnungsKopf."KENNZ1"> = 'nur gruppe' then
   Memo31.Visible:=True
 else
   Memo31.Visible:=False;

Im ersten Block wird Memo31.Visible entweder auf True oder False gesetzt.

Im zweiten Block wird Memo31.Visible aber auch entweder auf True oder False gesetzt. Das Ergebnis des ersten Blocks wird also ignoriert!

Besser geht es so:


 if ( <RechnungsKopf."KENNZ1"> = 'gruppe' ) or ( <RechnungsKopf."KENNZ1"> = 'nur gruppe' ) then
   Memo31.Visible:=True
 else
   Memo31.Visible:=False;
     

Hier wird in einer Abfrage mit der Befehl " or " (oder) gefragt, ob eine den beiden Bedingungen zutrifft.



Bemerkungen
Unabhängig vom Beispiel sollte man Textwerte immer in Großbuchstaben mit der Funktion UpperCase() abfragen, also
   if UpperCase(<RechnungsKopf."KENNZ1"> ) = 'NUR GRUPPE' then
Objekte, die im Code angesprochen werden, sollten aussagekräftige Namen bekommen. Statt "Memo31" sollte man z.B. "MemoZwischensumme" verwenden.