VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 25459|回复: 33

[原创] Ini文件精解示例

[复制链接]
 楼主| 发表于 2008-12-17 08:45:02 | 显示全部楼层 |阅读模式
本帖最后由 icecept 于 2016-11-2 17:02 编辑

  1. '**************************************************************************
  2. '**模 块 名:INI 文件操作 - 操作ini.bas
  3. '**说    明:
  4. '**创 建 人:icecept(郭卫)
  5. '**日    期:2008-12-15 00:11:06
  6. '**修 改 人:icecept(魔灵)
  7. '**日    期:2009-1-9 01:20:23
  8. '**描    述:icecept(魔灵)制作
  9. '**版    本:V1.0.0    http://blog.sina.com.cn/icecept
  10. '*************************************************************************
  11. Option Explicit
  12. '读出自定义INI文件
  13. Private 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
  14. '写入自定义INI文件
  15. Public 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
  16. '读出自定义INI文件中的单个区段间的所有键名和值
  17. Public 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
  18. '读出自定义INI所有区段名
  19. Public Declare Function GetPrivateProfileSectionNames Lib "kernel32.dll" Alias "GetPrivateProfileSectionNamesA" (ByVal lpszReturnBuffer As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
  20. '*************************************************************************
  21. '**函 数 名:GetIni
  22. '**功能描述:从自定义ini文件中读信息 SectionName:区段名 KeyWord:具体键名 DefString:读取失败后返回默认 FileName:ini文件所在路径
  23. '**补    充:读出的都是String类型的,如果你想读数字型的,可用VB的val()函数将其转化
  24. '*************************************************************************
  25. Public Function GetIni(ByVal SectionName As String, ByVal KeyWord As String, ByVal DefString As String, ByVal FileName As String) As String
  26.     Dim ResultString As String * 255
  27.     If GetPrivateProfileString(ByVal SectionName, ByVal KeyWord, vbNullString, ByVal ResultString, ByVal Len(ResultString), ByVal FileName) > 0 Then '关键词的值不为空
  28.         GetIni = Left(ResultString, InStr(ResultString, Chr(0)) - 1)
  29.     Else    '将缺省值写入INI文件
  30.         WritePrivateProfileString SectionName, KeyWord, DefString, FileName
  31.         GetIni = DefString
  32.     End If
  33. End Function
  34. '*************************************************************************
  35. '**函 数 名:GetKeyWord
  36. '**功能描述:从自定义ini文件中得到键名和值
  37. '**          SectionName:区段名  DefString:默认值  FileName:ini文件所在路径
  38. '**补    充:?
  39. '*************************************************************************
  40. Public Function GetKeyWord(ByVal SectionName As String, ByVal DefString As String, ByVal FileName As String) As String
  41.     Dim szBuf As String * 255
  42.     If GetPrivateProfileSection(ByVal SectionName, ByVal szBuf, Len(szBuf), ByVal FileName) > 0 Then
  43.         '同时获取键名和值
  44.         GetKeyWord = Left(szBuf, InStr(szBuf, Chr(0)) - 1)
  45.     Else
  46.         WritePrivateProfileString SectionName, DefString, vbNullString, FileName
  47.         GetKeyWord = DefString
  48.     End If
  49. End Function
  50. '*************************************************************************
  51. '**函 数 名:GetKey
  52. '**功能描述:从自定义ini文件中得到键名
  53. '**          SectionName:区段名  DefString:默认值  FileName:ini文件所在路径
  54. '**补    充:?
  55. '*************************************************************************
  56. Public Function GetKey(ByVal SectionName As String, ByVal DefString As String, ByVal FileName As String) As String
  57.     Dim szBuf As String * 255, ResultString As String
  58.     ResultString = GetKeyWord(ByVal SectionName, ByVal szBuf, ByVal FileName)
  59.     If InStr(ResultString, "=") <> 0 Then
  60.         GetKey = Left(ResultString, InStr(ResultString, "=") - 1)
  61.     Else
  62.         GetKey = DefString
  63.     End If
  64. End Function

  65. '**************************************************************************
  66. '**模 块 名:INI 文件操作 - frmINI
  67. '**说    明:
  68. '**创 建 人:icecept(魔灵)
  69. '**日    期:2008-12-15 00:44:23
  70. '**修 改 人:icecept(魔灵)
  71. '**日    期:2009-1-9 01:20:23
  72. '**描    述:icecept(魔灵)制作
  73. '**版    本:V1.0.0      http://blog.sina.com.cn/icecept
  74. '*************************************************************************
  75. Option Explicit
  76. '读取 test.ini 文件的值
  77. Private Sub Command1_Click()
  78.     On Error Resume Next
  79.     Dim Ret1 As String, Ret2 As String
  80.     Dim Key1 As String, Key2 As String
  81.     Dim SectionArr() As String, m As Integer, Length As Integer
  82.     Dim szBuf As String * 255
  83.     '得到值     区段名,键名,读取失败时的默认值,文件名
  84.     Ret1 = GetIni("a", "b", vbNullString, App.Path & "\test.ini")
  85.     Ret2 = GetIni("d", "e", vbNullString, App.Path & "\test.ini")
  86.     '得到建名        区段名,键名,    文件名
  87.     Key1 = GetKey("a", szBuf, App.Path & "\test.ini")
  88.     Key2 = GetKey("d", szBuf, App.Path & "\test.ini")
  89.     '得到区段名                  区段名 ,键名,     文件名
  90.     Length = GetPrivateProfileSectionNames(szBuf, Len(szBuf), App.Path & "\test.ini")
  91.     szBuf = Left(szBuf, Length)
  92.     SectionArr = Split(szBuf, vbNullChar)
  93.     '如果数组为空,说明ini文件是空文件,直接退出
  94.     If UBound(SectionArr) > 0 Then
  95.         If Len(Key1) = 255 Then
  96.             MsgBox "[" & Split(szBuf, vbNullChar)(0) & "]" & vbCrLf & "[" & Trim(Split(szBuf, vbNullChar)(1)) & "]" & "=" & Ret2
  97.         Else
  98.             MsgBox "[" & Split(szBuf, vbNullChar)(0) & "]" & vbCrLf & Key1 & "=" & Ret1 & vbCrLf & "[" & Trim(Split(szBuf, vbNullChar)(1)) & "]" & vbCrLf & Key2 & "=" & Ret2
  99.         End If
  100.     Else
  101.         MsgBox "ini文件是空的"
  102.     End If
  103. End Sub
  104. Private Sub Command10_Click()
  105.     '获取win.ini所有区段名
  106.     List1.Clear
  107.     Dim szBuf As String, Length As Integer
  108.     Dim SectionArr() As String, m As Integer
  109.     szBuf = String$(255, 0)
  110.     Length = GetPrivateProfileSectionNames(szBuf, Len(szBuf), "c:\windows\win.ini")
  111.     szBuf = Left(szBuf, Length)
  112.     SectionArr = Split(szBuf, vbNullChar)
  113.     For m = 0 To UBound(SectionArr)
  114.         List1.AddItem SectionArr(m)
  115.     Next m
  116. End Sub
  117. Private Sub Command11_Click()
  118.     '获取win.in某区段内所有键名和值的列表
  119.     List1.Clear
  120.     Dim Length As Integer
  121.     Dim SectionArr() As String, m As Integer
  122.     Dim szBuf As String * 255
  123.     Length = GetPrivateProfileSection("rBnwares", szBuf, Len(szBuf), "c:\windows\win.ini")
  124.     szBuf = Left(szBuf, Length)
  125.     SectionArr = Split(szBuf, vbNullChar)
  126.     For m = 0 To UBound(SectionArr)
  127.         List1.AddItem SectionArr(m)
  128.     Next m
  129. End Sub
  130. Private Sub Command12_Click()
  131.     '      区段名,键名,值,文件名
  132.     WritePrivateProfileString "a", "b", "c", App.Path & "\test.ini"
  133.     WritePrivateProfileString "d", "e", "f", App.Path & "\test.ini"
  134. End Sub
  135. Private Sub Command2_Click()
  136.     '修改键值
  137.     Dim AA As String
  138.     AA = InputBox("请输入新的a区段键名b下的值", Me.Caption)
  139.     If AA <> vbNullString Then
  140.         WritePrivateProfileString "a", "b", AA, App.Path & "\test.ini"
  141.         MsgBox "修改成功"
  142.     End If
  143. End Sub
  144. Private Sub Command3_Click()
  145.     '删除a区段下的一个键名,删除键名后,键名下的值也会同时删除
  146.     '                        区段名 键名
  147.     WritePrivateProfileString "a", "b", vbNullString, App.Path & "\test.ini"
  148. End Sub
  149. Private Sub Command4_Click()
  150.     '删除整个区段,,删除区段后,区段下的键名和值也会同时删除
  151.     '        区段名
  152.     WritePrivateProfileString "a", vbNullString, vbNullString, App.Path & "\test.ini"
  153.     WritePrivateProfileString "d", vbNullString, vbNullString, App.Path & "\test.ini"
  154. End Sub
  155. Private Sub Command5_Click()
  156.     '在win.ini中写入键值
  157.     Dim AA As String
  158.     AA = InputBox("请输入新值", Me.Caption)
  159.     If AA <> vbNullString Then
  160.         WritePrivateProfileString "rBnwares", "Year", AA, "c:\windows\win.ini"
  161.         WritePrivateProfileString "rBnwares", "Month", AA, "c:\windows\win.ini"
  162.         WritePrivateProfileString "rBnwares", "Day", AA, "c:\windows\win.ini"
  163.         MsgBox "修改成功"
  164.     End If
  165. End Sub
  166. Private Sub Command6_Click()
  167.     '读取数据       区段名     键名      默认值             文件名
  168.     MsgBox GetIni("rBnwares", "Year", vbNullString, "c:\windows\win.ini")
  169. End Sub
  170. Private Sub Command7_Click()
  171.     '删除整个区段,,删除区段后,区段下的键名和值也会同时删除
  172.     '        区段名,       文件名
  173.     WritePrivateProfileString "rBnwares", vbNullString, vbNullString, "c:\windows\win.ini"
  174. End Sub
  175. Private Sub Command8_Click()
  176.     '获取键名
  177.     Dim szBuf As String * 255
  178.     '                区段名,     键名,    文件名
  179.     MsgBox GetKeyWord("rBnwares", szBuf, "c:\windows\win.ini")
  180. End Sub
  181. Private Sub Command9_Click()
  182.     '获取键名
  183.     Dim szBuf As String * 255
  184.     '                区段名,   键名,    文件名
  185.     MsgBox GetKey("rBnwares", szBuf, "c:\windows\win.ini")
  186. End Sub
  187. '写入 test.ini 文件的值
  188. Private Sub Form_Load()
  189. End Sub
  190. '生成的test.ini 文件格式:
  191. '
  192. '[a]              a: 区段名
  193. 'b=c         b:键名  c:值
  194. '[d]              d: 区段名
  195. 'e=f              e:键名  f:值
  196. '--------------------------------------------------------------------------------------
  197. '操作ini文件的函数列表:
  198. '只能操作win.ini的函数
  199. 'WriteProfileString 在win.ini初始化文件指定小节内设置一个字串
  200. 'WriteProfileSection 为win.ini初始化文件中一个指定的小节设置所有项名和值
  201. 'GetProfileInt 取得win.ini初始化文件中指定条目的一个整数值
  202. 'GetProfileSection               获取指定小节(在win.ini文件中)所有项名和值的一个列表
  203. 'GetProfileString 为win.ini初始化文件中指定的条目取得字串
  204. '======================================================================================
  205. '即能操作win.ini的函数,又能操作自定义ini文件的函数
  206. 'WritePrivateProfileString 在初始化文件指定小节内设置一个字串
  207. 'WritePrivateProfileSection      为一个初始化文件(.ini)中指定的小节设置所有项名和值
  208. 'GetPrivateProfileInt 为初始化文件中指定的条目获取一个整数值
  209. 'GetPrivateProfileSection 获取指定小节所有项名和值的一个列表
  210. 'GetPrivateProfileString 为初始化文件中指定的条目取得字串
  211. 'GetPrivateProfileSectionNames 读出INI文件中所有区段名
复制代码
[ 本帖最后由 icecept 于 2009-1-11 21:03 编辑 ]
1.jpg

ini文件精解示例.rar

17.15 KB, 下载次数: 1382

评分

参与人数 3威望 +6 人气 +3 收起 理由
红色狂想 + 1 + 1 精品文章
peace2008 + 2 + 1 精品文章
kx25 + 3 + 1 支持

查看全部评分

 楼主| 发表于 2008-12-17 08:48:09 | 显示全部楼层

INI 文件详解(from to baidu)


  1. 一、INI文件概述

  2.   Windows INI文件,可解释为Windows初始化文件。它是一种专门用来保存应用程序初始化信息和运行环境信息的文本文件。例如Windows 3.1中两个著名的INI文件win.ini和system.ini就在Windows启动时定义了Windows环境中鼠标响应速度、使用的外壳(shell)程序等设置。Windows系统附带的许多应用程序也都有自己的INI文件,例如控制面板的INI 文件为control.ini,它也同样定义了控制面板的有关设置。ini文件是一种文本文件,它可以通过Notepad等文本编辑器进行编辑。ini文件具有特定的格式。一个INI文件是由若干个段(section)组成的,每个段中包含若干关键字(key)及相应的值(value)。段的格式如下:

  3. [SectionName]
  4. KeyName=Value

  5. 其中SectionName和KeyName分别是段名和关键字名,Value为关键字对应的设定值。需要加以注意的是:

  6. (1)段名必须加以"["和"]",且"["必须在屏幕的第一列;
  7. (2)关键字名也必须从屏幕的第一列开始书写,且后面必须紧跟"=";
  8. (3)可以对文件加以注释,每行注释须以";"开头。

  9.   在Windows中,可以通过手工编辑INI 文件来改变应用程序设置。如要想将Windows的外壳程序改为文件管理器,则可将system.ini中[boot]段下的"shell=progman.exe"改为"shell=winfile.exe"。有些设置也可以直接在应用程序界面上更改,但实际上也是通过修改INI文件来保存这些修改的。

  10. 二、在VB中操作INI文件的几个Windows API函数

  11.   在开发应用程序时,我们可以创建应用程序自己的INI文件,通过INI文件保存应用程序的一些运行环境信息,然后在程序中读取INI文件中的设置信息并据以处理。一旦程序的运行环境需要变更,则可以通过直接修改INI文件或在程序中提供专门的界面间接地修改INI文件来保证程序的可用性。

  12.   VB(Visual Basic)语言是近年来十分流行的一种面向对象的编程语言,但VB本身并不提供操纵INI文件的函数。所幸的是, VB支持DLL(Dynamic Link Library)的调用。(一个DLL事实上就是一个可供其它支持DLL调用的应用程序调用的外部函数集。)DLL中的函数称为API(应用编程接口,Application Programming Interface)函数。我们可以通过调用相应的API函数来实现操纵INI文件的功能。下面列出了相关的API函数及其说明。在使用这些函数之前,必须首先在VB的模块文件(.bas)中用Declare语句对它们进行声明。



  13. 三、实例分析

  14.   下面就笔者参加天津财经学院教学办公自动化(OA)系统开发的实践介绍一下具体的实现方法。假定项目文件为man.mak,对应的INI文件为man.ini,其部分内容如下:

  15. [数据库]
  16. 文件名=\\DEC_LX5120\DB\OA.mdb
  17. [开户银行]
  18. 类型数=3
  19. B1=中国人民银行
  20. B2=中国农业银行
  21. B3=中国工商银行

  22. 1. 在程序启动时(执行SUB MAIN()和SUB FORM_LOAD()),从man.ini文件中读取相应的值并进行以后的操作。其中SUB MAIN()中的有关代码如下:

  23. Dim DbName as String*255    '数据库名
  24. Dim n as Integer
  25. '得到INI文件名,INIfileName为一全局变量
  26. INIfileName=App.Path&""&app.ExeName&".ini"
  27. '从man.ini中读取数据库文件名
  28. n=GetPrivateProfileString("数据库","文件名","",DbName,Len(DbName),INIfileName)
  29. DbName=Left(DbName,n)
  30. '打开数据库,Db为一全局变量
  31. Set    Db=OpenDatabase(DbName)
  32. 在FORM_LOAD()过程中,读取了man.ini中有关的内容并加入相应的组合框(Combo Box)列表中。这里只给出对"[开户银行]"段的相应操作,代码如下:
  33. Dim BankCount as Integer    '银行类型数
  34. Dim BankName as String*255    '银行名
  35. Dim i as Integer,n as Integer
  36. '读取原有银行类型数
  37. BankCount=GetPrivateProfileInt("开户银行","类型数",0,INIfileName)
  38. '读取银行名并加入到组合框cmbBank中
  39. For I=1 to BankCount
  40. n=GetPrivateProfileString("开户银行","B"&i,BankName,Len(BankName),INIfileName)
  41. BankName=Left(BankName,n)
  42. cmbBank.AddItem BankName
  43. Next I

  44. 2. 在程序中提供了一个专用维护界面,该界面通过操作INI文件的相应内容来实现相应的修改。

  45. '下面代码实现数据库路径的修改
  46. Dim n as Integer
  47. 'txtDbName.Text对应新的数据库文件名
  48. If     txtDbName.Text=""    Then
  49.     MsgBox "数据库文件名不能为空!",MB_ICONSTOP,App.Title
  50.     txtDbName.SetFocus
  51.     Exit Sub
  52. Else
  53.     '修改数据库文件名
  54.     n=WritePrivateProfileString("数据库","文件名",txtDbName.Text,INIfileName)
  55. End If

  56. '下面代码往组合框"开户银行"中增加一个新银行
  57. Dim NewBank as String        '新银行名
  58. Dim BankCount as Integer    '银行类型数
  59. Dim I as Integer,n as Integer
  60. '输入新银行名
  61. NewBank=InputBox("增加开户银行。",App.Title,"")
  62. If    NewBank=""    Then
  63.         MsgBox "银行名不能为空!",MB_ICONSTOP,App.Title
  64.         Exit Sub
  65. Else
  66.     '判断输入的银行名是否已存在于列表中
  67.     For     I=0     to     cmbBank.ListCount-1
  68.         If    NewBank=cmbBank.List(i)     Then
  69.             '存在则终止
  70.             MsgBox NewBank&"已存在于列表中!",MB_ICONSTOP,App.Title)
  71.             Exit Sub
  72.         End If
  73.     Next I
  74.     '读取原银行类型数
  75.     BankCount=GetPriVateProfileInt("开户银行","类型数",0,INIfileName)
  76.     '将银行类型数增1
  77.     BankCount=BankCount+1   
  78. n=WritePrivateProfileString("开户银行","类型数",Str(BankCount),INIfileName)
  79.     '将新银行名写入INI文件中
  80.     n=WritePrivateProfileString("开户银行","B"&BankCount,NewBank,INIfileName)
  81. End If

  82. 四、结论

  83.   综上所述,在实际的VB应用程序开发中,适当地利用INI文件,可以很好地改善程序的可维护性和可用性。尤其在数据库访问中使用INI文件可使用户在数据库路径改变时免去修改原代码之苦。在实际开发中,若结合一定的维护界面,也可使应用程序容易维护,增强友好性。
