if FileExists(FileName) then  if MessageDlg('Do you really want to delete ' + ExtractFileName(FileName) + '?'), mtConfirmation, [mbYes, mbNo], 0, mbNo) = IDYes then 
    DeleteFile(FileName);

解决方案 »

  1.   

    谢谢楼上的回复,偶还有一问,为什么我得try except
    抓不到那个EInOutError呢?尽管找不到文件,程序也
    不显示showmessage重的内容阿?
      

  2.   

    Assignfile(f,old_name);
    try
    --->
    try     
    Assignfile(f,old_name);
      

  3.   

    一,例外是不是EInOutException?
    二,例外是由AssignFile引发,还是由Rename引发?
    这两个问题弄清楚,就可以抓住了。
      

  4.   

    是由rename引起的吧,因为停在这里出现了提示,提示的错误类型就是EInOutException,具体的是file not find
      

  5.   

    FileExists有时间检查不出来
      //文件Create,
      F := TFileStream.Create(Filename, fmCreate);
      // 
      if not FileExists(FileName) then
        S := TFileStream.Create(FileName, fmCreate) else
        S := TFileStream.Create(FileName, fmOpenReadWrite);上面的代码会出错,FileExists只能检查已经建立过一段时间的文件,
    用CreateFile来检查就可以
      

  6.   

    if not fileExists(filename) then showmessag('file not exists')
     else
     begin
      ///
     end;
      

  7.   

    old_name:=flatedit1.Text+trim(dxdbgrid1D12.Field.AsString)+flatcombobox1.Text;
            new_name:=flatedit1.Text+trim(dxdbgrid2D12.Field.AsString)+flatcombobox1.Text;
         if fileexits(filename)then
           begin     
            if old_name<>new_name then
            begin
            Assignfile(f,old_name);
            try
            rename(f,new_name);
            except
               on EInOutError do showmessage('找不到文件');
            end;
           end;
            end;
      

  8.   

    FileExists(FileName)旧可以的了,
      

  9.   

    同意redlegend_126_com(redlegend)的 ,
       先判断FileExists(FileName)就可以了,搞这么复杂!