我需要一些帮助来尝试将二维数组的内容保存到文件中。
首先,我不确定文件应该是什么类型等.txt或dat。
我已经编辑了该帖子,以便代码采用文本格式而不是图像。
这就是我到目前为止所得到的。
program CaptureTheSarum;
{$APPTYPE CONSOLE}
uses
SysUtils;
Const BoardDimension = 8;
Type
TBoard = Array[1..BoardDimension, 1..BoardDimension] Of String;
Var
Board : TBoard;
GameOver : Boolean;
StartSquare : Integer;
FinishSquare : Integer;
StartRank : Integer;
StartFile : Integer;
FinishRank : Integer;
FinishFile : Integer;
MoveIsLegal : Boolean;
PlayAgain : Char;
SampleGame : Char;
WhoseTurn : Char;
savedFile : text;
procedure InitialiseSave;
var
fileName : string;
begin
fileName := 'SavedGame.dat';
assignfile(savedfile,fileName);
if not fileexists(fileName)
then
begin
rewrite(savedfile);
closefile(savedfile)
end
{endif};
end;
procedure saveGame;
var
save : string;
RankNo,FileNo : integer;
begin
writeln('Would you like to save the Game?');
readln(save);
if (save = 'y') or (save = 'Y')
then
begin
reset(SavedFile);
write(SavedFile,board[fileno,Rankno]);
closeFile(SavedFile);
end
{endif};
要回答您的主要问题,您可以保存一个二维字符串数组,如下所示:
procedure TForm9.FileSaveClick(Sender: TObject);
var
i, j: integer;
fn: string;
fs: TFileStream;
fw: TWriter;
begin
fn := 'c:\tmp\mychessfile.dat';
fs := nil;
fw := nil;
try
fs := TFileStream.Create(fn, fmCreate or fmShareDenyWrite);
fw := TWriter.Create(fs, 1024);
for i := 1 to BoardDimension do
for j := 1 to BoardDimension do
fw.WriteString(Board[i, j]);
finally
fw.Free;
fs.Free;
end;
end;
随后,您可以使用以下命令将文件读回数组:
procedure TForm9.FileReadClick(Sender: TObject);
var
i, j: integer;
fn: string;
fs: TFileStream;
fr: TReader;
begin
fn := 'c:\tmp\mychessfile.dat';
fs := nil;
fr := nil;
try
fs := TFileStream.Create(fn, fmOpenRead or fmShareDenyWrite);
fr := TReader.Create(fs, 1024);
for i := 1 to BoardDimension do
for j := 1 to BoardDimension do
Board[i, j] := fr.ReadString;
finally
fr.Free;
fs.Free;
end;
end;
如你所见,我选择了通用目的.dat
扩展名,因为该文件还将包含二进制数据,例如每个文本的长度、数据类型等。这些详细信息由TWriter
/TReader
类。
您还应该考虑收到的有关文件结构选择的评论。
例如,谷歌搜索“国际象棋文件格式”(假设您正在开发国际象棋游戏),会出现便携式游戏符号 http://en.wikipedia.org/wiki/Portable_Game_Notation以及该页面的另一个参考:福赛斯-爱德华兹表示法 http://en.wikipedia.org/wiki/Forsyth%E2%80%93Edwards_Notation.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)