赛捷软件论坛's Archiver

erina.pan 发表于 2017-2-16 16:26

For 循环(Crystal 语法)

For 循环使您能够对一系列表达式多次求值。这不同于 If 和 Select 表达式,在 If 和 Select 语句中,程序在对公式求值时几乎同时传递每个语句。
如果事先知道需要对语句求值的次数,最好使用 For 循环。
For 循环语法
示例 1
假设要反转 {客户.客户名} 字符串。例如,将“City Cyclists”变为“stsilcyC ytiC”。
Local StringVar str := "";
Local NumberVar strLen :=
   Length ({Customer.Customer Name});
Local NumberVar i;
For i := 1 To strLen Do
(
   Local NumberVar charPos := strLen - i + 1;
   str := str + {Customer.Customer Name}[charPos]
);
str
假设字段 {客户.客户名} 当前值为“Clean Air”,检查该公式是如何运行的。将变量 strLen 赋值为“Clean Air”的长度,也就是 9。变量 i 称为 For 计数器变量,因为其值随着 For 循环的每次迭代而更改。换言之,它用于计算循环的迭代次数。For 循环将迭代 9 次。在第一次迭代时,i 是 1,接着是 2,然后是 3,依此类推,直到最后 i = 9。在第一次迭代时,{客户.客户名} 的第九个字符被追加到空字符串变量 str 中。这样,在第一次迭代后 str 等于“r”。在第二次迭代时,{客户.客户名} 的第八个字符追加到 str 上,因此 str 等于“ri”。程序继续迭代,直到第九次迭代后 str 等于“riA naelC”,即反转字符串。
示例2
下面是上述公式的更简单的演示,它使用具有负 Step 值 (-1) 的 Step 子句。对于“Clean Air”示例,在第一次迭代时 i 是 9,第二次迭代时 i 是 8,第三次迭代时 i 是 7,依此类推,直到最后一次迭代时 i 是 1。
Local StringVar str := "";
Local NumberVar strLen :=
   Length ({Customer.Customer Name});
Local NumberVar i;
For i := strLen To 1 Step -1 Do
(
   str := str + {Customer.Customer Name}[i]
);
str
示例3
最简单的方法是使用内置函数 StrReverse:
StrReverse ({Customer.Customer Name})
在 Crystal Reports 中,内置的字符串函数可以处理许多字符串处理应用,而这些应用通常要使用 For 循环或其他类型的循环进行处理。但是,在处理字符串和数组方面,For 循环能提供最灵活和最强大的功能。如果内置函数不适用于所需的应用程序,则该循环可能必不可少。

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.