'------------------ код формы ------------------------------
Private Sub Form_Click()
Dim retcode As Integer ' For Return Code From ZIP32.DLL
Cls
'-- Set Options - Only The Common Ones Are Shown Here '-- These Must Be Set Before Calling The VBZip32 Function zDate = vbNullString 'zDate = "08151998" ' mmddyyyy 'zExcludeDate = 1 ' 1 = Exclude files later than zDate zTempDir = vbNullChar ' Temporary directory for use during zip process 'zTempDir = "C:\work" zRootDir = vbNullChar zJunkDir = 0 ' 1 = Throw Away Path Names zRecurse = 0 ' 1 = Recurse -R 2 = Recurse -r 2 = Most Useful zUpdate = 0 ' 1 = Update Only If Newer zFreshen = 0 ' 1 = Freshen - Overwrite Only zLevel = Asc(9) ' Compression Level (0 - 9) zEncrypt = 0 ' Encryption = 1 For Password Else 0 zComment = 0 ' Comment = 1 if required
'-- Select Some Files - Wildcards Are Supported '-- Change The Paths Here To Your Directory '-- And Files!!! zArgc = 3 ' Number Of Elements Of mynames Array zZipFileName = "c:\My Documents\MyFirst.zip" zZipFileNames.zFiles(0) = "e:\wiz\about.c" zZipFileNames.zFiles(1) = "e:\wiz\action.c" zZipFileNames.zFiles(2) = "e:\wiz\comment.c" ' This next variable affects where Zip32 will look for files by default ' AND how they are stored in the zip 'zRootDir = "E:\wiz"
'-- Go Zip Them Up! retcode = VBZip32
'-- Display The Returned Code Or Error! Print "Return code:" & Str(retcode)
End Sub
Private Sub Form_Load()
Me.Show
Print "Click me!"
End Sub '--------------- конец формы --------------------
'------------------ код модуля ------------------------------
Option Explicit
'-- Holds The Zip Archive Filenames Public Type ZIPnames zFiles(0 To 99) As String End Type
'-- Call Back "String" Public Type ZipCBChar ch(4096) As Byte End Type
'-- Little "String" Public Type ZipStr ch(256) As Byte End Type
'-- ZPOPT Is Used To Set The Options In The ZIP32.DLL Public Type ZPOPT Date As Long ' LPSTR Date (8 Bytes Long) "mmddyyyy" szRootDir As Long ' LPSTR Root Directory Pathname (Up To 256 Bytes Long) szTempDir As Long ' LPSTR Temp Directory Pathname (Up To 256 Bytes Long) fTemp As Long ' 1 If Temp dir Wanted, Else 0 fSuffix As Long ' Include Suffixes (Not Yet Implemented!) fEncrypt As Long ' 1 If Encryption Wanted, Else 0 fSystem As Long ' 1 To Include System/Hidden Files, Else 0 fVolume As Long ' 1 If Storing Volume Label, Else 0 fExtra As Long ' 1 If Excluding Extra Attributes, Else 0 fNoDirEntries As Long ' 1 If Ignoring Directory Entries, Else 0 fExcludeDate As Long ' 1 If Excluding Files Earlier Than Specified Date, Else 0 fIncludeDate As Long ' 1 If Including Files Earlier Than Specified Date, Else 0 fVerbose As Long ' 1 If Full Messages Wanted, Else 0 fQuiet As Long ' 1 If Minimum Messages Wanted, Else 0 fCRLF_LF As Long ' 1 If Translate CR/LF To LF, Else 0 fLF_CRLF As Long ' 1 If Translate LF To CR/LF, Else 0 fJunkDir As Long ' 1 If Junking Directory Names, Else 0 fGrow As Long ' 1 If Allow Appending To Zip File, Else 0 fForce As Long ' 1 If Making Entries Using DOS File Names, Else 0 fMove As Long ' 1 If Deleting Files Added Or Updated, Else 0 fDeleteEntries As Long ' 1 If Files Passed Have To Be Deleted, Else 0 fUpdate As Long ' 1 If Updating Zip File-Overwrite Only If Newer, Else 0 fFreshen As Long ' 1 If Freshing Zip File-Overwrite Only, Else 0 fJunkSFX As Long ' 1 If Junking SFX Prefix, Else 0 fLatestTime As Long ' 1 If Setting Zip File Time To Time Of Latest File In Archive, Else 0 fComment As Long ' 1 If Putting Comment In Zip File, Else 0 fOffsets As Long ' 1 If Updating Archive Offsets For SFX Files, Else 0 fPrivilege As Long ' 1 If Not Saving Privileges, Else 0 fEncryption As Long ' Read Only Property!!! fRecurse As Long ' 1 (-r), 2 (-R) If Recursing Into Sub-Directories, Else 0 fRepair As Long ' 1 = Fix Archive, 2 = Try Harder To Fix, Else 0 flevel As Byte ' Compression Level - 0 = Stored 6 = Default 9 = Max End Type
'-- This Structure Is Used For The ZIP32.DLL Function Callbacks Public Type ZIPUSERFUNCTIONS ZDLLPrnt As Long ' Callback ZIP32.DLL Print Function ZDLLCOMMENT As Long ' Callback ZIP32.DLL Comment Function ZDLLPASSWORD As Long ' Callback ZIP32.DLL Password Function ZDLLSERVICE As Long '
'-- C Style argv Private Type UNZIPnames uzFiles(0 To 99) As String End Type
'-- Callback Large "String" Private Type UNZIPCBChar ch(32800) As Byte End Type
'-- Callback Small "String" Private Type UNZIPCBCh ch(256) As Byte End Type
'-- UNZIP32.DLL DCL Structure Private Type DCLIST ExtractOnlyNewer As Long ' 1 = Extract Only Newer/New, Else 0 SpaceToUnderscore As Long ' 1 = Convert Space To Underscore, Else 0 PromptToOverwrite As Long ' 1 = Prompt To Overwrite Required, Else 0 fQuiet As Long ' 2 = No Messages, 1 = Less, 0 = All ncflag As Long ' 1 = Write To Stdout, Else 0 ntflag As Long ' 1 = Test Zip File, Else 0 nvflag As Long ' 0 = Extract, 1 = List Zip Contents nfflag As Long ' 1 = Extract Only Newer Over Existing, Else 0 nzflag As Long ' 1 = Display Zip File Comment, Else 0 ndflag As Long ' 1 = Honor Directories, Else 0 noflag As Long ' 1 = Overwrite Files, Else 0 naflag As Long ' 1 = Convert CR To CRLF, Else 0 nZIflag As Long ' 1 = Zip Info Verbose, Else 0 C_flag As Long ' 1 = Case Insensitivity, 0 = Case Sensitivity fPrivilege As Long ' 1 = ACL, 2 = Privileges Zip As String ' The Zip Filename To Extract Files ExtractDir As String ' The Extraction Directory, NULL If Extracting To Current Dir End Type
'-- UNZIP32.DLL Userfunctions Structure Private Type USERFUNCTION UZDLLPrnt As Long ' Pointer To Apps Print Function UZDLLSND As Long ' Pointer To Apps Sound Function UZDLLREPLACE As Long ' Pointer To Apps Replace Function UZDLLPASSWORD As Long ' Pointer To Apps Password Function UZDLLMESSAGE As Long ' Pointer To Apps Message Function UZDLLSERVICE As Long ' Pointer To Apps Service Function (Not Coded!) TotalSizeComp As Long ' Total Size Of Zip Archive TotalSize As Long ' Total Size Of All Files In Archive CompFactor As Long ' Compression Factor NumMembers As Long ' Total Number Of All Files In The Archive cchComment As Integer ' Flag If Archive Has A Comment! End Type
'-- UNZIP32.DLL Version Structure Private Type UZPVER structlen As Long ' Length Of The Structure Being Passed flag As Long ' Bit 0: is_beta bit 1: uses_zlib beta As String * 10 ' e.g., "g BETA" or "" date As String * 20 ' e.g., "4 Sep 95" (beta) or "4 September 1995" zlib As String * 10 ' e.g., "1.0.5" or NULL unzip(1 To 4) As Byte ' Version Type Unzip zipinfo(1 To 4) As Byte ' Version Type Zip Info os2dll As Long ' Version Type OS2 DLL windll(1 To 4) As Byte ' Version Type Windows DLL End Type
'-- This Assumes UNZIP32.DLL Is In Your \Windows\System Directory! Private Declare Function Wiz_SingleEntryUnzip Lib "unzip32.dll" _ (ByVal ifnc As Long, ByRef ifnv As UNZIPnames, _ ByVal xfnc As Long, ByRef xfnv As UNZIPnames, _ dcll As DCLIST, Userf As USERFUNCTION) As Long
Private Declare Sub UzpVersion2 Lib "unzip32.dll" (uzpv As UZPVER)
'-- Private Variables For Structure Access Private UZDCL As DCLIST Private UZUSER As USERFUNCTION Private UZVER As UZPVER
'-- Public Variables For Setting The '-- UNZIP32.DLL DCLIST Structure '-- These Must Be Set Before The Actual Call To VBUnZip32 Public uExtractOnlyNewer As Integer ' 1 = Extract Only Newer/New, Else 0 Public uSpaceUnderScore As Integer ' 1 = Convert Space To Underscore, Else 0 Public uPromptOverWrite As Integer ' 1 = Prompt To Overwrite Required, Else 0 Public uQuiet As Integer ' 2 = No Messages, 1 = Less, 0 = All Public uWriteStdOut As Integer ' 1 = Write To Stdout, Else 0 Public uTestZip As Integer ' 1 = Test Zip File, Else 0 Public uExtractList As Integer ' 0 = Extract, 1 = List Contents Public uFreshenExisting As Integer ' 1 = Update Existing by Newer, Else 0 Public uDisplayComment As Integer ' 1 = Display Zip File Comment, Else 0 Public uHonorDirectories As Integer ' 1 = Honor Directories, Else 0 Public uOverWriteFiles As Inte
logout, спасибо за код,конечно, только он какой-то странный,я ели нашол библиотеку zip32.dll , как не странно, но нашол я её в кваке2 когда я запустил проект, мне вышло сообщение об ошибке в VISUAL BASIC типо оно будет закрыто и всё пробовал несколько раз, одно и то-же
Начнём с того, что неплохо было бы узнать код ошибки и что там написано конкретно?
Один мой знакомый, начинающий программист, тоже натолкнулся на ошибку в этом коде; но он ещё маленький, и не понял, что нужно было указывать на зипование только реально существующие файлы.
Код 100% рабочий.
Может тебя устроит шелом зипить?
Попробуй сам разобраться сначала, если не выйдет ничего - пиши, будет время - помогу...
Далее мне просто смешно отвечать на такой низкий выпад:
>Дааа..... И чего все так любят юзать чужие либы?
Этот код является открытым, свободен к распространению и модернизации. Молодой человек ( leo ) обратился за помощью два раза и не один крутой девелопер не дал толкового ответа как сие осуществить. Я сделал всё, что в моих силах. Кто может, пусть сделает больше...
>Вот я бы хотел получить именно исходник именно зипа именно на vb....
Вам, сударь, нужно в раздел "МАГИЯ, АСТРОЛОГИЯ, ГАДАНИЯ", там вам щёлкнут волшебной палочкой по жирной жопе и из неё вывалится аппетитный кусок необходимого кода...
>Во-во, мечтать не вредно )
Во-первых, я не мечтаю, а реально пытаюсь помочь парню в решении его проблемы
>В инете нифига похожего нету (
Нафига тебе, крутому девелоперу и-нет? Ты ведь легко сам любой код накалякаешь?
>Вот на Си - сколько угодно (
Если ты с С знаком, то нафига тебе VB? Напиши dll-ку на С - она быстрее работать будет чем Vb! Непонятно как - то...
да, действительно, библиотека была нета, с новой он начал хотябы что-то писать, только он мне теперь на форме пишет zip warning: name not matched: и имя файла, я проверял, все файлы есть, что делать не знаю. может кто подскажети количество файлов правильно подставил
А к чему такая агрессия? То, что Вы, уважаемый logout (во как), пытаетесь ему помочь, я очень уважаю. И ни в коем случае не надо расценивать эту мою фразу как выпад. Тем более "низкий" (
Я только сказал, что хотелось бы где-нибудь найти исходник зипа, переведенный на VB. И 'мечтать не вредно' - это стоит рассматривать как мою самокритику..
И потом, кто сказал, что я "крутой девелопер"? С "С " знаком, но он меня как-то раздражает. VB роднее.
А если чужие либы юзать, то я бы предпочел zLib.dll...
>А если чужие либы юзать, то я бы предпочел zLib.dll...
Во-первых, если бы был открытый код zipовой dllки, то эта либа не была бы твоей...
Во-вторых, либа на С работает ГОРАЗДО БЫСТРЕЕ.
Если есть желение проверить - возьми нормальный алгоритм Маркова, проверь быстродействие с одинаковым объёмом под Vb и под С - разница будет значительная!