Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Treeview erstellen


MJ87 - Di 14.02.06 16:01
Titel: Treeview erstellen
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:

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 - Di 14.02.06 16:05

Hat der TreeView beim ersten Aufruf schon eine Node?

Delphi-Quelltext
1:
node := treeview1.Items.getfirstnode;                    


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


MJ87 - 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 - Di 14.02.06 16:24

Wie sieht die Funktion aus?


MJ87 - Di 14.02.06 16:27

getfirstnode ist eine in Delphi festgelegt Funktion.


mkinzler - Di 14.02.06 16:30

Die Methode von Delphi heißt getFirstChild() und erzeugt keine Node sonderrn gibt nil zurück


MJ87 - 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 - 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.