帮帮我(100分)

  • 主题发起人 主题发起人 jklee
  • 开始时间 开始时间
J

jklee

Unregistered / Unconfirmed
GUEST, unregistred user!
在delphi中对一个文件夹重命名用什么命令啊????
 
//dos 下用move,给你个拷贝文件夹的例子,然后再删除原来的文件夹
function RenameFile(const OldName, NewName: string): Boolean;
function GetDirectory: String;
begin
if not SelectDirectory(Result, [sdAllowCreate, sdPerformCreate, sdPrompt], 0) then
Result := EmptyStr;
end;

procedure CopyDirectoryTree(AHandle: THandle; const AFromDirectory, AToDirectory: String);
var
SHFileOpStruct: TSHFileOpStruct;
FromDir: PChar;
ToDir: PChar;
begin

GetMem(FromDir, Length(AFromDirectory)+2);
try
GetMem(ToDir, Length(AToDirectory)+2);
try

FillChar(FromDir^, Length(AFromDirectory)+2, 0);
FillChar(ToDir^, Length(AToDirectory)+2, 0);

StrCopy(FromDir, PChar(AFromDirectory));
StrCopy(ToDir, PChar(AToDirectory));

with SHFileOpStruct do
begin
Wnd := AHandle; // Assign the window handle
wFunc := FO_COPY; // Specify a file copy
pFrom := FromDir;
pTo := ToDir;
fFlags := FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
fAnyOperationsAborted := False;
hNameMappings := nil;
lpszProgressTitle := nil;
if SHFileOperation(SHFileOpStruct) <> 0 then
RaiseLastWin32Error;
end;
finally
FreeMem(ToDir, Length(AToDirectory)+2);
end;
finally
FreeMem(FromDir, Length(AFromDirectory)+2);
end;
end;
CopyDirectoryTree(Handle, edtFromDir.Text, edtToDir.Text);
 
RenameFile('c:/temp' , 'c:/tttt');
 
不用楼上说得那么麻烦, 一个API就搞定了:
procedure TForm1.Button1Click(Sender: TObject);
begin
MoveFile(PChar(Edit1.Text), PChar(Edit2.Text));

end;

另外,建议直接用SysUtils单元为你封装好的RenameFile
它在Windows下是调用MoveFile,在linux下调用另外的函数,跨平台[:)]
function RenameFile(const OldName, NewName: string): Boolean;
begin
{$IFDEF MSWINDOWS}
Result := MoveFile(PChar(OldName), PChar(NewName));
{$ENDIF}
{$IFDEF LINUX}
Result := __rename(PChar(OldName), PChar(NewName)) = 0;
{$ENDIF}
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
RenameFile(Edit2.Text, Edit1.Text);

end;
 
多人接受答案了。
 
后退
顶部