![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java JavaScript Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(SQL Server) Iterate Through ZIP Entries Using EntryAt and ZipEntry.GetNextSee more Zip ExamplesThis example demonstrates how to iterate through all entries in a ZIP archive using:
The example prints each ZIP entry's stored filename and whether the entry is a file or directory. This approach is useful when sequentially processing ZIP entries without repeatedly calling Suppose the ZIP archive contains: The example iterates through each entry in the order stored within the ZIP archive.
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls. -- CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int DECLARE @iTmp0 int -- Important: Do not use nvarchar(max). See the warning about using nvarchar(max). DECLARE @sTmp0 nvarchar(4000) DECLARE @success int SELECT @success = 0 DECLARE @zip int EXEC @hr = sp_OACreate 'Chilkat.Zip', @zip OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END -- Open an existing ZIP archive. EXEC sp_OAMethod @zip, 'OpenZip', @success OUT, 'c:/temp/example.zip' IF @success = 0 BEGIN EXEC sp_OAGetProperty @zip, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @zip RETURN END -- A ZIP archive may contain zero entries. EXEC sp_OAGetProperty @zip, 'NumEntries', @iTmp0 OUT IF @iTmp0 = 0 BEGIN PRINT 'The ZIP archive is empty.' EXEC sp_OAMethod @zip, 'CloseZip', NULL EXEC @hr = sp_OADestroy @zip RETURN END -- ------------------------------------------------------------ -- Get the first ZIP entry. -- -- EntryAt(0,entry) initializes the ZipEntry object so that -- it represents the first entry in the ZIP archive. -- DECLARE @entry int EXEC @hr = sp_OACreate 'Chilkat.ZipEntry', @entry OUT EXEC sp_OAMethod @zip, 'EntryAt', @success OUT, 0, @entry IF @success = 0 BEGIN EXEC sp_OAGetProperty @zip, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @zip EXEC @hr = sp_OADestroy @entry RETURN END -- ------------------------------------------------------------ -- Iterate through all ZIP entries. -- -- GetNext updates the same ZipEntry object so that it -- represents the next entry in the ZIP archive. -- WHILE (@success = 1) BEGIN EXEC sp_OAGetProperty @entry, 'IsDirectory', @iTmp0 OUT IF @iTmp0 = 1 BEGIN EXEC sp_OAGetProperty @entry, 'FileName', @sTmp0 OUT PRINT '[Directory] ' + @sTmp0 END ELSE BEGIN EXEC sp_OAGetProperty @entry, 'FileName', @sTmp0 OUT PRINT '[File] ' + @sTmp0 END -- Advance to the next entry. EXEC sp_OAMethod @entry, 'GetNext', @success OUT END EXEC sp_OAMethod @zip, 'CloseZip', NULL PRINT 'Done.' EXEC @hr = sp_OADestroy @zip EXEC @hr = sp_OADestroy @entry END GO |
||||
© 2000-2026 Chilkat Software, Inc. All Rights Reserved.