Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1687
  • Last Modified:

Overwrite Files..

I am copying dirs with the code above:
This code is copying dirs from time to time. But when it finds the file with the same name it asks overwrite? But i want to skip this part and automatically overwrite all files. How can i do this?


Procedure CopyDir(fromDir, toDir : String);
var
fileOp: TShFileOpStruct;
begin
FillChar(fileOp, Sizeof(TShFileOpStruct), 0);
fromDir := fromDir + '\*.*'#0;
toDir := toDir + #0;
with fileOp do begin
  wnd := Application.Handle;
  wfunc := FO_COPY;
  pFrom := PChar(fromDir);
  pTo := PChar(toDir);
  fFlags := FOF_ALLOWUNDO;
  fAnyOperationsAborted := false;
  hNameMappings := nil;
  lpszProgressTitle := nil;
end;
SHFileOperation(fileOp);
end;

// The Call:

CopyDir(Form1.Memo1.Text, Form1.Memo2.Text);
0
sophiesas
Asked:
sophiesas
  • 6
  • 3
  • 3
  • +1
1 Solution
 
EpsylonCommented:
Use this:

fFlags := FOF_ALLOWUNDO or FOF_SILENT or FOF_NOCONFIRMATION;
0
 
TheNeilCommented:
Have you tried adding FOF_NOCONFIRMATION to the fFlags property of the fileOp structure? It's Windows that's asking for confirmation and if you need to get around it then you might have to forget about using the API call and write your own dedicated code (not too tough BTW)

The Neil =:)
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
EpsylonCommented:
Maybe you want to leave out FOF_SILENT....
0
 
egonoCommented:
just for my interest - does the SHFileOperation() return immediatly or does it wait until all files copied?
0
 
EpsylonCommented:
As long as you use non-relative path names you can more or less count on it. The filesystem knows which files/dirs are being deleted, copied, etc.
0
 
egonoCommented:
Epsylon - was your last comment a answer for my question? if yes - sorry I don't get it, does it return immediatly or not?
if not - don't mind ...
0
 
EpsylonCommented:
Sorry for the confusion, it was a reply to you egono.

The MSN docs say that when you use relative path names, it's not thread safe. This means that when a process/thread does a fileoperation, another may not see that correctly. Use ExpandUNCFileName to create a qualitied path.

In other words, SHFileOperation can return before the modification are done physically, but the filesystem/shell keeps track of (caches) these modifications.
0
 
sophiesasAuthor Commented:
i can't get it work please add you comments to my code..
0
 
sophiesasAuthor Commented:
Please give examples...

Thankx
0
 
EpsylonCommented:
Procedure CopyDir(fromDir, toDir : String);
var
fileOp: TShFileOpStruct;
begin
  FillChar(fileOp, Sizeof(fileOp), 0);
  fromDir := fromDir + '\*.*';
  toDir := toDir;
  with fileOp do begin
    wnd := Application.Handle;
    wfunc := FO_COPY;
    pFrom := PChar(fromDir + #0);
    pTo := PChar(toDir + #0);
    fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
    fAnyOperationsAborted := false;
    hNameMappings := nil;
    lpszProgressTitle := nil;
  end;
  SHFileOperation(fileOp);
end;
0
 
egonoCommented:
epsylon - thanks!
0
 
sophiesasAuthor Commented:
epsylon thanks very much..
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 6
  • 3
  • 3
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now