下面是对 Crystal Reports 的字符串处理能力的更详细的示例。“凯撒”密码是一种简单代码,一般认为源于尤利乌斯·凯撒。在该代码中,单词的每一个字母都被字母表中与该字母相隔四个字母的下一个字母替换。例如,“Jaws”变成了“Ofbx”。注意,“w”被替换成了“b”。因为在字母表中“w”之后没有五个字符,所以又从头开始。
此处的公式将“凯撒”密码应用于 Xtreme 数据库中的字段 {客户.客户姓名}:
Rem The Caesar cipher Dim inString 'The input string to encrypt inString = {Customer.Customer Name} Dim shift shift = 5 formula = "" Dim i For i = 1 To Len(inString) Dim inC, outC inC = Mid(inString, i, 1) Dim isChar, isUCaseChar isChar = LCase(inC) In "a" To "z" isUCaseChar = isChar And (UCase (inC) = inC) inC = LCase(inC) If isChar Then Dim offset offset = (Asc(inC) + shift - Asc("a")) Mod _ (Asc("z") - Asc("a") + 1) outC = Chr(offset + Asc("a")) If isUCaseChar Then outC = UCase(outC) Else outC = inC End If formula = formula & outC Next i
在上例中,有一个多行 If 语句嵌套在 For/Next 循环的语句块内。这个 If 语句负责转换单个字符时所需的准确详细信息。例如,对字母的处理与对标点和空格的处理不同。尤其是,标点和空格没有编码。控制结构可以嵌套在其他控制结构内,而多个语句可以包含在控制结构的语句块内。