Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Di seguito viene riportato un esempio articolato delle capacità di elaborazione delle stringhe di Crystal Reports. Il codice di Cesare è un codice dalla struttura semplificata, attribuito tradizionalmente a Giulio Cesare. In questo codice, ogni lettera di una parola viene sostituita da una lettera posizionata cinque caratteri più avanti nell’alfabeto. Ad esempio, "Casa" diventa "hfaf". Osservare che "s" viene sostituita da "a": poiché nell'alfabeto non sono presenti 5 caratteri dopo la "s", il conteggio riparte dall'inizio.
La formula riportata di seguito viene utilizzata applicando il codice di Cesare al campo {Clienti.Nome cliente} nel database Xtreme:
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
Nell’esempio precedente, un’espressione If è annidata all’interno del blocco di espressioni del loop For. Questa espressione If è responsabile dello spostamento esatto dei singoli caratteri. Ad esempio, le lettere sono trattate diversamente dalla punteggiatura e dagli spazi. In particolare, la punteggiatura e gli spazi non sono codificati. La regola generale vuole che le strutture di controllo siano annidate all’interno di altre strutture di controllo e che più espressioni possano essere incluse con le relative parentesi nel blocco di espressioni di un’altra struttura di controllo.