hallo
ich hab da ein problem mit pointern, immer wenn ich den code ausführ, bekomm ich ne
AV. aber eigentlich sollte doch speicherplatz reserviert sein. ich kenn mich nicht so toll mit pointern aus, vielleicht findet jemand den fehler?
die funktion kriegt im prinzip nen string, mit gewissen buchstaben, und zeichnet daraufhin nach bestimmten regeln. ist ein lindenmayer-system.
danke.
hier die typ deklarationen:
Delphi-Quellcode:
type
PPosition = ^TPosition;
TPosition = record
x: Integer;
y: Integer;
xHlp: Integer;
yHlp: Integer;
end;
hier die funktion:
Delphi-Quellcode:
procedure DrawIteration(Const Axiom: String; L, Degree: Real;
var Turtle: TTurtle; var ProgBar: TProgressBar);
var
i: Integer;
Pt: ^TPosition;
begin
GetMem(Pt, 0);
ProgBar.Max := Length(Axiom);
for i := 1 to Length(Axiom) do
begin
Application.ProcessMessages;
case Axiom[i] of
'F': Turtle.FD(L);
'f':
begin
Turtle.PU;
Turtle.FD(L);
Turtle.PD;
end;
'+': Turtle.LT(Degree);
'-': Turtle.RT(Degree);
'[':
begin
GetMem(Pt, (SizeOf(Pt) + SizeOf(TPosition)));
Pt.x := Turtle.PosX;
Pt.y := Turtle.PosY;
Turtle.PU;
Turtle.FD(250);
Pt.xHlp := Turtle.PosX;
Pt.yHlp := Turtle.PosY;
Turtle.MoveXY(Pt.x, Pt.y);
Turtle.PD;
end;
']':
begin
Turtle.PU;
Turtle.MoveXY(Pt.x, Pt.y);
Turtle.SetHXY(Pt.xHlp, Pt.yHlp);
GetMem(Pt, (SizeOf(Pt) - SizeOf(TPosition)));
Turtle.PD;
end;
end;
ProgBar.Position := i;
end;
FreeMem(Pt);
end;