HanDs
管理员

[Delphi文章] 文件、文件夹删除移动和拷贝 





学习中请遵循国家相关法律法规,黑客不作恶。没有网络安全就没有国家安全

本站需要登陆后才能查看

文件删除、移动和拷贝。
function WinErasefile(Owner: Integer;  WichFiles: string;  SendToRecycleBin, Confirm: Boolean): Boolean;
//用于将文件直接删除或移动到回收站
var
  Struct : TSHFileOpStructA;
begin
  FillChar(Struct, SizeOf(Struct), 0);
  While pos(';', WichFiles)>0 do
    WichFiles[pos(';', WichFiles)] := #0;
  WichFiles := WichFiles + #0#0;
  with Struct do
    begin
      wnd          := Owner;
      wFunc        := FO_Delete;
      pFrom        := PChar(WichFiles);
      pTo          := nil;
      If not Confirm then fFlags := FOF_NOCONFIRMATION;
      If SendToRecycleBin then fFLags := fFlags or FOF_ALLOWUNDO or FOF_FILESONLY
      else fFlags := fFlags or 0 or FOF_FILESONLY;
      hNameMappings := nil;
      lpszProgressTitle := nil;
    end;
  result := (SHFileOperationA(Struct)=0) and (not Struct.fAnyOperationsAborted);
end;

function WinErasepath(Owner: Integer;  WichFiles: string;  SendToRecycleBin, Confirm: Boolean): Boolean;
//用于将目录直接删除或移动到回收站
var
  Struct : TSHFileOpStructA;
begin
  FillChar(Struct, SizeOf(Struct), 0);
  While pos(';', WichFiles)>0 do
    WichFiles[pos(';', WichFiles)] := #0;
  WichFiles := WichFiles + #0#0;
  with Struct do
    begin
      wnd          := Owner;
      wFunc        := FO_Delete;
      pFrom        := PChar(WichFiles);
      pTo          := nil;
      If not Confirm then fFlags := FOF_NOCONFIRMATION;
      If SendToRecycleBin then fFLags := fFlags or FOF_ALLOWUNDO
      else fFlags := fFlags or 0 or FOF_FILESONLY;
      hNameMappings := nil;
      lpszProgressTitle := nil;
    end;
  result := (SHFileOperationA(Struct)=0) and (not Struct.fAnyOperationsAborted);
end;


function WinMovepath(Owner:Integer;FromFile, Tofile:string;ReNameOnCollision, Confirm:Boolean):Boolean;
//用于将目录进行移动
var
  Struct : TSHFileOpStructA;
  MultDest: Boolean;
begin
  FillChar(Struct, SizeOf(Struct), 0);
  MultDest := pos(';', ToFile)>0;
  While pos(';', FromFile)>0 do
    FromFile[pos(';', FromFile)] := #0;
  While pos(';', ToFile)>0 do
    ToFile[pos(';', ToFile)] := #0;
 FromFile := FromFile + #0#0;
  ToFile := ToFile + #0#0;
  with Struct do
    begin
      wnd          := Owner;
      wFunc        := FO_Move;
      pFrom        := PChar(FromFile);
      pTo          := PChar(ToFile);
      fFlags := FOF_ALLOWUNDO;
      If MultDest then fFLags := fFlags or FOF_MULTIDESTFILES;
      If ReNameOnCollision then fFLags := fFlags or FOF_RENameONCOLLISION;
      If Confirm then  fFLags := fFlags or FOF_NOCONFIRMATION;
      hNameMappings := nil;
      lpszProgressTitle := nil;
    end;
  result := (SHFileOperationA(Struct)=0) and (not Struct.fAnyOperationsAborted);
end;

function WinMovefile(Owner:Integer;FromFile, Tofile:string;ReNameOnCollision, Confirm:Boolean):Boolean;
//用于将文件进行移动
var
  Struct : TSHFileOpStructA;
  MultDest: Boolean;
