AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Zugriffsverletzung Array
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriffsverletzung Array

Ein Thema von Murcielago82 · begonnen am 3. Jul 2006 · letzter Beitrag vom 3. Jul 2006
Antwort Antwort
Murcielago82

Registriert seit: 7. Apr 2006
30 Beiträge
 
#1

Zugriffsverletzung Array

  Alt 3. Jul 2006, 19:25
Hallo, ich speicher die Werte eines Stringgrid in ein array Copy_Sudoku.Will die Werte dann zurück ind Grid geben sräter und bekomme immer eine Zugriffsverletzung!

Delphi-Quellcode:
procedure TSudoku.generierenClick(Sender: TObject);
VAR anzahl,i,j,x,schwierigkeitsgrad,position_neu:integer;
copy_sudoku: array[0..80] of integer;
procedure copy_neu();
VAR y,z:integer;
begin
  x:=0;
  for y:= 0 to n-1 do // Alles reinigen!
      for z:= 0 to n-1 do
        begin
          copy_sudoku[x]:=strtoint(EigenschaftenGrid[y,z].wert);
          inc(x);
        end;
end;
procedure copy_alt();
VAR y,z:integer;
begin
  x:=0;
  for y:= 0 to n-1 do // Alles reinigen!
      for z:= 0 to n-1 do
        begin
          EigenschaftenGrid[i,y].wert:= inttostr(copy_sudoku[x]);
          inc(x);
        end;
end;
begin
  for x:=0 to 81 do // Verlauf reinigen!
    verlauf[x]:=0;

  for i:= 0 to n-1 do // Alles reinigen!
      for j:= 0 to n-1 do
          begin
          EigenschaftenGrid[i,j].wert:='0';
          StringGrid1.Cells[j,i]:='';
          end;

  case Schwierigkeitsauswahl.itemindex of // Schwierigkeit setzen
    0: begin
        schwierigkeitsgrad:= 30;
       end;
    1: begin
        schwierigkeitsgrad:= 50;
       end;
    2: begin
        schwierigkeitsgrad:= 70;
       end;
    end;


  erstellen_neu(StringGrid1); // erstellt ein zufällig voll gefülltes Sudoku
  copy_neu();
  repeat
  for i:= 0 to n-1 do // Alles reinigen!
      for j:= 0 to n-1 do
          begin
          EigenschaftenGrid[i,j].wert:='0';
          StringGrid1.Cells[j,i]:='';
          end;

  copy_alt(); ////Hier ist die Zugriffsverletzung!!!


  showmessage(inttostr(schwierigkeitsgrad));
  for x:=1 to schwierigkeitsgrad do // zahlen raus nehmen
    begin
      position_neu:= random(81)+1;
      wähle_zelle(position_neu);
      EigenschaftenGrid[starti,startj].wert:='0';
      EigenschaftenGrid[starti,startj].vorgegeben := 0;
    end;



  lösbar:= true;
  x:=0;
  for i:= 0 to n-1 do
    for j:= 0 to n-1 do
      begin
      if EigenschaftenGrid[i,j].wert <> '0then
        begin
        StringGrid1.Cells[j,i]:= EigenschaftenGrid[i,j].wert;
        verlauf[x]:= EigenschaftenGrid[i,j].Gridzellen_Nummer;
        inc(x);
        end
        else
        StringGrid1.Cells[j,i]:='';
      end;
   loesen_ausschluss(StringGrid1);

    for i:= 0 to n-1 do
      for j:= 0 to n-1 do
        if EigenschaftenGrid[i,j].wert = '0then
          lösbar:=false;

    if lösbar = false then
       begin
       for i:= 0 to n-1 do
          for j:= 0 to n-1 do
            begin
            EigenschaftenGrid[i,j].wert:= '0';
            StringGrid1.Cells[j,i]:='';
            end;
       end;
    x:=0;
    for i:= 0 to n-1 do
      for j:= 0 to n-1 do
        if EigenschaftenGrid[i,j].Gridzellen_Nummer = verlauf[x] then
            begin
            StringGrid1.Cells[j,i]:= EigenschaftenGrid[i,j].wert;
            EigenschaftenGrid[i,j].vorgegeben := 1;
            inc(x);
            end
            else
            begin
            EigenschaftenGrid[i,j].wert:= '0';
            StringGrid1.Cells[j,i]:='';
            EigenschaftenGrid[i,j].vorgegeben := 0;
            end;

until lösbar = true
end;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Zugriffsverletzung Array

  Alt 3. Jul 2006, 19:27
Welcher wert hat n?
Setzte mal einen Breakpoint in der Prozedur Copy_alt und schau dir das mal im dDbugger an.
Markus Kinzler
  Mit Zitat antworten Zitat
Murcielago82

Registriert seit: 7. Apr 2006
30 Beiträge
 
#3

Re: Zugriffsverletzung Array

  Alt 3. Jul 2006, 19:33
Ok Fehler selbst gefunden
Delphi-Quellcode:
procedure copy_alt();
VAR y,z:integer;
begin
  x:=0;
  for y:= 0 to n-1 do // Alles reinigen!
      for z:= 0 to n-1 do
        begin
          EigenschaftenGrid[i,y].wert:= inttostr(copy_sudoku[x]); // Hier muss es EigenschaftenGrid[z,y].wert
          inc(x);
        end;
end;
Danke für die Mühe
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:37 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