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...