TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

5.3. МОДУЛЬ F_EMS

Достаточно подробное описание функций EMM, приведенное в предыдущем параграфе, позволит Вам при необходимости создать собственный интерфейс низкого уровня для доступа к этим функциям. В описываемом ниже модуле F_EMS я попытался реализовать более удобный,

как мне кажется, способ использования отображаемой памяти. Полный текст модуля приведен в прил.П6.

С этой целью в интерфейсной части модуля определена иерархия объектов, показанная на рис.5.2.

h01351.jpg

Рис.5.2. Иерархия объектов модуля F_EMS

Базовым объектом иерархии является объект TEMSArea. EMS— память в рамках этого объекта рассматривается как массив вида

type

EMSMemory = array [0..Size-1] of Byte,

где Size — длина резервируемой объектом памяти.

Объект TEMSVector порожден от TEMSArea и предназначен для начального структурирования данных. Этот объект рассматривает отображаемую память как набор фрагментов, каждый из которых имеет одинаковую длину в байтах. В стандартном Паскале ему в какой—то степени соответствует одномерный массив из элементов произвольного типа.

От TEMSVector порожден объект TEMSMatrix, имитирующий двумерные массивы стандартного Паскаля. Он перекрывает методы родителя, чтобы обрабатывать обращение к элементам с помощью двух индексов. Как и в стандартном Паскале, элементы в объекте TEMSMatrix располагаются по столбцам: за элементом с индексами 1,1 располагается элемент 1,2 и т.д.

Объект TEMSArray также порожден от TEMSVector и имитирует массив с произвольным количеством измерений. Фактические индексы элемента при обращении к процедурам Setltem и Getltem задаются в виде списка, что не очень удобно, вот почему для моделирования одно— и двумерных массивов используются отдельные объекты.

Объект TEMSType порожден от TEMSArea и имитирует файл с последовательным доступом (ленточный накопитель). Его элементы могут иметь различную длину, поэтому доступ к очередному элементу возможен только после чтения (записи) предыдущего элемента.

136___________________________________________________Глава 5

Объект TEMSText также имитирует последовательный файл, но его элементами являются строки.

Наконец, потомок TEMSScreen базового объекта TEMSArea предназначен для хранения в EMS— памяти копии графического экрана.

Использование объектов модуля F_EMS снимает многие ограничения Турбо Паскаля на объем обрабатываемых данных. Более того, поскольку индексы массивов и максимальные размеры сохраняемых данных определяются как длинные целые числа, использование процедур модуля может упростить программу. Например, максимальная длина любого массива, размещаемого в динамической памяти, не может быть больше 64 Кбайт, поэтому более крупные массивы приходится размещать в куче порциями;

при использовании объектов модуля F_EMS этого делать не нужно. Однако следует помнить, что доступ к EMS— памяти осуществляется с помощью более или менее сложных объектных методов и поэтому происходит значительно медленнее, чем обращение к базовой памяти.

 

Глава 5

Оглавление

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz