AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stack Überlauf

Ein Thema von B1nch3N · begonnen am 1. Jun 2008 · letzter Beitrag vom 1. Jun 2008
 
B1nch3N

Registriert seit: 1. Jun 2008
Ort: Herford
6 Beiträge
 
#1

Stack Überlauf

  Alt 1. Jun 2008, 19:34
Hallo,

hoffe ihr könnt mir helfen.
Bekomme in meinem Programm einen Stack Überlauf.
Wenn ich das Programm jedoch nur maximal 4 Felder bearbeiten lasse dann geht es ganz normal und klappt perfekt.

Hier erstmal der Code:
Hier wird der Fehler angezeigt der kommt wenn ich das Programm arbeiten lasse.
Delphi-Quellcode:
Procedure Sortieren(z:integer);
Var
tauschen1: Array [1..4] of Integer;
tauschen2: Array [1..4] of Integer;
Begin
if benutzt<>(9-aktuell) then begin
  for i:=1 to 4 do begin
    tauschen1[i]:= stellung[z,i];
    tauschen2[i]:= farbe[z,i];
  end;
  for i:=(z)to 8 do begin
    for ii:=1 to 4 do begin
      stellung[i,ii]:= stellung[i+1,ii];
      farbe[i,ii]:= farbe[i+1,ii];
    end;
  end;
for i:=1 to 4 do begin stellung[9,i]:= tauschen1[i]; farbe[9,i]:= tauschen2[i]; end;
benutzt:=benutzt+1; end else begin benutzt:=0; aktuell:=aktuell-1; end;
End;
Die normale Rekursion ist diese hier:
Delphi-Quellcode:
Procedure Arbeiten;
Begin

if aktuell=1 then AnfangsKarte;
if (aktuell<10) AND (aktuell>1) then begin
  if Vergleichen(aktuell)= 1 then begin gedreht:=0;benutzt:=0; aktuell:=aktuell+1; end else Drehen(aktuell);
if aktuell<10 then Arbeiten;
end;
End;
Weitere Proceduren:
Delphi-Quellcode:
Function Vergleichen(x:integer):Integer;
Begin
case aktuell of
  2: if (stellung[x,4]<>stellung[x,2]) and (farbe[x,4]=farbe[x,2]) then result:=1 else result:=0;
  3: if (stellung[x,4]<>stellung[x,2]) and (farbe[x,4]=farbe[x,2]) then result:=1 else result:=0;
  4: if (stellung[x,1]<>stellung[x-3,3]) and (farbe[x,1]=farbe[x-3,3]) then result:=1 else result:=0;
  5: if (stellung[x,4]<>stellung[x-1,2]) and (farbe[x,4]=farbe[x-1,2]) AND (stellung[x,1]<>stellung[x-3,3]) and (farbe[x,1]=farbe[x-3,3]) then result:=1 else result:=0;
  6: if (stellung[x,4]<>stellung[x-1,2]) and (farbe[x,4]=farbe[x-1,2]) AND (stellung[x,1]<>stellung[x-3,3]) and (farbe[x,1]=farbe[x-3,3]) then result:=1 else result:=0;
  7: if (stellung[x,1]<>stellung[x-3,3]) and (farbe[x,1]=farbe[x-3,3]) then result:=1 else result:=0;
  8: if (stellung[x,4]<>stellung[x-1,2]) and (farbe[x,4]=farbe[x-1,2]) AND (stellung[x,1]<>stellung[x-3,3]) and (farbe[x,1]=farbe[x-3,3]) then result:=1 else result:=0;
  9: if (stellung[x,4]<>stellung[x-1,2]) and (farbe[x,4]=farbe[x-1,2]) AND (stellung[x,1]<>stellung[x-3,3]) and (farbe[x,1]=farbe[x-3,3]) then result:=1 else result:=0;
end;
End;


Procedure Drehen(y:integer);
VAR a,b:integer;
Begin
if gedreht<3 then begin
  a:=farbe[y,1];
  b:=stellung[y,1];
  for i:=1 to 3 do begin
    farbe[y,i]:=farbe[y,i+1];
    stellung[y,i]:=stellung[y,i+1];
  end;
  farbe[y,4]:=a;
  stellung[y,4]:=b;
  gedreht:=gedreht+1;
end else begin
  gedreht:=0;
  Sortieren(y);
end;
Könnt ihr da irgendwas erkennen?

Schöne Grüße B1nch3N
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz