Search code examples
delphidelphi-7openfiledialogsavefiledialogfiledialog

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


In my program I have an openfiledialogue and a savefiledialogue. Whenever I press cancel in these dialogue I get an I/O error 6. How do I remove this error?

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;

Solution

  • You have to check the return value of dlgOpen1.Execute:

    if not dlgOpen1.Execute then
        Exit;