Ищет элемент массива, содержащий те же самые данные и тип как в выражении.

ASCAN(ArrayName, eExpression [, nStartElement [, nElementsSearched [, nSearchColumn [, nFlags ]]]])

Параметры

ArrayName

Определяет имя массива для поиска.
eExpression

Определяет общее выражение для его поиска.
nStartElement

Определяет номер элемента, с которого начинается поиск. Номер элемента, которое Вы определяете, включен в поиск. Если Вы опускаете nStartElement , массив обрабатывается по умолчанию целиком.
nElementsSearched

Определяет количество элементов для поиска. Если Вы опускаете nStartElement и nElementsSearched , поиск начинается с первого элемента массива и продолжается до последнего элемента массива, если Вы не определяете nSearchColumn .
Обратите внимание:
Вы можете обратиться к элементу в двумерном массиве переменных одним из двух способов. Первый метод использует два описания, чтобы определить позицию строки и столбца элемента в массиве; другой метод использует номер элемента. Эта функция и другие, которые управляют двумерными массивами, требуют номеров элементов ( nStartElement и nElementsSearched ). Используйте AELEMENT( ), чтобы возвратить номер элемента из описания строки и столбца в двумерном массиве.

nSearchColumn

Определяет столбец массива для поиска. Это часто полезно в тех массивах, которые созданы функциями типа AFIELDS( ). Вы можете использовать 0 или отрицательное количество для nSearchColumn для применения поиска во всем массиве. Если Вы используете значение больше чем 0 для nSearchColumn , ASCAN( ) обрабатывает указанный столбец как одномерный массив, используя каждую строку данных при поиске как отдельный элемент. Например, следующий пример ищет только третьи и четвертые элементы столбца 2 вместо всего массива.
Скопировать код
? ASCAN(abc,"M",3,2,2)
Visual FoxPro генерирует ошибку если nSearchColumn является большим числом чем количество доступных столбцов.
nFlags

Определяет дополнительные критерии поиска, чтобы применить к функции просмотра. Заданные по умолчанию просмотры чувствительны к регистру. Число которое Вы задаете в директиве nFlags обеспечивает битовое значение, которое определяет чувствительность к регистру или установку точности просмотра согласно следующей таблице:

NFlag Бит Описание

0

0000

Поведение, существующее в Visual FoxPro 6 или ранее

1

0001

Нечувствительность к Регистру

2

0010

Текущее поведение, существующее в предыдущей версии Visual FoxPro

3

0011

Нечувствительность к Регистру

4

0100

Exact OFF

5

0101

Нечувствительность к регистру; Exact OFF

6

0110

Exact ON

7

0111

Нечувствительность к регистру; Exact ON

8

1000

Возвращение номера строки

9

1001

Нечувствительность к регистру; возвращение номера строки

10

1010

Возвращение номера строки

11

1011

Нечувствительный к регистру; возвращение номера строки

12

1100

Возвращает номер строки; Exact OFF

13

1101

Нечувствительност к регистру, возвращает номер строки; Exact OFF

14

1110

Возвращает номер строки; Exact ON

15

1111

Нечувствительность к регистру; возвращает номер строки; Exact ON

Битовые значения следующие:

Бит Описание

0

Бит Нечувствительности к регистру

1

Бит Exactness ON (Действует только, если установлен бит 2)

2

Отменяет бит системный установки Exact

3

Возвращает номер строки, в случае 2D массива

nFlags применяется только к функции ASCAN( ) и не затрагивает параметры настройки для SET EXACT.

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

Числовое

Замечания

Если соответствие найдено, ASCAN( ) возвращает номер элемента, содержащего выражение. Если соответствие не может быть найдено, ASCAN( ) возвращает 0.

Критерии для успешного соответствия символьных данных определены системной установкой SET EXACT, если не установлен nFlag с битом 2. Если SET EXACT - ON, элемент должен соответствовать символьному выражению поиска для символа и иметь ту же самую длину. Если SET EXACT - OFF, и элемент соответствует выражения поиска до достижения конца выражения, то соответствие считается установленным. Для подробной информации относительно критериев соответствия для символьных строк, см. таблицу сравнения строки в теме SET EXACT .

В Visual FoxPro 6.0, параметры nStartElement и nElementsSearched являются дополнительными. nStartElement должен быть > 0, в то время как nElementsSearched может принимать любое значение. Чтобы установить параметр nSearchColumn , Вы будете должны пропустить эти параметры, передавая значение -1.

Параметры nStartElement и nElementsSearched приобретают особое значение если величина nSearchColumn больше чем 0. В Visual FoxPro 6.0, она всегда используются для ссылки к полному массиву. Начинание с Visual FoxPro 7.0, если передается положительное значение nSearchColumn , значения nStartElement и nElementsSearched ссылаются к отдельному одномерному массиву, представленному nSearchColumn . Например, следующий код будет искать третий и четвертый элементы столбца 2, но не полного массива:

Скопировать код
? ASCAN(abc,"M",3,2,2)

Пример

Следующий пример создает и заполняет массив названиями компаний, и затем использует ASCAN( ), чтобы искать специфическое название компании. Если название компании найдено, оно удаляется из массива.

Скопировать код
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer     && Open customer table
SELECT company FROM customer ;
   WHERE country = 'UK' ;
   INTO ARRAY gaCompanies
gnCount = _TALLY
gcName = 'Seven Seas Imports'
CLEAR
DISPLAY MEMORY LIKE gaCompanies*
gnPos = ASCAN(gaCompanies, gcName) && Search for company
IF gnPos != 0
   *** Company found, remove it from the array ***
   = ADEL(gaCompanies, gnPos)
   gnCount = gnCount - 1
ENDIF
DISPLAY MEMORY LIKE gaCompanies

См. Также