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?