-
XCoder © (09.10.05 15:01) [0]Здравствуйте. Нужно было реализовать что-то вроде дерева объектов(я привел кусок кода что бы было понятно). Есть основной объект, он может иметь любое количество дочерних, а те в свою очередь могут иметь свои дочерние и так до бесконечтности.
type
TMyObject = class
...
Child: array of TMyObject;
...
end;
Вопрос такой: Как найти в дереве объектов нужный по имени(оно уникальное) и получить его свойства с возможностью их изменения? Заранее благодарен. -
Поиск в глубину.
Примерно так:
function TMyObject.Seach(s:^string):TMyObject;
var i:integer;
begin
if s^=Name then
Result:=Self
else
for i:=0 to length(Child) -1 do
Result:=Child[i].Seach(s);
end; -
XCoder © (09.10.05 17:33) [2]Я примерно так и делал, но функция возвращает копию объекта, а мне нужно получить доступ к самому объекту, что бы изменять его свойства.
-
Джо © (10.10.05 01:47) [3]
> [2] XCoder © (09.10.05 17:33)
> Я примерно так и делал, но функция возвращает копию объекта,
> а мне нужно получить доступ к самому объекту, что бы изменять
> его свойства.
Никакую копию она не возвращает. Более того, она и объекта-то, по сути, не возвращает. Она, строго-говоря, возвращает ссылку (указатель) на тот самый объект. -
Dico (23.11.05 15:19) [4]Попробуй
TCollection; TCollectionItem;
C ними будет проще