【发布时间】:2015-08-28 01:34:38
【问题描述】:
使用 Delphi 7,我需要将所有内容(文件、文件夹和子文件夹)从一个文件夹移动到另一个文件夹。经过一番研究, SHFileOpStruct 似乎是最好的选择。这是我到目前为止得到的:
function MoveDir(SrcDir, DstDir: string): Boolean;
var
FOS: TSHFileOpStruct;
begin
ZeroMemory(@FOS, SizeOf(FOS));
with FOS do
begin
wFunc := FO_MOVE; // FO_COPY;
fFlags := FOF_FILESONLY or
FOF_ALLOWUNDO or FOF_SIMPLEPROGRESS;
pFrom := PChar(SrcDir + #0);
pTo := PChar(DstDir + #0);
end;
Result := (SHFileOperation(FOS) = 0);
end;
但是当使用这个功能时,整个文件夹被移动到目的地,而不仅仅是它的内容。例如,如果我使用 MoveDir('c:\test', 'd:\test') 我会得到 d:\teste\teste。
我已经尝试在下面更改此行,它在复制文件 (FO_COPY) 时有效,但在移动时无效。
pFrom := PChar(SrcDir + '\*.*' + #0);
请,有人可以帮我解决这个问题吗?如果我可以在不逐个文件、逐个文件夹移动的情况下做到这一点,那就太好了……
谢谢!!
【问题讨论】:
-
您的代码(第二个版本,带有
'\*.*')对我有效,只需删除FOF_FILESONLY标志...您使用的是什么Windows 版本,返回什么错误代码? -
@GabrielF,你是对的!问题是“FOF_FILESONLY”标志...请添加您的答案让我接受...谢谢!