Adding Methods to Custom Class Objects in VBScript - Adding methods to a class
(Page 2 of 4 )
As you can see, methods inside of a class are no different from the functions and subroutines you write in your scripts every day. Here’s the full list of methods used by the CompressedFolder class.
Public Sub Open(strFile)
FullName = strFile
End Sub
Public Sub Create(strFile)
If objFso.FileExists(strFile) Then objFso.DeleteFile(strFile)
FullName = strFile
NewCompressedFolder FullName
End Sub
Private Sub NewCompressedFolder(strPath)
Const adTypeBinary = 1
Const adTypeText = 2
Const adWriteChar = 0
Const adSaveCreateNotExist = 1
Const adSaveCreateOverwrite = 2
With CreateObject("ADODB.Stream")
.Open
.Type = adTypeText
.WriteText ChrB(&h50) & ChrB(&h4B) & ChrB(&h5) & ChrB(&h6)
For i = 1 To 18
.WriteText ChrB(&h0)
Next
.SaveToFile strPath, adSaveCreateNotExist
.Close
.Open
.Type = adTypeBinary
.LoadFromFile strPath
.Position = 2
arrBytes = .Read
.Position = 0
.SetEOS
.Write arrBytes
.SaveToFile strPath, adSaveCreateOverwrite
.Close
End With
End Sub
Public Sub Add(strFile, blnKeepOriginal)
AddFile FullName, strFile, blnKeepOriginal
End Sub
Private Function AddFile(strFolder, strFile, blnKeepOriginal)
Set objFolder = objShell.NameSpace(strFolder)
intCount = objFolder.Items.Count
Select Case CBool(blnKeepOriginal)
Case True
objFolder.CopyHere strFile, 1548
Case False
objFolder.MoveHere strFile, 1548
End Select
Do Until objFolder.Items.Count = intCount + 1
Sleep 200
If Not ShellBusy Then Exit Do
Loop
End Function
Public Sub AddMultiple(varSource, blnKeepOriginal)
AddFiles FullName, varSource, blnKeepOriginal
End Sub
Private Function AddFiles(strFolder, varSource, blnKeepOriginal)
If IsArray(varSource) Then
For Each strPath In varSource
AddFile strFolder, strPath, blnKeepOriginal
Next
Else
Set colItems = objShell.NameSpace(strSource).Items
intCount = .Items.Count
Select Case CBool(blnKeepOriginal)
Case True
objShell.NameSpace(strFolder).CopyHere colItems, 1548
Case False
objShell.NameSpace(strFolder).MoveHere colItems, 1548
End Select
Do Until objShell.NameSpace(strFolder).Items.Count = intCount + colItems.Count
Sleep 200
If Not ShellBusy Then Exit Do
Loop
End If
End Function
Public Sub Extract(strFolder)
ExtractAll FullName, strFolder
End Sub
Private Function ExtractAll(strZipFile, strFolder)
If Not objFso.FolderExists(strFolder) Then objFso.CreateFolder(strFolder)
intCount = objShell.NameSpace(strFolder).Items.Count
Set colItems = objShell.NameSpace(strZipFile).Items
objShell.NameSpace(strFolder).CopyHere colItems, 1548
Do Until objShell.NameSpace(strFolder).Items.Count = intCount + colItems.Count
Sleep 200
If Not ShellBusy Then Exit Do
Loop
End Function
Private Function GetItemCount(strZipFile)
GetItemCount = objShell.NameSpace(strZipFile).Items.Count
End Function
Private Function ShellBusy()
intStartSize = objFso.GetFile(FullName).Size
Sleep 500
ShellBusy = objFso.GetFile(FullName).Size > intStartSize
End Function
Private Sub Sleep(intDuration)
'You must provide an applicable sleep routine for use in ASP.
WScript.Sleep intDuration
End Sub
Take the time to see which ones are Private and which are Public. Do you see how they relate to each other? I’m using the exposed (Public) methods to call the internal (Private) methods. For a further explanation of the inner workings of these functions, stayed tuned for my Understanding the CompressedFolder class series.
Next: Completing the class >>
More Code Examples Articles
More By Nilpo