在 delphi 中取消文件对话框时如何防止 I/O 6

How do you prevent I/O 6 when canceling a filedialog in delphi

在我的程序中,我有一个打开文件对话和一个保存文件对话。每当我在这些对话框中按取消时,我都会收到 I/O 错误 6。如何删除此错误?

procedure TForm1.Open1Click(Sender: TObject);
var
  s: string;

  // Declares a file type for storing lines of text
  t: TextFile;
begin
  mmo1.Lines.Clear;

  // Set up the starting directory to be the current one
  dlgOpen1.InitialDir := 'Libraries\Documents';

  // Opens the file Dialogue
  dlgOpen1.Execute;

  // Assigns contents of the chosen
  AssignFile(t, dlgOpen1.FileName);

  // Opens a file given by FileHandle for read, write or read and write access
  // Must use AssignFile to assign a file to the FileHandle before using Reset
  Reset(t);

  // The While keyword starts a control loop that is executed as long as the
  // - Expression is satisfied (returns True)
  // The Eof function returns true if the file given by FileHandle is at the end
  // All this essentialy adds the contents of the text file, line by line until
  // - there is no more text to be added
  while not Eof(t) do
  begin

    // Reads a complete line of data from a text file
    Readln(t, s);

    mmo1.Lines.Add(s);
  end;
  CloseFile(t);

end;

你必须做到:

if dlgOpen1.Execute then
begin
    // ...all your file management here
end;

dlgOpen1.execute return 如果用户取消对话则为 false。

您必须检查 dlgOpen1.Execute 的 return 值:

if not dlgOpen1.Execute then
    Exit;