Файл arrayname prg не существует

Обновлено: 05.07.2024

DIMENSION array(5,5)
DO FORM form1 WITH array TO array

В Init form1 пишу

В UNLOAD'е

В форме из которой вызывал form1

Если написать:
DO FORM myform WITH myarray TO myarray
? alen(myarray)&& Возвращает длину старого массива, хотя в новой форме я её уже поменял.

DO FORM myform WITH myarray TO ModifiedArray
? ModifiedArray(2,2) &&Говорит, что ModifiedArray.prg не существует

DO FORM myform WITH myarray TO ModifiedArray
Dimension ModifiedArray(10,5)
? ModifiedArray(2,2) &&Возвращает .F.

Такие вот приколы.

> Думаю будет проще сделать
PUBLIC myarray

DIMENSION MyArray(2,2)
DO FORM MyForm WITH "MyArray"

Соответсвенно в форме делается пропертя, которая будет хранить имя массива, например ArrayName. Тогда Init-формы выглядит так:

LPARAMETERS tcArrayName
ThisForm.ArrayName=m.tcArrayName

В пределах формы я это массив вообще не трогаю. А вот в методе UNLOAD (ну или в любом методе непосредственно предшествующем выгрузке) выполняю нужную модификацию массива

> ? alen(array) && возвратит 50, а не 25 (хотя первые 25 будут = 1)

Возможно, это я не проверял.

> Я шото не понял как использовоть функции ADEL и AINS.

Никакие функции по работе с массивом не изменяют размерности массива

Единственная функция, изменяющая размерность массива - это DIMENSION (DECLARE). Если массив существует, то эта функция просто изменит его размерность, не изменяя области видимости (LOCAL, PUBLIC, PRIVATE). Если не существует, то он будет создан с областью видимости PRIVATE.

ADEL - указынный элемент (или группа элементов) принимают значени .F. и перемещаются в конец массива

AINS - в указанное место вставляется элемент (или группа элементов) со значением .F., а из конца массива удаляется столько элементов сколько было вставлено по AINS()

Например, есть массив

* Удалить строку №2
=ADEL(MyArray,2)
* И изменить размерность массива
DIMENSION MyArray(9,5)

* Прежде чем вставить строку надо изменить размерность массива
DIMENSION MyArray(10,5)
* Теперь сосбственно вставка строки №5
=AINS(MyArray,5)

Что подразумевается под словами "перенумерация строк"? Изменить порядок следования строк?

Ну допустим, надо поменять местами строки 2 и 5 в данном массиве:

Со столбцами все значительно сложнее и муторнее. Но тебе это и не надо.

При работе с массивом внутри формы, лучше создать пропертю типа массив и с ней и работать. В качестве источника данных для ListBox можно прямо так и указывать

Читайте также: