重新命名:
用MoveFile()或者下面的函数也可以。
//RenDirectory('d:\wt2','d:\bcde');
function RenDirectory(const OldName,NewName:string): boolean;
var
  fo: TSHFILEOPSTRUCT;
begin
  FillChar(fo, SizeOf(fo), 0);
  with fo do
  begin
    Wnd := 0;
    wFunc := FO_RENAME;
    pFrom := PChar(OldName+#0);
    pTo := pchar(NewName+#0);
    fFlags := FOF_NOCONFIRMATION+FOF_SILENT;
  end;
  Result := (SHFileOperation(fo) = 0);
end;
//Copy 多个文件的处理:
function CopyFiles(const Source,Dest: string): boolean;
var
  fo: TSHFILEOPSTRUCT;
begin
  FillChar(fo, SizeOf(fo), 0);
  with fo do
  begin
    Wnd := 0;
    wFunc := FO_COPY;
    pFrom := @source[1];
    pTo :=pchar(dest);
    fFlags := FOF_NOCONFIRMATION+FOF_NOCONFIRMMKDIR    ;
  end;
  Result := (SHFileOperation(fo) = 0);
end;procedure TForm1.Button1Click(Sender: TObject);
var
  str:string;
  i:integer;
begin
  if opendialog1.Execute then
  begin
    for i:=0 to OpenDialog1.Files.Count-1 do
     str:=str+OpenDialog1.Files.strings[i]+#0;
    showmessage(str);
    str:=str+#0;
    CopyFiles(str,'d:\temp');
  end;
end;

解决方案 »

  1.   

    文件拷贝:
    procedure mycopyfile(s,d:string);
    var
       sr,temp:tsearchrec;
    begin  if findfirst(s+'\*.*',faanyfile,sr)=0 then
      begin
        if (sr.name<> '.')and(sr.name<>'..') then
         begin
           if sr.Attr=fadirectory then
           begin
              if findfirst(d+'\'+sr.name,faanyfile,temp)=0 then
                 createdirectory(pchar(d+'\'+sr.name),lps);
              mycopyfile(s+'\'+sr.name,d+'\'+sr.name);
           end
           else
             copyfile(pchar(s+'\'+sr.name),pchar(d+'\'+sr.name),false);
          end;
        while findnext(sr)=0 do
        begin
        if (sr.name<> '.')and(sr.name<>'..') then
           if sr.Attr=fadirectory then
           begin
            if findfirst(PCHAR(d+'\'+sr.name),fadirectory,temp)<>0 then
                 createdirectory(pchar(d+'\'+sr.name),lps);
              temp:=sr;
              mycopyfile(s+'\'+sr.name,d+'\'+sr.name);
              sr:=temp;
           end
          else
          copyfile(pchar(s+'\'+sr.name),pchar(d+'\'+sr.name),false);
           
         end;
        findclose(sr);
      end;
    end;
      

  2.   

    重命名:
    注意要先关闭文件,
    varDataRec: TDataRec;
       BackFile: File of TDataRec;
    FileName: String;
    begin
        FileName:= GetCurrentDir + '\1.dat';
        AssignFile (BackFile,FileName);
        Rewrite(BackFile);
        ......
       Closefile(BackFlie);
        s := GetCurrentDir+ '\bb.dat';
       RenameFile(FileName, s);
    end;
      

  3.   

    重命名:
    注意要先关闭文件,
    varDataRec: TDataRec;
       BackFile: File of TDataRec;
    FileName: String;
    begin
        FileName:= GetCurrentDir + '\1.dat';
        AssignFile (BackFile,FileName);
        Rewrite(BackFile);
        ......
       Closefile(BackFlie);
        s := GetCurrentDir+ '\bb.dat';
       RenameFile(FileName, s);
    end;
      

  4.   

    改名例:
    uses Dialogs;
    var  f : file;
    begin
      OpenDialog1.Title := 'Choose a file... ';
      if OpenDialog1.Execute then 
      begin
        SaveDialog1.Title := 'Rename to...';
        if SaveDialog1.Execute then 
        begin 
          AssignFile(f, OpenDialog1.FileName);
          Canvas.TextOut(5, 10, 'Renaming ' + OpenDialog1.FileName + 
                         ' to ' + SaveDialog1.FileName);
          Rename(f, SaveDialog1.FileName);
        end;
      end;end;复制function CopyFileTo(const Source: string; const Destination: string): Boolean这个很好用。