⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ba62.htm

📁 VB教程
💻 HTM
字号:
<HTML>
<HEAD>
<TITLE>用VB开发应用程序如何使用INI文件</TITLE>
 
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
 
</head>
<p align="center"><script src="../../1.js"></script></a>
<BODY topMargin=4 vLink=#0000ff>
<TABLE border=0 cellPadding=0 cellSpacing=0 width="100%">
  <TBODY>
  <TR>
    <TD height="52"> 
      <DIV align=center>
      <CENTER>
          <table border=0 cellpadding=0 cellspacing=0 width=679 align="center">
            <tbody> 
            <tr> 
              <td width=200 height="59"> 
                 
    </TD></TR><!--msnavigation--></TBODY></TABLE>
<table border=0 cellpadding=0 cellspacing=0 width="100%">
  <tbody> 
  <tr><!--msnavigation--><td valign=top height="123"> 
      <div align=center> 
        <table border=1 bordercolor=#b9d9ff cellpadding=0 cellspacing=0 
      class=table width=755>
          <center>
            <tr> 
               
              <td width="100%" height="3">
                <div align="center"> <strong><b>用VB开发应用程序如何使用INI文件</b></strong></span></div>
              </td>
            </tr>
            <tr> 
              <td 
            width="100%" class="unnamed1" height="124"> 
                <div align="left">
                  <p align="center">&nbsp;</p>
                  <p align="left"> <font size="-1" face="宋体">为了方便用户使用和使系统具有灵活性,大多数Win-dows应用程序将用户所做的选择以及各种变化的系统信息记录在初始化(INI)文件中。因此,当系统的环境发生变化时,可以直接修改INI文件,而无需修改程序。由此可见,INI文件对系统功能是至关重要的。本文将介绍采用VisualBasicforWindows(下称VB)开发Windows应用程序时如何读写INI文件。<br>
                    <br>
                    INI文件是文本文件,由若干部分(section)组成,在每个带括号的标题下面,是若干个以单个单词开头的关键词(keyword)和一个等号,每个关键词会控制应用程序某个功能的工作方式,等号右边的值(value)指定关键词的操作方式。其一般形式如下:<br>
                    <br>
                    [section1]<br>
                    keyword1=valuel<br>
                    keyword2=value2<br>
                    ……<br>
                    [section2]<br>
                    keyword1=value1<br>
                    keyword2=value2<br>
                    ……<br>
                    <br>
                    <br>
                    <br>
                    其中,如果等号右边无任何内容(即value为空),那就表示Windows应用程序已为该关键词指定了缺省值,如果在整个文件中找不到某个关键词(或整个一部分),那同样表示为它们指定了缺省值。各个部分所出现的顺序是无关紧要的,在每一个部分里,各个关键词的顺序同样也无关紧要。<br>
                    <br>
                    读写INI文件通常有两种方式:一是在Windows中用“记事本”(Notepad)对其进行编辑,比较简单,无需赘述;二是由Windows应用程序读写INI文件,通常是应用程序运行时读取INI文件中的信息,退出应用程序时保存用户对运行环境的某些修改。<br>
                    <br>
                    关键词的值的类型多为字符串或整数型,应分两种情况读写。为了使程序具有可维护性和可移植性,最好把对INI文件的读写封装在一个模块(RWINI.BAS)中,在RWI-NI.BAS中构造GetIniS和GetIniN函数以及SetIniS和Se-tIniN过程,在这些函数和过程中需要使用WindowsAPI的“GetPrivateprofileString”、“GetPrivateProfileInt”和“WritePrivateProfileString”函数。<br>
                    <br>
                    RWINI.BAS模块的程序代码如下:<br>
                    <br>
                    在General-Declearation部分中声明使用到的WindowsAPI函数:<br>
                    <br>
                    <br>
                    <br>
                    DeclareFunctionGetprivateprofileStringLib“Ker-nel”(ByVallpAppNameAsString,<br>
                    ByVallpKeyNameAsString,ByVallpDefaultAsString,ByVallpRetrm-StringAs<br>
                    String,ByValcbReturnStringAsInteger,ByValFilenameAsString)AsInteger<br>
                    DeclareFunctionGetPrivatePfileIntLib“Kernel”(ByVallpAppNameAsString,<br>
                    ByVallpKeyNameAsString,ByVallpDefaultAsInteger,ByValFilenameAsString)As<br>
                    Integer<br>
                    DeclareFuncitonWritePrivateprofileStringLib“Kernel”(ByVallpApplicationName<br>
                    AsString,ByVallpKeyNameAsString,ByVallpStringAsString,ByVallplFileName<br>
                    AsString)AsInteger<br>
                    FunctionGetIniS(ByValSectionNameAsString,ByValKeyWordAsString,ByValDefString<br>
                    AsString)AsString<br>
                    DimResultStringAsString*144,TempAsInteger<br>
                    DimsAsString,iAsInteger<br>
                    Temp%=GetPrivateProfileString(SectionName,KeyWord,“”,ResultString,144,AppProfileName())<br>
                    ‘检索关键词的值<br>
                    IfTemp%>0Then‘关键词的值不为空<br>
                    s=“”<br>
                    Fori=1To144<br>
                    IfAsc(Mid$(ResultString,i,1))=0Then<br>
                    ExitFor<br>
                    Else<br>
                    s=s&amp;Mid$(ResultString,i,1)<br>
                    EndIf<br>
                    Next<br>
                    Else<br>
                    Temp%=WritePrivateProfilesString(sectionname,KeyWord,DefString,ppProfileName())<br>
                    ‘将缺省值写入INI文件<br>
                    s=DefString<br>
                    EndIf<br>
                    GetIniS=s<br>
                    EndFunction<br>
                    FunctionGetIniN(ByValSectionNameAsString,ByValKeyWordAsString,ByValDefValue<br>
                    AsIneger)AsInteger<br>
                    DimdAsLong,sAsString<br>
                    d=DefValue<br>
                    GetIniN=GetPrivateProfileInt(SectionName,<br>
                    KeyWord,DefValue,ppProfileName())<br>
                    Ifd<>DefValueThen<br>
                    s=“”&amp;d<br>
                    d=WritePrivateProfileString(SectionName,<br>
                    KeyWord,s,AppProfileName())<br>
                    EndIf<br>
                    EndFunction<br>
                    SubSetIniS(ByValSectionNameAsString,BtVaKeyWordAsString,ByValValStr<br>
                    AsString)<br>
                    Dimres%<br>
                    res%=WritePrivateprofileString(SectionName,KeyWord,ValStr,AppProfileName())<br>
                    EndSub<br>
                    SubSetIniN(ByValSectionNameAsString,ByValKeyWordAsString,ByValValInt<br>
                    AsInteger)<br>
                    Dimres%,s$<br>
                    s$=Str$(ValInt)<br>
                    res%=WriteprivateProfileString(SectionName,KeyWord,s$,AppProfileName())<br>
                    EndSub<br>
                    <br>
                    SectionName为每一部分的标题,KeyWord为关键词,GetIniS和GetIniN中的DefValue为关键词的缺省值,SetIniS和SetIniN的ValStr和ValInt为要写入INI文件的关键词的值。为了能更好地说明如何使用以上函数和过程,下面举两个实例。<br>
                    <br>
                    实例1:<br>
                    <br>
                    开发应用程序通常要使用数据库和其它一些文件,这些文件的目录(包括路径和文件名)不应在程序中固定,而是保存在INI文件中,程序运行时由INI文件中读入。读入数据库文件的代码如下:<br>
                    <br>
                    <br>
                    <br>
                    DimDatabasenameAsString<br>
                    Databasename=GetIniS(“数据库”,“职工”,“”)<br>
                    IfDatabaseName=“”ThenDatabaseName=InputBox(“请输入数据库《职工》的目录”),<br>
                    App.Title)’也可通过“文件对话框”进行选择<br>
                    OnErrorResumeNext<br>
                    Setdb=OpenDatabas(DatabaseName)<br>
                    IfErr<>0Then<br>
                    MsgBox“打开数据库失败!”,MB-<br>
                    ICONSTOP,App.Title:GotoErrorProcessing<br>
                    Else<br>
                    SetIniS“数据库”,“职工”,DatabaseName<br>
                    EndIf<br>
                    OnErrorGoTo0<br>
                    ……<br>
                    <br>
                    <br>
                    <br>
                    实例2:<br>
                    <br>
                    为了方便用户操作,有时需要保存用户界面的某些信息,例如窗口的高度和宽度等。装载窗体时,从INI文件中读入窗体高度和宽度,卸载窗体时将窗体当前高度和宽度存入INI文件,代码如下:<br>
                    <br>
                    <br>
                    <br>
                    Sub Form1_Load()<br>
                    ……<br>
                    Forml.Height=GetIniN(“窗体1”,“高度”,6000)<br>
                    Form1.Width=GetIniN(“窗体1”,“高度”,4500)<br>
                    EndSub<br>
                    ……<br>
                    Sub Form1_Unload()<br>
                    ……<br>
                    SetIniN“窗体1”,“高度”,Me.Height<br>
                    SetIniN“窗体1,”宽度“,Me.Width<br>
                    ……<br>
                    End Sub</font> 
                </div>
              </td>
            </tr>
          </center>
          <tr> 
            <td width="100%" class="unnamed1"> 
              <p align=right><a href="ba61.htm">(上一页)</a>---<a href="ba63.htm">(下一页)</a></p>
            </td>
          </tr>
          <tr> 
            <td width="100%" class="unnamed1"> 
               
    </div>
      </td>
  </tr>
  <!--msnavigation--></tbody>
</table>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -