以下是 Crystal Reports 字串處理功能更詳細的範例。Caesar Cipher 是一個簡單的編碼原則,傳統上認為是 Julius Caesar 所發明的。在這個編碼中,單字中的每個字母都會以字母表中其後的第五個字元來取代。例如,Jaws 會變成 Ofbx。請注意,w 是由 b 取代,但是在字母表中 w 後面並沒有 5 個字元,所以會再從頭開始算起。
這裡的公式就是將 Caesar Cipher 應用到 Xtreme 資料庫的 {Customer.Customer Name} 欄位中:
//The Caesar cipher
//The input string to encrypt
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
在以上範例中,在 For 迴圈中的運算式區塊中有一個巢狀的 If 運算式。這個 If 運算式負責移動單一字元時的精確細節,例如,將字母視為與標點符號和空白不同。特別是,標點符號和空白並不會進行編碼。此處的重點是,在控制結構中可以使用其他巢狀的控制結構,而且在其他控制結構的 (以括號括起來的) 運算式區塊中也可以包含多重運算式。