Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
3-1108115304
DelphiN!
2005-02-11 12:48
2005.03.20
Посоветуйте тип баз данных


14-1109571160
Александр Иванов
2005-02-28 09:12
2005.03.20
Будущее за эволюционно развивающимися продуктами?


14-1109487131
begin...end
2005-02-27 09:52
2005.03.20
С Днём рождения! 27 февраля


4-1107533019
andrewman
2005-02-04 19:03
2005.03.20
Как сделать соединение двух компов через модем?


8-1101725343
Dufe
2004-11-29 13:49
2005.03.20
Как сделать в реалтайме обработку видео(DSPack)?




   Наверх