Конференция "FreePascal" » дерево объектов [Win32]
 
  • XCoder © (09.10.05 15:01) [0]
    Здравствуйте. Нужно было реализовать что-то вроде дерева объектов(я привел кусок кода что бы было понятно). Есть основной объект, он может иметь любое количество дочерних, а те в свою очередь могут иметь свои дочерние и так до бесконечтности.

    type
    TMyObject = class
      ...
      Child: array of TMyObject;
      ...
    end;


    Вопрос такой: Как найти в дереве объектов нужный по имени(оно уникальное) и получить его свойства с возможностью их изменения? Заранее благодарен.
  • PAVIA © (09.10.05 17:00) [1]
    Поиск в глубину.
    Примерно так:
    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 ними будет проще
 
Конференция "FreePascal" » дерево объектов [Win32]
Есть новые Нет новых   [134430   +1][b:0][p:0.001]