拷贝文件夹时很奇怪的有关问题,请各位帮助
拷贝文件夹时很奇怪的问题,请各位帮助. - C++ Builder / Windows SDK/API
各位我写了一个按钮Button的click如下(想拷走这个执行文件同目录下的file文件所有内容大约有100M左右):
AnsiString path = ExtractFilePath(Application->ExeName);
SHFILEOPSTRUCT op;
String strFrom = path + "\\file\\*.*\0", strTo = Edit1->Text + "\0";
op.hwnd = NULL;
op.wFunc = FO_COPY;
op.pFrom = strFrom.c_str();
op.pTo = strTo.c_str();
op.fFlags = FOF_WANTNUKEWARNING;
//判断如果执行成功代表可以继续以后步骤,否则停止
if (::SHFileOperation(&op))
{
MessageBox(Handle, "操作系统错误,安装失败!", "提示", MB_OK|MB_ICONSTOP);
return;
}
else
{
ShowMessage("successful");
}
我就想请问各位,为什么代码在我自己的机器上就能够成功运行. 但是到其它机器上面运行, 拷贝时则显示"无法复制 文件:无法读源文件或磁盘", 我换了两台机器都这样. 请问这是什么问题呀. 我急死了, 哪位有经历过的请指点一下.
------解决方案--------------------
不同意1楼的说法
问题是 SHFileOperation 使用的文件、文件夹名称是使用两个 \0 来表示结束的
你用了 strFrom.c_str(); 虽然你的 strFrom 有两个 \0 但是 c_str() 并没有两个 \0 的
你还是使用字符数组,先 ZeroMemory 整个字符数组,在拷贝 strFrom.c_str(); 进去即可
各位我写了一个按钮Button的click如下(想拷走这个执行文件同目录下的file文件所有内容大约有100M左右):
AnsiString path = ExtractFilePath(Application->ExeName);
SHFILEOPSTRUCT op;
String strFrom = path + "\\file\\*.*\0", strTo = Edit1->Text + "\0";
op.hwnd = NULL;
op.wFunc = FO_COPY;
op.pFrom = strFrom.c_str();
op.pTo = strTo.c_str();
op.fFlags = FOF_WANTNUKEWARNING;
//判断如果执行成功代表可以继续以后步骤,否则停止
if (::SHFileOperation(&op))
{
MessageBox(Handle, "操作系统错误,安装失败!", "提示", MB_OK|MB_ICONSTOP);
return;
}
else
{
ShowMessage("successful");
}
我就想请问各位,为什么代码在我自己的机器上就能够成功运行. 但是到其它机器上面运行, 拷贝时则显示"无法复制 文件:无法读源文件或磁盘", 我换了两台机器都这样. 请问这是什么问题呀. 我急死了, 哪位有经历过的请指点一下.
------解决方案--------------------
不同意1楼的说法
问题是 SHFileOperation 使用的文件、文件夹名称是使用两个 \0 来表示结束的
你用了 strFrom.c_str(); 虽然你的 strFrom 有两个 \0 但是 c_str() 并没有两个 \0 的
你还是使用字符数组,先 ZeroMemory 整个字符数组,在拷贝 strFrom.c_str(); 进去即可