Voici un exemple plus achevé des capacités de traitement de chaîne de Crystal Reports. Le mode de cryptage César est un code simple qui est traditionnellement attribué à Jules César. Dans ce code, chaque lettre d'un mot est remplacée par la lettre qui est située 5 caractères plus loin dans l'alphabet. Par exemple, "Rive" devient "Wnaj". Notez que "v" est remplacé par "a" ; puisqu'il n'y a pas 5 caractères après le "v" dans l'alphabet, on recommence à partir du début.
Voici une formule qui applique le mode de cryptage de César au champ {Clients.Nom du client} de la base de données Xtreme.mdb.
//Mode de cryptage de César //Chaîne d'entrée à coder Local StringVar chaîneEntrée := {Clients.Nom du client}; Local NumberVar déplacement := 5; Local StringVar chaîneSortie := ""; Local NumberVar i; For i := 1 To Length(chaîneentrée) Do ( Local StringVar cEntrée := chaîneEntrée [i]; Local StringVar cSortie; Local BooleanVar Car := LowerCase(cEntrée) In "a" To "z"; Local BooleanVar carMaj := Car And (UpperCase (cEntrée) = cEntrée); cEntrée := LCase(cEntrée); If Car Then ( Local NumberVar décalage := (Asc(cEntrée) + déplacement - Asc("a")) Mod (Asc("z") - Asc("a") + 1); cSortie := Chr(décalage + Asc("a")); If carMaj Then cSortie := UpperCase(cSortie) ) Else cSortie := cEntrée; chaîneSortie := chaîneSortie + cSortie ); chaîneSortie
Dans l'exemple ci-dessus, une expression If est imbriquée dans le bloc d'expressions de la boucle For. Cette expression If est chargée des détails précis relatifs au décalage d'un seul caractère. Par exemple, les lettres sont traitées différemment de la ponctuation et des espaces. En particulier, la ponctuation et les caractères ne sont pas codés. Une remarque générale à ce point est que les structures de contrôle peuvent être imbriquées dans d'autres structures de contrôle et que plusieurs expressions peuvent être incluses dans les blocs d'expressions entre parenthèses des autres structures de contrôle.