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.


4 Fallstricke

4.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.