Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: CL | DM;

Вниз

Помогите создать иерархию, динамической вложенности   Найти похожие ветки 

 
msgipss   (2005-03-02 20:17) [0]

Как создать следующую структуру:
type
rSProp = record
sName:string;
nType:byte;
end;
rMProp = record
aSProp:  array of rSProp;
sName: String;
  aMProp: array of rMProp;
end;
var aMProp: array of rMProp;
Понятно что это работать не будет, но смысл понятен должен быть.
Хочу сделать иерархию любой вложенности, как ни будь можно сделать это не статически ?
Надеюсь, я хоть немного понятно объяснил, заранее благодарен за ответ


 
Димон   (2005-03-02 20:21) [1]

Используй классы...
Или ссылки на записи...

т.е.
PRec = ^TRec;
TRec = record
  Children: array of PRec;
end;


 
Ермак ©   (2005-03-02 21:33) [2]

В общем-то, она у тебя и так не статическая, так как array of есть указатель на массив динамической длины. Но, естественно, косой это способ. Если дерево органиченной арности (т.е. у каждого узла может быть не более n веток) то при небольшом n сойдет и статический массив указателей на запись). Иначе - динамический массив, но не записей, а указателей на запись.

А лучше всего - гибрид дерева и списка.

TNode = record
data: ...
subnodes: pNode; //список веток нижнего уровня
next: pNode; //Указатель на следующую вершину того же уровня.
end;

[A]
|(subnodes)
[B1]-(next)-[B2]-(next)-[B3]-...
|             |           |

Если важна скорость поиска, то вместо списка вообще используй бинарное дерево.


 
msgipss   (2005-03-03 16:04) [3]

Димон   (02.03.05 20:21) [1]
а как использовать объекты,
как указать в классе 1, класс 2 описанный ниже ?


 
Просто Джо ©   (2005-03-03 16:15) [4]


> как указать в классе 1, класс 2 описанный ниже ?



type
 TClass1 = class;

 TClass2 = class
 private
   FInnerClass: TClass1;
 end;

 TClass1 = class
 // полное объявление класса
 end;


 
msgipss   (2005-03-03 18:38) [5]

Большой сенькс 8)



Страницы: 1 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.033 c
14-1109653830
begin...end
2005-03-01 08:10
2005.03.20
С Днём рождения! 1 марта


1-1110177575
Alexandre
2005-03-07 09:39
2005.03.20
Как запустить другое приложение?


14-1109921326
Оля
2005-03-04 10:28
2005.03.20
Установка IE6


6-1101368472
Жуков
2004-11-25 10:41
2005.03.20
Сообщения по локальной сети


14-1109513422
GanibalLector
2005-02-27 17:10
2005.03.20
Толковый словарь (ОЧЕПЯТКИ)