复制代码

[ 本帖最后由 icecept 于 2009-1-11 21:05 编辑 ]

评分

参与人数 1威望 +3 人气 +1 收起 理由
bshkl + 3 + 1 支持

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2008-12-22 19:32:20 | 显示全部楼层
文章的不错,收藏了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-28 17:43:32 | 显示全部楼层

能读多行啊



[ 本帖最后由 icecept 于 2008-12-28 18:10 编辑 ]
1.jpg
2.jpg
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-3 20:49:39 | 显示全部楼层

获取ini一个区段内所有值的列表

'**************************************************************************
'**模 块 名:INI 文件操作 - frmINI
'**说 明:
'**创 建 人:icecept(魔灵)
'**日 期:2008-12-15 00:44:23
'**修 改 人:icecept(魔灵)
'**日 期:
'**描 述:icecept(魔灵)制作
'**版 本:V1.0.0 http://icecept.blog.sohu.com
'*************************************************************************
Option Explicit
'读出自定义INI文件中的单个区段间的所有键名和值
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
Private Sub Command1_Click()
'获取某区段内所有键名和值的列表
List1.Clear
Dim Length As Integer
Dim SectionArr() As String, m As Integer
Dim szBuf As String * 255
Length = GetPrivateProfileSection("icecept", szBuf, Len(szBuf), App.Path & "\test.ini")
szBuf = Left(szBuf, Length)
SectionArr = Split(szBuf, vbNullChar)
For m = 0 To UBound(SectionArr)
       List1.AddItem SectionArr(m)
