Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.07.16;
Скачать: [xml.tar.bz2];

Вниз

Проблема с DATA   Найти похожие ветки 

 
PSPF2003 ©   (2006-06-29 11:28) [0]

День добрый.
Есть вот такая конструкция:

type
 TDescription=class
  Name : String[255];
  Description : TStrings;
  constructor Create;
  destructor Destroy; override;
 end;

constructor TDescription.Create;
begin
 Description := TStringList.Create;
end;

destructor TDescription.Destroy;
begin
 Description.Free;
 inherited;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 Node : TTreeNode;
 Opis : TDescription;
begin
 Opis := TDescription.Create;
 Opis.Name := "Name";
 Opis.Description.Add("Description");

 Node  := TTreeNode.Create(TreeView1.Items);
 Node.Data := Opis;
 TreeView1.Items.Add(Node, "Node");
end;

И в следующей процедуре происходит ошибка (Access Violation)

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
 Edit1.Text := TDescription(Node.Data).Name ;
 Memo1.Lines.Assign(TDescription(Node.Data).Description);
end;

Почему не могу понять Если кто знает в чем я ошибся подскажите.


 
Плохиш ©   (2006-06-29 11:31) [1]


Node := TreeView1.Items.Add(nil, "Node");
Node.Data := Opis;


 
Ega23 ©   (2006-06-29 11:32) [2]

Description : TStringList;


 
Плохиш ©   (2006-06-29 11:40) [3]


> Ega23 ©   (29.06.06 11:32) [2]

Неа, он присваивает Data одному TTreeNode, в TreeView создаёт ещё один узел, по типу и на уровне, перед этим созданного. А читать Data пытается вообще не понятно у какого узла.


 
PSPF2003 ©   (2006-06-29 11:44) [4]


> Плохиш ©

А как правильно нужно?


 
Ega23 ©   (2006-06-29 11:45) [5]


> Неа, он присваивает Data одному TTreeNode, в TreeView создаёт
> ещё один узел, по типу и на уровне, перед этим созданного.
>  А читать Data пытается вообще не понятно у какого узла.
>


Здесь как раз, вроде, всё в порядке.
Автор, на какой строке у тебя AV выпадает?


 
Ega23 ©   (2006-06-29 11:46) [6]

Node  := TTreeNode.Create(TreeView1.Items);

Ой... А это что такое????


 
PSPF2003 ©   (2006-06-29 11:46) [7]

На самой первой при присваивании Edit-у текста.


 
Ega23 ©   (2006-06-29 11:47) [8]


> На самой первой при присваивании Edit-у текста.


Чему равно Node.Data?


 
Плохиш ©   (2006-06-29 11:48) [9]


> PSPF2003 ©   (29.06.06 11:44) [4]
>
> > Плохиш ©
>
> А как правильно нужно?

Хочешь чтобы я попугаем стал?

> Ega23 ©   (29.06.06 11:46) [6]

О, увидал :-))


 
PSPF2003 ©   (2006-06-29 11:49) [10]


> Чему равно Node.Data?

Opis ?


 
Плохиш ©   (2006-06-29 11:51) [11]


> PSPF2003 ©   (29.06.06 11:49) [10]
>
> > Чему равно Node.Data?
>
> Opis ?

nil ;-)


 
PSPF2003 ©   (2006-06-29 11:52) [12]

Всем большое пасибо пошел разбиратся в своих баронах...


 
ЮЮ ©   (2006-06-29 11:54) [13]

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
if (Node <> nil) and (Node.Data <> nil) then begin
  Edit1.Text := TDescription(Node.Data).Name ;
  Memo1.Lines.Assign(TDescription(Node.Data).Description);
end
else begin
  Edit1.Text := "" ;
  Memo1.Lines.Clear;
end;
end;


 
Ega23 ©   (2006-06-29 11:55) [14]


> О, увидал :-))


Не сразу внимание обратил... Жужос какой-то...


 
PSPF2003 ©   (2006-06-29 11:57) [15]


> Ega23 ©  
> > О, увидал :-))Не сразу внимание обратил... Жужос какой-
> то...

Ты про что ?


 
Плохиш ©   (2006-06-29 12:00) [16]


> PSPF2003 ©   (29.06.06 11:57) [15]
>
> > Ega23 ©  
> > > О, увидал :-))Не сразу внимание обратил... Жужос какой-
>
> > то...
>
> Ты про что ?

Это он про-то, что некоторым лень в справке на "Example" нажать.


 
PSPF2003 ©   (2006-06-29 12:03) [17]


> Это он про-то, что некоторым лень в справке на "Example"
> нажать.

Да нет не лень я если честно про нее и забыл. Все по интернету статьи читал, да книжки умные :)


 
ЮЮ ©   (2006-06-29 12:06) [18]

Ну и что, вставка узла сразу за самим любимым должно AV вызывать? Неужели настолькос cлаба защита в VCL?


 
ЮЮ ©   (2006-06-29 12:09) [19]

Даже точнее, у автора добавляются узла парами, а Data определяется для одного из них


 
Плохиш ©   (2006-06-29 12:12) [20]


> ЮЮ ©   (29.06.06 12:09) [19]
> Даже точнее, у автора добавляются узла парами

Первый узел в треевию не добавляется, поэтому, скорее всего, автор ошибку-то и не смог сразу найти.


 
ЮЮ ©   (2006-06-29 12:23) [21]

>Первый узел в треевию не добавляется,

Почему?

Node  := TTreeNode.Create(TreeView1.Items);
  // Node станет членом коллекции TreeView1.Items  
Node.Data := Opis;
TreeView1.Items.Add(Node, "Node");
  // Вслед за добавленным узлом Node создается ещё один


 
Плохиш ©   (2006-06-29 12:30) [22]


> ЮЮ ©   (29.06.06 12:23) [21]
> >Первый узел в треевию не добавляется,
>
> Почему?
>
> Node  := TTreeNode.Create(TreeView1.Items);
>   // Node станет членом коллекции TreeView1.Items

Странно, но в TTreeNode.Create нигде не стоит добавление куда-либо, а есть только присвоение FOwner.


 
ЮЮ ©   (2006-06-29 12:40) [23]

И впрямь. Тем более: те TreeNode, для которых устанавливались Data в TreeView не попадали, а поподали только с nil-евой Data


 
Stakan ©   (2006-06-29 12:54) [24]

procedure TForm1.Button1Click(Sender: TObject);
var
 Opis : TDescription;
begin
 Opis := TDescription.Create;
 Opis.Name := "Name";
 Opis.Description.Add("Description");
 
 TreeView1.Items.AddObject(nil, "Banzai", Pointer(Opis));
end;


 
PSPF2003 ©   (2006-06-29 13:23) [25]

Всем спасибо, все работает



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

Форум: "Начинающим";
Текущий архив: 2006.07.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.013 c
5-1135421009
sco
2005-12-24 13:43
2006.07.16
SetXXXXValue и class


15-1150426972
Файл
2006-06-16 07:02
2006.07.16
Чем отличается МЕ от ХР с точки зрения Дельфи 7 ?


15-1150294537
JUS
2006-06-14 18:15
2006.07.16
Как закинуть свой готовый сайт в интернет?


6-1140765377
Женя свисток
2006-02-24 10:16
2006.07.16
ISAPI - filter


15-1150721661
Crazy monkey
2006-06-19 16:54
2006.07.16
Старая вещчица, но смешеая.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский