Einzelnen Beitrag anzeigen

Benutzerbild von qb-tim
qb-tim

Registriert seit: 3. Mär 2006
Ort: Deutschland
280 Beiträge
 
Delphi 6 Professional
 
#1

Zugriffsverletzung / EAccessViolation => Brauche Hilfe

  Alt 9. Jan 2008, 16:07
Hi,

für einer meiner Programme habe ich bei einem OnClick folgenden Code:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var x, y, z, count: Integer;
begin
  ResetPossible();
  for y := 1 to 9 do
    for x := 1 to 9 do
      if StringGrid1.Cells[x-1, y-1] <> 'then
      begin
        Preset[x, y] := True;
        for z := 1 to 9 do
          Possible[x, y, z] := False;
      end else
        Preset[x, y] := False;
  for y := 1 to 9 do
    for x := 1 to 9 do
      if Preset[x, y] then
        ExcludeAll(x, y, StrToInt(StringGrid1.Cells[x-1, y-1]));
  for y := 1 to 9 do
    for x := 1 to 9 do
      if not Preset[x, y] then
      begin
        count := 0;
        for z := 1 to 9 do
          if Possible[x, y, z] then
            count := count + 1;
        if count = 1 then
          for z := 1 to 9 do
            if Possible[x, y, z] then
              StringGrid1.Cells[x-1, y-1] := IntToStr(z);
      end;
end;
Leider gibt es da ein großes Problem... Jedesmal, wenn die Prozedur fertig ist kommen tausende Zugriffsverletzungs-Meldungen ("EAccessViolation"). Mir ist das unverständlich... Kann mir jemand vielleicht helfen...

Globale Variablen:
Delphi-Quellcode:
var
  Possible: Array[1..9, 1..9, 1..9] of Boolean;
  Preset: Array[1..9, 1..9] of Boolean;
StringGrid1:
=> Hat immer 9 Spalten und 9 Reihen
=> Cells enthalten immer nur ein Integer

Prozeduren:
ResetPossible => Setzt alle Possible-Booleans auf True
ExcludeAll => Auswertung des in der Tabelle vorkommenden Integers
(In beiden Prozeduren kommt kein Fehler jemals vor)


Ich habe überprüft wo genau der Fehler liegen könnte und bemerkt, dass es erst auftritt nachdem die gesamte Prozedur abgehandelt wurde... (Breakpoint auf den letzten 'end;' der Prozedur gesetzt => Bis dahin kein Fehler, danach ja).

Außerdem: Der Fehler markiert immer das 'end.' nach 'Application.Run;' in der dpr Datei.


Ich wäre für jede Hilfe äußerst dankbar...
  Mit Zitat antworten Zitat