存储和读取2d数组从文本文件



我试图存储一个包含字符的2d数组,到一个以逗号分隔值(CSV)格式的文本文件中。我已经半能够将数组存储到文本文件中,但我不认为它将允许它被读取回,因为在数组结束的每行结束处没有新行(Board[1][8]),例如。我一直无法将信息读取回阵列。

这是我将数组存储到文本文件

的代码
Const 
  BoardDimension = 8;
 Type
    TBoard = Array[1..BoardDimension, 1..BoardDimension] Of String;
 procedure SaveGame(Board : Tboard);
    var
      FileNm : Textfile;
      RankCount : Integer;
      FileCount : Integer;
    begin
      Assignfile(Filenm, 'SavedGame.txt');
      Rewrite(Filenm);
      for RankCount :=1 to BoardDimension do
      begin
        for FileCount := 1 to BoardDimension-1 do
          begin
            write(Filenm,Board[RankCount,FileCount],',');
          end;
          write(Filenm,Board[RankCount,BoardDimension]);
      end;
      CloseFile(filenm);
      writeln('game saved');
    end;

这是我的代码读取文本文件回来,但我得到一个错误,其中指出,函数Copy2SymbDel是未声明的,但我已在using语句

中包含structils
procedure LoadGame(Var Board :TBoard);
    var
      Filenm : TextFile;
      RankCount : Integer;
      FileCount : Integer;
      Text : String;
    begin
      AssignFile(Filenm, 'SavedGame.txt');
      reset(Filenm);
      for RankCount := 1 to BoardDimension do
      begin
        readln(Filenm,text);
        for FileCount := 1 to BoardDimension -1 do
        begin
          Board[RankCount,FileCount] := Copy2SymbDel(Text, ',');
        end;
        Board[RankCount,BoardDimension] := Text;
      end;
    end;

如何在delphi/pascal中存储和读取2d数组

谢谢

Copy2SymbDel是一个在Delphi中不可用的FreePascal库函数。它是这样描述的:

function Copy2SymbDel(
  var S: string;
  Symb: Char
):string;

Copy2SymbDel决定Symb第一次出现的位置并返回该位置之前的所有字符。的符号字符本身不包含在结果字符串中。所有返回的字符和Symb字符,将从字符串S,之后它被右修剪。如果符号没有出现在S,则返回整个S,并清空S本身。

在Delphi中可以这样实现:

function Copy2SymbDel(var S: string; Symb: Char): string;
var
  I: Integer;
begin
  I := Pos(Symb, S);
  if I = 0 then
  begin
    Result := S;
    S := '';
  end
  else
  begin
    Result := Copy(S, 1, I-1);
    S := TrimRight(Copy(S, I+1, MaxInt));
  end;
end;

相关内容

  • 没有找到相关文章

最新更新