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

问题描述

在我的程序中,我有一个openfile对话和一个savefile对话。每当我在这些对话框中按取消时,都会收到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如果用户取消对话框,则返回false。

,

您必须检查dlgOpen1.Execute的返回值:

if not dlgOpen1.Execute then
    Exit;

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...