2015-05-31 3 views
0

попытались сохранить эту шахматную доску в текстовом файле и столкнулись с этой ошибкой.Сохранение шахматной доски в текстовом файле delphi

Просто для некоторой ясности переменной платы:

Const BoardDimension = 8; 

Type 
    TBoard = Array[1..BoardDimension, 1..BoardDimension] Of String; 

Procedure SaveBoard(Var Board : TBoard); 
var 
    fptr:text; 
    i,j:integer; 
    save:char; 
begin 
    Write('Do you want a save a game? (Enter Y for yes)'); 
    Readln(save); 
    If (Ord(save) >= 97) and (Ord(save) <= 122) 
    Then save := Chr(Ord(save) - 32); 
    if save='Y' 
    then 
    begin 
     assign(fptr,'SBoard.txt'); 
     rewrite(fptr); 
     reset(fptr); 

     for i := 1 to 8 do 
     begin 
     for j := 1 to 8 do 
      begin 
      if j=8 then 
       writeln(fptr,Board[i,j]) 
      else 
       begin 
       write(fptr,Board[i,j]); 
       write(fptr,',') 
       end 
      end; 
     end; 
     close(fptr); 
    end; 
end; 

захват экрана ошибки. Также экранный захват строки вызвал ошибку.

enter image description here

enter image description here

ответ

2

I/O ошибки 105 является "файл не открыт для вывода". Это происходит потому, что этот код является неправильным:

rewrite(fptr); 
reset(fptr); 

Вызов reset делает файл только для чтения. Просто удалите его, поскольку он не имеет никакой цели. Вызов rewrite создает новый файл и открывает его для записи.

+1

Удалил мой дублированный ответ, поскольку я был слишком медленным. Это было потому, что я должен был освежить свою память. @Aleem взгляните на классы Stream. –

Смежные вопросы