下面是对 Crystal Reports 的字符串处理能力的更详细的示例。“凯撒”密码是一种简单代码,一般认为源于尤利乌斯·凯撒。在该代码中,单词的每一个字母都被字母表中与该字母相隔四个字母的下一个字母替换。例如,“Jaws”变成了“Ofbx”。注意:由于在字母表中“w”之后没有五个字符,所以又从头开始,因此“w”被替换成“b”。
此处的公式将“凯撒”密码应用于 Xtreme 数据库中的字段 {客户.客户姓名}:
//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
在上例中,有一个 If 表达式嵌套在 For 循环的语句块内。这个 If 表达式负责转换单个字符时所需的准确详细信息。例如,对字母的处理与对标点和空格的处理不同。尤其是,标点和空格没有编码。这方面的一般要点是:控制结构可以嵌套在其他控制结构内,而多个表达式可以包含在其他控制结构的表达式块(用圆括号括起来)中。