LPage=16*1024; {Длина страницы} I --------- Базовый объект иерархии ----------}

Constructor TEMSArea.Init(ASize: Longint);

{Создает объект TEMSArea. ASize - размер требуемой ЕМЗ-памяти в байтах} vaa:

All,Pag: Word;

begin

if not IsEMS then

EMSError($A5) {Нет EMS} else begin

EKSErrorFlag := False;

Size := ASize;

MaxPag := (Size+LPage-1) shr 14;

GetEMSInfo(All,Pag) ;

if MaxPag>Pag then

EMSError($88) (Нет требуемых страниц) else begin

NewEMSHandle(Handle,MaxPag) ;

EMSError(EMSStatus) end end

end; {TEMSArea.Init} ' (— ————————— ——;

Function TEMSArea.ReadFile(var F: File; var Dest; Sz: Word): Boolean;

{Читает Зг байт из файла F в переменную Dest и контролирует результат} var

К: Word;

begin

BlockRead(F,Desc,Sz,K) ;

if KOSz then begin

EMSError($A7) ;

ReadFile := False (Ошибка при чтении} end else

ReadFile := True {Нет ошибок} end; {ReadFilo} ^—————————————

Constructor TEMSArea.Load(var F: File);

{Создает объект TEMSArea, считывая его изфайла F. Файл должен быть открыт на чтение с длиной блоков в 1 байт и позиционирован на место, где ранее был сохранен объект TEMSArea процедурой. Store.} var

SRead,Rest: Longint;

S: Strings-All,k: Word;

Stop: Boolean;

P: Pointer;

begin

if not IsEMS then

EMSError($A5) {Нет EMSf else begin

{Читаем заголовок объекта - строку RegHeadTEMSArea EMSErrorFlag :=• Fals&;

Stop := False; {Флаг нормального чтени^ч if not ReadFile(F,S,SizeOf(RegHeadTEMSAreaU or (SORegHeadTEMSArea) then