Autor Beitrag
DocMcFly
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 25.03.04 17:20 
Hallo,
Ich habe vor ein größere Hierarchie in eine DB zu packen und die Baumstruktur in eine Tabelle zu packen hab ich eine einfach Funktion gebaut.

Das funktioniert auch prima. Das ganze wieder zu rück zu spielen ist schwerer.

Hier ist der Aufbau der Tabelle:

id - index des Knoten (primary_key)
title - Knotenname
child_id - Index ersten Kinderknoten
subling_id Indes des nächstbenachbarten Knoten

Durch die eindeutige Index-Vergabe ist es einfach Inhalte den Knoten zuzuordnen! Aus der Tabelle eine Baum in eine TTreeView-Feld wieder auf zubauen ist auchnicht schwer und funktioniert prima!

Jetzt die Frage:
Ich hab versuch die TreeToTable und TableToTree in eine externe Unit zu packen und bin bei TableToTree gescheitert!

ausblenden Quelltext
1:
function tabletotree(table: TKatTabelle ) : ttreenodes;					


Ich hab mir gedacht : Ich übergebe eine Tabelle und bekomme "ttreenodes" (eine Knotenliste) Ich über all reinpacken kann! Aber Pustekuchen....

Ich bekomme nur Error_Expt's wenn ich versuche:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
  ....
   var  nodelist : ttreenodes;

   begin 

      nodelist.add(nil, 'Startelement' ); 
   ...


wieso kann ich keine treenode-list aufbauen und dann weiterreichen? an zB ein eine TTreeview-Element? Wo liegt mein Denkfehler? :eyes:

Clemens
UWER
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79

SUSE 8.1, XP Home
D7 Prof. , Kylix 3
BeitragVerfasst: Fr 26.03.04 16:21 
Hallo,

so in der ersten Näherung würde ich mal sagen das die TreeNodes als Objekt erst mal auf einem Konstruktor bestehen. Ich würde die TreeNodes einfach als Parameter an meine Funktion übergeben und als Rückgabewert die Anzahl der Knoten oder so was in der Art. Das würde dann ungefähr so aussehen:

ausblenden Delphi-Quelltext
1:
function tabletotree(table: TKatTabelle; var Nodes : TTreeNodes ) : integer;					


Dann kannst du entweder die Knotenliste eines Baumes nehmen oder kannst dir selber eine Createn und damit sonst was anstellen.

_________________
Gruß
UWER
DocMcFly Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 26.03.04 17:37 
Naja ... das mit dem Konstruktor funktioniert auch nicht so richtig! Weil der Owner haben will aber ich will den Owner er zu ordnen wenn ich das will und nicht gleich am Anfang..

ich möchte mehrere Bäume im Prog. verwalten und wenn ich will keines anzeigen! Doofes Delphi!

Danke und Gruß Clemens
UWER
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79

SUSE 8.1, XP Home
D7 Prof. , Kylix 3
BeitragVerfasst: Fr 26.03.04 17:43 
Hallo,

du müßtest den Owner auch einfach auf NIL setzen können beim Konstruktor-Aufruf. Das sollte der Funktionalität keinen Abbruch tun.

_________________
Gruß
UWER
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: Fr 26.03.04 17:47 
DocMcFly hat folgendes geschrieben:
Naja ... das mit dem Konstruktor funktioniert auch nicht so richtig! Weil der Owner haben will aber ich will den Owner er zu ordnen wenn ich das will und nicht gleich am Anfang..

ich möchte mehrere Bäume im Prog. verwalten und wenn ich will keines anzeigen! Doofes Delphi!

Danke und Gruß Clemens


Hallo,

den konstruktor musst du aber verwenden, schließlich musst du der Knotenliste auch mal speicher zuweisen...Und als owner kannst du auch nil angeben.

Gruß
Ken

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.