Einzelnen Beitrag anzeigen

DirectFromHell

Registriert seit: 14. Mär 2005
14 Beiträge
 
Delphi 2005 Personal
 
#1

Stack Überlaufen in einer Rekursion

  Alt 16. Jun 2005, 20:28
Hallo,

ich versuche mich gerade an einem MineSweeper Klon (Die Frage passt trotzdem nicht in den Mulimedia Bereich). Jetzt bekomme ich wenn ich leere Felder aufdecken will einen Stack Überlauf. Ich benutzte eine Rekursive Prozedur um alle aufzudecken. Jetzt kommen ja solche Stack Überlaufungen ja eigentlich nur bei Endlosschleifen, und nicht einfach bei solch Rekursiven PR's. Also ich hoffe, dass ihr vielleicht aus dem Code sehen könnt warum ich diesen Fehler bekomme. Ich bin mit meinem Latein am Ende .
Delphi-Quellcode:
PROCEDURE TForm1.GetArea(x,y: Integer);
BEGIN (* PROC TForm1.GetArea *)
  field[x,y].hidden := false;
  field[x,y].q := false;
  IF field[x,y].Index = 14 THEN // 14 steht für ein leeres Feld, d.h. die umliegenden müssen aufgedeckt werden
  BEGIN (* IF field[x,y].Index = 14 *)
    IF (x>0) AND (y>0) THEN
      GetArea (x-1, y-1);
    IF x > 0 THEN
      GetArea (x-1, y);
    IF y > 0 THEN
      GetArea (x, y-1);
    IF x < 9 THEN
      GetArea (x+1, y);
    IF y < 9 THEN
      GetArea (x, y+1);
    IF (x<9) AND (y<9) THEN
      GetArea (x+1, y+1);
    IF (x<9) AND (y>0) THEN
      GetArea (x+1, y-1);
    IF (x<0) AND (y<9) THEN
      GetArea (x-1, y+1);
  END; (* IF field[x,y].Index = 14 *)
END; (* PROC TForm1.GetArea *)
Danke für alle antworten!
"Take A Look To The Sky Just Before You Die,
It's The Last Time You Will!"
- James Hetfield
  Mit Zitat antworten Zitat