Autor Beitrag
MJ87
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21

Win XP
D5 Pro
BeitragVerfasst: Di 14.02.06 16:01 
Hallo,

ich will eine Treeview erstellen. In meinem Programm werden zuerst die einzelnen Wert in einen Binärensuchbaum eingeben und dann will ich den Baum in einer Treeview darstellen. Der Code sieht so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
type
  tpointer=^tzeiger;
  Tzeiger=record
         wert:integer;
         L_Next:Tpointer;
         R_next:Tpointer;
         end;

Procedure TForm1.trv2_Tiefensuche(Knoten:tpointer; vorheriger:TTreeNode);
Var node : TTreenode;
begin
  If (Knoten = NILthen
    exit;
  If (vorheriger = NILthen begin
  // Aus sich einen Knoten erstellen
    node := treeview1.Items.getfirstnode;
  end else begin
    node := treeview1.Items.AddChild(vorheriger,IntToStr(Knoten^.wert));
  end;
  trv2_Tiefensuche(Knoten^.L_next,node);
  trv2_Tiefensuche(Knoten^.R_next,node);
end;


Delphi sagt mir immer, dass es eine Zugriffsverletzung gibt.
Kann mir jemand helfen und sagen wo das Problem liegt.

Danke!!!

Gruß MJ87
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Di 14.02.06 16:05 
Hat der TreeView beim ersten Aufruf schon eine Node?
ausblenden Delphi-Quelltext
1:
node := treeview1.Items.getfirstnode;					


Moderiert von user profile iconChristian S.: Quote- durch Delphi-Tags ersetzt

_________________
Markus Kinzler.
MJ87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21

Win XP
D5 Pro
BeitragVerfasst: Di 14.02.06 16:22 
Nein die Treeview hat noch keine node, aber durch diese Befehl:
Zitat:

node := treeview1.Items.getfirstnode;

Soll die node erzeugt werden.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Di 14.02.06 16:24 
Wie sieht die Funktion aus?

_________________
Markus Kinzler.
MJ87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21

Win XP
D5 Pro
BeitragVerfasst: Di 14.02.06 16:27 
getfirstnode ist eine in Delphi festgelegt Funktion.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Di 14.02.06 16:30 
Die Methode von Delphi heißt getFirstChild() und erzeugt keine Node sonderrn gibt nil zurück

_________________
Markus Kinzler.
MJ87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21

Win XP
D5 Pro
BeitragVerfasst: Di 14.02.06 17:16 
Hier eine kopie aus der Delphi-Hilfe
Zitat:

Die Methode GetFirstNode gibt den ersten Knoten eines Baumdiagramms zurück.

function GetFirstNode: TTreeNode;

Beschreibung

Mit der Methode GetFirstNode kann der erste Knoten des Baumdiagramms abgerufen werden.


Aber kannst du mir denn sagen was ich bei mir ändern muss damit es funktioniert.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Di 14.02.06 17:38 
Die Methode war mir neu, mir ist nur nicht klar, was passiert wenn es keinen ersten Eintrag gibt
[quote}Mit GetFirstNode kann der erste Knoten des Baumdiagramms abgerufen werden. GetFirstNode gibt den Wert von Item[0] frei.[/quote] Echt schlechte Übersetzung.
{quote]Aber kannst du mir denn sagen was ich bei mir ändern muss damit es funktioniert.[/quote]
Du kannst dich selber um die Erzeugung des Knotens kümmern.

_________________
Markus Kinzler.