144___________________ __ Глава 5
Init Constructor Init (ASize, NInd: LongInt; var Ind) ;
Создает объект TEMSArray. Параметры ASize и NInd задают соответственно длину элемента и количество измерений массива. Переменная Ind внутри метода считается переменной типа TIndexBond (см. п.5.3.2) и должна содержать N/nd пар чисел типа LongInt, определяющих границы индексов по каждому измерению (первое число пары — левая, второе — правая границы). Метод помещает в поле NIndex значение NInd, затем по списку Ind определяет общее количество Sz элементов массива, после чего вызывает унаследованный метод TEMSVector.Init с границами 0 и Sz-1. Если обращение к методу было успешным, в куче резервируется NInd' 12 байт и указатель на этот участок памяти помещается в поле Index (указатель на массив TIndex, см. п.5.3.2). Для всех NInd троек элементов типа LongInt массива Index' в первый элемент помещается левая граница, во второй — правая граница, а в третий — масштабный множитель, показывающий на сколько нужно умножить индекс по данному измерению, чтобы получить положение элемента в базовом объекте TEMSVector.
Load Constructor Load (var F: File);
Перекрывается: Редко
Считывает все поля и данные объекта TEMSArray из файла F: вначале вызывает родительский метод TEMSVector.Load, затем читает из файла заголовок RegHeadTEMSArray и поле NIndex. Резервирует в куче участок памяти длиной NIndex'Q байт, указатель на него помещает в поле Index и считывает в него из файла NIndex элементов массива типа TIndex. Перед обращением к методу файловую переменную F необходимо связать с уже существующим нетипизированным файлом, а сам файл должен быть открыт для чтения блоками длиной в 1 байт.
Store Procedure Store (var F: Pile); Virtual;
Перекрывается: Редко
Сохраняет в файле F текущее состояние объекта: вызывает родительский метод TEMSVectore. Store, затем записывает в файл заголовок RegHeadTEMSArray, поле NIndex и все NIndex троек массива Index'. Перед обращением к методу файловую переменную F необходимо связать с уже существующим нетипизированным файлом, а сам файл должен быть открыт для записи блоками длиной в 1 байт.
Done Destructor Done; Virtual;
Перекрывается: Редко
Уничтожает объект: освобождает участок кучи, связанный с указателем Index, затем вызывает родительский метод TEMSArea.Done для освобождения EMS— памяти.
GetVecIndex Function GetVecIndex (var Ind) : LongInt;
Перекрывается: Никогда
По массиву индексов, заданному в переменной Ind, возвращает единственный индекс одномерного базового объекта TEMSVector. Переменная Ind внутри метода считается массивом TIndexList и должна содержать NIndex' элементов типа LongInt, определяющих значения индексов (первый элемент — индекс первого измерения, второй — второго и т.д.). Этот метод можно использовать для доступа к типизированным интерфейсным функциям XXXXItem объекта—родителя TEMSVector.