使用 AssignFile() 在地址 00404094 访问违规;
Access of violation at address 00404094 with AssignFile();
几个月没碰它后,我又回到了 Delphi。只是想稍微提一下脑筋。
我一直在 AssignFile();
遇到访问冲突。我正在做的只是通过文本文件将姓名列表读入丰富的编辑中。
procedure TForm1.btn1Click(Sender: TObject);
var
k : Integer;
MyArray : array[1..1000] of string;
begin
k := 1;
AssignFile(MyFile, 'names.txt');
Reset(MyFile);
while not Eof(MyFile) do // <-- Here is the error
begin
readln(MyFile, MyArray[k]);
redOut.Lines.Add(MyArray[k]);
Inc(k);
end;
CloseFile(MyFile);
end;
我记得我曾多次发现此错误 Delphi,但我记得在收到错误时没有使用 CloseFile();
或 Reset();
。
根据该代码,很难看出错误的来源。一种可能性是您注销了静态大小数组的末尾。
根本不需要数组。您可以使用 string
类型的单个变量来读取每一行。
虽然这样会更容易:
procedure TForm1.btn1Click(Sender: TObject);
begin
redOut.Lines.LoadFromFile('names.txt');
end;
几个月没碰它后,我又回到了 Delphi。只是想稍微提一下脑筋。
我一直在 AssignFile();
遇到访问冲突。我正在做的只是通过文本文件将姓名列表读入丰富的编辑中。
procedure TForm1.btn1Click(Sender: TObject);
var
k : Integer;
MyArray : array[1..1000] of string;
begin
k := 1;
AssignFile(MyFile, 'names.txt');
Reset(MyFile);
while not Eof(MyFile) do // <-- Here is the error
begin
readln(MyFile, MyArray[k]);
redOut.Lines.Add(MyArray[k]);
Inc(k);
end;
CloseFile(MyFile);
end;
我记得我曾多次发现此错误 Delphi,但我记得在收到错误时没有使用 CloseFile();
或 Reset();
。
根据该代码,很难看出错误的来源。一种可能性是您注销了静态大小数组的末尾。
根本不需要数组。您可以使用 string
类型的单个变量来读取每一行。
虽然这样会更容易:
procedure TForm1.btn1Click(Sender: TObject);
begin
redOut.Lines.LoadFromFile('names.txt');
end;