Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
132
Добавлен:
15.06.2014
Размер:
10 Mб
Скачать

5.3.2 Разновидности, объявление, инициализация и отображение переменных и массивов

Различают глобальные (общие) и локальные переменные и массивы. Глобальные переменные памяти и массивы доступны для чтения или изменения из любой программы, выполняемой в текущем сеансе работы с Visual FoxPro. Они должны быть определены в программе до присвоения им конкретных значений. Локальные переменные и массивы доступны и действуют только внутри той программы, в которой они объявлены. После выхода из этой программы они удаляются из памяти. Синтаксис соответствующих команд объявления приведен на рис. 5.24.

PUBLIC <memvar list>

PUBLIC [ARRAY] <array1> (<expN1> [,<expN2>])

[,<array2> (<expN3> [,<expN4>])… ]

PRIVATE <memvar list> | <array list>

PRIVATE ALL [LIKE <scel> | EXCEPT <scel>]

Операнд ALL означает ВСЕ, то есть все переменные и массивы объявляются локальными; операнд ALL LIKE <scel> позволяет объявить локальными те переменные и массивы, имена которых удовлетворяют шаблону; операнд ALL EXCEPT <scel> делает то же, но только для тех переменных и массивов, имена которых не удовлетворяют шаблону.

Рис. 5.24 Синтаксис команд объявления глобальных и локальных переменных:

Все переменные памяти и массивы, созданные в командном окне Command, автоматически становятся глобальными.

Если о переменной не сообщается, что она является глобальной (в специальном операторе PUBLIC), то она считается локальной. Локальная переменная, объявленная в начале основной программы, действует как глобальная для всех внутренних подпрограмм. Этим свойством можно пользоваться, чтобы не прибегать к оператору PUBLIC.

В VF процессы объявления и инициализации переменной (присвоения ей начального значения) совмещаются в одном операторе присваивания, который имеет два варианта представления: «=» и STORE TO. Полный синтаксис второй команды:

STORE <expr> TO <memvar list> | <array> | <memvar>

Команда STOREустанавливает значение каждой переменной памяти в списке<memvar list>и каждого элемента массива<array>равным значению выраженияexpr. Переменные в списке разделяются запятыми.

Объявление массива описано в п. 5.1.5.3. Размерности массива можно записывать как в круглых, так и в квадратных скобках. Элементы массива могут быть данными любого типа. При создании элементы инициализируются логическими значениями «ложь» (.F.).

Можно изменить размерность массива, повторно используя команду DIMENSION. Если число элементов в массиве уменьшается, то лишние элементы отсекаются, а данные из этих элементов теряются. Если число элементов увеличивается, то содержимое всех элементов в исходном массиве копируется в массив с новой размерностью, причем дополнительные элементы получают значение «ложь» (.F.).

Если одномерный массив преобразуется в двумерный, то содержимое исходного массива копируется так, что последовательно заполняются элементы первой строки, затем второй и т.д. Когда двумерный массив превращается в одномерный, содержимое исходного массива копируется путем поэлементного переноса всех членов первой строки, затем второй т.д. в последовательные элементы одномерного массива.

Наряду с переменными памяти, задаваемыми пользователями, имеются системные переменные памяти. Эти «встроенные» переменные памяти, которые Visual FoxPro создает и сохраняет автоматически, содержат информацию, определяющую формат вывода результатов работы Visual FoxPro и управляющую выводом этих данных на экран и принтер. Имена, типы и значения по умолчанию системных переменных четко определены, причем имена, как правило, начинаются со знака подчеркивания «_».

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

LIST | DISPLAY MEMORY [LIKE <scel>]

[TO PRINTER | TO FILE <file>] [NOCONSOLE]

Опция TO PRINTER направляет вывод на печатающее устройство,

опция TO FILE <file> – в текстовый файл.

Опция NOCONSOLE подавляет вывод на экран или в активное окно.

Рис. 5.25 Команды отображения значений переменных памяти

Вывод данных из полей таблиц реализуется командами LISTиDISPLAY. Отличие этих команд в том, что в случаеDISPLAYпосле заполнения экрана процесс вывода приостанавливается (для продолжения достаточно нажать на любую клавишу или тронуть мышь), а в случаеLIST– не приостанавливается. В обеих командах опцияLIKE <scel>позволяет ограничить число выводимых объектов лишь теми, имена которых соответствуют шаблону.

Просмотр любых переменных и элементов массива Возможен с помощью команд ?или??. Синтаксис команд представлен на рис. 5.26. Выбор направления вывода (экран или принтер) определяется командами установок средыSET.

? | ?? [<expr1>[AT <expN>] [PICTURE <expC1>] [FUNCTION <expC2>]

[STYLE <expr>]] [,<expr2>… ]…

Здесь <expr1>, <expr2> и т.д. содержат выражения, частным случаем которых могут быть константы и переменные. Выражения оцениваются (вычисляются, формируются) и результаты выводятся либо через пробел, начиная с текущей позиции курсора на экране (в случае ??), либо с начала следующей строки (в случае ?), либо с позиции номер expN (в случае опции AT <expN>). Опции PICTURE и FUNCTION определяют формат выводимых данных. Опция STYLE <expr> позволяет задать стиль и размер шрифта при выводе на принтер.

Рис. 5.26 Команды просмотра значений переменных и массивов