Следующий код использует игру, сохраненный в текстовом файле в виде 0/8B1/8B1/8B1/1P6B1/1P8/7S2/7S2/1AAAAA1S2/5DDD2Паскаль Линкоры Loadgame
(например) и помещает правильные детали в доске. Цифры представляют собой серию последовательных пробелов, а/- новую строку. Буквы представляют судно в этой ячейке платы (двухмерный массив).
Когда я запускаю его он пришел вир с ВНЕШНЕГО SIGSEGV и показывает мне код сборки говоря 00403D61 833a00 CmpL $ 0x0, (% EDX)
Кто-нибудь знает, что случилось с ним, и как это исправить?
Procedure LoadGame(FileName : String; Var Board : TBoard);
Var
Line : String;
CurrentFile : Text;
Row , count : Integer;
column, counter: Integer;
Begin
AssignFile(CurrentFile, FileName);
Reset(CurrentFile);
Readln(CurrentFile, Line);
for counter := 1 to length(line) do
begin
if (Line[counter] in ['A'..'Z','m','h']) then
begin
board[row,column]:=line[counter];
column:=column+1;
end
else
if line[counter]='0' then
begin
for column := 0 to 9 do
begin
board[row,column]:='-';
end;
end
else
If line[counter]='/' then
begin
row :=row+1;
column:=0;
end
else
for count := 0 to (strtoint(line[counter])-1) do
begin
Board[row,column+count] :='-';
column:=column+1;
end;
end;
CloseFile(CurrentFile);
End;
Вы должны быть более точными с переменными 'row' и' column', которые изменяются хаотичными способами (для первого взгляда) внутри основного цикла. – Abelisto
Переполнение стека не является заменой для отладки –
Но есть и другие форумы, которые могут помочь с отладкой на StackExchange. Я не уверен на 100%, но думаю, что http://codereview.stackexchange.com/ может быть правильным выбором. –