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