100分求教:用SHFileOperation在c++ Builder中怎样一次复制多个文件?

wenw 2003-05-29 04:44:48
请问用SHFileOperation在c++ Builder中怎样一次复制多个文件?
请用实例来实现一次把不同目录中的文件复制到同一个目录中!
下面是复制一个文件或者目录的实例:
void OnFilecopy()
{
int nOk;
char strSrc[]="c:\\dos\0c:\\pwin98\\command\0";
//可以改变源路径

char strDst[]="c:\\temp\0";
//设置目的路径

char strTitle[]="File copying";
//进度题头

SHFILEOPSTRUCT FileOp;

FileOp.hwnd=NULL;

FileOp.wFunc=FO_COPY;

//执行文件拷贝

FileOp.pFrom=strSrc;

FileOp.pTo=strDst;

FileOp.fFlags=FOF_ALLOWUNDO;

FileOp.hNameMappings=NULL;

FileOp.lpszProgressTitle=strTitle;

nOk=SHFileOperation(&FileOp);

if(nOk)

TRACE("There is an error: %d\n",nOk);

else

TRACE("SHFileOperation finished successfully\n");

if(FileOp.fAnyOperationsAborted)

TRACE("Operation was aborted!\n");
}
...全文
39 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
invalid 2003-05-30
  • 打赏
  • 举报
回复
char strSrc[1024];
memset(strSrc,0,sizeof(strSrc));
int iPos=0;
strcpy(strSrc+iPos,Edit1->Text.c_str());
iPos+=Edit1->Text.Length()+1;
strcpy(strSrc+iPos,Edit2->Text.c_str());
iPos+=Edit2->Text.Length()+1;
上面的代码我编译通过了。
wenw 2003-05-30
  • 打赏
  • 举报
回复
strcpy(strSrc+iPos,Edit1->Text.c_str());
出现错误提示
[C++ Error] Unit1.cpp(370): E2034 Cannot convert 'const char *' to 'char *'

这个问题要怎么解决呢?
constantine 2003-05-29
  • 打赏
  • 举报
回复
学习
yingyys 2003-05-29
  • 打赏
  • 举报
回复
学习
kingfish 2003-05-29
  • 打赏
  • 举报
回复
memcpy
invalid 2003-05-29
  • 打赏
  • 举报
回复
这样就可以拷贝多个文件,可用如果我让用户自选选择多个目录,在目录相加时候就自动把
"\0"给去掉了,有什么办法来处理呢?
用strcpy操作啊。
char strSrc[1024];
memset(strSrc,0,sizeof(strSrc));
int iPos=0;
strcpy(strSrc+iPos,dir1);
iPos+=strlen(dir1)+1;
strcpy(strSrc+iPos,dir2);
iPos+=strlen(dir2)+1;

...

yuliwe 2003-05-29
  • 打赏
  • 举报
回复
请问用这个函数怎么删除文件夹啊?及其里面的所有文件
kingfish 2003-05-29
  • 打赏
  • 举报
回复
SHFILEOPSTRUCT lpfile;
lpfile.hwnd =Handle;
lpfile.wFunc=FO_COPY;
lpfile.fFlags=FOF_FILESONLY |FOF_MULTIDESTFILES;
lpfile.pFrom="c:\\1.txt\0c:\\2\\2.txt\0\0";
lpfile.pTo="c:\\3\0";
lpfile.fFlags=FOF_MULTIDESTFILES;
lpfile.fAnyOperationsAborted=true;
SHFileOperation(&lpfile);
wenw 2003-05-29
  • 打赏
  • 举报
回复
补充一点
char strSrc[]="c:\\dos\0c:\\pwin98\\command\0";
//可以改变源路径
这样就可以拷贝多个文件,可用如果我让用户自选选择多个目录,在目录相加时候就自动把
"\0"给去掉了,有什么办法来处理呢?

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