Команда DIMENSION

Создает одномерный или двумерный массив переменных памяти.

Синтаксис:

DIMENSION ArrayName1 (nRows1 [, nColumns1])
	[, ArrayName2 (nRows2 [, nColumns2])] ...

Параметры:
ArrayName1
Задает имя массива. Одной командой DIMENSION можно создать сразу несколько массивов, если включить имена всех этих массивов (ArrayName2, ArrayName3 и т.д.).
nRows1 [, nColumns1]
Задает размер создаваемого массива. Если указать только nRows1, будет создан одномерный массив, состоящий из одного столбца и nRows1 строк. Например, следующая команда создает одномерный массив gaArrayOne, содержащий один столбец и десять строк.

DIMENSION gaArrayOne(10)

Чтобы создать двумерный массив, укажите как nRows1, так и nColumns1. Аргумент nRows1 задает число строк в массиве, а nColumns1 число столбцов. В следующем примере создается двумерный массив gaArrayTwo, содержащий две строки и четыре столбца:

DIMENSION gaArrayTwo(2,4)

Нужно указывать размер каждого массива, создаваемого командой DIMENSION. В следующем примере создаются три массива: gaArrayOne и gaArrayTwo из предыдущих примеров, а также третий массив gaArrayThree:

DIMENSION gaArrayOne(10), gaArrayTwo(2,4), gaArrayThree(3,3)

В командах DIMENSION и DECLARE выражения размерности можно заключать как в круглые скобки, так и в квадратные. Например, приведенные ниже две команды создают идентичные массивы:

DIMENSION gaArrayOne(10), gaArrayTwo[2,4], gaArrayThree(3,3)
DIMENSION gaArrayOne[10], gaArrayTwo(2,4), gaArrayThree[3,3]

Элементы массива:
Размер массива определяет, сколько элементов он в состоянии вместить. Каждый элемент массива может хранить одну порцию информации. Чтобы определить, сколько элементов содержит массив и какой объем информации в нем можно хранить, умножьте число строк массива (nRows1) на число столбцов (nColumns1).
Элементы массива могут содержать данные любого типа; когда массив впервые создается, его элементы инициализируются значением "ложь" (.F.). С помощью команды STORE можно проинициализировать все элементы массива одним значением, если установка SET COMPATIBLE имеет значение FOXPLUS или OFF (принимается по умолчанию). Например:

DIMENSION gaArray(10,3)
STORE 'initial' TO gaArray

Индексы массива:
Ссылаться на элементы массива можно по их индексам. У каждого элемента массива имеется уникальный числовой индекс, идентифицирующий его. Если массив одномерный, индекс элемента ѕ это номер его строки. Например, индекс элемента, находящегося в третьей строке одномерного массива, равен 3.
Элементы в двумерных массивах обозначаются двумя индексами. Первый индекс указывает положение элемента в строках, а второй индекс ѕ его положение в столбцах. Например, индексами элемента, находящегося в третьей строке и четвертом столбце двумерного массива, будут 3,4. Подробнее об индексах элементов массивов см. описание функции ASUBSCRIPT( ).
Индекс (индексы) первого элемента массива всегда равен 1. Если массив двумерный, его также можно обозначить одним числом. Функция AELEMENT( ) возвращает одиночный индекс для пары строчного и столбцевого индексов, а функция ASUBSCRIPT( ) возвращает строчный и столбцевой индексы элемента из его одиночного индекса.

Изменение размеров массивов:
Повторно выдавая команду DIMENSION, можно изменять размер и размерность массива. Размер массива можно увеличивать и уменьшать, одномерные массивы можно преобразовывать в двумерные, а двумерные в одномерные.
Если число элементов в массиве увеличивается, значения всех элементов первоначального массива копируются в новый расширенный массив. Дополнительные элементы массива инициализируются значением "ложь" (.F.).

Комментарии:
Команда DIMENSION идентична по выполняемым действиям и по синтаксису команде DECLARE.

Пример:

* Пример 1 демонстрирует результаты увеличения размера одномерного
* массива. (Заметьте, что если эти команды введены из окна команд,
* массив будет принадлежать типу PUBLIC, но если скопировать эти
* команды в программу и выполнить ее, массив будет типа PRIVATE.)
* Если число элементов в массиве уменьшается, эти элементы и
* содержащиеся в них данные удаляются. Когда одномерный массив
* превращается в двумерный, содержимое исходного одномерного
* массива копируется в новый массив так, что все элементы заносятся в
* одну строку.
* В Примере 2 одномерный массив преобразуется в двумерный.
* Содержимое элементов одномерного массива копируется в первую
* строку нового массива, за ней идет вторая строка и т.д. Дополнительные
* элементы инициализируются значением "ложь" (.F.).
* Когда двумерный массив преобразуется в одномерный, содержимое
* исходного двумерного массива копируется в новый массив по строкам.
* Первый элемент первой строки становится первым элементом
* одномерного массива, второй элемент первой строки становится вторым
* элементом и т.д.
* Для удаления и вставки элементов, строк и столбцов массивов
* используйте функции ADEL( ) и AINS( ). Для передачи данных между
* табличными записями и массивами используйте команды APPEND FROM
* ARRAY, COPY TO ARRAY, SCATTER и GATHER.
* В Примере 3 создается двумерный массив, который загружается
* информацией. На экран выводятся элементы массива и их содержимое.
* Example 1

DIMENSION marray(2)
STORE 'A' TO marray(1)
STORE 'B' TO marray(2)
CLEAR
DISPLAY MEMORY LIKE marray
DIMENSION marray(4)
DISPLAY MEMORY LIKE marray

* Example 2
DIMENSION marrayone(4)
STORE 'E' TO marrayone(1)
STORE 'F' TO marrayone(2)
STORE 'G' TO marrayone(3)
STORE 'H' TO marrayone(4)
CLEAR
DISPLAY MEMORY LIKE marrayone
DIMENSION marrayone(2,3)
DISPLAY MEMORY LIKE marrayone

* Example 3
DIMENSION sample(2,3)
STORE 'Goodbye' TO sample(1,2)
STORE 'Hello' TO sample(2,2)
STORE 99 TO sample(6)
STORE .T. TO sample(1)
CLEAR
DISPLAY MEMORY LIKE sample

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.