使用 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;