Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Using TSHFileOpStruct to copy files

Posted on 2004-08-06
3
Medium Priority
?
4,608 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
[X]
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
  • 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 375 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: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone 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

The uses clause is one of those things that just tends to grow and grow. Most of the time this is in the main form, as it's from this form that all others are called. If you have a big application (including many forms), the uses clause in the in…
Objective: - This article will help user in how to convert their numeric value become words. How to use 1. You can copy this code in your Unit as function 2. than you can perform your function by type this code The Code   (CODE) The Im…
This course is ideal for IT System Administrators working with VMware vSphere and its associated products in their company infrastructure. This course teaches you how to install and maintain this virtualization technology to store data, prevent vuln…
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…
Suggested Courses

688 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