频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

用VB开发应用程序如何使用INI文件

来源:VB爱好者 作者:请作者和我们联系 出处:巧巧读书 2006-06-30 进入讨论组

  为了方便用户使用和使系统具有灵活性,大多数Win-dows应用程序将用户所做的选择以及各种变化的系统信息记录在初始化(INI)文件中。因此,当系统的环境发生变化时,可以直接修改INI文件,而无需修改程序。由此可见,INI文件对系统功能是至关重要的。
本文将介绍采用VisualBasicforWindows(下称VB)开发Windows应用程序时如何读写INI文件。

  INI文件是文本文件,由若干部分(section)组成,在每个带括号的标题下面,是若干个以单个单词开头的关键词(keyword)和一个等号,每个关键词会控制应用程序某个功能的工作方式,等号右边的值(value)指定关键词的操作方式。其一般形式如下:

  [Section1]
  KeyWord1=Valuel
  KeyWord2=Value2
   ……
  [Section2]
  KeyWord1=Value1
  KeyWord2=Value2
   ……

  其中,如果等号右边无任何内容(即Value为空),那就表示Windows应用程序已为该关键词指定了缺省值,如果在整个文件中找不到某个关键词(或整个一部分),那同样表示为它们指定了缺省值。各个部分所出现的顺序是无关紧要的,在每一个部分里,各个关键词的顺序同样也无关紧要。

  读写INI文件通常有两种方式:一是在Windows中用“记事本”(Notepad)对其进行编辑,比较简单,无需赘述;二是由Windows应用程序读写INI文件,通常是应用程序运行时读取INI文件中的信息,退出应用程序时保存用户对运行环境的某些修改。

  关键词的值的类型多为字符串或整数型,应分两种情况读写。为了使程序具有可维护性和可移植性,最好把对INI文件的读写封装在一个模块(RWINI.BAS)中,在RWI-NI.BAS中构造GetIniS和GetIniN函数以及SetIniS和Se-tIniN过程,在这些函数和过程中需要使用WindowsAPI的“GetPrivateprofileString”、“GetPrivateProfileInt”和“WritePrivateProfileString”函数。

  RWINI.BAS模块的程序代码如下:

  在General-Declearation部分中声明使用到的WindowsAPI函数:

Public Declare Function GetprivateprofileString Lib“Kernel”(ByVal lpAppName As String,ByVal lpKeyName As _
  String,ByVal lpDefault As String,ByVal lpRetrm-String As String,ByVal cbReturnString As Integer, _
  ByVal Filename As String)As Integer
Public Declare Function GetPrivatePfileInt Lib“Kernel”(ByVal lpApp e As String,ByVal lpKeyName As String, _
  ByVal lpDefault As Integer,ByVal Filename As String)As Integer
Public Declare Funciton WritePrivateprofileString Lib“Kernel”(ByVal lpApplicationName As String, _
  ByVal lpKeyName As String,ByVal lpString As String,ByVal lplFileName As String)As Integer
Public Function GetIniS(ByVal SectionName As String,ByValKeyWord As String,ByVal DefString As String)As String
  Dim ResultString As String*144,Temp As Integer
  Dim s As String,i As Integer
  Temp%=GetPrivateProfileString(SectionName,KeyWord,"",ResultString,144,AppProfileName())
  ’检索关键词的值
  If Temp%>0 Then ’关键词的值不为空
  s=""
  For i=1 To 144
   If Asc(Mid$(ResultString,I,1))=0 Then
    ExitFor
   Else
    s=s & Mid$(ResultString,I,1)
   End If
  Next
  Else
  Temp%=WritePrivateProfilesString(sectionname,KeyWord,DefString,ppProfileName())
  ’将缺省值写入INI文件
  s=DefString
  End If
  GetIniS=s
End Function

Public Function GetIniN(ByVal SectionName As String,ByVal KeyWord As String,ByVal DefValue As Ineger)As Integer
  Dim d As Long,s As String
  d=DefValue
  GetIniN=GetPrivateProfileInt(SectionName,
  KeyWord,DefValue,ppProfileName())
  If d<>DefValue Then
   s=""
   d=WritePrivateProfileString(SectionName,
   KeyWord,s,AppProfileName())
  End If
End Function

Public Sub SetIniS(ByVal SectionName As String,BtVal KeyWord As String,ByVal ValStr As String)
  Dim res%
  res%=WritePrivateprofileString(SectionName,KeyWord,ValStr,AppProfileName())
End Sub
Public Sub SetIniN(ByVal SectionName As String,ByVal KeyWord As String,ByVal ValInt As Integer)
  Dim res%,s$
  s$=Str$(ValInt)
  res%=WriteprivateProfileString(SectionName,KeyWord,s$,AppProfileName())
End Sub

SectionName为每一部分的标题,KeyWord为关键词,GetIniS和GetIniN中的DefValue为关键词的缺省值,SetIniS和SetIniN的ValStr和ValInt为要写入INI文件的关键词的值。为了能更好地说明如何使用以上函数和过程,下面举两个实例。

实例1:

  开发应用程序通常要使用数据库和其它一些文件,这些文件的目录(包括路径和文件名)不应在程序中固定,而是保存在INI文件中,程序运行时由INI文件中读入。读入数据库文件的代码如下:

Dim Databasename As String
Databasename=GetIniS(“数据库”,“职工”,"")
If DatabaseName="" Then DatabaseName=InputBox(“请输入数据库《职工》的目录”),App.Title)
’也可通过“文件对话框”进行选择
On Error Resume Next
Set db=OpenDatabas(DatabaseName)
If Err<>0 Then
 MsgBox“打开数据库失败!”,MB-ICONSTOP,App.Title:GotoErrorProcessing
Else
 Set IniS“数据库”,“职工”,DatabaseName
End If
On Error GoTo 0
……

实例2:

  为了方便用户操作,有时需要保存用户界面的某些信息,例如窗口的高度和宽度等。装载窗体时,从INI文件中读入窗体高度和宽度,卸载窗体时将窗体当前高度和宽度存入INI文件,代码如下:

Private Sub Form1_Load()
 ……
 Forml.Height=GetIniN(“窗体1”,“高度”,6000)
 Form1.Width=GetIniN(“窗体1”,“高度”,4500)
EndSub
   ……
Private Sub Form1_Unload()
 ……
 SetIniN“窗体1”,“高度”,Me.Height
 SetIniN“窗体1,”宽度“,Me.Width
 ……
End Sub请保留地址 http://www.qqread.com/vb/d421130002.html 更多文章 更多内容请看Wlan组网----家庭专题VB文件编程专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章