- •5 Работа в системе visual foxpro
- •5.1 Базовые концепции Visual FoxPro
- •5.1.1 Общая характеристика субд
- •5.1.2 Элементы проекта
- •5.1.3 ИнтерфейсVisualFoxProи создание проекта
- •5.1.4 Принципы создания проекта и его основных компонентов
- •5.1.5 Создание базы данных, таблиц и индексов
- •5.1.5.1 Создание базы данных
- •5.1.5.2 Создание таблиц
- •5.1.5.3 Типы данных вVisualFoxPro
- •5.1.5.4Создание индексов вVisualFoxPro
- •5.1.6 Организация межтабличных связей
- •5.1.7 Обеспечение целостности данных
- •5.2 Извлечение и представление информации средствами интерфейсаVisualFoxPro
- •5.2.1 Средства формирования запросов
- •5.2.2 Организация многотабличных запросов и вычисляемого поля
- •5.2.3 Представление результатов запросов
- •Основы программирования вVisualFoxPro
- •5.3.1 Общие положения и соглашения о синтаксисе команд
- •5.3.2 Разновидности, объявление, инициализация и отображение переменных и массивов
- •5.3.3 Взаимодействие программ вVisualFoxPro
- •5.3.4 Команды структурного программирования
- •5.3.5 Команды обработки особых ситуаций
- •5.3.6 Команды установки программной среды
- •5.3.7 Некоторые важные функции языкаVisualFoxPro
- •5.3.8 Визуальное объектно-ориентированное программирование в Visual FoxPro
- •5.3.8.1 Базовые понятия
- •5.3.8.2 Создание объектов на основе базовых классов и задание свойств объектов
- •5.3.8.3 Определение событий и методов для объектов класса
- •5.3.8.4 Вложенность объектов
- •5.3.9 Команды для работы с меню
- •5.3.10 Пример совместного использование программных файлов, формы и меню
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 Команды просмотра значений переменных и массивов
