我试图存储一个包含字符的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语句
中包含structilsprocedure 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;