Class SORTEDARRAY

Name

SORTEDARRAY  --  Класс предназначен для управления сортированными данными.

Synopsis

 tSortedArrayNew() 	--> SortedArray object
 tSortedArray() 		--> SortedArray object

Description

Класс предназначен для управления сортированными данными.

Attributes

<Items> Array, массив
<Error> String, содержит описание ошибки, если она произошла.
<Found> Logical, если TRUE, то поиск был успешен.
  

Methods

ADD Добавить новый элемент.
DEL Удалить элемент из массива.
DELITEM Удалить элемент по индексу.
GETDATA Вернуть по индексу значение.
GETFIRST Вернуть значение первого элемента сортированного массива
GETITEM Вернуть элемент по индексу.
GETKEY Получить ключ элемента по индексу.
GETLAST Вернуть значение последнего элемента сортированного массива
HARDSEEK Жесткий поиск.
LEN Вернуть длину отсортированного массива.
SEEK Поиск элемента в массиве
SOFTSEEK Мягкий поиск элемента.
TSORTEDARRAYNEW Конструктор класса SORTEDARRAY.

Method SORTEDARRAY:ADD()

 Add(<nKey>, <Value>) 	--> .T./.F.

Add() добавляет в массив <::Item> новый элемент с ключом <nKey> и значением <Value>. Элементы с наименьшим значением ключа <nKey> будут вставлены в начало массива <::Item>. Если <nKey> или <Value> не определены, атрибут <Error> будет содержать описание ошибки и Add() вернет FALSE.

Вы можете добавить в массив <::Item> несколько элементов с одинаковым ключом, при этом расположение элементов с одинаковым ключом трудно предсказуемо.

Method SORTEDARRAY:DEL()

 Del(<nKey>, <Value>)    --> .T. || .F.
 Delete(<nKey>, <Value>) --> .T. || .F.
 DelKey(<nKey>, <Value>) --> .T. || .F.

Del(), Delete(), DelKey() удаляют из массива <::Item> элемент с ключом <nKey> и значением <Value>ю

Если параметры <nKey> или <Value> не определены или же в <::Item> отсутствует элемент с ключом <nKey> и значением <Value>, Add() возвращает FALSE, а атрибут <::Error> содержит описание ошибки.

Method SORTEDARRAY:DELITEM()

 DelItem(<nPos>)    --> .T. || .F.

DelItem() удаляет из массива <::Item> элемент с индексом <nPos> и возвращает TRUE. Все элементы ниже удаленного сдвигаются вверх на одну позицию.

Method SORTEDARRAY:GETDATA()

 GetData(<nPos>)    --> data

GetData() возвращает значение элемента с индексом <nPos> или, если элемента с индексом <nPos> не существует возвращает NIL.

В случае возникновения ошибки атрибут <::Error> содержит описание ошибки.

Method SORTEDARRAY:GETFIRST()

 GetFirst()    --> data value

GetFirst() Возвращает значение первого элемента массива <::Item>.

Если <::Item> пуст, GetFirst() возаращает NIL.

Method SORTEDARRAY:GETITEM()

 GetItem(<nPos>)    --> aItem

GetItem() возвращает массив, содержащий ключ сортировки и значение элемента массива <::Item> по индексу <nPos>

Method SORTEDARRAY:GETKEY()

 GetKey(<nPos>)    --> nKeyValue

GetKey() возвращает ключ сортировки элемента с индексом <nPos> или, если элемента с индексом <nPos> не существует возвращает NIL.

В случае возникновения ошибки атрибут <::Error> содержит описание ошибки.

Method SORTEDARRAY:GETLAST()

 GetLast()    --> data value

GetLast() Возвращает значение последнего элемента массива <::Item>.

Если <::Item> пуст, GetFirst() возаращает NIL.

Method SORTEDARRAY:HARDSEEK()

 HardSeek(<nKey>)    --> nPos

HardSeek() вызывает метод Seek() с параметрами: Seek(<nKey>, .F.)

Method SORTEDARRAY:LEN()

 Len() 	--> nCount

Len() возвращает длину сортированного массива, равную количеству элементов в <::Item>.

Если массив <::Item> пуст, Add() возвращает 0.

Method SORTEDARRAY:SEEK()

 Seek(<nKey>[, <lSoft>])    --> nPos

Seek() перемещает указатель на первый элемент, ключ которого равен <nKey>. Если такой элемент найден, он становится текущим и Seek() возвращает индекс(порядковый номер) этого элемента в массиве <::Item>, атрибут <::Found> устанавливается в TRUE, иначе Seek() возвращает Len() +1 позицию и атрибут <::Found> устанавливается в FALSE.

Позиционирование в сортированном массиве следующее: для нормальной (жесткой) сортировки (<::lSoft> == FALSE), указатель в массиве позиционируется на Len() + 1; для мягкого поиска (<::lSoft> == TRUE), позиционируется на первый элемент, чей ключ больше, чем <nKey>. Если такого элемента нет, позиционируется на Len()+1 и возвращает Len() + 1, а атрибут <::Found> устанавливается в FALSE.

Method SORTEDARRAY:SOFTSEEK()

 SoftSeek(<nKey>)    --> nPos

SoftSeek() вызывает метод Seek() с параметрами: Seek(<nKey>, .T.)

Method SORTEDARRAY:TSORTEDARRAYNEW()

 tSortedArrayNew() 	--> SortedArray object
 tSortedArray() 		--> SortedArray object

tSortedArrayNew() создает и возвращает новый объект класса SORTEDARRAY. Этот класс может быть использован для хранения, быстрого доступа, управления сортированными данными.

Example:

  sArr := tSortedArrayNew()
 sArr:Add("January"  , {1 , "January"  })
 sArr:Add("February" , {2 , "February" })
 sArr:Add("March"    , {3 , "March"    })
 sArr:Add("April"    , {4 , "April"    })
 sArr:Add("May"	    , {5 , "May"      })
 sArr:Add("June"	    , {6 , "June"     })
 sArr:Add("July"	    , {7 , "July"     })
 sArr:Add("August"   , {8 , "August"   })
 sArr:Add("September", {9 , "September"})
 sArr:Add("October"  , {10, "October"  })
 sArr:Add("November" , {11, "November" })
 sArr:Add("December" , {12, "December" })
 
 ? sArr:Len()			// 12
 
 ? sArr:GetFirst()		// {         4, April}
 ? sArr:GetLast()		// {         9, September}
 
 ? sArr:Seek("May")		// 9
 ? sArr:Seek("Monday")		// 13
 ? sArr:SoftSeek("Monday")	// 10
 ? sArr:HardSeek("Monday")	// 13
 
 ? sArr:GetItem(3)		// {December, {        12, December}}
 ? sArr:GetData(3)		// {        12, December}
 
 ? sArr:DelItem(3)		// .T.
 ? sArr:Len()			// 11
 
 ? sArr:GetItem(3)		// {February, {         2, February}}
 ? sArr:GetData(3)		// {         2, February}
 

Platforms

No dependies of platform.