Копирует элементы из одного массива в другой.

ACOPY(SourceArrayName, DestinationArrayName 
[, nFirstSourceElement [, nNumberElements [, nFirstDestElement ]]])

Параметры

SourceArrayName, DestinationArrayName

Указывают исходный массив SourceArrayName, элементы которого один за другим копируются в результирующий массив DestinationArrayName. Элементы из исходного массива замещают элементы в результирующем массиве. Массивы могут быть одномерными или двумерными. Если результирующий массив не существует, Visual FoxPro автоматически его создает. В этом случае размер результирующего массива совпадает с размером исходного массива.
Замечание:
Вы можете ссылаться на элемент двумерного массива двумя способами. Первый - указать оба индекса, задающих номера строки и колонки, которые определяют местоположение элемента в массиве. Второй - использовать порядковый номер элемента в массиве. Эта функция, как и другие, работающие с двумерными массивами, требует указать порядковые номера элементов, с которых начинается обработка (в данном случае nFirstSourceElement и nFirstDestElement). Используйте функцию AELEMENT( ), возвращающую порядковый номер элемента в двумерном массиве по номерам строки и колонки.

nFirstSourceElement

Указывает номер первого элемента в массиве, начиная с которого будет выполняться копирование (этот элемент также участвует в копировании). Если nFirstSourceElement не указан, копирование начнется с первого элемента в исходном массиве.
nNumberElements

Указывает количество элементов, копируемых из исходного массива. Если nNumberElements равно -1, копируются элементы, начиная от nFirstSourceElement и заканчивая последним элементом в исходном массиве.
nFirstDestElement

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

Возвращаемое значение

Числовое. ACOPY( ) возвращает количество элементов, скопированных в результирующий массив.

Примечания

Копирование с помощью функции ACOPY( ) элемента массива в существующий массив в случае, когда в результирующем массиве нет элемента с порядковым номером или индексами, как у исходного элемента, может вызвать ошибку "Subscript is outside defined range." ("Индекс выходит за границы отведенного диапазона"). Вы можете избежать этой ошибки, если измените размер результирующего массива до единицы перед вызовом функции ACOPY( ). Дальнейшую информацию об этом смотрите в Команда DIMENSION.

Пример

В следующем примере создается массив путем отбора записей из таблицы customer. Последующий вызов функции ACOPY( ) используется для создания копии полученного массива.

  Скопировать код
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Open customer table

SELECT DISTINCT company ;
FROM customer ;
ORDER BY company ;
WHERE country = 'Germany';
INTO ARRAY gaCompanies
= ACOPY(gaCompanies, gaCompaniesTemp) && Make a copy of the array
CLEAR
DISPLAY MEMORY LIKE gaCompaniesTemp

См.также