Распечатать страницу

Массив как параметр программных компонентов VFP

« Назад

Массив нужно передавать другому программному компоненту по ссылке. При передаче массива программному компоненту (основной программе, процедуре или функции) или объекту, например форме, в списке параметров указывается его имя.

Пример. Процедура InitArray( ) принимает массив, переданный по ссылке, и выполняет его инициализацию, записывая в каждый элемент массива его номер. Результат используется в основной программе.

dimension someArray(3, 4)

&& Передаем массив someArray по ссылке

InitArray(@someArray)

&& Печатаем значение 7-го элемента массива

? someArray(2, 3)               && Напечатает: 7 

procedure InitArray(someArray)

&& elemNo – номер элемента массива

&& Обращаемся к двумерному массиву, как к одномерному

for elemNo = 1 to Alen(someArray)

  someArray(elemNo) = elemNo

endFor

endProc

Массив, переданный другому программному компоненту по ссылке, объявлять в программе-приемнике нет необходимости.

Также передачу массива, как и иного параметра, по ссылке обеспечит установка SET UDFPARMS в REFERENCE, например:

set udfparms to reference

InitArray(someArray)         && Знак @ уже не нужен

Если же передавать массив по значению и если соответствующий формальный параметр процедуры не объявлен как массив, то будет передан только первый элемент массива, а формальный параметр процедуры будет интерпретироваться как скаляр, например:

dimension someArray(3, 4)

someArray = 2

&& Передаем массив someArray по значению

set udfparms to value

PassAsValue(someArray) 

procedure PassAsValue(someArray)

? someArray                       && Напечатает: 2

endProc

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

Замечание. Массив как параметр может быть передан и таким объектам VFP, как форма, меню и др.

Для передачи массива в программный компонент иного файла помимо рассмотренного механизма можно в вызываемом программном компоненте наряду с командой PARAMETERS употребить команду EXTERNAL.

Команда

EXTERNAL ARRAY ArrayList

обеспечивает доступ к массивам, созданным в другом программном компоненте.

Параметр:

ArrayList – список внешних массивов; в качестве разделителя между элементами списка применяется запятая.

Пример. Массив объявляется и инициализируется в основной программе файла d:\Prog1.prg и передается и выводится в основной программе файла d:\Output.prg.

&& Состав файла d:\Prog1.prg

&&

local someArray(2, 3)

store 5 to someArray          && Инициализация массива someArray

&& Печатаем массив; массив передается по ссылке

do d:\Output with someArray

&& Содержимое файла d:\Output.prg

&&

parameters someArray

external array someArray

for iRow = 1 to Alen(someArray, 1)

  for iCol = 1 to Alen(someArray, 2)

?? someArray(iRow, iCol)  && Напечатает:  5  5  5  5  5  5

endFor

endFor

Также команда EXTERNAL ARRAY может быть употреблена и в вызывающей программе (см. описание команды в справке VFP).