SHfileoperation太糟糕了,谁用过进来瞧瞧(20分)

  • 主题发起人 主题发起人 lili365
  • 开始时间 开始时间
L

lili365

Unregistered / Unconfirmed
GUEST, unregistred user!
我用他实现改名、转移功能,开始好用,后来却出错(在WIN98、WIN2000)下运行的,
经过调试发现是在改名时要么没有改名,要么类似COPY功能,只是将扩展名改了,即原来的
文件还存在,部分代码如下,有什么问题,请哥哥们会诊。
fstr,fstr1:SHFILEOPSTRUCT
....
with fstr do
begin
hwnd:=handle;
wFunc:=FO_RENAME;
pFrom:=pchar(source);
pTo:=pchar(dest);
fFlags:=FOF_SILENT ;
fAnyOperationsAborted:=false;
hNameMappings:=nil;
lpszProgressTitle:=nil;
end;
shfileoperation(fstr);
....
with fstr1 do
begin
hwnd:=handle;
wFunc:=FO_MOVE;
pFrom:=pchar(source);
pTo:=pchar(dest);
fFlags:=FOF_SILENT ;
fAnyOperationsAborted:=false;
hNameMappings:=nil;
lpszProgressTitle:=nil;
end;
shfileoperation(fstr1);
 
pFrom、pTo 2个参数是需要用2个NULL字符结束的

source:='xxx'#0#0
dest:='xxx'#0#0
 
not pchar()?!
 
能详细一点吗?
 
是PChar,但是一种比较特殊的PChar,是以Nil结尾的PChar,所以Delphi的String
^^^^^^^^^^^^^^^^^^
要加上两个#0#0

String先加上一个Nil结尾,再转为PChar加上一个Nil,
 
如果对多个文件操作,中间要用#0隔开,最后要用#0#0结束
这是规定
 
多人接受答案了。
 
后退
顶部