Я пытаюсь очистить stringgrid, но получаю сообщение о несогласованном нарушении прав доступа, которое появляется после очистки последнего столбца. Вот код:
procedure ClearTable;
var
i:integer;
begin
for i := 0 to 3 do
begin
frmHighscores.HighscoreTable.Cols[i].Clear;
end;
end;
И вот процедура, которая его вызывает:
procedure TfrmHighscores.sortbtnClick(Sender: TObject);
var
SortedScores :array of Thighscore;
i: integer;
Ascending:boolean;
begin
ClearTable;
Case sortRGP.ItemIndex of
0: Ascending := False;
1: Ascending :=True;
end;
AssignFile(HighScoreFile, 'HighScoreFile.DAT');
Reset(HighScoreFile);
If Filesize(Highscorefile) <= 1 then
begin
showmessage('There arent enough items to sort!');
end;
If Filesize(Highscorefile) > 1 then
begin
SetLength(SortedScores, Filesize(Highscorefile)-1);
i:=0;
While not eof(HighScoreFile) do
begin
Read(Highscorefile, Highscore[i+1]);
sortedScores[i].Name := Highscore[i+1].Name;
sortedScores[i].Score := Highscore[i+1].Score;
sortedScores[i].DateSet := Highscore[i+1].DateSet;
sortedScores[i].Difficulty := Highscore[i+1].Difficulty;
inc(i);
end;
Closefile(highscorefile);
Quicksort(SortedScores, Low(SortedScores), High(SortedScores)+1, Ascending);
end;
end;
Сообщение об ошибке, когда я пытаюсь запустить его,
Ошибка проекта C:\Users\Owner\V0.66\Project1.exe с сообщением: «Нарушение доступа
по адресу 0x00401c51: запись адреса 0x00316572». Процесс остановлен. Используйте Step или Run
, чтобы продолжить.
Ошибка исчезает, когда я меняю код на это:
procedure ClearTable;
var
i:integer;
begin
for i := 0 to 3 do
begin
showmessage('Attempting to clear Col ' +inttostr(i));
frmHighscores.HighscoreTable.Cols[i].Clear;
showmessage('Col ' +inttostr(i) + ' cleared successfully');
end;
end;