Массив как параметр программных компонентов 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). |