VERSION 1.0 CLASS BEGIN MultiUse = -1 'True Persistable = 0 'NotPersistable DataBindingBehavior = 0 'vbNone DataSourceBehavior = 0 'vbNone MTSTransactionMode = 0 'NotAnMTSObject END Attribute VB_Name = "SuperString" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = False Attribute VB_Exposed = False Attribute VB_Ext_KEY = "SavedWithClassBuilder6" ,"Yes" Attribute VB_Ext_KEY = "Top_Level" ,"Yes" 'local variable(s) to hold property value(s) Private mvarStringExpression As String 'local copy Private mvarPointStart As Long 'local copy Private mvarPintEnd As Long 'local copy Private mvarCharHolder As String 'local copy 'local variable(s) to hold property value(s) Private mvarIndex As Integer 'local copy Private mvarSplitted As splitter 'local copy Private mvarHost As String Private mvarLocation As String Private mvarIsHTTPURL As Boolean Private mvarIsFTPURL As Boolean Public Function sSplit(Delimiter As String, Optional sLimit As Long = -1) As splitter Set mvarSplitted = New splitter mvarSplitted.Add Split(mvarStringExpression, Delimiter, sLimit) Set sSplit = mvarSplitted ' written by IWiz mity@ropnet.ru End Function Public Property Get Splitted() As splitter Set Splitted = mvarSplitted ' written by IWiz mity@ropnet.ru End Property Public Property Set Splitted(ByVal vData As splitter) Set mvarSplitted = vData ' written by IWiz mity@ropnet.ru End Property Public Property Let Index(ByVal vData As Integer) mvarIndex = vData ' written by IWiz mity@ropnet.ru End Property Public Property Get Index() As Integer Index = mvarIndex ' written by IWiz mity@ropnet.ru End Property Public Function sMid(Optional pBegin As Long, Optional pEnd As Long) As String If pBegin = 0 Then pBegin = mvarPointStart If pEnd = 0 Then pEnd = mvarPintEnd If pBegin = 0 Or pEnd = 0 Then Exit Function sMid = Mid(mvarStringExpression, mvarPointStart, mvarPintEnd - mvarPointStart) ' written by IWiz mity@ropnet.ru End Function Public Property Let CharHolder(ByVal vData As String) mvarCharHolder = vData ' written by IWiz mity@ropnet.ru End Property Public Property Get CharHolder() As String CharHolder = mvarCharHolder ' written by IWiz mity@ropnet.ru End Property Public Property Let PintEnd(ByVal vData As Long) mvarPintEnd = vData ' written by IWiz mity@ropnet.ru End Property Public Property Get PintEnd() As Long PintEnd = mvarPintEnd ' written by IWiz mity@ropnet.ru End Property Public Property Let PointStart(ByVal vData As Long) mvarPointStart = vData ' written by IWiz mity@ropnet.ru End Property Public Property Get PointStart() As Long PointStart = mvarPointStart ' written by IWiz mity@ropnet.ru End Property Public Property Let StringExpression(ByVal vData As String) mvarStringExpression = vData Call FillURL ' written by IWiz mity@ropnet.ru End Property Public Property Get StringExpression() As String StringExpression = mvarStringExpression ' written by IWiz mity@ropnet.ru End Property Public Function sRight(num As Long) As String sRight = Right(mvarStringExpression, num) ' written by IWiz mity@ropnet.ru End Function Public Function sLeft(num As Long) As String sLeft = Left(mvarStringExpression, num) ' written by IWiz mity@ropnet.ru End Function Public Function bInStr(sFind As String, Optional FindFromPos As Long = 1) As Boolean If InStr(FindFromPos, LCase(mvarStringExpression), LCase(sFind)) > 0 Then bInStr = True ' written by IWiz mity@ropnet.ru End Function Public Function sInStr(sFind As String, Optional FindFromPos As Long = 1) As Long If FindFromPos = 0 Then sInStr = 0 Else sInStr = InStr(FindFromPos, LCase(mvarStringExpression), LCase(sFind)) End If ' written by IWiz mity@ropnet.ru End Function Public Property Get lLen() As Long lLen = Len(mvarStringExpression) ' written by IWiz mity@ropnet.ru End Property Public Function CharCollection() As Collection Set CharCollection = New Collection For i = 1 To Len(mvarStringExpression) CharCollection.Add Mid(mvarStringExpression, i, 1) Next ' written by IWiz mity@ropnet.ru End Function Private Sub Class_Initialize() Set mvarSplitted = New splitter ' written by IWiz mity@ropnet.ru End Sub Public Property Get host() As String host = mvarHost ' written by IWiz mity@ropnet.ru End Property Public Property Get Location() As String Location = mvarLocation ' written by IWiz mity@ropnet.ru End Property Private Sub FillURL() Dim tmpstr As String Dim xsplit As splitter mvarIsHTTPURL = False If LCase(sLeft(Len("http://"))) = "http://" Then tmpstr = mvarStringExpression mvarStringExpression = sRight(lLen - Len("http://")) Set xsplit = sSplit("/", 2) Select Case Splitted.Count Case 0 Case 1 mvarHost = Splitted(1).StringExpression mvarLocation = "/" mvarIsHTTPURL = True Case Else mvarHost = Splitted(1).StringExpression mvarLocation = "/" + Splitted(2).StringExpression mvarIsHTTPURL = True End Select mvarStringExpression = tmpstr Set mvarSplitted = Nothing Set mvarSplitted = New splitter End If ' written by IWiz mity@ropnet.ru End Sub Public Property Get Is_HTTP_URL() As Boolean Is_HTTP_URL = mvarIsHTTPURL ' written by IWiz mity@ropnet.ru End Property Public Property Get Is_FTP_URL() As Boolean Is_FTP_URL = mvarIsFTPURL ' written by IWiz mity@ropnet.ru End Property Public Sub mSpace(lcount As Long, Optional cchar As String = " ") For i = 1 To lcount mvarStringExpression = mvarStringExpression + cchar Next ' written by IWiz mity@ropnet.ru End Sub Public Function Dec(sHex As Variant) As Integer Dim i As Integer Dim conv As Integer Dim sadj As Integer If Len(sHex) < 2 Then GoTo out For i = 0 To 1 If Asc(Mid(sHex, 2 - i, 1)) < 58 Then conv = CInt(Mid(sHex, 2 - i, 1)) ElseIf Asc(Mid(sHex, 2 - i, 1)) > 64 Then conv = Asc(Mid(sHex, 2 - i, 1)) - 55 End If adj = 16 ^ i Dec = conv * adj + Dec Next out: ' written by IWiz mity@ropnet.ru End Function Public Function dHEX(ByVal Number As Double) As String Dim HigherDevider As Double Dim i As Integer Dim sDiff As Double Dim midp As Double Dim n As Double Dim uHEX1 As String While Number >= 16 i = 0 HigherDevider = 0 While HigherDevider < Number i = i + 1 HigherDevider = 16 ^ i Wend i = i - 1 HigherDevider = 16 ^ i sDiff = Fix(Number / HigherDevider) uHEX = uHEX + Hex(sDiff) midp = 16 ^ i midp = sDiff * midp Number = Number - midp Wend uHEX = uHEX + Hex(Number) dHEX = uHEX ' written by IWiz mity@ropnet.ru End Function Public Function dDec(sHex As Variant) As Double Dim i As Integer Dim conv As Integer Dim sadj As Integer If Len(sHex) < 2 Then GoTo out For i = 0 To Len(sHex) - 1 If Asc(Mid(sHex, Len(sHex) - i, 1)) < 58 Then conv = CInt(Mid(sHex, Len(sHex) - i, 1)) ElseIf Asc(Mid(sHex, Len(sHex) - i, 1)) > 64 Then conv = Asc(Mid(sHex, Len(sHex) - i, 1)) - 55 End If adj = 16 ^ i dDec = conv * adj + dDec Next out: ' written by IWiz mity@ropnet.ru End Function Private Function ConvLink(sLink As String) As String Dim sss As New SuperStrings sss.Add (sLink) sss.Add ("") sss(1).PointStart = sss(1).sInStr("%") sss(1).PintEnd = sss(1).PointStart + 3 While sss(1).PointStart > 0 sss(1).PointStart = sss(1).PointStart + 1 sss(2).StringExpression = Chr(Dec(sss(1).sMid)) sss(1).StringExpression = Replace(sss(1).StringExpression, "%" + sss(1).sMid, sss(2).StringExpression) sss(1).PointStart = sss(1).sInStr("%") sss(1).PintEnd = sss(1).PointStart + 3 Wend ConvLink = sss(1).StringExpression ' written by IWiz mity@ropnet.ru End Function Public Function ShortenSize(Bigsize As Long) As String Dim finalesize As String If Bigsize = 0 Then ShortenSize = "Unknown" GoTo nosize End If If Bigsize > 1000 And Bigsize < 1000000 Then finalesize = Str(Fix((Bigsize / 1000) * 10) / 10) + " K" ElseIf Bigsize < 1000 Then finalesize = Str(Bigsize) + " bytes" ElseIf Bigsize > 1000000 Then finalesize = Str(Fix((Bigsize / 1000000) * 10) / 10) + " M" End If ShortenSize = finalesize nosize: ' written by IWiz mity@ropnet.ru End Function Public Function frdblTrim(sData) As String Dim i As Integer Dim char As Variant Dim ss As New SuperString ss.StringExpression = sData For Each char In ss.CharCollection If Asc(char) > 31 And Asc(char) < 126 Then frdblTrim = frdblTrim + char Next mvarStringExpression = frdblTrim ' written by IWiz mity@ropnet.ru End Function Public Function HexOutString(Optional sData As String) As String Dim i As Integer Dim strOut As String Dim outQuated As Boolean Dim cchar As String * 1 Dim bMissing As Boolean If sData = "" Then bMissing = True If sData = "" Then sData = mvarStringExpression For i = 1 To Len(sData) cchar = Mid(sData, i, 1) Select Case cchar Case Chr(48) To Chr(57) strOut = strOut + cchar Case Chr(65) To Chr(90) strOut = strOut + cchar Case Chr(97) To Chr(122) strOut = strOut + cchar Case Else strOut = strOut + "%" + TwoBitHex(Asc(cchar)) End Select Next If bMissing = True Then StringExpression = strOut End If HexOutString = strOut ' written by IWiz mity@ropnet.ru End Function Private Function TwoBitHex(num As Integer) As String Dim v As String v = Hex(num) If Len(v) = 1 Then v = "0" + v TwoBitHex = v ' written by IWiz mity@ropnet.ru End Function Public Function SigneIP(vData As Double, Optional UpdateExpression As Boolean) As String Dim HIP As String Dim zeroAdd As Byte Dim dVal As Double Dim ss As New SuperString dVal = CDbl(vData) HIP = ss.dHEX(dVal) zeroAdd = 8 - Len(HIP) HIP = HIP + Space(zeroAdd) HIP = Replace(HIP, " ", "0") For i = 1 To 4 SigneIP = CStr(Val("&H" + Left(HIP, 2))) + "." + SigneIP HIP = Right(HIP, Len(HIP) - 2) Next SigneIP = Left(SigneIP, Len(SigneIP) - 1) If UpdateExpression Then mvarStringExpression = SigneIP ' written by IWiz mity@ropnet.ru End Function