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

浏览器

开发平台:

Visual Basic

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "cINIFile"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. '---------------------------------------------------------------------------------------
  15. ' Module    : cINIFile
  16. ' DateTime  : 2005-3-19 20:17
  17. ' Author    : Lingll
  18. ' Purpose   :
  19. '---------------------------------------------------------------------------------------
  20. '2005-3-19 添加函数ReadSection,ReadSection2,ReadInt
  21. '8/5/2005   :strconv 增加使用了 LocaleID参数
  22. Option Explicit
  23. '确保strconv能正确转换
  24. Private Const LocaleID_SC As Long = 2052&    '简中
  25. Private Const LocaleID_CurUse As Long = LocaleID_SC
  26. Private Declare Function GetPrivateProfileSection Lib "kernel32.dll" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As Long, ByVal nSize As Long, ByVal lpFileName As String) As Long
  27. Private Declare Function GetPrivateProfileInt Lib "kernel32.dll" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long
  28. Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As Long, ByVal nSize As Long, ByVal lpFileName As String) As Long
  29. Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
  30. Private Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
  31. Public IniFile As String
  32. Public bffSize As Long
  33. Public Function ReadInt(SectionName$, KeyName$, Optional nDefault& = 0) As Long
  34. ReadInt = GetPrivateProfileInt(SectionName, KeyName, nDefault, IniFile)
  35. End Function
  36. Public Function ReadSection(SectionName$) As String
  37. Dim tBff() As Byte
  38. Dim tLen As Long
  39. tLen = FileLen(IniFile)
  40. If tLen > 0 Then
  41.     ReDim tBff(0 To tLen - 1)
  42.     tLen = GetPrivateProfileSection(SectionName, VarPtr(tBff(0)), tLen, IniFile)
  43.     If tLen > 1 Then
  44.         ReDim Preserve tBff(0 To tLen - 2)
  45.         ReadSection = Replace$(StrConv(tBff, vbUnicode, LocaleID_CurUse), vbNullChar, vbNewLine)
  46.     End If
  47. End If
  48. End Function
  49. Public Function ReadSection2(SectionName$, ptArr&, nSize&) As Long
  50. ReadSection2 = GetPrivateProfileSection(SectionName, ptArr, nSize, IniFile)
  51. End Function
  52. Public Function ReadKey(SectionName As String, _
  53.     KeyName As String, Optional DefaultVal As String = vbNullString, _
  54.     Optional IniName As String = vbNullString) As String
  55.   
  56.     Dim tBff() As Byte
  57. '    Dim tmpPos As Integer
  58.     Dim tBffLen&, tIniFile$
  59.     If LenB(IniName) <> 0 Then
  60.         tIniFile = IniName
  61.     Else
  62.         tIniFile = IniFile
  63.     End If
  64.     
  65.     ReDim tBff(0 To bffSize - 1)
  66.     tBffLen = GetPrivateProfileString(SectionName, KeyName, _
  67.         DefaultVal, VarPtr(tBff(0)), bffSize, tIniFile)
  68.     If tBffLen > 0 Then
  69.         ReDim Preserve tBff(0 To tBffLen - 1)
  70.         ReadKey = StrConv(tBff, vbUnicode, LocaleID_CurUse)
  71.     Else
  72.         ReadKey = vbNullString '""
  73.     End If
  74. End Function
  75. Public Function WriteKey(SectionName As String, KeyName As String, _
  76.     nKey As String, Optional IniName As String = vbNullString) As Boolean
  77.     
  78.     Dim rtn&
  79.     Dim tIniFile$
  80.     If LenB(IniName) <> 0 Then
  81.         tIniFile = IniName
  82.     Else
  83.         tIniFile = IniFile
  84.     End If
  85.     
  86.     rtn = WritePrivateProfileString(SectionName, _
  87.             KeyName, nKey, tIniFile)
  88.     If rtn <> 0 Then
  89.         WriteKey = True
  90.     Else
  91.         WriteKey = False
  92.     End If
  93. End Function
  94. Public Function DeleteKey(SectionName As String, KeyName As String, _
  95.     Optional IniName As String = vbNullString) As Boolean
  96.     
  97.     Dim rtn&
  98.     Dim tIniFile$
  99.     If LenB(IniName) <> 0 Then
  100.         tIniFile = IniName
  101.     Else
  102.         tIniFile = IniFile
  103.     End If
  104.     
  105.     rtn = WritePrivateProfileString(SectionName, _
  106.         KeyName, 0&, tIniFile)
  107.     If rtn <> 0 Then
  108.         DeleteKey = True
  109.     Else
  110.         DeleteKey = False
  111.     End If
  112. End Function
  113. Public Function DeleteSection(SectionName As String, _
  114.     Optional IniName As String = vbNullString) As Boolean
  115.     
  116.     Dim rtn&
  117.     Dim tIniFile$
  118.     If LenB(IniName) <> 0 Then
  119.         tIniFile = IniName
  120.     Else
  121.         tIniFile = IniFile
  122.     End If
  123.     
  124.     rtn = WritePrivateProfileString(SectionName, _
  125.         0&, 0&, tIniFile)
  126.     If rtn <> 0 Then
  127.         DeleteSection = True
  128.     Else
  129.         DeleteSection = False
  130.     End If
  131. End Function
  132. Private Sub Class_Initialize()
  133. IniFile = vbNullString '""
  134. bffSize = &H400& ' 256
  135. End Sub