Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2012, 14:59   #1
_Iren_
Пользователь
 
Регистрация: 22.04.2012
Сообщений: 10
По умолчанию N-мерное дерево Delphi

Здравствуйте. Помогите, пожалуйста, разобраться с деревом на Delphi.
Суть в том, что в каждой вершине должен храниться массив строк и оценка вершины. Пыталась создать класс, вообще не запустилось.. Через запись не может корень создать, не говоря уж о добавлении новых вершин потом..
писала вот так:

Код:
type
  TreePointer = ^tree;
  tree = record
    data: Array of String;
    mark: double;
    next: Array of TreePointer;
  end;

 function CreateRoot(root:TreePointer;  lblArray: Array of TLabel): TreePointer;
 var i,l:integer;
  begin
  new(root);
  root^.next:=nil;
  l:=length(lblArray);
  GetMem(root, SizeOf(String)*l+SizeOf(Double));
  for i := 0 to l-1 do
    root^.data[i]:=lblArray[i].Caption;
  root^.mark:=0;
  result:=root;
  end;
думаю, что если с корнем разберусь, добавление/удаление осилю.

Последний раз редактировалось _Iren_; 07.06.2012 в 15:41.
_Iren_ вне форума Ответить с цитированием
Старый 07.06.2012, 15:32   #2
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Сам не знаю как реализовать задачу, но зачем вам там TLabel ???
Delphi_ProGer вне форума Ответить с цитированием
Старый 07.06.2012, 15:39   #3
_Iren_
Пользователь
 
Регистрация: 22.04.2012
Сообщений: 10
По умолчанию

Массив меток.. У меня из него берутся значения, чтобы заполнить массив в корне.
_Iren_ вне форума Ответить с цитированием
Старый 07.06.2012, 15:48   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от _Iren_ Посмотреть сообщение
Массив меток.. У меня из него берутся значения, чтобы заполнить массив в корне.
Визуальные компоненты должны использоваться для отображения и ввода информации, но никак не для хранения и обработки.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 07.06.2012, 15:50   #5
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Вам в задании нужно TLabel-ы сохранять в массиве? Просто можно просто string...
Delphi_ProGer вне форума Ответить с цитированием
Старый 07.06.2012, 15:52   #6
_Iren_
Пользователь
 
Регистрация: 22.04.2012
Сообщений: 10
По умолчанию

они для этого и используются в действительности..
просто корень мне нужно заполнить именно этими значениями
_Iren_ вне форума Ответить с цитированием
Старый 07.06.2012, 15:58   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Избавьтесь от ссылок - переведите все на динамические массивы. Проще и понятней.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 07.06.2012, 16:00   #8
Bob256
Пользователь
 
Регистрация: 28.10.2011
Сообщений: 13
По умолчанию

Код:
type
  TreePointer = ^tree;
  tree = record
    data: Array of String;
    mark: double;
    next: Array of TreePointer;
  end;

 function CreateRoot(var root:TreePointer;  lblArray: Array of TLabel): TreePointer;
 var i,l:integer;
 begin
  new(root);
  l:=length(lblArray);
  SetLength(root^.data,l);
  SetLength(root^.next,l);
  for i := 0 to l-1 do
  begin
    root^.data[i]:=lblArray[i].Caption;
    root^.next[i]:=nil;
  end;
  root^.mark:=0;
  result:=root;
 end;
Bob256 вне форума Ответить с цитированием
Старый 07.06.2012, 16:12   #9
_Iren_
Пользователь
 
Регистрация: 22.04.2012
Сообщений: 10
По умолчанию

на строчке
root^.data[i]:=lblArray[i].Caption;
вылетает и пишет: Access violation at address 00407266 in module 'Project4.exe'. Write of address 00000000
Почему так?
_Iren_ вне форума Ответить с цитированием
Старый 07.06.2012, 16:17   #10
Bob256
Пользователь
 
Регистрация: 28.10.2011
Сообщений: 13
По умолчанию

убери "^" Delphi и так понимает
Bob256 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi бинарное дерево D][mon Помощь студентам 1 25.05.2011 00:06
n-мерное дерево из двоичного дерева alexande-rus Общие вопросы C/C++ 0 13.04.2011 22:04
4-ёх мерное пространство, реальность или нет?(17+) MyLastHit Gamedev - cоздание игр: Unity, OpenGL, DirectX 82 09.01.2011 16:04
Delphi-->Б-дерево-->Вознаграждение tools Фриланс 1 27.12.2009 13:40
Бинаарное дерево.Delphi 7 ZhooZhik Помощь студентам 0 04.04.2009 10:14