Beispiel für For-Schleife (Crystal-Syntax)

Es folgt ein umfangreicheres Beispiel für die Möglichkeiten, die Crystal Reports für die Verarbeitung von Zeichenfolgen bietet. Die Cäsar-Chiffre ist ein einfacher Geheimcode, der Julius Cäsar zugeschrieben wird. In diesem Code wird jeder Buchstabe eines Wortes durch einen Buchstaben ersetzt, der im Alphabet fünf Stellen weiter hinten folgt. Dadurch wird z. B. das Wort "Satz" zu "Xfye". Beachten Sie bitte, dass der Buchstabe "z" durch "e" ersetzt wird. Da es nach z keine weiteren 5 Buchstaben im Alphabet gibt, wird wieder am Anfang begonnen.

In der folgenden Formel wird die Cäsar-Chiffre auf das Feld {Kunde.Kundenname} in der Datenbank Xtreme_de angewendet:

Local StringVar inString := {Customer.Customer Name};
Local NumberVar shift := 5;
Local StringVar outString := "";
Local NumberVar i;
For i := 1 To Length(inString) Do
(
Local StringVar inC := inString [i];
Local StringVar outC;
Local BooleanVar isChar :=
LowerCase(inC) In "a" To "z";
Local BooleanVar isUCaseChar :=
isChar And (UpperCase (inC) = inC);
inC := LCase(inC);
If isChar Then
(
Local NumberVar offset :=
(Asc(inC) + shift - Asc("a")) Mod
(Asc("z") - Asc("a") + 1);
outC := Chr(offset + Asc("a"));
If isUCaseChar Then outC := UpperCase(outC)
)
Else
outC := inC;
outString := outString + outC
);
outString

In diesem Beispiel ist ein If-Ausdruck im Ausdrucksblock der For-Schleife eingebettet. Diese If-Anweisung hat die Aufgabe, dafür zu sorgen, dass die einzelnen Zeichen korrekt versetzt werden. Dabei müssen beispielsweise Buchstaben anders verarbeitet werden als Satzzeichen oder Leerzeichen. Im Einzelnen muss dabei sichergestellt werden, dass Satzzeichen und Leerzeichen nicht verschlüsselt werden. Im Allgemeinen geht es hier darum, dass Steuerelementstrukturen in andere Steuerelementstrukturen eingebettet werden können und dass mehrere Ausdrücke in den mit Klammern eingefassten Ausdrucksblöcken anderer Steuerelementstrukturen aufgenommen werden können.