mMix.bas
上传用户:davilee3
上传日期:2015-04-22
资源大小:986k
文件大小:6k
源码类别:

浏览器

开发平台:

Visual Basic

  1. Attribute VB_Name = "mMix"
  2. Option Explicit
  3. '---------------------------------------------------------------------------------------
  4. ' Procedure : Mid2
  5. ' DateTime  : ?/?/200? ??:??
  6. ' Author    : Lingll
  7. ' Purpose   :
  8. '8/5/2005   :strconv使用了LocaleID参数
  9. '---------------------------------------------------------------------------------------
  10. Public Function Mid2(nStr$, Optional Start& = 1, Optional Length&, Optional nEnd$) As String
  11. Dim tmpStr  As String
  12. Dim tEndLen As Long
  13. 'Dim rtn$
  14. tmpStr = StrConv(nStr, vbFromUnicode, LocaleID_CurUse)
  15. tEndLen = LenB(StrConv(nEnd, vbFromUnicode, LocaleID_CurUse))
  16. If LenB(tmpStr) > Length + tEndLen Then
  17.     Mid2 = Replace(StrConv(LeftB$(tmpStr, Length), vbUnicode, LocaleID_CurUse), Chr(0), "") & nEnd
  18. Else
  19.     Mid2 = nStr
  20. End If
  21. End Function
  22. Public Function BooleanToBool(nVal As Boolean) As Long
  23. If nVal Then
  24.     BooleanToBool = 1
  25. Else
  26.     BooleanToBool = 0
  27. End If
  28. End Function
  29. Public Function BoolToBoolean(ByVal nVal As Long) As Boolean
  30. BoolToBoolean = (nVal = 1)
  31. End Function
  32. '检查 nUrl 是否类似 nFilterUrl,有通配符 *
  33. Public Function MatchUrl(nFilterUrl As String, nUrl As String) As Boolean
  34. Dim tFUrlArr() As String
  35. Dim i&, ub&, pos1&
  36. Dim rtn As Boolean
  37. tFUrlArr = Split(nFilterUrl, "*")
  38. ub = UBound(tFUrlArr)
  39. pos1 = 1
  40. rtn = True
  41. For i = 0 To ub
  42.     If tFUrlArr(i) <> "" Then
  43.         pos1 = InStr(pos1, nUrl, tFUrlArr(i), vbTextCompare)
  44.         If pos1 > 0 Then
  45.             Select Case i
  46.                 Case 0
  47.                     If pos1 <> 1 Then
  48.                         rtn = False
  49.                         Exit For
  50.                     End If
  51.                 Case ub
  52.                     If pos1 + Len(tFUrlArr(i)) - 1 <> Len(nUrl) Then
  53.                         rtn = False
  54.                         Exit For
  55.                     End If
  56.             End Select
  57.             pos1 = pos1 + Len(tFUrlArr(i))
  58.         Else
  59.             rtn = False
  60.             Exit For
  61.         End If
  62.     End If
  63. Next i
  64. MatchUrl = rtn
  65. End Function
  66. Public Function GetWindowTextVb(vHwnd&, Optional vBffLen& = 255) As String
  67. Dim tArr() As Byte
  68. ReDim tArr(0 To vBffLen - 1)
  69. Dim tstr$
  70. tstr = Space(vBffLen)
  71. Dim tRLen&
  72. tRLen = GetWindowText(vHwnd, VarPtr(tArr(0)), vBffLen)
  73. Debug.Print tRLen
  74. If tRLen > 0 Then
  75.     If tRLen < vBffLen Then
  76.         ReDim Preserve tArr(0 To tRLen - 1)
  77.     End If
  78.     GetWindowTextVb = StrConv(tArr(), vbUnicode)
  79. Else
  80.     GetWindowTextVb = ""
  81. End If
  82. End Function
  83. '获得扩展名
  84. Public Function GetExtendName(vFile$) As String
  85. Dim tPos&
  86. On Error Resume Next
  87. tPos = InStrRev(vFile, ".")
  88. If tPos > 0 Then
  89.     GetExtendName = Mid$(vFile, tPos + 1)
  90. Else
  91.     GetExtendName = vbNullString
  92. End If
  93. End Function
  94. '获得文件夹
  95. Public Function GetFileFolder(vPath$) As String
  96. Dim tPos&
  97. tPos = InStrRev(vPath, "")
  98. If tPos > 0 Then
  99.     GetFileFolder = Mid$(vPath, 1, tPos - 1)
  100. Else
  101.     GetFileFolder = vbNullString
  102. End If
  103. End Function
  104. '---------------------------------------------------------------------------------------
  105. ' Procedure : SwapData
  106. ' DateTime  : 2005-4-15 21:56
  107. ' Author    : Lingll
  108. ' Purpose   : 交换数据,pointer方式
  109. '---------------------------------------------------------------------------------------
  110. Public Sub SwapData(lpt1&, lpt2&)
  111. Dim tPtr&
  112. CopyMemory tPtr, ByVal lpt1, 4
  113. CopyMemory ByVal lpt1, ByVal lpt2, 4
  114. CopyMemory ByVal lpt2, tPtr, 4
  115. End Sub
  116. 'Private Function GetAscNM(vStr$, vPos&) As Long
  117. 'Dim tAsc&
  118. 'CopyMemory tAsc, StrPtr(vStr) + vPos * 2
  119. 'End Function
  120. 'Public Function IntToLong(vVal As Integer) As Long
  121. 'Dim rtn&
  122. 'CopyMemory rtn, vVal, 2
  123. 'IntToLong = rtn
  124. 'End Function
  125. '---------------------------------------------------------------------------------------
  126. ' Procedure : CompareString
  127. ' DateTime  : 2005-4-19 02:24
  128. ' Author    : Lingll
  129. ' Purpose   : 比较string,主要是针对中文
  130. '---------------------------------------------------------------------------------------
  131. Private Function CompareString(vLow$, vHigh$) As Boolean
  132.     Dim bResult As Boolean
  133.     
  134.     Dim i&, j&
  135.     Dim lLow&, lHigh&
  136.     Dim aLow&, aHigh&
  137.     Dim tVal&
  138.     
  139.     lLow = Len(vLow)
  140.     lHigh = Len(vHigh)
  141.     
  142.     bResult = False
  143.     For i = 1 To lHigh
  144.         If lLow < i Then
  145.             bResult = True
  146.             Exit For
  147.         Else
  148.             tVal = 0
  149.             CopyMemory tVal, ByVal VarPtr(Asc(Mid(vLow, i, 1))), 2
  150.             aLow = tVal
  151.             
  152.             tVal = 0
  153.             CopyMemory tVal, ByVal VarPtr(Asc(Mid(vHigh, i, 1))), 2
  154.             aHigh = tVal
  155.             
  156. '            aLow = IntToLong(Asc(Mid(vLow, i, 1)))
  157. '            aHigh = IntToLong(Asc(Mid(vHigh, i, 1)))
  158.             If aLow < aHigh Then
  159.                 bResult = True
  160.                 Exit For
  161.             ElseIf aLow > aHigh Then
  162.                 bResult = False
  163.                 Exit For
  164.             End If
  165.         End If
  166.     Next i
  167.     CompareString = bResult
  168. End Function
  169. '---------------------------------------------------------------------------------------
  170. ' Procedure : SortString
  171. ' DateTime  : 2005-4-19 01:44
  172. ' Author    : Lingll
  173. ' Purpose   : 对string排序,SmallToBig:是否由小到大
  174. '               需要 SwapData sub
  175. '---------------------------------------------------------------------------------------
  176. Public Sub SortString(vStr() As String, pStart&, pEnd&, _
  177.         Optional SmallToBig As Boolean = True)
  178. Dim i&, j&
  179. For i = pEnd To pStart + 1 Step -1
  180.     For j = pStart To i - 1
  181.         If CompareString(LCase$(vStr(j + 1)), LCase$(vStr(j))) = SmallToBig Then
  182.             SwapData VarPtr(vStr(j)), VarPtr(vStr(j + 1))
  183.         End If
  184.     Next j
  185. Next i
  186. End Sub