Next m
End Sub
获取ini一个区段内所有值的列表.rar


回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-4 13:10:54 | 显示全部楼层

删除ini文件一个区段或特定某行的值

本帖最后由 icecept 于 2016-11-2 17:04 编辑

'**************************************************************************
'**模 块 名:INI 文件操作 - frmINI
'**说 明 :删除ini文件一个区段或特定某行的值
'**创 建 人:icecept(郭卫)
'**日 期:2009-01-03 12:55:20
'**修 改 人:郭卫(魔灵)
'**日 期:
'**描 述:icecept(魔灵)制作
'**版 本:V1.0.0    http://blog.sina.com.cn/icecept
'*************************************************************************
Option Explicit
'读出自定义INI文件
Private 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
'写入自定义INI文件
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

Private Sub Command3_Click()
'删除icecept区段下的一个键名icecept,删除键名后,键名下的值也会同时删除
'           区段名    键名
     WritePrivateProfileString "icecept", "icecept", vbNullString, App.Path & "\test.ini"
End Sub

Private Sub Command2_Click()
'删除整个区段,,删除区段后,区段下的键名和值也会同时删除
'                          区段名
     WritePrivateProfileString "icecept", vbNullString, vbNullString, App.Path & "\test.ini"
End Sub

Private Sub Command1_Click()
'    区段名,键名,值,文件名
     WritePrivateProfileString "icecept", "VB", "vbgood", App.Path & "\test.ini"
     WritePrivateProfileString "icecept", "FOX", "FoxPro", App.Path & "\test.ini"
     WritePrivateProfileString "icecept", "C", "C++", App.Path & "\test.ini"
     WritePrivateProfileString "icecept", "icecept", "魔灵", App.Path & "\test.ini"
