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
Proxima Pro 1.3.0.unitypackage
2025-11-21 17:25:17 1.94MB unity
1
《Premiere Pro 2023视频编辑剪辑制作(全彩版)》是一本全面介绍Adobe Premiere Pro 2023的指南,专为希望掌握视频编辑和剪辑技术的用户而设计。这本书深入浅出地讲解了这款强大的视频编辑软件的各项功能,通过全彩的界面展示和实例解析,帮助读者提升视频创作能力。 Adobe Premiere Pro是业界领先的视频编辑软件,广泛应用于电影、电视和网络视频的制作。2023版本带来了更多更新和改进,使得视频编辑工作更为高效和便捷。本书将围绕以下核心知识点展开: 1. **界面与工作流程**:了解Premiere Pro的界面布局,包括源监视器、节目监视器、时间线、项目面板等关键元素。学习如何导入、组织和管理媒体,以及设置项目首选项和工作区。 2. **剪辑基础**:掌握基本的剪辑技巧,如剪切、复制、粘贴、修剪、调整序列长度和顺序,以及如何使用标记和剪辑指示器来高效工作。 3. **颜色校正与调色**:学习使用Lumetri色彩面板进行颜色分级,理解色彩理论,应用色彩平衡、曲线、HSL调整等工具,让视频画面更具艺术感。 4. **音频编辑**:了解音频工作流程,调整音量、添加音效、消除背景噪音,以及使用Essential Sound面板进行专业级音频处理。 5. **特效与转场**:探索数百种内置视觉效果和转场,如模糊、透明度变化、扭曲、粒子效果等,以及如何自定义和管理特效预设。 6. **运动图形与标题**:利用Titler工具创建动态文本,学习使用Essential Graphics面板来添加图形、图表和动画标题,实现信息的生动传达。 7. **多摄像机编辑**:学习如何同步和切换不同角度的摄像机素材,适用于现场活动或多机位拍摄的视频剪辑。 8. **时间线特效和调整层**:理解如何使用调整层对多个剪辑应用相同效果,节省时间和提高效率。 9. **导出与交付**:学习如何根据需求设置输出参数,导出高质量的视频文件,并了解不同的交付格式,如H.264、ProRes、MP4等。 10. **协作与团队工作**:了解Premiere Pro与其他Adobe应用程序(如After Effects、Audition)的集成,以及如何使用Adobe云服务实现团队间的协作。 通过阅读《Premiere Pro 2023视频编辑剪辑制作(全彩版)》并实践书中的案例,读者将能够熟练掌握Premiere Pro的使用,无论你是初学者还是有经验的剪辑师,都能从中受益,提升自己的视频制作水平。书中提供的下载资源将包含示例项目、素材和练习文件,帮助读者在实际操作中巩固所学知识。
2025-11-20 11:48:11 739.12MB PremierePro
1
Improve your ability to develop, manage, and troubleshoot SQL Server solutions by learning how different components work “under the hood,” and how they communicate with each other. The detailed knowledge helps in implementing and maintaining high-throughput databases critical to your business and its customers. You’ll learn how to identify the root cause of each problem and understand how different design and implementation decisions affect performance of your systems. New in this second edition is coverage of SQL Server 2016 Internals, including In-Memory OLTP, columnstore enhancements, Operational Analytics support, Query Store, JSON, temporal tables, stretch databases, security features, and other improvements in the new SQL Server version. The knowledge also can be applied to Microsoft Azure SQL Databases that share the same code with SQL Server 2016. Pro SQL Server Internals is a book for developers and database administrators, and it covers multiple SQL Server versions starting with SQL Server 2005 and going all the way up to the recently released SQL Server 2016. The book provides a solid road map for understanding the depth and power of the SQL Server database server and teaches how to get the most from the platform and keep your databases running at the level needed to support your business. The book: • Provides detailed knowledge of new SQL Server 2016 features and enhancements • Includes revamped coverage of columnstore indexes and In-Memory OLTP • Covers indexing and transaction strategies • Shows how various database objects and technologies are implemented internally, and when they should or should not be used • Demonstrates how SQL Server executes queries and works with data and transaction log What You Will Learn Design and develop database solutions with SQL Server. Troubleshoot design, concurrency, and performance issues. Choose the right database objects and technologies for the job. Reduce costs and improve availability and manageability. Design disaster recovery and high-availability strategies. Improve performance of OLTP and data warehouse systems through in-memory OLTP and Columnstore indexes. Who This Book Is For Pro SQL Server Internals is a book for developers and database administrators who want to design, develop, and maintain systems in a way that gets the most from SQL Server. This book is an excellent choice for people who prefer to understand and fix the root cause of a problem rather than applying a 'band aid' to it. Table of Contents Part I: Tables and Indexes Chapter 1: Data Storage Internals Chapter 2: Tables and Indexes: Internal Structure and Access Methods Chapter 3: Statistics Chapter 4: Special Indexing and Storage Features Chapter 5: SQL Server 2016 Features Chapter 6: Index Fragmentation Chapter 7: Designing and Tuning the Indexes Part II: Other Things That Matter Chapter 8: Constraints Chapter 9: Triggers Chapter 10: Views Chapter 11: User-Defined Functions Chapter 12: XML and JSON Chapter 13: Temporary Objects and TempDB Chapter 14: CLR Chapter 15: CLR Types Chapter 16: Data Partitioning Part III: Locking, Blocking, and Concurrency Chapter 17: Lock Types and Transaction Isolation Levels Chapter 18: Troubleshooting Blocking Issues Chapter 19: Deadlocks Chapter 20: Lock Escalation Chapter 21: Optimistic Isolation Levels Chapter 22: Application Locks Chapter 23: Schema Locks Chapter 24: Designing Transaction Strategies Part IV: Query Life Cycle Chapter 25: Query Optimization and Execution Chapter 26: Plan Caching Part V: Practical Troubleshooting Chapter 27: Extended Events Chapter 28: System Troubleshooting Chapter 29: Query Store Part VI: Inside the Transaction Log Chapter 30: Transaction Log Internals Chapter 31: Backup and Restore Chapter 32: High Availability Technologies Part VII: Columnstore Indexes Chapter 33: Column-Based Storage and Batch Mode Execution Chapter 34: Columnstore Indexes Part VIII: In-Memory OLTP Engine Chapter 35: In-Memory OLTP Internals Chapter 36: Transaction Processing in In-Memory OLTP Chapter 37: In-Memory OLTP Programmability
2025-11-19 21:37:38 47.61MB SQL Server Internals
1
Asset Hunter PRO 1.3.4 是一个专为Unity开发人员设计的强大资源管理工具,它致力于帮助用户优化项目中的资源,提升游戏性能并减少内存占用。这个插件通过深度扫描和智能分析,能够有效地查找并处理项目中未使用的、冗余的或者潜在问题的资源,从而提高项目的整体效率。 在Unity开发过程中,随着时间的推移,项目中的资源会不断积累,可能包含大量未引用的资产,这些资产不仅占用硬盘空间,还可能导致内存泄漏和运行时性能下降。Asset Hunter PRO 正是为了解决这些问题而设计的。它能够帮助开发者识别并删除这些不必要的资源,确保项目保持轻量化和高效运行。 Asset Hunter PRO 的主要特性包括: 1. **资源扫描**:全面扫描Unity项目中的所有资源,包括Assets、Resources目录以及Prefab、Scene、Material等各个类型的文件,找出未被引用的资源。 2. **智能分析**:插件通过算法分析资源间的依赖关系,确保在删除资源时不会破坏现有结构,防止意外丢失重要数据。 3. **性能报告**:生成详细的性能报告,提供关于内存占用、加载时间等关键指标的可视化图表,帮助开发者定位性能瓶颈。 4. **一键清理**:一键清理功能可以快速移除无用资源,节省硬盘空间,同时优化项目加载速度。 5. **批量操作**:支持对选中的资源进行批量重命名、移动或复制,方便进行资源管理。 6. **自定义过滤规则**:允许开发者根据项目需求设置自定义过滤规则,更精确地筛选需要清理的资源。 7. **版本兼容性**:Asset Hunter PRO 1.3.4 版本应该兼容较新的Unity引擎版本,确保在不同项目中都能正常使用。 教程链接()提供了详细的使用指南,开发者可以通过这个教程学习如何安装、配置和使用Asset Hunter PRO,以充分利用其功能来优化自己的Unity项目。 Asset Hunter PRO 是一个必不可少的工具,尤其对于那些大型项目或长期维护的项目而言,它能帮助开发者保持项目的整洁,提升开发效率,并优化玩家的游戏体验。通过定期使用这个插件,可以确保Unity项目始终保持最佳状态,避免资源浪费和性能问题。
2025-11-12 19:53:25 975KB
1
Unidac-10Pro-For-Delphi10.3-12 是一款专为 Delphi 开发者设计的数据库连接控件套件,它提供了高效、灵活且全面的数据访问解决方案。UniDAC(Universal Data Access Components)允许开发者直接与多种数据库系统进行交互,无需依赖中间ODBC或OLE DB层,从而提高了应用程序的性能和稳定性。 这个直装版的 Unidac_10Pro_For_Delphi10.3-12 包含了适用于 Delphi 10.3 到 Delphi 12.1 的多个版本,确保了对这些不同 Delphi 版本的兼容性。开发者可以根据自己使用的 Delphi 版本来选择合适的安装文件,例如 unidac_10.0.0_d26pro.exe 对应 Delphi 10.0 Seattle,unidac_10.1.0_d27pro.exe 对应 Delphi 10.1 Berlin,unidac_10.0.0_d29pro.exe 对应 Delphi 10.2 Tokyo,而 unidac_10.0.0_d28pro.exe 则对应 Delphi 10.3 Rio。 UniDAC 支持的数据库类型广泛,包括但不限于 MySQL、PostgreSQL、Oracle、SQL Server、Firebird、InterBase、SQLite、DB2、Informix、Sybase ASE 等。通过这个单一的组件集,开发者可以轻松地在不同的数据库之间切换,而无需更改太多代码。 UniDAC 的主要特性包括: 1. **高性能**:由于不依赖于 ODBC 或 OLE DB 层,UniDAC 直接与数据库驱动通信,减少了中间环节,提高了数据处理速度。 2. **低内存占用**:在运行时,UniDAC 使用最少的系统资源,降低了内存消耗,提升了应用效率。 3. **多线程支持**:支持多线程数据访问,允许在并发环境中高效工作。 4. **广泛的数据库支持**:覆盖了市面上主流的数据库系统,满足各种项目需求。 5. **易于使用**:提供直观的组件界面,使得数据访问和操作变得简单。 6. **强大的数据处理功能**:支持事务处理、批量更新、数据过滤、排序、分页等复杂操作。 7. **全面的错误处理机制**:能够捕获并处理数据库相关的错误,提高程序的健壮性。 8. **跨平台**:不仅支持 Windows 平台,还支持 macOS、Linux 和移动平台,如 iOS 和 Android。 9. **丰富的示例和文档**:提供了大量的示例代码和详尽的用户指南,帮助开发者快速上手和解决问题。 10. **傻瓜式安装**:描述中提到的“傻瓜式安装”意味着该版本的 UniDAC 提供了简单易行的安装过程,减少了配置和调试的时间。 Unidac-10Pro-For-Delphi10.3-12 是 Delphi 开发者用于数据库访问的强力工具,无论是在小型项目还是大型企业级应用中,都能发挥其优势,提供高效、稳定的数据连接方案。
2025-11-12 13:51:20 548.47MB
1
在现代信息技术快速发展的时代,无线网络的普及与优化变得至关重要。随着无线局域网(WLAN)的广泛应用,有效地管理和监控网络性能成为了保障网络安全和提升网络效率的关键。为了满足这一需求,WirelessMon Pro v3.1 专业汉化版应运而生,它是一款功能全面的无线网络扫描和监控工具,旨在为用户提供直观而高效的无线网络管理体验。 WirelessMon Pro v3.1 专业汉化版的无线网络扫描功能,能够让用户轻松扫描到所在区域内的所有无线信号。通过捕捉SSID(服务集标识符)、频道、信号强度、加密类型等关键信息,用户可以详细了解各个无线网络的状态,包括那些通常不易察觉的隐藏网络。这些数据对于评估网络覆盖范围和质量具有重要意义,也助于优化现有无线网络设置,或在规划新的无线接入点时作出明智的决策。 实时监控功能是该软件的另一大亮点。它允许用户随时掌握网络连接的状态,并显示每个无线网络信号强度的变化。这不仅有助于用户定位最佳的信号接收位置,还可以及时发现网络问题,进而对网络配置进行优化,确保网络的稳定运行。 频谱分析功能为用户提供了更深层次的无线网络状态洞察。通过分析各频道的占用情况,用户能够识别并避开那些过度拥挤的频道,从而减轻网络堵塞,提升无线网络的速度与稳定性。此功能对于在高密度无线网络环境中的网络规划和故障排查尤为关键。 地理定位功能则为WirelessMon Pro v3.1 增添了实用的空间维度。通过集成GPS数据,该软件能够将检测到的无线网络在地图上进行位置标注。这项功能对于现场的网络规划、故障定位和信号覆盖分析非常有用,特别在大型园区或复杂多变的环境中更能体现出其优势。 安全性检查功能也不容忽视。WirelessMon Pro v3.1 能够检测并报告无线网络的安全设置,例如WEP、WPA、WPA2等加密方式的配置情况。通过提醒用户关注网络安全,它帮助用户及时发现潜在的安全风险,为用户的网络安全提供了额外的保障。 记录和报告功能则是此软件的实用性体现之一。它能够记录网络活动的历史数据,并生成详细的报告。这些数据记录和报告对于分析网络性能趋势和诊断网络问题极为重要,是网络优化和故障排查中不可或缺的工具。 注册码的提供让用户无需担心功能限制或时间限制,可以完全释放软件的潜力,享受所有专业版功能。这对于IT专业人士、网络管理员以及对无线网络有特殊需求的用户而言,意味着他们能够更加深入地分析、监控和管理无线网络环境。 在中文用户的使用体验方面,专业汉化版消除了语言障碍,使得操作更加简单直观。汉化处理不仅提升了用户的使用效率,还使得用户能够更快速地掌握软件的各项功能,进而高效地完成无线网络的管理和优化工作。 WirelessMon Pro v3.1 专业汉化版作为一款先进的无线网络扫描和监控工具,不仅在功能上覆盖了无线网络管理的各个方面,而且其专业汉化的特点使其成为中文用户管理无线网络的得力助手。在如今无线网络日益成为人们工作和生活中不可或缺的组成部分的背景下,WirelessMon Pro v3.1 无疑为用户提供了强大的工具支持,帮助他们更有效地维护网络安全,提升网络性能,实现无线网络的最佳使用体验。
2025-11-12 09:57:45 1.32MB 扫描工具
1
### Gel-PRO ANALYZER凝胶定量分析软件操作示范手册知识点详析 #### 概述 Gel-PRO ANALYZER是一款集成了多种实用功能的凝胶定量分析软件,广泛应用于分子生物学研究领域,能够帮助科研人员高效准确地完成各种类型的凝胶分析任务。本手册旨在详细介绍Gel-PRO ANALYZER软件的操作流程与应用技巧,涵盖从基本操作到高级功能的多个方面。 #### 第一章:概述 - 泳道分析 - **启动与界面介绍**:首次启动Gel-PRO ANALYZER时,用户会面对一个简洁直观的操作界面。软件支持用户自定义实验类型,并允许输入必要的数据参数。 - **打开图像文件**:以`Prot1.tif`为例,演示如何加载蛋白质电泳图像文件。 - **图像旋转与校正**:使用`Rotate`功能调整图像角度,确保泳道与图像边界平行。 - **自动识别泳道**:点击`Lanes`选项中的`Find Lanes`按钮,软件将自动识别并标记泳道。 - **手动调整泳道**:用户可以通过鼠标拖拽调整泳道范围,或者使用`Delete Lanes`和`Add Lanes`命令增删泳道。 - **弯曲泳道校正**:针对不规则或弯曲的泳道,使用`Curve Lanes`功能进行校正。 - **泳道标签设置**:通过`Labels`选项为各个泳道设置名称或编号,便于后续分析与记录。 - **密度轮廓图展示**:点击`Find Lanes`后会自动弹出密度轮廓图窗口,展示每个泳道内条带的光密度变化情况。 - **条带识别与灵敏度调节**:在`Bands`窗口中调整`Min. Band Height`参数来改变条带识别的灵敏度。 - **倾斜泳道校正**:利用`Slant`功能对倾斜泳道进行校正,确保分析准确性。 - **分子量标准设定**:通过`MW Standard`选项设定分子量标准,作为后续分析的基础。 - **结果计算与显示**:软件自动计算并展示泳道内各条带的总质量、分子量、光密度等数据,支持多种形式的数据呈现方式。 #### 第二章:DNA分析 - **分子量计算**:使用`Slant.tif`示例,介绍如何基于已知分子量标准计算未知样本的分子量。 - **步骤详解**: - 载入图像文件。 - 执行泳道识别与调整。 - 设置分子量标准。 - 自动计算各条带分子量。 - 分析结果可视化展示。 #### 第三章:单一条带分析 - **目的与应用场景**:适用于需要精确测量特定条带质量的情况。 - **示例说明**:以`Oneband.tif`为例,讲解如何进行单一条带的定量分析。 - **操作步骤**: - 加载目标图像。 - 定位并选择感兴趣的条带。 - 计算并显示条带质量等关键参数。 #### 第四章:Dot-blot电泳分析 - **原理与优势**:简述Dot-blot技术的工作原理及其相对于传统凝胶电泳的优势。 - **操作流程**: - 使用`Dotblot.tif`图像进行分析演示。 - 展示Dot-blot电泳结果的处理方法。 - 提供定量分析结果。 #### 第五章:菌落计数 - **应用场景**:适用于需要统计培养皿上菌落数量的研究项目。 - **示例介绍**:通过`Colony.tif`文件演示菌落计数的具体步骤。 - **操作指南**: - 加载含有菌落的图像。 - 自动识别并标记菌落。 - 统计并记录菌落数量。 #### 第六章:测量面积/密度 - **功能介绍**:用于精确测量凝胶条带的面积与密度。 - **示例文件**:`Quant.tif`。 - **操作流程**: - 导入含有待测条带的图像。 - 手动或自动识别条带。 - 测量并记录条带面积与密度数据。 #### 第七章:报告输出 - **实验报告生成**:指导用户如何使用内置的`报告生成器`功能创建专业级别的实验报告。 - **操作步骤**: - 选择需要包含在报告中的数据项。 - 设定报告格式与样式。 - 输出最终报告文件。 #### 第八章:宏功能与应用 - **宏的概念**:解释宏的基本概念及其在提高工作效率方面的作用。 - **具体应用**:通过`Macro`功能演示如何自动化执行一系列分析任务。 - **实例说明**: - 创建宏文件。 - 批量处理图像文件。 - 保存并调用宏命令序列。 Gel-PRO ANALYZER是一款功能全面、操作简便的凝胶定量分析软件,不仅适用于常规的蛋白质与DNA凝胶分析,还能满足更为复杂的应用需求,如Dot-blot电泳、菌落计数等。通过本手册的学习,使用者能够快速掌握软件的各项功能,并将其灵活运用于实际工作中。
2025-11-10 17:18:22 1.67MB 凝胶定量
1
Clion-Mac-stm32 介绍 Clion在Mac(基于M1 pro芯片)系统下配置stm32开发环境。 一、安装Clion 可自行去官网下载 二、安装homebrew homebrew缺失的软件包的管理器 打开下载官网 复制命令行 打开终端粘贴回车运行 三、安装Java环境 STM32Cubemx需要Java运行环境,点击进行下载。 下载完成后双击进行安装。 四、安装STM32Cubemx 官网下载地址, 该软件基于x86架构,在Apple silicon上运行需要rosetta2,若你的电脑没有安装,可以在终端输入 softwareupdate --install-rosetta命令完成安装。 五、安装ARM-GCC工具链 在安装此工具链的时候,建议安装相应的加速器 打开终端输入 brew tap ArmMbed/homebrew-formulae brew install arm-none-eabi-gcc
2025-11-09 11:35:59 1.4MB stm32
1
Gnostice PDF Toolkit Pro Plus 5.0.0.402 一套专为 Delphi / C++Builder 设计的全能 PDF VCL 组件,支持 DXE10.2-D12 全支持,完整源码! Gnostice PDF Toolkit Pro Plus 5.0.0.402 源码版.zip 文件是 Gnostice 公司针对 Borland Delphi 和 Embarcadero C++ Builder 环境下开发的 PDF 相关应用程序提供的一款 PDF VCL(Visual Component Library)组件集。该组件集被设计得十分全能,能够满足开发者在不同项目中处理 PDF 文件的需求。根据提供的描述,该版本支持 Delphi XE10.2 至 Delphi 12 的所有版本,这意味着开发者可以利用该工具包在广泛的开发环境中进行工作,包括较新的 IDE 版本。此外,该版本提供了完整的源码,这为开发者提供了极大的便利,使他们能够深入理解组件的工作原理,甚至可以根据自己的需要修改源代码,实现特定的功能扩展。 具体而言,这个工具包可能包含了一系列丰富的功能,比如创建、编辑、阅读、打印和转换 PDF 文档,操作 PDF 表单,处理 PDF 文档的安全性(例如加密和签名)等。由于支持 Delphi 和 C++ Builder 环境,开发者能够使用熟悉的技术栈来开发跨平台的 PDF 应用程序。这种跨平台的特性意味着开发的应用程序可以部署到不同的操作系统上,例如 Windows、Linux、macOS 等,极大地扩展了应用程序的适用范围。 此工具包中的组件可能设计为高度模块化的,以便于集成到不同的开发项目中。开发者可以根据项目的需求选择性地使用其中的一部分或全部组件,从而能够灵活地构建出功能丰富的 PDF 处理应用程序。此外,组件可能支持多种编程语言特性,比如类、属性、方法、事件等,这使得 PDF 处理操作能够更加直观和高效。 在实际应用中,开发者可以利用 Gnostice PDF Toolkit Pro Plus 5.0.0.402 来完成各种复杂的 PDF 处理任务,例如: 1. 创建 PDF 文档:开发者可以编写代码动态生成 PDF 文件,设置页面布局,插入文本、图片等元素。 2. 编辑 PDF 文档:可以对现有的 PDF 文件进行修改,包括更改文本内容、调整图像、编辑 PDF 元数据等。 3. 读取和提取 PDF 内容:开发者可以编写应用程序来读取 PDF 文件,提取文本和图像数据,用于进一步的处理或分析。 4. 批量转换和处理:该工具包可能提供了批量处理的能力,能够自动化地转换多个 PDF 文件到其他格式,如 Word、HTML 或是图片格式。 5. PDF 表单处理:可以创建和处理 PDF 表单,支持填写、保存、提交等操作。 6. PDF 安全性:设置 PDF 文件的权限、加密等级以及数字签名,以保护文档的安全性。 提供完整源码的优势在于,开发者在遇到问题或需要特定功能时,可以自由地调试和修改组件代码,而不必完全依赖于厂商提供的接口和功能。这种开放性对于高级开发者尤其有价值,因为他们可以确保自己的应用程序可以精确地按照预期工作,同时也能够在开源社区的帮助下解决问题。 Gnostice 是一家致力于提供高质量 PDF 技术解决方案的公司,该工具包的出现体现了公司对开发者社区的重视,以及对提升 PDF 处理能力的不懈追求。开发者可以期待 Gnostice 在未来版本中继续提供更多的创新功能和更深层次的源码支持,以适应不断变化的市场需求和技术发展。
2025-11-08 18:03:22 101.2MB Gnostice
1