|
Post by Cobian on Feb 1, 2005 11:35:45 GMT -5
Hi!
Some of my users are getting this weird error when zipping. Does anybody know what can be causing it?
Cheers
|
|
|
Post by Kevin on Feb 2, 2005 12:26:49 GMT -5
Its been reported on rare occasions, but I haven't been able to reproduce it. It would mean that there has been an attempt to put the same file into the archive again.
What kind of archive is being created at the time? Regulare, spanned, or blocked?
Is there anything different involved that you can tell me about? Any other clues?
Thanks,
Kevin
|
|
|
Post by aignes on Aug 17, 2005 3:23:59 GMT -5
A customer of mine has reported the same thing twice, here is the madExcpect callstack:
exception class : EListError exception message : Duplicate Object index.
main thread ($7d4): 0054ff95 wswatch.exe kpCntn 1001 +4 TSortedObjectList.Insert 0054ff4a wswatch.exe kpCntn 991 +2 TSortedObjectList.AddObject 00553b0f wswatch.exe kpZipObj 1624 +1 TSortedZip.AddObject 005647e5 wswatch.exe VCLZip 1125 +2 AddTheNewFile 005653b8 wswatch.exe VCLZip 1407 +4 zipdata 005658f8 wswatch.exe VCLZip 1549 +110 TVCLZip.ProcessFiles 005639a0 wswatch.exe VCLZip 791 +3 TVCLZip.Zip
I use the latest official version 3.04 from your web page. Here is the code that I use to create the archive:
with TVclZip.Create(nil) do try OnTotalPercentDone := VCLZip1TotalPercentDone; OnStartZip := VCLZip1StartZip;
ZipName := sFilename; TempPath := ExtractFilePath(sFilename);
RootDir := sRootDir; FilesList.Add(sProjectFile); FilesList.Add(sProjectFile + '_bak'); FilesList.Add(sProjectFile + '_bak2'); FilesList.Add(sProjectFile + '_bak3'); FilesList.Add(RootDir + MyAddBackslash(sProjectSubDir) + '*.*');
Recurse := True; RelativePaths := TRUE; PackLevel := 6;
nOK := Zip; finally Free; end;
|
|
|
Post by Kevin on Aug 23, 2005 10:22:15 GMT -5
What I think might be happening is that you could be zipping some filenames that have some very strange characters in them. Filename characters are normally run through an OEM Filter.
Try setting VCLZip's OEMConvert := oemNever; Or you can set it to oemFlexible; Try that and see if the problem goes away.
Thanks,
Kevin
|
|
|
Post by aignes on Aug 23, 2005 11:17:46 GMT -5
Normally the filenames can only contain the following characters:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.
No other characters are possible in that case because only internal files of my program are zipped.
But I'll let the customer check the internal files for invalid characters and get back to you if I have more information.
Thanks.
|
|
|
Post by Kevin on Aug 23, 2005 15:51:31 GMT -5
OK.
Other than that, I don't know of anything else that would cause this error off hand.
Kevin
|
|
derek
New Member
Posts: 2
|
Post by derek on Jul 10, 2006 14:10:40 GMT -5
I'm using the evaluation (kp304_d7.exe) to see if I can replace our current zip component. I'm also getting the duplicate object index error. It happens only if I'm saving to a zip file that already exists, but I have changed the ZipHeader.Directory string during the following function : ZipStartZip(Sender: TObject; FName: String; var ZipHeader: TZipHeaderInfo; var Skip: Boolean); The first time I run the backup it works fine, but if I try to run it twice in a row to the same zipname I get the error. OMEConvert is set to false. Recurse is true. SavePath and relative path are both true. Rootdir is set. Thanks for any help you can provide.
|
|
|
Post by Kevin on Jul 10, 2006 16:34:13 GMT -5
The check to see if the file exists in the current archive takes place before the call to OnStartZip, so, when you change the pathname, you are changing the pathname\filename to something that now exists in the archive. Unfortunately, the feature to change the zipheader info just before zipping was not really meant to be used when adding to an existing archive unless you can assure that there are no collisions.
Kevin
|
|