End Sub

'写入 test.ini 文件的值
Private Sub Form_Load()
     Command1.Value = True
End Sub


附件: 删除ini一个区段或特定某行的值.rar


图片附件: 1.jpg


图片附件: 2.jpg




[ 本帖最后由 icecept 于 2009-1-4 13:31 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-9 12:10:17 | 显示全部楼层

分别得到一个区段内各键名下的值

本帖最后由 icecept 于 2016-11-2 17:04 编辑

'**************************************************************************
'**模 块 名:INI 文件操作 - 操作ini.bas
'**说 明:
'**创 建 人:icecept(魔灵)
'**日 期:2008-12-15 00:11:06
'**修 改 人:icecept(魔灵)
'**日 期:2009-1-9 01:20:23
'**描 述:icecept(魔灵)制作
'**版 本:V1.0.0   http://blog.sina.com.cn/icecept
'*************************************************************************

Private 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 b1 As String, b2 As String, b3 As String

Private Sub Form_Load()
Dim szBuf As String * 255

    GetPrivateProfileString "main", "标题", vbNullString, szBuf, Len(szBuf), App.Path & "\test.ini"
b1 = Left(szBuf, InStr(szBuf, Chr(0)) - 1)

GetPrivateProfileString "main", "文件名", vbNullString, szBuf, Len(szBuf), App.Path & "\test.ini"
b2 = Left(szBuf, InStr(szBuf, Chr(0)) - 1)

GetPrivateProfileString "main", "大小", vbNullString, szBuf, Len(szBuf), App.Path & "\test.ini"
b3 = Left(szBuf, InStr(szBuf, Chr(0)) - 1)

MsgBox b1 & vbCrLf & b2 & vbCrLf & b3
End Sub




[ 本帖最后由 icecept 于 2009-1-9 23:19 编辑 ]

分别得到一个区段内各键名下的值.rar

2.49 KB, 下载次数: 688

回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-24 09:50:06 | 显示全部楼层
本帖最后由 icecept 于 2016-11-2 17:05 编辑

在文本框中显示ini文件中所对应的值

Option Explicit
'**************************************************************************
'**模 块 名:INI 文件操作 - 操作ini.bas
''**说    明:魔灵圣域 by icecept(郭卫)
'**创 建 人:icecept(魔灵)
'**日    期:2009-03-12 01:03:56
'**修 改 人:icecept(魔灵)
'**版    本:V1.0.0
'**E-mail  :icecept@163.com    QQ:543375508
'**网    址: http://blog.sina.com.cn/icecept
'*************************************************************************
Private Sub Command1_Click()
    '获取键名
    Dim szBuf As String * 255, Length As Integer
    Length = GetPrivateProfileSectionNames(szBuf, Len(szBuf), App.Path & "\test.ini")
    szBuf = Left(szBuf, Length)
    Text1(0).Text = Split(szBuf, vbNullChar)(0)
    '                区段名,   键名,    文件名
    Text1(1).Text = GetKey(Text1(0).Text, szBuf, App.Path & "\test.ini")
    '读取数据       区段名     键名      默认值             文件名
    Text1(2).Text = GetIni(Text1(0).Text, Text1(1).Text, vbNullString, App.Path & "\test.ini")
End Sub
Private Sub Form_Load()
    '      区段名,键名,值,文件名
    WritePrivateProfileString "Command6", "4320", "1230", App.Path & "\test.ini"
End Sub

附件: 在文本框中显示ini文件中所对应的值.rar


[ 本帖最后由 icecept 于 2009-3-12 19:39 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2009-3-2 16:09:34 | 显示全部楼层
好文章收藏
回复 支持 反对

使用道具 举报

发表于 2009-8-5 15:30:13 | 显示全部楼层
不错,很详细。慢慢学习。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2019-11-13 08:39

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表