在 win2000下,为什么我用movefileex()或movefile()把一个目录下的文件移动到另一个目录不行!急! 这是我的原代码 MoveFile(pchar(FileListBox1.FileName ),pchar(FileListBox1.Directory +ExtractFileName(FileListBox1.FileName ) )); cobi!用什么其他函数呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不行的意思是出错还是没有效果?MoveFile(pchar(FileListBox1.FileName ),pchar(FileListBox1.Directory +ExtractFileName(FileListBox1.FileName ) ));一、怎么源文件和目标文件一样?二、FileListBox1.Directory +ExtractFileName(FileListBox1.FileName )是不是中间缺了“\”? 使用 SHFileOperation 函数,具体如下:var FromFile : String; ToFile : String; SearchRec : TSearchRec; SHFileOpStruct: TSHFileOpStruct; FromDir: PChar; ToDir: PChar; FromFile := filename1; ToFile := filename2; GetMem(FromDir, Length(FromFile)+2); try GetMem(ToDir, Length(ToFile)+2); try FillChar(FromDir^, Length(FromFile)+2, 0); FillChar(ToDir^, Length(ToFile)+2, 0); StrCopy(FromDir, PChar(FromFile)); StrCopy(ToDir, PChar(ToFile)); with SHFileOpStruct do begin Wnd := Handle; // Assign the window handle wFunc := FO_COPY; // Specify a file copy pFrom := FromDir; pTo := ToDir; fFlags := 0; fAnyOperationsAborted := true; hNameMappings := nil; lpszProgressTitle := nil; if SHFileOperation(SHFileOpStruct) <> 0 then RaiseLastWin32Error; end; finally FreeMem(ToDir, Length(ToFile)+2); end; finally FreeMem(FromDir, Length(FromFile)+2); end;至于你要做整个目录的拷贝,可以直接把目录名写完全就可以了,不用一个一个文件的拷贝。 我的delphi6中没有这个TSHFileOpStruct对象!编译时提示:undeclared identifier:'TSHFileOpStruct'为什么,这样整个目录拷贝! TSHFileOpStructuse shellapi,windows 用MoveFile的话,目标文件必须不存在,先检查一下。MoveFile(pchar(FileListBox1.FileName ),pchar(FileListBox1.Directory +ExtractFileName(FileListBox1.FileName ) ));这句的确有问题。不过你可以判断MoveFile的返回值,0的话,用ShowMessage(SysErrorMessage(GetLastError()))来看看是什么问题。 可以在delphi下用dos的命令吗?怎样用! 我想在我做的程序中用一些快捷键,比如F3,(我要用的是F系列)弹出一个窗体 急求软件设计文档,送200分 请问有关木马的问题是在那里讨论? 关于package的应用,请高人指点! 我想用delphi做个文档管理系统。。。高手帮我。。。 急向高手请教一个双表更新的sql语句; 有没有人遇到这种情况,调用自己调用的动态连接库,然后free时出错, 关于flatstyle控件的--在线等待 往数据库BLOB字段中写入数据不能超过32K?! 有关IE问题 虎落平阳被犬欺 关于Delphi的ComboBox控件的问题
一、怎么源文件和目标文件一样?
二、FileListBox1.Directory +ExtractFileName(FileListBox1.FileName )是不是中间缺了“\”?
var
FromFile : String;
ToFile : String;
SearchRec : TSearchRec;
SHFileOpStruct: TSHFileOpStruct;
FromDir: PChar;
ToDir: PChar; FromFile := filename1;
ToFile := filename2; GetMem(FromDir, Length(FromFile)+2);
try
GetMem(ToDir, Length(ToFile)+2);
try
FillChar(FromDir^, Length(FromFile)+2, 0);
FillChar(ToDir^, Length(ToFile)+2, 0); StrCopy(FromDir, PChar(FromFile));
StrCopy(ToDir, PChar(ToFile)); with SHFileOpStruct do
begin
Wnd := Handle; // Assign the window handle
wFunc := FO_COPY; // Specify a file copy
pFrom := FromDir;
pTo := ToDir;
fFlags := 0;
fAnyOperationsAborted := true;
hNameMappings := nil;
lpszProgressTitle := nil;
if SHFileOperation(SHFileOpStruct) <> 0 then
RaiseLastWin32Error;
end;
finally
FreeMem(ToDir, Length(ToFile)+2);
end;
finally
FreeMem(FromDir, Length(FromFile)+2);
end;至于你要做整个目录的拷贝,可以直接把目录名写完全就可以了,不用一个一个文件的拷贝。
use shellapi,windows
MoveFile(pchar(FileListBox1.FileName ),pchar(FileListBox1.Directory +ExtractFileName(FileListBox1.FileName ) ));
这句的确有问题。
不过你可以判断MoveFile的返回值,0的话,用ShowMessage(SysErrorMessage(GetLastError()))
来看看是什么问题。