For 루프(Crystal 구문)
For 루프를 사용하면 식 시퀀스를 여러 번 평가할 수 있습니다. 이것은 수식을 평가하는 동안 많아야 한 번 각 식을 통과하는 If 및 Select 식과는 다릅니다.
For 루프는 식을 평가해야 하는 횟수를 미리 알고 있는 경우 가장 좋은 방법입니다.
For 루프 사용
{고객.고객 이름} 문자열의 순서를 거꾸로 바꾸려고 합니다. 예를 들면 "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이고 반복할 때마다 1씩 증가하여 마지막에는 i = 9가 됩니다. 처음 반복할 때 {고객.고객 이름}의 9번째 문자가 비어 있는 문자열 변수 str에 추가됩니다. 결과적으로 str은 첫째 반복 후에 "r"가 됩니다. 두번 째 반복할 때 {고객.고객 이름}의 8번째 문자가 str에 추가되어 str는 "ri"가 됩니다. 이것은 아홉 번째 반복 후까지 계속되며 str은 순서가 바뀐 문자열인 "riA naelC"가 됩니다.
For 루프 및 Step 절 사용
다음 예제는 위의 수식보다 간단한 방법으로 Step 절을 사용합니다(음수 Step 값 -1 사용). "Clean Air" 예제의 경우 처음 반복할 때는 i가 9이고 반복할수록 값이 감소하여 마지막 반복할 때는 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
StrReverse 사용
가장 간단한 방법은 다음과 같이 기본 제공된 함수 StrReverse를 사용하는 것입니다.
StrReverse ({Customer.Customer Name})
Crystal Reports 의 기본 제공 문자열 함수는 일반적으로 For 루프나 몇몇 다른 종류의 루프를 사용하여 처리되는 여러 문자열 처리 응용 프로그램을 처리할 수 있습니다. 그러나 For 루프는 문자열 및 배열을 처리하는 데 최상의 유연성과 성능을 제공하며 기본 제공 함수가 응용 프로그램을 처리하지 못할 경우 필수적입니다.