《Delphi中的VclZip.pro.v3.10.1组件包详解》 在Delphi编程环境中,开发者经常需要处理文件的压缩与解压缩任务,这时VclZip组件包就显得尤为重要。VclZip.pro.v3.10.1是一款专门为Delphi设计的Unzip/Zip组件包,它为开发人员提供了方便、高效的文件压缩和解压缩功能,极大地简化了相关操作。本文将详细介绍这款组件包及其在Delphi中的应用。 VclZip组件包的核心是其提供的VclZip单元,这个单元包含了用于处理ZIP文件的各种类和方法。主要类有TZipMaster和TUnzipper,它们分别负责压缩和解压缩操作。TZipMaster组件可以添加、删除、查看和更新ZIP文件中的文件,而TUnzipper组件则能够将ZIP文件内容解压到指定的目录。 1. **TZipMaster组件**: TZipMaster是VclZip的主要组件,它可以创建新的ZIP文件,也可以打开现有的ZIP文件进行编辑。通过其属性和方法,我们可以设置ZIP文件的属性,如密码保护、压缩级别等。例如,`AddFile`方法用于向ZIP文件添加新文件,`DeleteEntry`方法用于删除ZIP文件中的某个条目,`ExtractTo`方法则用于将ZIP文件中的文件提取到指定位置。 2. **TUnzipper组件**: TUnzipper组件主要用于从ZIP文件中解压缩文件。通过`UnzipToFile`或`UnzipToStream`方法,可以将ZIP文件内容解压到指定的文件或流对象中。此外,还可以通过`ExtractEntry`方法选择性地解压缩单个文件。 3. **兼容性**: VclZip.pro.v3.10.1组件包兼容多个版本的Delphi和Borland C++ Builder,如VCLZipBCB2006_3.bdsproj、VCLZipBCB4_3.bpk等文件所示,这表明该组件包能够在Delphi 2006及更低版本,以及C++ Builder 4、6、2007等环境下正常工作。这些文件是项目文件、包文件和源代码文件,用于在不同版本的IDE中集成和编译VclZip组件。 4. **源代码**: 包含的VCLZipBCB*.cpp文件是针对C++ Builder的源代码,而VCLZip.cnt则可能是组件的帮助文件。这些源代码文件对于开发者来说非常有价值,因为它们允许深入理解组件的工作原理,并可根据需求进行定制和扩展。 5. **应用实例**: 使用VclZip组件包可以轻松实现文件的批量压缩和解压缩。例如,在一个备份程序中,可以使用TZipMaster来创建一个包含所有重要文件的ZIP文件,然后通过电子邮件发送或者存储到云服务中。同样,当需要恢复这些文件时,可以使用TUnzipper将ZIP文件解压回原始目录。 VclZip.pro.v3.10.1组件包是Delphi开发过程中处理ZIP文件的强大工具,它的易用性和灵活性使得文件压缩和解压缩任务变得简单。无论是在日常开发还是大型项目中,VclZip都是一个值得信赖的伙伴,能够显著提升开发效率并优化程序性能。通过深入了解和熟练掌握VclZip组件包的使用,开发者可以更好地应对各种文件处理挑战。
2025-11-24 23:03:54 525KB vclzip
1
VCLZip Native Delphi Zip/UnZip Component! (VCLZip Lite: Version 2.23 April 14th, 2002) (VCLZip Pro: Version 3.10 Buid 1 - November 25th, 2007) IMPORTANT: If installing the registered version, please be sure to always re-install/rebuild the components (VCLZip and VCLUnZip) to the component pallette (or rebuild the design time package) so that the ThisVersion property and any other new properties will be properly updated. If your application still does not run without the IDE, open up VCLZip's package, click on options and look at the Directories/Conditionals tab. If KPDEMO is defined, remove it and recompile the package. ***IMPORTANT: Please remember do not install these components into a package by the name of either VCLZip or VCLUnZip. You will receive an error if you do. PLEASE TAKE A LOOK AT THE "WHAT's NEW IN THIS VERSION" LINK IN THE HELP FILE AS IT HAS CONVENIENT LINKS TO ALL OF THE NEW TOPICS. ==================== Version 3.10 Build 1 - Several bug fixes. - Added support for Delphi 2006, 2007 - Added support for BCB 2006, 2007 - Improved memory performance when working with archives containing extremely high number of compressed files. ==================== Version 3.06 Build 2 Made Delphi 2005 compatible Other assorted fixes ==================== Version 3.05 Build 1 Fixed a lot of incompatabilities between VCLZip and WinZip Other assorted fixes ==================== Version 3.04 Build 1 New ZLib methods for optimized compression and decompression of single entities of data in standard ZLib format, without the overhead of the PKZip format. This is excellent for compression of data to be sent across the net, compressing web pages (http compliant compression), blobs, etc. - ZLibCompressStream - ZLibDecompressStream - ZLibCompressBuffer - ZLibDecompressBuffer - ZLibCompressString - ZLibDecompressString Overloaded TStream Methods for Delphi 4,5, BCB 4, and 5 - UnZipToStream - UnZipToStreamByIndex - ZipFromStream Special OnGetNextTStream Event for Delphi 4,5, BCB 4, and 5 - Allows zipping multiple TStreams in one process - More efficient than calling ZipFromStream multiple times Capability to use the latest version of ZLib 1.2.1. - VCLZip currently uses 1.4.1 by default. - By defining ZLIB121, VCLZip will use the latest version of ZLib which is included with the registered version. Some optimization improvements which should show some improvement in zipping and unzipping speed when using TkpStreams with D4, D5, BCB4, and BCB5. ============ Version 3.03 (VCLZip Pro) - Please test your application thoroughly with this new version of VCLZip Pro. While it has been tested and has even been used in at least two production applications for several months now prior to initial release, there are so many combinations of property settings, environment differences, and ways to use VCLZip that you should always test VCLZip completely in your application before deploying. *** New Zip64 capabilities, properties, methods and events: - Uncompressed, Compressed, and Archive file sizes can be up to 2^63-1 bytes in length. - You can compress up to 2147483647 files into an archive. This is compatible with PKZip's Zip64 format. - If a file does not extend beyond any of the original limitations (filesizes of 4 gig or 65535 files) then no Zip64 format information is included in the archive. - property isZip64 - tells you when you are working with a zip file that is using Zip64 format. Much faster processing due to linking to Zlib object files for compression and decompression routines. Blocked Zip Files (spanned zip archives split onto hard drive) - Now completely compatible with PKZip and WinZip split archives file naming format. - For backwards compatability you can tell VCLZip to use the old VCLZip filenaming format by using the BlockMode property. - New method OnFileNameForSplitPart called just before each split filepart is created. VCLZip supplies a default implementation of this method so for most purposes you won't need your own. - method DefaultFileNameForSplitPart - VCLZip calls this internally if you don't define your own OnFileNameForSplitPart. You can also call it from your own OnFileNameForSplitPart if you wish to add some processing to the default behavior. - property BlockMode - determines whether VCLZip uses PKZip/WinZip standard naming convention or VCLZip classic method. - method DefaultGetNextDisk - VCLZip calls this internally if you don't define your own OnGetNextDisk. You can also call it from your own OnGetNextDisk event if you wish to add some processing to the default behavior. - Properties for controlling which files are zipped... - IncludeHiddenFiles - default False; - IncludeSysFiles: - default False; - IncludeReadOnlyFiles: - default True; - IncludeArchiveFiles: - default True; - Event OnGetNextStream - Allows you to zip from multiple streams when using the ZipFromStream method. This improves performance since repeated calls to ZipFromStream causes the archive to be updated on each subsequent call. - property ThisBuild - Tells you the current build. See also ThisVersion - property OnHandleMessage - Handles interactive messages with VCLZip. There is a default, so you don't need to define your own unless you wish to eliminate interactive messages and handle them on your own. This is helpful if you are using VCLZip as a service or on a webserver for instance. ******** Upgrading existing applications that use VCLZip 2.X ********** For the most part, existing applications will work as-is. Just install VCLZip 3.X and recompile your code. Here are some things to be aware of though... 1) If your app currently creates mmBlock archives (spanned directly to hard drive) and you define your own OnGetNextDisk in VCLZip 2.X, you should move your code from this event that handles mmBlock events to the new event OnFileNameForSplitPart. However, if you simply rely on VCLZip's default OnGetNextDisk then you don't have to worry about this. 2) If your app creates mmBlock archives, the default naming convention has changed to match the PKZip/WinZip standard. If you wish to keep the same naming convention then set BlockMode := mbClassic. 3) OnGetNextDisk and OnPrepareNextDisk events are called for the 1st disk now. VCLZip 2.X only calls these events starting with the 2nd disk. 4) properties CompressedSize[Index], UncompressedSize[Index], ZipSize are now Int64 types. 5) Delphi 4, Delphi 5, BCB 4, and BCB5 are all capable of using the Zip64 format. However they use the TkpHugeStream decendants which act just like TStreams except they handle files/stream sizes larger than 2gig. There is a TkpHugeFileStream and a TkpHugeMemoryStream which should handle 99% of all necessary actions. If you currently work with VCLZip 2.X with TBlobStreams or some other type of streams, you can either define your own TkpBlobStream for instance which inherits from TkpHugeStream, or use the TkpHugeStream.CopyFrom(TStream, Count) and the TkpHugeStream.GetStream: TStream methods to give VCLZip your stream and get it back. Ofcourse when using regular TStream decendants in D4,4,BCB4,and 5, you cannot create Zip64 archives. If you use Delphi 6, 7, or BCB 6, you don't have to worry about any of this as the normal TSTream is used by VCLZip and handles large file/stream sizes. ============ Version 2.23 (VCLZip Lite) Added the OEMConvert property. Filenames stored in a PKZip compatible archive normally go through an OEM conversion to make them ascii compatible. When opening the zip file the conversion is undone. If you do not plan on having other zip utilities opening up your archives this conversion process is not really necessary. Setting this property to False will eliminate this process. The default value for this property is True for normal PKZip compatability. Added OnEncrypt and OnDecrypt events. These allow you to replace the standard pkzip encryption with your own. Data is passed to these events a buffer at a time. Use this with care as this is still somewhat experimental and I'm not sure how useful it is yet. You must make all changes within the buffer sent in to you. Treat the entire file as a stream. Byte for byte replacement only. No additional keys can be saved. Added OnRecursingFile event. Sometimes when using wildcards and recursing directories, there was no reporting of progress. This will be fired each time a file matches as the file list is being built while recursing directories. Added the EncryptBeforeCompress boolean property. The default for this property is False and if left like this VCLZip will behave like normal. If set to True, VCLZip will encrypt each buffer prior to compressing it instead of afterwards. This will cause files to not be decryptable by normal zip utilities thereby adding a bit of extra security. Bugs Fixed: IMPORTANT!!! Behavior of freeing the ArchiveStream (compressed stream) has been modified. VCLZip will now no longer try to free ArchiveStream, you must free it yourself. This was due to a problem where it would be freed automatically if there was a problem with the ArchiveStream when trying to open it as a zip file (possibly corrupt). Best practice is that ArchiveStream should always point toward a TMemoryStream that you create anyway. Modified the SFX code (the code used to create the SFX stub distributed with VCLZip) so that it handles filenames that have been run through an OEM Conversion. The SFX was losing accented characters. This modification means that if you are creating zip files to be used as SFX's you will want to leave the OEMConvert property mentioned above, set to it's default value of True. Modified so that when cursor is changed to hourglass by VCLZip, previous cursor is saved correctly instead of just changing it back to default cursor. Now saves Central Directory Extra Fields correctly. Fixed the SFX code so that it works properly if you use Copy /B to concatenate a zip file to the stub. Due to a Delphi strange behavior sometimes path names for directory only entries would become corrupted. Removed reference to QConsts, replaced with RTLConsts. Sometimes a GPF would result if a corrupt zip file was opened. Using a wildcard in pathname added to FilesList did not work. Using '*.*' as a wildcard in files added to FilesList now is the same as using '*'. VCLZip will now check for CancelTheOperation during initial building of the fileslist instead of just during compression processing. Added a final call to OnTotalPercentDone with 100% because this didn't always happen. Attributes were not getting set correctly for directory-only entries. Fixed a problem that was not allowing ZipComment's to be added correctly to spanned or blocked zip files. Not the same fix as in 2.22. Directories (directory-only entries) were not being restored properly unless DoAll was True. You were unable to delete a directory from which files were recursively zipped until exiting your application. ============ Version 2.22 Now Delphi 6 compatible. New event called {link=93,OnRecursingFile} which gets called as VCLZip recurses directories searching for files that match a wildcard that is entered in the FilesList. This gets called each time a file matches the wildcard. Fixed a bug which kept diskettes from being labeled when creating spanned zip files on WIN31. Fixed a bug which sometimes did not allow zip comments to be added to blocked zip sets. Fixed a bug which caused VCLZip to not properly handle the IncompleteZip exception on spanned zip sets unless you called ReadZip prior to calling UnZip. Version 2.21 (Changes are shown in the build stages as they were implemented) Pre-Release Build 5: When working with temporary files, VCLZip will now rename, instead of copy, the temp file if the destination is on the same drive. This will speed up the adding of files to an existing zip file when the resulting zip file is very large. Pre-Release Build 4: New event called OnPrepareNextDisk which is an event that will allow you, when creating spanned zip files across diskettes, to do things like format a diskette that has just been inserted, or to add or delete files from the diskette before continuing with the zipping process. Fixed a problem that was causing the CancelTheOperation Method to not work properly. Pre-Release Build 3: Fixed bug which caused VCLZip to miscalculate space needed for zfc file if wildcards are put into the FilesList. Fixed bug so you could have FilePercentDone without needing TotalPercentDone when creating spanned zip files Fixed so relative_offset set correctly for spanned zips. Side effect of removing needless write of header. Added code to read local fileheaders if exception thrown when reading a central fileheader. Fixed problem where directories couldn't be created from directory entries because the fullpath wasn't known yet. Result of having moved this code to earlier. Fixed typo in creation of LOC header values which could cause error if reading local headers. Changed so Zip Comment starting position is calculated based on end of central record instead of end of file. Pre-Release Build 2: IMPORTANT: Changed default for FileOpenMode back to fmShareDenyNone as it had been for all but version 2.20. Fixed a problem where drivepart (i.e. C:\) was not being stripped when saving relative paths. Added a BufferedStreamSize property which can increase the speed of creating zips to floppy (and other slow media) dramatically. The new default for this should increase the speed by as much as 3 times, but you can now tweak this especially for your application! Added an ImproperZip property which gets set when VCLZip detects an inconsistency with the zip. This can be useful for detecting when VCLZip was able to open the zip in spite of an inconsistency found. There was no way to know this in the past. Fixed a problem where zip comments in zfc files were not being read correctly. Added a setZipSignatures procedure which allows you to modify the signatures of your zip file. This will cause other zip utilities to not be able to recognize or read your zip files created with VCLZip. Useful if you want to add further security to your zip files. Pre-Release Build 1: Some zip files would not open correctly, throwing an incomplete zip file exception due to an erroneous "extra field length" identifier in headers of some compressed files. These zip files are rare, but a very few people seemed to have several of them. This problem would not affect zip files created by VCLZip, and this problem should only occur in VCLZip 2.20, not in any previous version. If you had Range Checking turned on, VCLZip would get a range check error when using a wildcard that ended with a * as in 'somefile.*'. Under certain circumstances, drive information would not be stripped from path information if zipping recursively (including subdirectories) "Retrying" to zip a file that could not be opened using the OnSkippingFile event would not always work correctly. Creating spanned zip set to floppy should be faster now due to removing a needless header write to disk for each file. VCLZip would not compile correctly with MAKESMALL defined. Added code to make VCLZip work with BCB5. Haven't tested this yet though since I don't have BCB5 myself yet. Added readonly boolean ImproperZip property which will be set to True when some sort of problem is found when opening the zip file, even if recoverable. This property will be enhanced and refined in the future. If KeepZipOpen is set to True, when putting in the wrong disk in a spanned zip set, VCLZip would not always properly close the file on the old diskette before trying to open the file on the next diskette. Added ECantWriteUCF exception which will be thrown if VCLZip runs out of room to write the uncompressed file when unzipping. Timestamp was not being set properly when unzipping readonly files. Moved setting of the timestamp to before the attributes get set. ============ Version 2.20 Changes have been made in the following areas: --Performance There are a few code optimizations that should speed up the zipping process slightly. --Spanned Zip Files A new feature, turned on with the SaveZipInfoOnFirstDisk allows VCLZip to create and read spanned zip files starting with the first disk instead of the normally required last disk of the spanned disk set by saving a Zip Configuration File on the first disk. This feature can be used even if creating the spanned zip file directly to your hard drive. A new property, SaveOnFirstDisk, allows you to save room on the first disk when creating a spanned zip file, to allow room for other files, such as setup programs, data files, or a Zip Configuration File. Spanned zip files can now be directed toward disks greater than 2 gig in size as long as you are using Delphi 5 or BCB 4. --UnZipping The new Selected indexed property offers another way to flag files to be unzipped. Files that have the Selected property set to True can be unzipped using the UnZipSelected method. The Selected property will be cleared (set to False) for each file as it is unzipped, but you can also call the ClearSelected method to clear them all. At anytime the NumSelected property can be checked to see how many files have been selected. Also, the UnZipToBufferByIndex and UnZipToStreamByIndex methods allow you to unzip files specified by their index instead of by name or wildcard. The BufferLength property allows buffered output (buffer smaller than the total uncompressed filesize) when unzipping directly to memory (see UnZipToBuffer and UnZipToBufferByIndex). This will cause the OnGetNextBuffer Event to be called everytime BufferLength bytes have been output by VCLZip. Modified to work in all ways with zip files that have "extra fields" in their headers. These tend to be quite rare, but they do show up from time to time. --Zipping Added a property called FileOpenMode which allows you to define the file open mode for files when they are opened to be zipped. Added a Retry parameter to the OnSkippingFile Event that can be used to re-attempt to open a file for zipping that is open by another process. This gives the chance to close the file and continue with the zipping process rather than having to start over again. Added a ENotEnoughRoom exception which will be thrown if there is not enough room to write to the archive, i.e. out of disk space. The new OnUpdate Event gets fired when updating or freshening an existing archive. It is triggered for each file that already exists in the archive as it is either replaced or kept in the updated archive. The AddDirEntriesOnRecurse will cause separate directory entries to be included in archives when doing recursive zips through subdirectories. --Integrity Checking A new method, CheckArchive, will perform an integrity check on all files in an archive. This is much faster than using FileIsOK on each file if testing all files in an archive with VERY MANY files. Further improved checking for corrupted zip files when opening zip files. --Encryption The following new properties and methods allow lower level work with password encrypted archives: DecryptHeader Gets the decryption header for a particular compressed file in an archive GetDecryptHeaderPtr Same as DecryptHeader but easier to use in BCB. DecryptHeaderByte Method Tests a password against the decryption header found in the DecryptHeader property. GetDecryptHeaderByteByPtr Same as DecryptHeaderByte but easier to use in BCB. --Self Extracting Executables Changes were made to the ZIPSFX32.BIN stub itself: - Modified to work with zip files containing "extra fields" in their headers. - Modified to change mouse cursor to an hour glass during processing. - Check for correct file size is now done automatically - Now uses the end of central and central headers to find the first local header. - Added a progress meter - Better checking for corrupted zip files. - Added an information window that can optionally be shown when the sfx is initially started up. - Added an AutoRun option to make the sfx stub run automatially when double clicked with no other interaction from the user. For the new modified sfx stub, ZIPSFX32.BIN, instead of using kpSFXOpt, you should now use the TSfxConfig component to set the options for the sfx stub. The new sfx can be found in the sfx\ subdirectory as usual and is called ZIPSFX32.BIN and the original sfx can be found in the same subdirectory except it is now called ORGSFX32.bin. Just rename it if you prefer that one (use KPSFXOPT instead of TSfxConfig with the old stub). --Miscellaneous The installation is now easier, atleast for first time installers of the source code. The .DPK files for Delphi and .CPP files for BCB are now included. Now these files simply have to be compiled and that's it. There is a separate option in the installation for installing to the different versions of Delphi and BCB. Added a property called FlushFilesOnClose which will cause all files opened for write by VCLZip to have their disk buffers flushed to disk when closed. Added the capability to delete Selected files from an archive using the DeleteEntries Method. The behavior of the OnInCompleteZip Event has been greatly improved. You can now use this event to ask the user to insert the last disk of a spanned disk set rather than having to handle this situation from outside VCLZip. The register procedures were changed so that the components now get installed to the "VCLZip" tab on the palette. I found that for all but Delphi 1 I had to actually manually move the components to the "VCLZip" tab. You may find that you have to do this too if you have already installed VCLZip before. The components now use new bitmaps in place of the old ones on the component palette. Separated many compiler defines into a new file called KPDEFS.INC. ==================================== Version 2.18: 1) Thanks to the hard work of a fellow registered user, added the capability to remove all dependencies on the Dialogs, Forms, Controls, and FileCtrl units by defining the conditional MAKESMALL, which results in a smaller footprint. This can be quite useful when putting VCLZip into a DLL for instance. In order to make this work, go into your Project | Options and select the Directories/Conditionals tab and enter MAKESMALL in the conditional defines text box. In Delphi you can add this conditinal define to the project options of your application that uses VCLZip and then do a "build all". In BCB you will have to add this to the project options of the package that contains VCLZip and then rebuild the package. If you define MAKESMALL, the only things you lose are: a) ZIP file open dialog box that appears when the ZipName is set to "?" b) Select Directory dialog box that appears when the DestDir is set to "?" c) Changing the cursor to an hour glass during some operations. d) No long filename support in Delphi 1 2) Made VCLZip completely BCB4 compatible. 3) Added some exception handling to KPUNZIPP and KPINFLT, mainly to handle unexpected situations when wrong passwords are entered. This fixes the problem with PRP, the password recovery program. 4) For Borland C++ Builder, changed any COMP types to double, getting rid of the compiler warnings for unsupported comp type. This affects the OnStartZipInfo and OnStartUnZipInfo events, so you'll have to change the comp parameter to double in these events if you use them (in both your header files and in the CPP files). 5) Modified OnStartUnZip event so that FName (the filename of the file that is about to be unzipped along with complete path) is now a VAR parameter and can be modified. This allows you to change the path and name of a file that is about to be unzipped. This is especially helpfull in applications like Install Programs. NOTE: You will need to change your current code to add the VAR to the event definition and implementation if you already use this event in your application. (In BCB, add a & just before the parameter instead of VAR) 6) Moved many type definitions to VCLUNZIP.PAS so that kpZipObj won't have to be included in your USES list. 7) Fixed bug that caused GPF when setting Zip Comment to '' (empty string). 8) Moved strings in VCLZip/VCLUnZip into a string table, making the code size a little smaller as well as making it much easier to localize string information. However you have the option of not using the new string table, for whatever reason, by defining NO_RES in your project options (in the conditional defines text box on the Directories/Conditionals tab). 9) Removed the need for several files. No longer included are kpstrm.res, kpstrm.rc, kpsconst.res, kpsconst.rc, kpstres.pas, and for Delphi 1, kpdrvs.pas. In some cases the need for these files was eliminated and in other cases just rolled into the newly included kpzcnst.rc, kpzcnst.pas, and kpzcnst.res. Definining NO_RES in your project options will elimiate the need for these new files but will make your code size slightly larger and you won't be able to localize your application without changing VCLZip source code. 10) Modified the OnFilePercentDone and OnTotalPercentDone progress events to work better when creating spanned disk sets and blocked zip sets. They no longer report 100% when the compressed file still has to be copied to disk. 11) Added the ReplaceReadOnly property. Setting this to true will allow files with the ReadOnly attribute to be replaced during the unzip process. 12) Added the ifNewer and ifOlder options to the OverwriteMode property. (This had somehow made it into the help file but not into VCLUnZip) 13) Added the SFXToZip method which will convert an SFX file to a regular zip file. The header pointers will be properly adjusted during the conversion. 14) Fixed a problem where the OnGetNextDisk event would always revert to the DefaultGetNextDisk method instead of what you entered into the Object Inspector each time your project was re-opened. 15) Fixed a bug that caused CRC errors when unzipping files from spanned disk sets if they were STORED (no compression) and spanned across disks. 16) Added the OnZipComplete and OnUnZipComplete events. If defined, these will fire at the very end of a zip or unzip operation (after all files have been processed, not after each file). These events will rarely be used since, normally you will be able to do the same thing at the point that the call to Zip or UnZip returns, but these events can be useful when using VCLZip in threads where in certain circumstances the return from the Zip or UnZip methods are not seen. 17) Creation of SFX files has never been easier!!! The addition of the MakeNewSFX method allows you to create Self Extracting Executables without the need to create a zip file first. The files that you specify in the FilesList property will be zipped, using all the normal VCLZip property settings, and the SFX will be created, all in one step! In addition, you can create configurable SFX files using this method, and you can do this especially easy by adding the new unit kpSFXOpt to your application's USES list and using the new 32bit SFX stub that is now distributed with VCLZip. This allows you to easily set things like SFX Dialog caption, default target extraction directory, file to launch after extraction, etc. 18) Fixed a memory leak that only affects applications using VCLZip that are compiled with Delphi 2, and that use wildcard specifications in the FilesList property. Version 2.17a: 1) Fixed a bug that was keeping VCLZip from reading truncated zip files or sfx files that did not have their headers adjusted. 2) Fixed a bug that was causing a directory to be created on the C drive when doing integrity checking with the FileIsOK property. 3) Added {$V-} to kpZipObj.PAS 4) Moved two AssignTo methods to public instead of private in kpZipObj.PAS Version 2.17: 1) Added Memory zipping and unzipping capabilities through the UnZipToBuffer and ZipFromBuffer methods. See the documentation for these methods in the Help File for more information. 2) New FileIsOK Property allows you to check for the integrity of individual files within an archive without actually unzipping the file. 3) Fixed a bug that kept checking of volume labels from working on WIN31 when working with spanned disk sets. 4) Removed all references to ChDirectory so that VCLZip will be more thread safe allowing separate instances of VCLZip in separate threads to be performing zip/unzip operations at the same time. 5) A new public property PreserveStubs allows you to make modifications to sfx archives and have the archive remain an SFX rather than revert back to a normal zip file. 6) Added a default OnGetNextDisk event. If one is not defined, then the default event will be called when the situation arises that a new disk is needed when zipping or unzipping a spanned or blocked zip archive. 7) Added more power to the wildcard capabilities. Now you can qualify the * wildcard character, for instance: * would satisfy any number of contiguous characters as long as they are all a thru e. * would satisfy any number of contiguous characters as long as none of them were a thru e. This allows you to do things like include files in specific direcories into your ExcludeList. For instance: VCLZip1.ExcludeList.Add('c:\test\*.txt') would exclude the zipping of all .txt files in the test directory but not in any subdirectories. 8) Fixed other minor bugs and made other code enhancements. Version 2.16: ***Please be aware that if you currently use the OnSkippingFile event in any of your applications, version 2.16 will require a small modification as this event has an added parameter and one of the current parameters is used a little differently when being called by the zip operation. Please see the help file for more information. 1) The OnSkippingFile Event has been changed slightly, adding a parameter for the filename. 2) OnSkippingFile is now called when a file to be zipped is skipped because it is locked by another application. See the Help File for more information. 3) Fixed a bug with the Exclude and NoCompressList where they were ignoring entries with anything before the extention (i.e. 'somefile.*' as opposed to '*.zip') if you were saving directory information. 4) Fixed a bug that caused an error if you added a wildcard with a non-existent directory to the FilesList. 5) A few other minor bug fixes. Modifications for 2.15 include: 1) PackLevel can now be set to 0 (zero) which means no compression at all (STORED only). 2) New property ExcludeList is a new stringlist that you can add filenames and wildcards to in order to specify files that you do not wish to be included in an archive. 3) New property NoCompressList is a new stringlist that you can add filenames and wildcards to in order to specify files that you wish to be STORED with a PackLevel of 0 (zero), no compression. 4) All compiler warnings and hints were removed. Modifications for 2.14 include: 1) Delphi 4 compatability. 2) Added ability to use complex wildcards when specifying which files are to be zipped. This includes wildcard characters not only in the filename but also in the pathname. This allows you to specify directories using wildcards, for instance: VCLZip1.FilesList.add('c:\test\w*\mycode*.pas'); would get all PAS files beginning with mycode in subdirectories under TEST that begin with the letter w. Wilcards may be much more complex than this. Please see the help file for more information. 3) Added the ability to override the RECURSE property setting when specifying files to be zipped. By adding the following characters to the beginning of the filenames being added, you can override whatever the current setting is for the RECURSE property: '>' will force recursion into subdirectories '|' will force NO-recursion For instance: VCLZip1.FilesList.add('>c:\windows\*.ini'); will get all .ini files in and below the windows directory reguardless of what the recurse property setting is. and: VCLZip1.FilesList.add('|c:\windows\sys*\*.dll'); will get all .dll files in subdirectories of the windows directories that start with 'sys' but will not recurse into any directories below the sys* directories. 4) The [ and ] characters previously used as special wildcard characters have been changed to < and > since [ and ] are valid filename characters. If you still need to use the previous characters for backward compatability, I can show registered users how to easily modify a couple of constants in the source code in order to go back to the old style. See "Using Wildcards" in the help file for more information. 5) A few bug fixes. Modifications for 2.13 include: 1) New property ResetArchiveBitOnZip causes each file's archive bit to be turned off after being zipped. 2) New Property SkipIfArchiveBitNotSet causes files who's archive bit is not set to be skipped during zipping operations. 3) A few modifications were made to allow more compatibility with BCB 1. 4) Cleaned up the Help File some. 5) KWF file now works for Delphi 1 and Delphi 2 again. Still can't get context sensitive help in Delphi 3. 6) Cleaned up some of the code that was causing compiler warnings and hints. Modifications for 2.12 include: 1) Added a TempPath property to allow the temporary files path to be different from the Windows default. 2) Modified VCLZip so that any temporary files that are created receive a unique temporary filename so as not to clash with any other files in the temporary directory. This also allows working with zip files residing in the temporary directory. 3) Fixed a bug in the relative path feature. 4) Fixed a bug that caused a "list out of bounds" error if a file in the FilesList did not actually exist. Modifications for 2.11 include: 1) Fixed password encryption bug for 16 bit. 2) Fixed "invalid pointer operation" when closing application bug. 3) Fixed path device truncation bug which caused inability to modify existing archives in 16 bit. 4) Fixed inability to cancel during wilcard expansion bug. 5) Added capability to better handle corrupted timestamps. 6) Added capability to open and work with SFX files that were created with the COPY/B method (header files not adjusted). 7) Other small bug fixes. I'm still working on a bug which causes a GPF when continually unzipping the same file thousands to millions of times. This mainly affects programs like the Password Recovery Program (PRP) which uses the brute force method of searching for an archive's password. Modifications for 2.10 include: 1) Capability for 16bit VCLZip to store long file/path names when running on a 32bit OS. 2) New property (Store83Names) which allows you to force DOS 8.3 file and path names to be stored. 3) Better UNC path support. 4) Fixed a bug to allow files to be added to an empty archive. Modifications for 2.03 include: 1) Volume labels now get written correctly to spanned disk sets in Delphi 1 for all versions of Windows. 2) Delphi 1 VCLZip now correctly recognizes when it is running on Windows NT. 3) Fixed a problem with zipping files in the root directory when StorePaths = True. 4) File and Zip Comments are now read correctly from spanned/blocked zip archives. 5) Fixed a buf that was causing "Duplicate Object" errors. Modifications for 2.02 include: 1) Fix for file comments which were supposed to be fixed in version 2.01 but weren't. 2) Fix for stream zipping. Version 2.01 would not create a new archive if using a stream. (The Stream Demo now allows creating new zip files to streams too) 3) A few other minor modifications to further solidify the code. 4) A modification to the Zip Utility Demo which allows unzipping from Blocked zip files as if they were single zip files. 5) Added a read-only, published ThisVersion property which reflects the version of the VCLZip/VCLUnZip that you are currently working with. Modifications for 2.01 include: 1) Fixes for exceptions that were caused when CANCELING a zip or unzip of a spanned zip file. 2) Fix for a possible problem when zipping or unzipping a spanned zip file when one or more of the compressed files resided on more than 2 of the spanned parts. 3) Fix for file comments which were broken in version 2.00. Additional features for version 2.00 include: 1) Modify/Add internal file details (filename, pathname, timestamp, comment) for any file while zipping, in the OnStartZip event. 2) Add an Archive Comment while zipping in the OnStartZipInfo event. 3) Delphi 1 compatiblity for VCLZip. 4) Stream to Stream Zipping - Archives themselves can now be TStreams! 5) New Relative Path Information option. 6) Unzip archives that weren't zipped with the Relative Path option turned on as if they had been by determining how much path information to use with the Rootpath property. 7) Modify timestamps for files in existing archives (you could already modify filenames and pathnames for files in existing archives) 8) The OnBadPassword event now allows you to supply a new password and try the same file again when unzipping. 9) Source code has been cleaned up so that it will compile under Borland C++ Builder with no modifications. Also some bugs were fixed, most importantly: 1) An empty file, that had been compressed into an archive would cause any file added to the archive to cause the archive to approximately double in size. Any archives containing empty files are not corrupted, they are OK. This was simply a fix to the way the archive was processed. 2) After creating an SFX file, you had to close the zip file before you could modify it in any way, otherwise a stream read error was encountered. See the Help file for more information on new features. This zip file is part of a self contained installation program. Just run it and the installation program will begin. Contact vclzip@bigfoot.com for further information Thanks! Kevin Boylan
2025-11-21 19:21:14 522KB 源码 系统相关 VclZip
1
RxLib是一个著名的组件库,专为Delphi编程环境设计,特别是在Delphi 5到XE10.1 Berlin的版本之间。这个库包含了丰富的组件和功能,使得开发者在构建应用程序时可以更加高效和灵活。RxLib 2.75是这个库的一个特定版本,它不仅包含了完整的源代码,方便用户进行深入学习和定制,还针对Delphi 10.1 Berlin进行了优化和兼容性调整。 RxLib的核心理念是响应式编程(Reactive Programming),这是软件开发中的一个概念,它允许程序员处理数据流和变换,就像处理普通的值一样。在Delphi中,这种编程方式提供了强大的异步处理能力,简化了事件驱动和并发编程的复杂性。 在RxLib中,你将找到各种各样的组件,包括但不限于: 1. **数据绑定组件**:这些组件实现了双向数据绑定,使得视图和模型之间的同步变得更加简单。例如,TBindSource和TBindNavigator是常用的组件,它们可以连接到数据集并管理用户界面的导航操作。 2. **事件处理组件**:如TEvent和TAsyncEvent,它们帮助开发者更好地管理和调度事件,特别是对于非阻塞的异步操作,使得UI保持流畅。 3. **集合和容器组件**:如TRxList和TRxCollection,提供了更加强大的数据结构,可以用于存储和管理对象集合,同时支持多线程访问和同步。 4. **线程和并发组件**:如TRxThread,帮助开发者轻松创建和管理线程,还有并发控制组件,如TRxMonitor和TRxMutex,用于解决多线程编程中的同步问题。 5. **用户界面增强组件**:比如TScrollBox和TRxSplitter,提供更丰富的界面布局和控制,使开发者能构建出更美观、更易用的用户界面。 6. **网络和通信组件**:如TRxSocket,用于网络编程,支持TCP和UDP通信,让开发者能够快速实现客户端和服务器之间的数据交换。 在RxLib 2.75中,修复了一些已知的bug,这提高了库的稳定性和兼容性,特别是在Delphi 10 Seattle和10.1 Berlin这两个版本上。这意味着开发者可以利用这个库在较新的Delphi环境中开发项目,而不必担心旧版本的不兼容问题。 RxLib是一个强大的工具集,它扩展了Delphi的原生功能,提供了许多实用的组件,使得开发者可以专注于应用程序的核心逻辑,而无需过于关注底层实现的细节。通过使用RxLib,你可以提高开发效率,创建出更加健壮和易于维护的Delphi应用。如果你是Delphi的忠实用户,那么掌握RxLib将会对你的编程生涯大有裨益。
2025-11-05 14:46:55 4.12MB RxLib
1
在探讨“ISE 10.1 注册码”的相关内容时,我们首先需要了解ISE软件的基本概念及其重要性,以及注册码对于用户的意义。 ### ISE软件简介 ISE(Integrated Software Environment)是Xilinx公司推出的一款集成开发环境,主要用于FPGA(Field Programmable Gate Array,现场可编程门阵列)的设计、综合、实现与验证。它提供了完整的工具链来支持从设计输入到最终编程的整个流程,包括HDL(硬件描述语言)编辑器、综合器、布局布线工具、仿真器等。 ISE 10.1版本是该系列的一个具体版本,发布于2009年左右,它包含了多种设计工具和功能,旨在帮助工程师更高效地完成FPGA设计任务。ISE 10.1相较于之前的版本,在性能优化、设计效率提升等方面都有所改进。 ### 注册码的作用 注册码是软件激活的关键之一,用于证明用户拥有使用该软件的合法权利。在ISE这样的专业软件中,注册码尤为重要。没有有效的注册码,用户可能只能使用软件的部分功能,或者在有限的时间内使用。获得注册码后,用户可以解锁全部功能,并且享受官方提供的技术支持和服务。 ### ISE 10.1 注册码的相关问题 1. **合法性问题**:获取和使用未授权的注册码是违法的行为,可能会导致法律责任。因此,建议用户通过正规渠道购买ISE 10.1的许可证。 2. **安全性问题**:使用非官方渠道获取的注册码可能会包含恶意代码,对计算机系统造成损害。此外,这些注册码还可能含有病毒或木马程序,对用户的个人信息安全构成威胁。 3. **技术支持与更新**:官方渠道购买的注册码能够确保用户享受到最新的软件版本和技术支持服务。非官方渠道的注册码往往无法提供这些服务,可能会影响软件的正常使用。 4. **长期成本考量**:虽然短期内购买官方注册码的成本较高,但从长远来看,这种方式能够为用户提供更加稳定和可靠的支持,减少因技术问题导致的工作中断风险,从而节省更多的时间和金钱。 ### 如何获取ISE 10.1注册码 1. **官方购买**:最推荐的方式是从Xilinx官方网站直接购买ISE 10.1的许可证。这种方式不仅合法,还能确保用户获得最新版本的软件及相应的技术支持。 2. **学术用途**:对于学生和教师来说,Xilinx提供了专门的学术计划,通过这一计划可以在一定程度上降低ISE软件的使用成本。 3. **试用版**:如果只是想尝试ISE 10.1的功能,可以考虑下载试用版。试用版通常具有一定的使用期限限制,但足以满足初步学习和探索的需求。 ### 总结 ISE 10.1作为一款强大的FPGA设计工具,其注册码对于合法使用至关重要。通过官方渠道获取注册码不仅可以避免法律风险,还能确保软件的安全性和稳定性。对于想要深入学习和使用ISE 10.1的用户来说,建议遵循上述途径获取注册码,并充分利用官方提供的资源和支持。
2025-10-24 16:15:30 52B 10.1
1
openssh 10.1p1版本,基于perl 5.40.3 openssl 3.5.4 制作 2025年10月9日
2025-10-11 17:04:58 20.47MB centos7 redhat7 openssh
1
openssh 10.1版本,适用于centos 6 redhat 6的二进制rpm包 2025年10月6日发布
2025-10-11 16:54:31 18.37MB openssh
1
在iOS应用开发中,Xcode是苹果官方提供的集成开发环境(IDE),用于编写、调试和发布iOS和macOS应用程序。当遇到"Could not find Developer Disk Image"这样的错误时,通常意味着Xcode无法找到对应的iOS设备支持文件,这些文件是Xcode进行真机调试所必需的。在本例中,我们需要配置的是针对iOS 10.1版本的开发包。 开发者磁盘映像是Xcode为了在特定版本的iOS设备上运行和调试应用而需要的一种关键组件。当Xcode安装后,它可能不包含所有历史版本的iOS设备支持,因此在尝试连接或调试运行iOS 10.1设备时,会出现找不到相应磁盘映像的错误。 解决这个问题,你需要按照以下步骤操作: 1. **下载设备支持文件**:你需要找到适用于iOS 10.1的设备支持文件。在这个场景中,压缩包文件名为"10.1 (14B72)"很可能就是这个支持文件。你可以从可靠的资源网站或者通过其他开发者分享获取到这个文件。 2. **解压并定位文件**:下载后,你需要解压这个文件,通常会得到一个名为"10.1"的文件夹,里面包含"14B72"的子文件夹。这个子文件夹就是你需要的设备支持文件。 3. **添加到Xcode**:打开Finder,然后前往`/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport`路径。如果没有iOS 10.1的文件夹,你需要创建一个,并将解压后的"14B72"文件夹复制进去。 4. **权限设置**:在将新文件夹复制到上述位置后,可能需要调整权限以允许Xcode访问。右键点击“14B72”文件夹,选择“获取信息”,确保你的用户账户有读写权限。同时,确保Xcode(如果在“共享与权限”列表中没有显示,你可以点击"+"添加)也有读写权限。 5. **重启Xcode**:完成上述步骤后,关闭并重新启动Xcode。现在,Xcode应该能够识别你的iOS 10.1设备,你就可以继续进行真机调试了。 6. **更新Xcode**:如果问题依然存在,确保你的Xcode版本是最新的。苹果经常在更新中修复已知问题,包括与旧版本iOS的兼容性问题。你可以在App Store中检查并安装Xcode的最新版本。 7. **检查设备固件**:同时确认你的iOS设备已经升级到10.1版本,如果不是,你需要更新设备的系统固件。 8. **开发者中心**:如果所有方法都无法解决问题,你也可以尝试从Apple开发者中心下载完整的Xcode版本,它们通常包含了所有支持的iOS版本。 正确配置Xcode的iOS 10.1开发包是为了确保能顺利地在该版本的设备上进行应用开发和测试。理解设备支持文件的作用以及如何添加和管理它们,对于iOS开发者来说是非常重要的技能。在遇到类似问题时,遵循上述步骤通常可以解决问题,让你的开发工作得以顺利进行。
2025-09-22 12:29:52 13.77MB iOS 10.1
1
QuickReport是一款针对Embarcadero Delphi开发环境的快速报表生成工具,特别为Delphi 10.1 Berlin版本设计。这款组件库使得开发者能够轻松地在应用程序中集成专业级别的报表设计和打印功能,极大地提高了开发效率和用户体验。 在Delphi 10.1 Berlin中,QuickReport提供了丰富的报表设计元素,包括表格、图表、图片、文本框、线条、形状等,允许用户通过直观的拖放方式在报表设计界面上进行布局。这使得非程序员的业务人员也能参与到报表设计中,降低了报表开发的门槛。 QuickReport支持多种数据源,包括数据库连接、XML文件、CSV文件等,能够方便地将各种数据格式转换为清晰、美观的报表。它还支持实时数据绑定,这意味着在运行时可以根据用户的选择动态地改变报表内容。 在报表预览方面,QuickReport提供了一个强大的预览窗口,允许用户在打印前进行查看、编辑和调整。用户可以缩放、旋转、分页预览,甚至可以导出报表为PDF、HTML、Excel等多种格式,满足不同场景下的需求。 报表打印是QuickReport的另一个亮点。它支持多页布局、页眉页脚设置、打印区域定义等功能,确保了在不同的打印机上都能获得一致的打印效果。此外,QuickReport还支持自定义打印样式和颜色方案,以满足个性化的需求。 在Delphi 10.1 Berlin环境下,QuickReport与VCL和FireMonkey框架完美集成,无论是桌面应用还是跨平台移动应用,都能够无缝地使用QuickReport来创建报表。这使得开发者可以充分利用Delphi的跨平台优势,一次编写,到处运行。 压缩包中的"QuickReport - Berlin.exe"文件很可能是QuickReport for Delphi 10.1 Berlin的安装程序。安装后,开发者可以在Delphi集成开发环境中找到QuickReport的相关组件,通过拖放的方式将它们添加到工程中,并通过属性面板和事件处理来定制报表的行为。 QuickReport为Delphi 10.1 Berlin的开发人员提供了一套完整的报表解决方案,从设计、数据绑定、预览到打印,都体现了高效、便捷的设计理念,是开发商业级应用时不可或缺的工具。通过深入学习和熟练运用QuickReport,开发者可以大幅提升报表开发的效率和质量,为用户带来更加出色的数据呈现体验。
2025-09-08 09:15:35 21.23MB Delphi 10.1 Berlin
1
AMD 和 macOS 10.10.1 内核是本文要探讨的核心主题。AMD(Advanced Micro Devices)是一家知名的半导体公司,主要生产处理器和图形处理单元(GPU)。macOS 10.10,代号为“Yosemite”,是苹果公司推出的操作系统版本,对硬件有特定的兼容性要求。这个内核可能是针对AMD处理器优化的,以提高在AMD平台上运行macOS 10.10.1的性能和稳定性。 AMD APU(Accelerated Processing Unit)是一种集成了CPU和GPU的芯片设计,旨在提供更高效的计算能力。然而,根据描述,这个整合版内核在APU上进行测试时遇到了问题,可能无法正常驱动集显(集成显卡)。这可能是因为内核并未专门针对APU的集显进行适配,或者存在兼容性问题,导致驱动程序未能正确识别或操作GPU。 在macOS系统中,内核是操作系统的心脏,负责管理和调度系统的硬件资源,如处理器、内存和I/O设备。内核与硬件紧密耦合,因此对于不同架构的处理器,如Intel和AMD,可能需要定制化的内核来实现最佳性能。macOS 10.10.1内核的优化通常涉及到处理器指令集的适配、内存管理优化以及与硬件交互的驱动程序等。 在尝试安装或更新内核时,需要注意以下几点: 1. **备份数据**:任何对操作系统核心组件的修改都可能引起系统不稳定,甚至可能导致无法启动。因此,务必在操作前备份重要数据。 2. **系统兼容性**:确保所使用的内核版本与你的macOS版本和硬件配置相匹配,不匹配可能会导致各种问题。 3. **驱动支持**:如果内核未包含特定硬件的驱动,例如上述的APU集显,那么你需要寻找额外的驱动程序或补丁来解决。 4. **更新与维护**:保持内核和所有相关驱动程序的最新状态,以获得最佳性能和安全性。 压缩包中的“Kernels”文件很可能包含了不同版本或优化的内核文件,供用户根据自己的需求选择。在替换内核之前,应仔细阅读文件说明,了解每个内核的适用范围和特性。 AMD mac10.10.1内核是针对AMD处理器优化的macOS 10.10.1操作系统的内核版本,但可能存在与AMD APU集显不兼容的问题。对于希望在AMD平台上运行macOS 10.10.1的用户,可能需要进一步研究和测试,找到适合的内核解决方案,或者寻找社区支持和更新的驱动程序。
2025-08-14 12:16:56 3.77MB mac10.10
1
XCharts 是一个专为 Unity 游戏引擎打造的图表插件,用于在游戏中或者软件中展示各种统计信息和数据。它提供了一套可视化的工具集,使得开发者能够更容易地创建、编辑和展示图表。XCharts 的 3.10.1 版本提供了丰富的图表类型,包括柱状图、折线图、饼图、散点图等,并且能够适应不同的数据展示需求。 作为一个图表插件,XCharts 的设计初衷是为了让 Unity 开发者能够轻松地在游戏或应用程序中集成复杂的图表显示功能,而无需从零开始编写代码。它包含了多种配置选项,允许开发者自定义图表的外观和行为,例如颜色、字体、样式和动画效果等,从而满足不同项目的特定需求。 XCharts 插件的使用也非常方便,开发者可以通过直观的 API 接口来控制图表的数据和表现形式。这大大降低了图表集成的难度,使得即使是那些没有专业前端开发经验的游戏开发者也能够轻松实现数据可视化。 此外,XCharts 在 3.10.1 版本中对性能和稳定性进行了优化,以保证图表在游戏或者实时应用中的流畅运行。它还支持快速响应用户的交互操作,使得用户可以与图表进行互动,比如点击、缩放和拖动等。 在插件的开发过程中,开发者们通常会提供一些示例项目或者 Demo,帮助其他开发者更好地理解如何使用这个插件。对于 XCharts 来说,这样的 Demo 就包含在压缩包文件的 XCharts-Demo-master 文件中。这些 Demo 包含了各种场景和使用案例,展示如何使用 XCharts 来创建各种类型的图表,并且可以作为学习和参考的模板。 XCharts 是一个功能强大且易于使用的图表工具,能够帮助 Unity 开发者快速实现数据的可视化展示,从而提升应用的交互性和用户体验。它特别适合于需要在游戏或应用中展示实时数据和统计信息的场景,例如显示玩家的游戏进度、资源使用情况、排行榜等。
2025-08-05 10:50:25 19.38MB unity xcharts 图表插件
1