Цикл For

Оценить
(1 голос)

Программистам, работающим на языке Basic, всегда нравилась возможность проходить в цикле по коду снова и снова с целью реализации логики повторения. Она также может оказаться полезной и в ряде ситуаций, возникающих при разработке отчета (например, если нужно просмотреть в цикле поле параметра, принимающего множество значений, или просканировать числовой массив).

Crystal Reports предлагает цикл For, причем в обоих синтаксисах (однако в синтаксисе Crystal конструкция Next отсутствует). Цикл For использует переменную-счетчик для подсчета количества проходов через определенную логическую структуру. В конструкции For устанавливается как начальное, так и конечное значение переменной-счетчика. Необязательная конструкция Step сообщает оператору For, на какую величину должно быть увеличено значение переменной-счетчика (если конструкция Step отсутствует, по умолчанию будет использоваться значение 1). Оператор For заканчивается словом Do, за которым следует один или большее число операторов, заключенных в круглые скобки (если этих операторов более одного, они разделяются точкой с запятой).

Операторы внутри скобок будут выполняться по одному разу на каждое увеличение переменной-счетчика.

Следующая формула отображает все вхождения, которые пользователь выбрал в многозначном поле параметров Region:

NumberVar Counter

StringVar Message := "Region Chosen: ";

// Цикл просмотра всего множества числовых значений // параметра-поля ?Region

For Counter := 1 to Count ({?Region}) Step 1 Do {

// создать переменную Message, добавив запятую/пробел Message := Message & {?Region} [Counter] + ", "

};

// удалить запятую/пробел, добавленную в цикле Left{Message, Length{Message} - 2)

Сначала в этой формуле объявляются две переменных — Counter (подсчитывающая количество итераций цикла For) и Message (аккумулирующая значения, выбранные в поле параметров). (Для получения более подробной информации о том, как используются переменные, обратитесь в следующий раздел данной главы.) Затем цикл For повторяется до тех пор, пока значение переменной Counter не возрастет от 1 до числа, соответствующего количеству элементов в поле параметров (которое, кстати, возвращает функция Count). В каждом цикле переменная Counter используется для извлечения следующего элемента поля параметров и его включения, вместе с запятой и пробелом, в переменную Message. И, наконец, последний оператор в формуле, который никак не связан с циклом, удаляет последнюю запятую и пробел, добавленные на последней итерации цикла.

На заметку! Несмотря на то что Crystal Reports теперь позволяет строковым формулам и переменным возвращать значения длиной до 64 тысяч символов (до версии Crystal Reports 9 строки могли возвращать только 254 символа), правила логики требуют добавить в показанную формулу проверку, использующую оператор Exi t For для выхода из цикла For, еслц длина переменной Message приблизится к значению 64000 символов. Если цикл попытается накопить в этой переменной более 64 тысяч символов, произойдет ошибка времени выполнения.

 

Цикл While Do
Булевские формулы
Переменные в формулах и времена вычисления
Объявление переменной
Область действия переменной

Добавить комментарий


Защитный код
Обновить