以下是 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 運算式負責移動單一字元時的精確細節,例如,將字母視為與標點符號和空白不同。特別是,標點符號和空白並不會進行編碼。此處的重點是,在控制結構中可以使用其他巢狀的控制結構,而且在其他控制結構的 (以括號括起來的) 運算式區塊中也可以包含多重運算式。