请看Windows在新建Text文本时是如何工作的?情况一:    第1次新建一个Txt文本 文件名为 新建文本文档    第2次新建一个Txt文本 文件名为 新建文本文档 (2)    第3 次新建一个Txt文本 文件名为 新建文本文档 (3)        ...    第n 次新建一个Txt文本 文件名为 新建文本文档 (n)
情况二:    第1次新建一个Txt文本 文件名为 新建文本文档    第2次新建一个Txt文本 文件名为 新建文本文档 (2)    第3 次新建一个Txt文本 文件名为 新建文本文档 (3)        ...    第n 次新建一个Txt文本 文件名为 新建文本文档 (n)  假设把 新建文本文档 这个文件删除 再次新建文件时的文件名又会是  新建文本文档Windows在创建文件时会判断某个文件是否存在,请问如何用Delphi实现这样的功能?保存文件就用Memo1.Lines.SaveToFile( );行了如何实现这个 文件重命名是关键
DELPHI 

解决方案 »

  1.   

     DELPHI 重命名文件名时 文件存在自动重命名
      
     http://www.cnblogs.com/xe2011/p/3384241.html
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Dir, FileTitle, FileExt: string;
      s,s1: string;
      j:Integer;
    begin
      Dir := 'C:\';
      FileTitle := '新建 文本文档';
      FileExt := '.txt';
      s1:=Dir+FileTitle+FileExt;  j:=2;
      if FileExists(s1)  then  //C:\新建 文本文档.txt
      begin
        s:=Format('%s%s(%d)%s', [dir, FileTitle, j, FileExt]);
        while FileExists(s) do
        begin
            Inc(j);
            s := Format('%s%s(%d)%s', [dir, FileTitle, j, FileExt]);
        end;    if not FileExists(s) then Memo1.Lines.SaveToFile(s);
        end
      else
         Memo1.Lines.SaveToFile(s1);
    end;
      

  2.   


    var
      Buf: TStringList;
      i: Integer;
      S, s1, sName, sExt: AnsiString;
    begin
      sExt := '.txt';
      sName := '新建文本文件';
      s := sName + sExt;
      i := 1;
      if FileExists(s) then
      begin
        begin
          s1 := sName + '(' + inttostr(i) + ')' + sExt;
          while FileExists(s1) do
          begin
            Inc(i);
            s1 := sName + '(' + inttostr(i) + ')' + sExt;
          end;
        end;
        begin
          Buf := TStringList.Create;
          Buf.SaveToFile(s1);
          Buf.Free;
        end;
      end
      else
      begin
        Buf := TStringList.Create;
        Buf.SaveToFile(s);
        Buf.Free;
      end;
    end;
      

  3.   


    var
      Buf: TStringList;
      i: Integer;
      S, s1, sName, sExt: AnsiString;
    begin
      sExt := '.txt';
      sName := '新建文本文件';
      s := sName + sExt;
      i := 1;
      try
        Buf := TStringList.Create;
        if FileExists(s) then
        begin
          begin
            s1 := sName + '(' + inttostr(i) + ')' + sExt;
            while FileExists(s1) do
            begin
              Inc(i);
              s1 := sName + '(' + inttostr(i) + ')' + sExt;
            end;
          end;
          begin
            Buf.SaveToFile(s1);
          end;
        end
        else
        begin
          Buf.SaveToFile(s);
        end;
      finally
        FreeAndNil(Buf);
      end;
    end;
      

  4.   

    判断文件是否存D中有相关的函数可用。FileExists
      

  5.   

    问题已经解决了
     http://www.cnblogs.com/xe2011/p/3384241.html
      

  6.   


    我的TStringGrid控件每当行增加时,它旁边的滚动条总是向上滚,不方便看数据,我找了下属性没看到怎样设置让它的滚动条自动向下滚的,请问这要怎么设置??
      

  7.   

    太费事的话直接用shell api SHFileOperation,创建文件或目录自动重命名、删除带子目录的目录都是相当方便可靠。