VB下幾個非常有用的函式 (轉)

worldblog發表於2007-12-05
VB下幾個非常有用的函式 (轉)[@more@]

  VB下幾個非常有用的
'————————(1)————————————
'獲得指定ini中某個節下面的所有鍵值 TrueZq,,需要下面的宣告
'Private Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
'返回一個字串陣列
'舉例:
'Dim arrClass() As String
'arrClass = GetInfoSection("class", "d:type.ini")

 
Public Function GetInfoSection(strSection As String, strIniFile As String) As String()
  Dim strReturn As String * 32767
  Dim strTmp As String
  Dim nStart As Integer, nEnd As Integer, i As Integer
  Dim sArray() As String
 
 
 
  Call GetPrivateProfileSection(strSection, strReturn, Len(strReturn), strIniFile)
 
  strTmp = strReturn
  i = 1
  Do While strTmp <> ""
  nStart = nEnd + 1
  nEnd = InStr(nStart, strReturn, vbNullChar)
  strTmp = Mid$(strReturn, nStart, nEnd - nStart)
  If Len(strTmp) > 0 Then
  ReDim Preserve sArray(1 To i)
  sArray(i) = strTmp
  i = i + 1
  End If
 
  L
  GetInfoSection = sArray
End Function

'————————(2)————————————
'作用:去掉字串中的首尾空格、所有無效字元
'測試用例
'Dim strRes As String
'Dim strSour As String
'
'strSour = " " & vbNullChar & vbNullChar & " ab cd" & vbNullChar
'strRes = zqTrim(strSour)
'MsgBox " 長度=" & Len(strSour) & "值=111" & strRes & "222"
Public Function zqTrim(ByVal strSour As String) As String
  Dim strTmp As String
  Dim nLen As Integer
  Dim i As Integer, j As Integer
  Dim strNow As String, strValid() As String, strNew As String
  'strNow 當前字元
  'strValid 有效字元
  'strNew 最後生成的新字元
 
  strTmp = Trim$(strSour)
  nLen = Len(strTmp)
  If nLen < 1 Then
  zqTrim = ""
  Exit Function
  End If
  j = 0
  For i = 1 To nLen
  strNow = Mid(strTmp, i, 1) '每次讀取一個字元
  'MsgBox Asc(strNow)
  If strNow <> vbNullChar And Asc(strNow) <> 9 Then '如果有效,則存入有效陣列
  ReDim Preserve strValid(j)
  strValid(j) = strNow
  j = j + 1
  End If
 
  Next i
 
  strNew = Join(strValid, "") '將所有有效字元連線起來
  zqTrim = Trim$(strNew) '去掉字串中的首尾空格
End Function


'————————(3)————————————
'檢查檔案是否存在,存在返回 TRUE,否則返回FALSE
Public Function CheckFileExist(strFile As String) As Boolean
 
  If Dir(strFile, vbDirectory) <> "" Then
  CheckFileExist = True
  Else
  CheckFileExist = False
  End If
End Function

'————————(4)————————————
'獲得指定ini檔案中某個節下面某個子鍵的鍵值,需要下面的API宣告
'Public Declare Function GetPrivateProfileString Lib "kernel32" Alias _
'  "GetPrivateProfileStringA" (ByVal lpApplicationName As String, _
'  ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString _
'  As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
'返回一個字串
'呼叫舉例:
'Dim strRun As String
'strRun = GetiniValue("","Run", "C:WindowsWin.ini")

Public Function GetiniValue(ByVal lpKeyName As String, ByVal strName As String, ByVal strIniFile As String) As String
  Dim strTmp As String * 255
 
  Call GetPrivateProfileString(lpKeyName, strName, "", _
  strTmp, Len(strTmp), strIniFile)
  GetiniValue = Left$(strTmp, InStr(strTmp, vbNullChar) - 1)
 
End Function

'————————(5)————————————
'獲得Windows目錄 ,需要下面的API宣告
'Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
'返回一個字串,如“C:Windows”、“C:Winnt”
'呼叫舉例:
'Dim strWindir As String
'strWindir = GetWinDir()
Private Function GetWinDir()
  Dim windir As String * 100
  Call GetWindowsDirectory(windir, 100)
  GetWinDir = Left$(windir, InStr(windir, vbNullChar) - 1)
 
End Function

'————————(6)————————————
'獲得Windows目錄,需要下面的API宣告
'Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
'返回一個字串,如“C:WindowsSystem”、“C:WinntSystem32”
'呼叫舉例:
'Dim strSysDir As String
'strSysDir = GetSystemDir()
Private Function GetSystemDir()
  Dim strSysDir As String * 100
  Call GetSystemDirectory(strSysDir, 100)
  GetSystemDir = Left$(strSysDir, InStr(strSysDir, vbNullChar) - 1)
 
End Function


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988621/,如需轉載,請註明出處,否則將追究法律責任。

相關文章