begin
  FillChar(Struct, SizeOf(Struct), 0);
  MultDest := pos(';', ToFile)>0;
  While pos(';', FromFile)>0 do
    FromFile[pos(';', FromFile)] := #0;
  While pos(';', ToFile)>0 do
    ToFile[pos(';', ToFile)] := #0;
 FromFile := FromFile + #0#0;
  ToFile := ToFile + #0#0;
  with Struct do
    begin
      wnd          := Owner;
      wFunc        := FO_Move;
      pFrom        := PChar(FromFile);
      pTo          := PChar(ToFile);
      fFlags := FOF_ALLOWUNDO or FOF_FILESONLY;
      If MultDest then fFLags := fFlags or FOF_MULTIDESTFILES;
      If ReNameOnCollision then fFLags := fFlags or FOF_RENameONCOLLISION;
      If Confirm then  fFLags := fFlags or FOF_NOCONFIRMATION;
      hNameMappings := nil;
      lpszProgressTitle := nil;
    end;
  result := (SHFileOperationA(Struct)=0) and (not Struct.fAnyOperationsAborted);
end;

function WinCopypath(Owner: Integer; FromFile, Tofile: string;ReNameOnCollision,  Confirm: Boolean): Boolean;
//拷贝目录
var
  Struct : TSHFileOpStructA;
  MultDest: Boolean;
begin
  FillChar(Struct,  SizeOf(Struct),  0); MultDest := pos(';', ToFile)>0;
  While pos(';', FromFile)>0 do
    FromFile[pos(';', FromFile)] := #0;
  While pos(';', ToFile)>0 do
    ToFile[pos(';', ToFile)] := #0;
  FromFile := FromFile + #0#0;
  ToFile := ToFile + #0#0;
  with Struct do
    begin
      wnd          := Owner;
      wFunc        := FO_Copy;
      pFrom        := PChar(FromFile);
      pTo          := PChar(ToFile);
      fFlags := FOF_ALLOWUNDO;
      If MultDest then
        fFLags := fFlags or FOF_MULTIDESTFILES;
      If ReNameOnCollision then
        fFLags := fFlags or FOF_RENameONCOLLISION;
      If not Confirm then
      begin
        fFLags := fFlags or FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;
      end;
      hNameMappings := nil;
      lpszProgressTitle := nil;
    end;
  result := (SHFileOperationA(Struct)=0) and (not Struct.fAnyOperationsAborted);
end;

function WinCopyfile(Owner: Integer; FromFile, Tofile: string;ReNameOnCollision,  Confirm: Boolean): Boolean;
//拷贝文件
var
  Struct : TSHFileOpStructA;
  MultDest: Boolean;
begin
  FillChar(Struct,  SizeOf(Struct),  0); MultDest := pos(';', ToFile)>0;
  While pos(';', FromFile)>0 do
    FromFile[pos(';', FromFile)] := #0;
  While pos(';', ToFile)>0 do
    ToFile[pos(';', ToFile)] := #0;
  FromFile := FromFile + #0#0;
  ToFile := ToFile + #0#0;
  with Struct do
    begin
      wnd          := Owner;
      wFunc        := FO_Copy;
      pFrom        := PChar(FromFile);
      pTo          := PChar(ToFile);
      fFlags := FOF_ALLOWUNDO or FOF_FILESONLY;
      If MultDest then
        fFLags := fFlags or FOF_MULTIDESTFILES;
      If ReNameOnCollision then
        fFLags := fFlags or FOF_RENameONCOLLISION;
      If not Confirm then
      begin
        fFLags := fFlags or FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;
      end;
      hNameMappings := nil;
      lpszProgressTitle := nil;
    end;
  result := (SHFileOperationA(Struct)=0) and (not Struct.fAnyOperationsAborted);
end;  
 


学习中请遵守法律法规,本网站内容均来自于互联网,本网站不负担法律责任
文件
#1楼
发帖时间:2016-7-9   |   查看数:0   |   回复数:0
游客组
快速回复