So, hab nun erneut ein Problem bei dem ich eure Hilfe benötige.
Ich soll eine Prozedur erstellen, in der ich nur den Anfangs und Endpunkt angeben soll und dann die Scheiben automatisch dahin bewegt werden. Hab schonmal ein Lösungsansatz:
Delphi-Quellcode:
procedure bewegen(start,ziel:integer) ;
var safe,Auswahl1,Auswahl2,Auswahl3,a,s1a,s2a,s3a:integer;
begin
s1a := strtoint(edit5.text);
s2a := 0;
s3a := 0;
Auswahl1 :=s1a;
Auswahl2 :=s2a;
Auswahl3 :=s3a;
if (start = 1) and (ziel = 2) then
safe:=12;
if safe=12 then
begin image(Auswahl1).top := (408-32*s2a);
image(Auswahl1).left := image(Auswahl1).left+184;
s1a:=s1a-1;
s2a:=s2a+1;
end;
if (start=1) and (ziel=3) then
safe:=13;
if safe=13 then
begin
image(Auswahl1).top := (408-32*s3a);
image(Auswahl1).left := image(Auswahl1).left+368;
s1a:=s1a-1;
s3a:=s3a+1;
if (start=2) and (ziel=3) then
safe:=23;
if safe=23 then
begin
image(Auswahl2).top := (408-32*s3a);
image(Auswahl2).left := image(Auswahl2).left+184;
s2a:=s2a-1;
s3a:=s3a+1;
if (start=2) and (ziel=1) then
safe:=21;
if safe=21 then
begin
image(Auswahl2).top := (408-32*s1a);
image(Auswahl2).left := image(Auswahl2).left-184;
s2a:=s1a-1;
s1a:=s1a+1;
if (start=3) and (ziel=1) then
safe:=31;
if safe=31 then
begin
image(Auswahl).top := (408-32*s1a);
image(Auswahl).left := image(Auswahl).left-368;
s3a:=s3a-1;
s1a:=s1a+1;
if (start=3) and (ziel=2) then
safe:=32;
if safe=32 then
begin
image(Auswah)l.top := (408-32*s1a);
image(Auswahl).left := image(Auswahl).left-184;
s3a:=s3a-1;
s2a:=s2a+1;
end;
die zahlen (bei start und ziel stehen für die türme, s1a soll Stapel1Anzahl heißen, also die Anzahl der Scheiben die auf Stapel 1 liegen und edit5 ist das feld in den man diese Anzahl von 1-8 festlegen kann). Ich merke grad, dass die variable safe unnütz ist, aber abgesehen davon zeigt er noch ziemlich viele fehlermeldungen an.
darf man bei einer prozedur nicht auf die edit- und image felder zurückgreifen? wenn ja wie könnte ich es anders schreiben?