Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Using TSHFileOpStruct to copy files

Posted on 2004-08-06
3
4,586 Views
Last Modified: 2008-01-09
Hi, I have a problem. When I copy a file from a ShellListView1 (Drive c: for instance) to another drive (D: for instance), and the file I want to copy is already on D:, the file is not overwritten. No questions are asked wether to allow to overwrite te file with the newer one. How can I do this ?
Here is the code.

procedure TJawsieback.SpeedButton4Click(Sender: TObject);
 var FOS: TSHFileOpStruct;
     A, B: string;
     i: integer ;
begin
try
B:= ShellTreeView2.Path;
SpeedButton3.Enabled:= False;
 ShellTreeView2.Root:= B;
 for i:= 0 to ShellListView1.Items.Count -1 do begin
  if ShellListView1.Items.Item[i].Selected = True then begin
   Label4.Caption:= 'Schrijven gegevens naar de Bestemmings-schijf';
   A:= ShellListView1.Folders[i].PathName ;
   DirectorySize(A);
   GetHugeFileSize(A);
   Label5.Caption:= IntToStr(DirectorySize(A));
   Label16.Caption:= IntToStr(GetHugeFileSize(A));
   Vrij:= DiskFree(Datamodule1.BackupSchijfnummer.Value);
   Label6.Caption:= IntToStr(vrij);
          with FOS do begin
           wFunc:= FO_COPY;
           pFrom:= PChar(A + #0);
           pTo:= PChar(B + #0);
           fFlags:= FOF_NoConfirmMKDir;
           SHFileOperation(FOS);
           ShellListView1.Items.Item[i].Selected := False;
           Vrij:= DiskFree(Datamodule1.BackupSchijfnummer.Value);
         end;
  end;
end;
finally
 ShellListView2.Update;
 ShellTreeView2.Update;
 SpeedButton3.Enabled:= True;
 SpeedButton4.Visible:= False;
 SpeedButton1.Enabled:= True;
 Label6.Caption:= IntToStr(0);
 Label5.Caption:= IntToStr(0);
 Label4.Caption:= 'Backup voltooid';
end;
end;


Thx a lot
marioway
0
Comment
Question by:marioway
  • 2
3 Comments
 
LVL 7

Expert Comment

by:LRHGuy
ID: 11740038
Make this minor change:

   fFlags:= FOF_NoConfirmMKDir or FOF_NoConfirmation;

I believe the file will be written over with no notification. (That's what you want?)

0
 

Author Comment

by:marioway
ID: 11741897
Hi, I tried it and it works fine for a single file, but I still have another problem: When I copy a directory from C: to D: , the first time everything is OK, even when I change the content of a file inside the directory on C: ; but when I delete for instance a file in the directory on C: and copy the directory to D: (where the first copy resides) , the file I deleted on C: is still visible in the directory on the D:. So I suppose the directory on the D: is not overwritten (?!).

thx
marioway
0
 
LVL 7

Accepted Solution

by:
LRHGuy earned 125 total points
ID: 11742996
That is a different problem! The copy is file by file. You have to figure out on your own what has been deleted in one directory then delete it in the other.

Or, you could simply delete the target directory (D:), then copy C: to D:, then it will be a more exact copy.
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
delphi prevent click fast 2 238
When i run adoquery my application freezes 26 178
Firemonkey webbrowser scrollbars ? 1 50
Delphi: sending SMS on android platform 1 33
In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…
In an interesting question (https://www.experts-exchange.com/questions/29008360/) here at Experts Exchange, a member asked how to split a single image into multiple images. The primary usage for this is to place many photographs on a flatbed scanner…

839 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question