Einzelnen Beitrag anzeigen

Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#1

Baumstruktur mit fehlern :(

  Alt 26. Apr 2005, 15:06
hi

ich will eine Baumstruktur aufbauen.
jeder knoten soll 0-4 kinder haben.
das ganze soll nachher auf eine paintbox gemalt werden.
(konkret geht es um die darstellung von Alkanen (zb Methan, Butan, Propan))

dazu habe ich mir folgenden typ gemacht:

Delphi-Quellcode:
type
  TNode = record
    Parent: Pointer;
    ChildCount: Byte;
    Childs: array [1..4] of Pointer;
    x,y: Integer;
  end;
und das ganze in eine TList geschmissen.

Delphi-Quellcode:
procedure AddNode(Parent: Pointer; PX, PY, Count: Integer);
var Temp: TNode;
    i:Integer;
begin
  for i:=1 to Count do
    begin
    Temp.ChildCount:=StrToInt(InPutBox('Childs','ChildCount','1'));
    Temp.Parent:=Parent;
    {1: 0, 1
    2: 1, 0
    3: 0,-1
     4:-1, 0}

    Temp.x:=PX - (i-2);
    Temp.y:=PY - (i-3);
    Form1.Nodes.Add(@Temp);
    AddNode(@Temp.Childs[i], Temp.x, Temp.y, Temp.ChildCount);
    end;
end;

procedure DrawAgain;
//malen
var i: Integer;
begin
  with Form1 do
    for i:=0 to Nodes.Count-1 do
      with TNode(Nodes.Items[i]^) do
        PaintBox1.Canvas.Arc(x*10,y*10,x*10+8,y*10,x*10,y*10+8,x*10+8,y*10+8);
end;

procedure TForm1.Button1Click(Sender: TObject);
//Neu eingeben
var Temp: TNode;
    Parent: Pointer;
begin
  AddNode(nil,0,0,1);
  DrawAgain;
end;

procedure TForm1.Button2Click(Sender: TObject);
//Debug
var i:Integer;
begin
  for I:=0 to Nodes.Count-1 do
    with TNode(Nodes.Items[i]^) do
      ListBox1.Items.Add(IntToStr(x)+' '+IntToStr(y));
end;
nur leider kommen total bekloppte x/y-werte heraus....
zb:
//Button1Click
eingabe: 2,0,0
//Button2Click
1242936, 4368756
1, 0
1, 0

und natürlich geht dann auch das malen schief...

wo ist der fehler im code?
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat