首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Delphi 像Windows同样 新建文件时重复时 重命名文件名

2013-11-01 
Delphi 像Windows一样 新建文件时重复时 重命名文件名请看Windows在新建Text文本时是如何工作的?情况一:第

Delphi 像Windows一样 新建文件时重复时 重命名文件名
请看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 像Windows同样 新建文件时重复时 重命名文件名 DELPHI?
[解决办法]


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;

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

热点排行