одномерного массива сортировка выполняется, начиная с элемента номер <вырN1> до элемента с номером <вырN2>. Для двумерного массива сортировка заключается в перестановке строк без изменения их содержимого. Сортировка массива выполняется по столбцу номер <вырМ1>, в соответствии с которым переставляются <вырN2> строк (по умолчанию все строки). <вырN3> может быть равно 0/1 и определяет вид сортировки - возрастание/убывание. Если не задан ни один из необязательных параметров, массив сортируется целиком.
Пример. Пусть имеется массив А(3,2), над которым последовательно выполняются функции ASORT(a,1) и ASORT(a,2,2). Слева направо изображены исходный массив и его новое содержимое после применения функций.
8 |
1 |
3 |
9 |
5 |
4 |
||
5 |
4 |
→ |
5 |
4 |
→ |
3 |
9 |
3 |
9 |
8 |
1 |
8 |
1 |
Здесь сначала весь массив сортируется по возрастанию элементов первого столбца, а, затем, также по возрастанию, но элементов второго столбца и только его двух первых строк.
Функция
· AFIELDS(<массив>) копирует структуру активной базы данных во вновь создаваемый двумерный <массив>. Наполнение массива по колонкам и их типы приведены ниже.
1. Имя поля - символьный тип.
2. Тип поля (символ: C/D/L/M/N/F) - символьный тип.
3. Длина поля - числовой тип.
4. Число десятичных разрядов - числовой тип.
Функция возвращает число полей активной базы. Число строк массива будет совпадать с числом полей базы.
Использовав перечисленные ранее Функции ADEL(), AINS(), ACOPY(), можно легко перестроить массив и создать на его основе новую базу командой вида
CREATE DBF <имя базы данных> FROM ARRAY <массив>
Пример. Создание базы KADR_NEW.DBF со структурой, аналогичной структуре базы KADR.DBF (используется массив А).
USE kadr
=AFIELDS(a)
CREATE DBF k:adr_new FROM ARRAY a
Функция AFIELDS(a) аналогична команде COPY STRUCTURE EXTENDED, которая также создает "слепок" структуры, но в базе данных. Функция может быть предпочтительнее в случае необходимости поддерживать высокую скорость при анализе структуры нужной базы данных. Это может потребоваться, например, для выяснения номера поля в структуре базы. К сожалению, такой функции нет в составе FoxPro, хотя есть обратная - FIELDS(<номер поля>). При наличии массива-структуры номер поля может быть определен следующим образом:
? ASUBSCRIPT(<массив>,ASCAN(<массив>,<имя поля>),1)
или в нашем случае для поля DTR
?ASUBSCRIPT(a, ASCAN(a,'DTR'),1) Функция
· ADIR(<массив>[,<вырС1>]) заполняет <массив> информацией о файлах, возможно, в соответствии с маской (<вырС1>) и возвращает количество найденных файлов. Функция создает двумерный <массив> с числом строк, равным чнслл7 выявленных файлов, и пятью столбцами. Столбцы содержат информацию DOS о каждом из файлов - имя файла, размер, дату, время создания и атрибут файла соответственно. Типы элементов строки - символьный, числовой, дата, символьный, символьный.
Однако, следует иметь ввиду, что функция ADIR() считывает данные непосредственно с диска, игнорируя текущее состояние открытых файлов, которые, используя буфера, могут иметь, например, уже и иное число записей. Это значит, что достоверными данными о файлах являются только данные, относящиеся к закрытым базам. Если все же некоторые из файлов, описанных маской, открыты, перед использованием функции следует дать команду FLUSH, которая сбросит все буфера на диск.
Пример. Создать массив BD, содержащий сведения о всех базах с именами, начинающимися с буквы К.
=ADIR(bd,'k*.dbf)
Используя функцию ADIR(), можно легко находить размеры любых файлов и суммарное дисковое пространство, занимаемое ими (элемент массива номер (1,2)). Такая"возможность важна при копировании и преобразовании данных для контроля величины необходимой дисковой памяти. Другое применение функции ADIR() - это создание массива для построения меню из имен файлов, если стандартные возможности POPUP-меню с опцией PROMPT FILES оказываются недостаточными. Этот вопрос будет обсужден позже.
В FoxPro имеется несколько команд, которые сами создают и наполняют массивы. Для того, чтобы установить размерность такого массива, можно воспользоваться следующей функцией
· ALEN(<массив> [,<вырN>]) которая возвращает число элементов <массива> (если параметр <вырN> отсутствует).
<вырN> может принимать только одно из следующих значений:
0 - имеет действие аналогичное отсутствию <вырN>;
1 - функция возвращает число строк в массиве. Для одномерного массива оно совпадает с числом элементов
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.