Статьи Королевства Дельфи

       

Пример


Рассмотрим более сложный пример - шаблон дерева для базовых типов языка (атомарных - числовых, строковых, указателей, перечислымых и множеств; конструируемых - записей и массивов). Дерево состоит из узлов (nodes), каждый из которых содержит список подчинённых ему узлов дерева, ссылку на следующий элемент по списку родительского узла, ссылку на следующий по списку всех узлов, ссылку на родительский узел и собственно данные узла. Этот шаблон использует шаблон "несамостоятельного" списка (inferior list), состоящий из двух частей - шаблона типа, и шаблона процедур списка. Модули, полученные в результате инстанциации этих шаблонов, используются в модуле, полученном в результате инстанциации шаблона дерева прямым включением (директива компиллятора "{$I ...}"). Учитывая вложенность шаблонов скрипт temss нужно запустить два раза. Ниже приведён отрывок файла README из прилагаемого к статье архива с перечислением файлов, относящихся к данному примеру:

inferiorlist_type.tem Шаблон "несамостоятельного" списка temss1.out temss2.out Снимки протоколов первого и второго прохода препроцессора для модуля xTree.pas tree.tem Шаблон дерева treeStr.pas treeStr_AllNodes_Procs.pas treeStr_AllNodes_Type.pas treeStr_NodesList_Procs.pas treeStr_NodesList_Type.pas Инстант дерева для типа типа String xTree.exe xTree.pas Пример использования шаблона дерева EXE слинкован с runtime-пакетами (Delphi 3.0) !

Описанный выше шаблон дерева может быть использован и для хранения объектов, но о деструкции объектов в этом случае придётся позаботиться самостоятельно. Лучшим решением было бы написание отдельного шаблона дерева для объектов (возможно с использованием этого шаблона), обеспечивающего автоматическую деструкцию объектов.



Содержание раздела