[DUG] Copying files problem
Dave O'Brien
dave at ICCS.co.nz
Fri Sep 22 10:51:22 NZST 2006
Why not use the filestream copy, and then set the date/time of the
copied file to suit?
________________________________
From: delphi-bounces at ns3.123.co.nz [mailto:delphi-bounces at ns3.123.co.nz]
On Behalf Of John Bird
Sent: Friday, 22 September 2006 10:35 a.m.
To: 'NZ Borland Developers Group - Delphi List'
Subject: RE: [DUG] Copying files problem
Still foxed by this problem!
The main reason I wanted to use an API method (ie copying a file rather
than using FileStream etc to copy the data) is I want to preserve the
date and time filestamps on the files, as I do a smart copy - only
copying files that have a later modification date.
On further testing, definitely on one site the copyfile function fails
every time. I also tried a dos batchfile and shellexecute with the
current directory set to the destination folder, which also consistently
failed, even if the destination file was deleted first (that is
attempted to delete in the batch file).
*HOWEVER* Windows explorer copy and paste for the main part always
worked - to my mind this shows folder permissions etc were not to blame.
I did notice that once Explorer came up with an unusual message like
"This copy operation cannot preserve the encryption on the file" which
sounds like either the server or pc HD are encrypted. And the real time
antivirus is etrust which I have had unusual problems with in the past
(such as ignoring exceptions to real time scanning).
Does anyone know the API call that explorer uses - or an alternative to
copyfile or any other suggestions?
I think I also need to investigate the exit status of the copyfile
command....
(FYI The routines I use are below - the 10 second allowance is because
copying from eg NTFS to FAT32 will slightly alter the files modfication
time because of the difference in time resolution of the file stamps)
function xfFilesChanged(file1:string;file2:string):integer;
//check 2 files modification date
//returns 0=both files same, 1=file1 later, 2=file2 later
//note if one file does not exist, returns other as later
var
fileage1,fileage2:integer;
dtdate1,dtdate2,dt10secs:TDateTime;
begin
result:=0;
fileage1:=FileAge(file1);
fileage2:=FileAge(file2);
if (fileage1<0) and (fileage2>0)then
begin
result:=2;
exit;
end;
if (fileage2<0) and (fileage1>0)then
begin
result:=1;
exit;
end;
if (fileage1<0) or (fileage2<0) then exit; //maybe both don't exist
dtdate1:=FileDatetoDateTime(fileage1);
dtdate2:=FileDatetoDateTime(fileage2);
if dtdate1=dtdate2 then
begin
result:=0;
exit;
end;
//now if not same, check if within 10 secs
//in case of different filesystems
dt10secs:=encodetime(0,0,10,0);
if (dtdate2>(dtdate1-dt10secs))
and (dtdate2<(dtdate1+dt10secs)) then
begin
result:=0;
exit;
end;
//still different
if dtdate1>dtdate2 then result:=1
else result:=2;
end;
function xfCopyFileifLater(File1:string;File2:string):integer;
//returns 0=no copy needed (files same) 1=File1 copied 2=file2 is later
so not copied
var
WhichisLater:integer;
begin
WhichisLater:=xfFilesChanged(file1,file2);
if WhichisLater=1 then copyfile(Pchar(File1),Pchar(File2),false);
result:=Whichislater;
end;
John
-----Original Message-----
From: delphi-bounces at ns3.123.co.nz
[mailto:delphi-bounces at ns3.123.co.nz] On Behalf Of Phil Middlemiss
Sent: Thursday, 21 September 2006 9:44 a.m.
To: NZ Borland Developers Group - Delphi List
Subject: Re: [DUG] Copying files problem
What about trying a different method such as the example in the
help for TFileStream? Basically just reading a bit from one stream and
writing it to the other until it's all done. We use this method a lot
and it seems very reliable.
Phil.
John Bird wrote:
Well that might explain something, as the current directory when
this particular copy is done is the source file directory, which is
usually on a different drive from the destination directory.
I will experiment with altering this.
John
-----Original Message-----
From: Rohit Gupta [mailto:rohit at cfl.co.nz]
Sent: Thursday, 21 September 2006 8:11 a.m.
To: johnkbird at paradise.net.nz; NZ Borland Developers
Group - Delphi List
Subject: Re: [DUG] Copying files problem
We get this sometimes. Its as if the app has different
access rights to the user, even on Win2K. We had an incident (still
unresolved) a few days ago.... Maybe its new windows updates. One thing
to note is that since Win95 (at least), windows does the following :-
To Copy file from DirA to DirB
1. Make DirB the current directory
2. Copy from DirA
3. Change back to original Current Directory
Sometimes, step 1 fails but there are no errors and it
copies the file into the current directory instead. And I cant figure
out any way to detect this !!
John Bird wrote:
I copy program files using a line like:
copyfile(Pchar(File1),Pchar(File2),false);
Sometimes this fails for no obvious reason (File2 is not
in use for instance), and if I open Windows explorer and copy from there
it usually works, if not if I delete the destination file and then paste
works fine. To my mind this proves it is not a problem with permissions
to write into this folder...
File1 is on the server, File2 is local on C drive.
any ideas?
Background:
This is a neat way of updating programs - updated exe
files are loaded into a central update folder (which is not used except
for copying from), and the startup program copies any updated programs
into the local C drive working folder before any programs are in use.
Works wonderfully except on one site......I wonder the problem is from
not being administrator or something in the PC setup being locked
down....(although I don't know why as Windows Explorer works)
John Bird
email
john at jbcl.co.nz
johnkbird at paradise.net.nz
Expert in Beyond Software
Ph land (03)384-4527 mobile (027)484-4528
92 Soleares Ave, Mt Pleasant
Christchurch
Web www.jbcl.co.nz <http://www.jbcl.co.nz/>
-----Original Message-----
From: delphi-bounces at ns3.123.co.nz
[mailto:delphi-bounces at ns3.123.co.nz] On Behalf Of Gary T. Benner
Sent: Wednesday, 20 September 2006 5:17 p.m.
To: vss at vss.co.nz
Cc: delphi at delphi.org.nz
Subject: RE: [DUG] Integrating Indy HTTPServer
[Reply]
HI Jeremy,
If you are incorporating this into an app, may I
suggest you dynamically instantiate the component each time you make an
http call. I found this made for greater reliability.
kr
Gary
At 13:53 on 20/09/2006 you wrote
>To : delphi at delphi.org.nz
>CC :
>From: Jeremy Coulter, vss at vss.co.nz
>Content Type: text/html
>Attached:
>
>This is a multi-part message in MIME format.
>
>
>
>
>Hi all.
>List seems to have been VERY quite over the
last few days.
>
>Has anyone successfully integrated the Indy
HTTP Server into an app.?
>I am going to be adding an HTTP Server into an
app. I have and wondered if
>anyone had used the indy one, and how they
found it?
>Can I use ISAPI or CGI apps. with it does
anyone know?
>
>
>Thanks, Jeremy
>
>--
>No virus found in this outgoing message.
>Checked by AVG Free Edition.
>Version: 7.1.405 / Virus Database: 268.12.5/451
- Release Date: 19/09/2006
>
>
>
>_______________________________________________
>Delphi mailing list
>Delphi at ns3.123.co.nz
>http://ns3.123.co.nz/mailman/listinfo/delphi
________________________________
Gary Benner
e-Engineer, Lecturer, and Software Developer
123 Internet Limited <http://www.123.co.nz>
Waiariki Institute of Technology <http://www.waiariki.ac.nz>
Sunshine Garden Bag Co. <http://www.sunshinebags.co.nz>
MailScanner has detected a possible fraud attempt from "www.sommnet.com"
claiming to be MailScanner has detected a possible fraud attempt from
"www.sommnet.com" claiming to be Sommnet.com Limited
<http://www.sommnet.com>
Mob: 021 966 992
Email: gary at 123.co.nz
Ref#: 41006
__________ NOD32 1.1461 (20060329) Information
__________
This message was checked by NOD32 antivirus
system.
http://www.eset.com
________________________________
_______________________________________________
Delphi mailing list
Delphi at ns3.123.co.nz
http://ns3.123.co.nz/mailman/listinfo/delphi
--
Rohit Gupta
B.E. Elec. M.E. Mem IEEE Associate IEE
Technical Manager
Computer Fanatics Limited
Tel +64 9 4892280
Fax +64 9 4892290
Email rohit at cfl.co.nz <mailto:rohit at cfl.co.nz>
Web www.cfl.co.nz <http://www.cfl.co.nz/>
________________________________
This email and any attachments contain information,
which is confidential and may be subject to legal privilege and
copyright. If you are not the intended recipient, you must not use,
distribute or copy this email or attachments. If you have received this
in error, please notify us immediately by return email and then delete
this email and any attachments.
__________ NOD32 1.1461 (20060329) Information
__________
This message was checked by NOD32 antivirus system.
http://www.eset.com
________________________________
_______________________________________________
Delphi mailing list
Delphi at ns3.123.co.nz
http://ns3.123.co.nz/mailman/listinfo/delphi
________________________________
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.405 / Virus Database: 268.12.6/453 - Release Date:
9/20/2006
__________ NOD32 1.1461 (20060329) Information __________
This message was checked by NOD32 antivirus system.
http://www.eset.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://ns3.123.co.nz/pipermail/delphi/attachments/20060922/ae52d79e/attachment-0001.html
More information about the Delphi
mailing list