Crystal Reports Designer  

For 迴圈範例 (Crystal 語法)

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

請參閱

結束 For 迴圈