为什么这个复制文件函数在复制硬盘上的文件没问题,而复制光盘的文件就出现了任何文件夹(包括其中的文件)都不会被复制? 仅仅复制文件。
------------
函数如下:(功能:把源目录下所有文件及子目录 复制到目标目录)
function DoCopyDir(sDirName:String;sToDirName:String):Boolean;
var
F: TSearchRec;
t,tfile:String;
sCurDir:String[255];
FindFileData:WIN32_FIND_DATA;
begin
sCurDir:=GetCurrentDir;
ChDir(sDirName);
F.FindHandle:=FindFirstFile('*.*',FindFileData);
if F.FindHandle<>INVALID_HANDLE_VALUE then begin
if not DirectoryExists(sToDirName) then {如果目录不存在}
ForceDirectories(sToDirName); {强迫建立目录}
repeat
tfile:=FindFileData.cFileName;
if (tfile='.') or (tfile='..') then
Continue; {跳过两个目录标识}
if FindFileData.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORY then begin
t:=sToDirName+'\'+tfile;
if not DirectoryExists(t) then
ForceDirectories(t);
if sDirName[Length(sDirName)]<>'\' then
DoCopyDir(sDirName+'\'+tfile,t)
else
DoCopyDir(sDirName+tfile,sToDirName+tfile);
end
else begin {Copy Files under directories}
t:=sToDirName+'\'+tFile;
{show a message of copying}
{may be set a Golbal variant to VirDir}
Form_Installing.ToFile.Caption := '';
Form_Installing.ToFile.Repaint;
Form_Installing.ToFile.Caption:= t;
Form_Installing.ToFile.Repaint;
CopyFile(PChar(tfile),PChar(t),false);
Form_Installing.ProgressBar1.StepBy(1); {Show The ProgressBar status ;}
end;
until FindNextFile(F.FindHandle,FindFileData)=false;
FindClose(F);
end
else begin
ChDir(sCurDir);
result:=false;
exit;
end;
ChDir(sCurDir); {回到原来的目录下}
result:=true;
end;
------------
函数如下:(功能:把源目录下所有文件及子目录 复制到目标目录)
function DoCopyDir(sDirName:String;sToDirName:String):Boolean;
var
F: TSearchRec;
t,tfile:String;
sCurDir:String[255];
FindFileData:WIN32_FIND_DATA;
begin
sCurDir:=GetCurrentDir;
ChDir(sDirName);
F.FindHandle:=FindFirstFile('*.*',FindFileData);
if F.FindHandle<>INVALID_HANDLE_VALUE then begin
if not DirectoryExists(sToDirName) then {如果目录不存在}
ForceDirectories(sToDirName); {强迫建立目录}
repeat
tfile:=FindFileData.cFileName;
if (tfile='.') or (tfile='..') then
Continue; {跳过两个目录标识}
if FindFileData.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORY then begin
t:=sToDirName+'\'+tfile;
if not DirectoryExists(t) then
ForceDirectories(t);
if sDirName[Length(sDirName)]<>'\' then
DoCopyDir(sDirName+'\'+tfile,t)
else
DoCopyDir(sDirName+tfile,sToDirName+tfile);
end
else begin {Copy Files under directories}
t:=sToDirName+'\'+tFile;
{show a message of copying}
{may be set a Golbal variant to VirDir}
Form_Installing.ToFile.Caption := '';
Form_Installing.ToFile.Repaint;
Form_Installing.ToFile.Caption:= t;
Form_Installing.ToFile.Repaint;
CopyFile(PChar(tfile),PChar(t),false);
Form_Installing.ProgressBar1.StepBy(1); {Show The ProgressBar status ;}
end;
until FindNextFile(F.FindHandle,FindFileData)=false;
FindClose(F);
end
else begin
ChDir(sCurDir);
result:=false;
exit;
end;
ChDir(sCurDir); {回到原来的目录下}
result:=true;
end;
解决方案 »
- inno setup RegQueryMultiStringValue函数得不到值
- 如何打印输出表格!
- 请问如何允许零长度字串呢?
- 怎样使statusbar自适应宽度
- 水晶报表9在delphi中该如何制作打包程序?
- 急!如何在richedit里改变其中某几个字的颜色?
- 求救:实现远程登录管理网络是用dephi编程还是用SQLServer实现?
- 一个有趣的问题,图形高手,思想开拓者,请进!!300相送!!upz者有分!!参与有分!!解决高分!!谢谢!
- Quickreport 中的 preview控件如何使用?
- DELPH6中文版,哪里可以买到啊
- 怎样在硬盘上建立文件夹
- 程序退出时出错,错误文本: Runtime error 216 at 004039B6,这是怎么回事?
判断不出来光盘的目录 因为它只读所以FILE_ATTRIBUTE_DIRECTORY+FILE_SHARE_READ
---
非常谢谢您的帮忙!我应该怎样修改才可以呢?
[email protected]
哇!太谢谢你啦~~
-----------
[email protected]
FILE_ATTRIBUTE_DIRECTORY 与只读属性有什么关系吗?
一个DIRECTORY不管你是不是只读,它都会是个DIRECTORY的!
-------
真的有点莫名其妙呢
---------------
高手帮忙阿
你用if (FindFileData.dwFileAttributes and 16)=FILE_ATTRIBUTE_DIRECTORY then
替换
if FindFileData.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORY then
就可以了
--------------------------------
您的热心我很感谢!应该您的答案可以解决我的问题,(等会去刻个光盘试试)--------------
非常谢谢,(很快就结帐的:) !)
回复人: smartcreater01(她们的胸部疲劳了我的双眼)
...
------------------寒一下这位朋友的昵称 -_-@@