我试图用一个程序将名称和分数保存到文本文件中,然后从另一个程序中的文件中加载它.问题在于引用每个名称而不是仅加载整个文件或仅加载名字.
它保存为:
scores = record
name: string[20];
Score: integer;
procedure TForm1.BtnSaveClick(Sender: TObject);
var
scoresFile: file of scores;
begin
scoresrecord.name := EdtName.Text;
scoresrecord.Score := Score;
assignfile(scoresFile, 'Teacher.txt');
rewrite(scoresFile);
write(scoresFile, scoresrecord);
closeFile(scoresFile);
end;
Run Code Online (Sandbox Code Playgroud)
并使用以下方法加载到字符串网格中
scores = record
name: string[20];
Score: integer;
var
ScoreRecord: scores;
scoresFile: file of scores;
StrGrdScores.Cells[0,0]:='Name';
StrGrdScores.Cells[1,0]:='Score';
assignfile(scoresFile, 'C:\Computing\AlgebraNew\Teacher.txt');
reset(scoresFile);
while not Eof(scoresFile) do
read(scoresFile, ScoreRecord);
closeFile(scoresFile);
for I := 1 to StrGrdScores.Row do
StrGrdScores.cells[0,i]:=ScoreRecord.name;
Run Code Online (Sandbox Code Playgroud)
这是我尝试加载名称,但它只是将文件中的第一个名称加载到每一行.当我弄清楚如何加载名称时,加载分数应该是显而易见的.任何帮助深表感谢.
您的保存过程似乎只将一条记录保存到文件中.
您的加载过程将每一行读入同一个变量,覆盖以前的值.在从文件中读取值时将值写入网格.
i = 0;
while not Eof(scoresFile) do
begin
read(scoresFile, ScoreRecord);
StrGrdScores.cells[0,i]:=ScoreRecord.name;
StrGrdScores.cells[1,i]:=ScoreRecord.Score;
inc(i);
end;
closeFile(scoresFile);
Run Code Online (Sandbox Code Playgroud)
在写入值之前,您可能需要在stringgrid中附加一行.
| 归档时间: |
|
| 查看次数: |
1553 次 |
| 最近记录: |