Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Index überschreitet Maximum einer liste (https://www.delphipraxis.net/177588-index-ueberschreitet-maximum-einer-liste.html)

Octom 14. Nov 2013 19:32

Delphi-Version: 5

Index überschreitet Maximum einer liste
 
Ich versuche gerade ein Programm zu schreiben, dass das 8-Damen Problem lösen soll. Dabei habe ich ein stringgrid(8x8) und alle leeren felder werden mit einer 0 versehen. Das feld mit der platzierten Dame kriegt ein @ und die Felder, die die Dame bedroht sollen mit einem # versehen werden. Horizontal und vertikal funktioniert zwar alles, aber wenn ich versuche die diagonalen einzutragen kommt die Meldung, dass der index das maximum der liste(-1) überschreitet.

Delphi-Quellcode:
for d:=0 to (Stringgrid1.colcount-1) do begin
  Stringgrid1.Cells[col,0+d]:='#';                    
  Stringgrid1.cells[col, row]:='@';
end;
for d:=0 to (Stringgrid1.colcount-1) do begin
  Stringgrid1.Cells[0+d,row]:='#';                    
  Stringgrid1.cells[col, row]:='@';
end;
for d:=0 to (Stringgrid1.colcount-1) do begin          //notlösung
  Stringgrid1.Cells[col+d,row+d]:='#';                
  Stringgrid1.cells[col, row]:='@';
end;
for d:=0 to (Stringgrid1.colcount-(Stringgrid1.colcount-col)) do begin
  Stringgrid1.Cells[col-d,row-d]:='#';                  //notlösung
  Stringgrid1.cells[col, row]:='@';
Die ersten 3 schleifen funktionieren. die vierte funkioniert zwar manchmal, aber es kommt zu 100% zu einer fehlermeldung.

Ich programmier nicht sehr lange mit delphi, weshalb die frage wahrscheinlich eine banale antwort hat. ich komme aber nicht darauf.
Auch hab ich mich extra wegen dieser frage in diesem Forum angemeldet und es tut mir leid, falls ich irgendwas in der art des postens falsch gemacht habe

Volker Z. 14. Nov 2013 19:46

AW: Index überschreitet Maximum einer liste
 
Hallo,

schau mal in der letzten for-Schleife in die Zeile
Delphi-Quellcode:
Stringgrid1.Cells[col-d,row-d]:='#';

Wenn row >= d geht alles gut, gilt row < d dann scheppert es an der Stelle. Vielleicht mal mit einer if-Bedingung abfangen.

Gruß

Octom 14. Nov 2013 20:10

AW: Index überschreitet Maximum einer liste
 
Danke für die schnelle Hilfe! Hat auch gleich ein paar andere Probleme gelöst


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 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