procedure TForm2.Button4Click(Sender: TObject);
var
    DD : integer;
    fname2:string;
    CKWJ:textfile;begin  try
     if Savedialog1.Execute then
     begin
        fname2:=savedialog1.FileName;
        Edit5.Text:=fname2;
        assignfile(CKWJ,fname2);
        rewrite(CKWJ);        writeln(CKWJ,DD);     end;
     Closefile(CKWJ);    // 报错 I/O error 103  (怎么才能让点击取消显示下面的信息呢?)
  except
    Closefile(CKWJ);
    ShowMessage('  注意:用户取消保存!');
  end;end;

解决方案 »

  1.   

    把except中的Closefile去掉,外部运行时,如果出错,就会提示了
      

  2.   

    procedure TForm2.Button4Click(Sender: TObject);
    var
      DD:integer;
      fname2:string;
      CKWJ:textfile;
    begin
      try
      if Savedialog1.Execute then
      begin
      fname2:=savedialog1.FileName;
      Edit5.Text:=fname2;
      assignfile(CKWJ,fname2);
      rewrite(CKWJ);
      writeln(CKWJ,DD);
      end;
      Closefile(CKWJ); // 报错 I/O error 103 (怎么才能让点击取消显示下面的信息呢?)
      except
      Closefile(CKWJ);//註釋此句試試
      ShowMessage(' 注意:用户取消保存!');
      end;
    end;
      

  3.   

    去掉except中的 Closefile(CKWJ);后
    还是原来那行报错:Project raised exception class EInOutError with message I/O error 103.麻烦高手指点啊
      

  4.   

    不会的,你把那句去掉了吗?var
      DD : integer;
      fname2:string;
      CKWJ:textfile;begin  try
      if Savedialog1.Execute then
      begin
      fname2:=savedialog1.FileName;
      Edit1.Text:=fname2;
      assignfile(CKWJ,fname2);
      rewrite(CKWJ);  writeln(CKWJ,DD);  end;
      Closefile(CKWJ); // 报错 I/O error 103 (怎么才能让点击取消显示下面的信息呢?)
      except
      //Closefile(CKWJ);
      ShowMessage(' 注意:用户取消保存!');
      end;end;
      

  5.   

    或者这样试试var
      DD : integer;
      fname2:string;
      CKWJ:textfile;begin  try
      if Savedialog1.Execute then
      begin
      fname2:=savedialog1.FileName;
      Edit1.Text:=fname2;
      assignfile(CKWJ,fname2);
      rewrite(CKWJ);  writeln(CKWJ,DD);  Closefile(CKWJ);
      end;
      except
      //Closefile(CKWJ);
      ShowMessage(' 注意:用户取消保存!');
      end;
      

  6.   

    多谢 lovelymelon
    把 Closefile(CKWJ);  放到end; 前面就好了
    呵呵
      

  7.   

    这是肯定的,except 只有在遇到异常的时候才会抛出,