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

2016-02-19 18:54 7 1 收藏

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。

【 tulaoshi.com - 编程语言 】

为了方便用户使用和使系统具有灵活性,大多数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函数:
  
  DeclareFunctionGetprivateprofileStringLib"Ker-nel"(ByVallpAppNameAsString,ByVallpKeyNameAsString,ByVallpDefaultAsString,ByVallpRetrm-StringAsString,ByValcbReturnStringAsInteger,ByValFilenameAsString)AsInteger
  DeclareFunctionGetPrivatePfileIntLib"Kernel"(ByVallpAppNameAsString,ByVallpKeyNameAsString,ByVallpDefaultAsInteger,ByValFilenameAsString)AsInteger
  DeclareFuncitonWritePrivateprofileStringLib"Kernel"(ByVallpApplicationNameAsString,ByVallpKeyNameAsString,ByVallpStringAsString,ByVallplFileNameAsString)AsInteger
  FunctionGetIniS(ByValSectionNameAsString,ByValKeyWordAsString,ByValDefStringAsString)AsString
  DimResultStringAsString*144,TempAsInteger
  DimsAsString,iAsInteger
  Temp=GetPrivateProfileString(SectionName,KeyWord,"",ResultString,144,AppProfileName())
  ‘检索关键词的值
  IfTemp>0Then‘关键词的值不为空
  s=""
  Fori=1To144
  IfAsc(Mid$(ResultString,I,1))=0Then
  ExitFor
  Else
  s=s&Mid$(ResultString,I,1)
  EndIf
  Next
  Else
  Temp=WritePrivateProfilesString(sectionname,KeyWord,DefString,ppProfileName())
  ‘将缺省值写入INI文件
  s=DefString
  EndIf
  GetIniS=s
  EndFunction
  FunctionGetIniN(ByValSectionNameAsString,ByValKeyWordAsString,ByValDefValue
  AsIneger)AsInteger
  DimdAsLong,sAsString
  d=DefValue
  GetIniN=GetPrivateProfileInt(SectionName,
  KeyWord,DefValue,ppProfileName())
  Ifd<>DefValueThen
  s=""&d
  d=WritePrivateProfileString(SectionName,
  KeyWord,s,AppProfileName())
  EndIf
  EndFunction
  SubSetIniS(ByValSectionNameAsString,BtVaKeyWordAsString,ByValValStr
  AsString)
  Dimres
  res=WritePrivateprofileString(SectionName,KeyWord,ValStr,AppProfileName())
  EndSub
  SubSetIniN(ByValSectionNameAsString,ByValKeyWordAsString,ByValValInt
  AsInteger)
  Dimres,s$
  s$=Str$(ValInt)
  res=WriteprivateProfileString(SectionName,KeyWord,s$,AppProfileName())
  EndSub
  
  SectionName为每一部分的标题,KeyWord为关键词,GetIniS和GetIniN中的DefValue为关键词的缺省值,SetIniS和SetIniN的ValStr和ValInt为要写入INI文件的关键词的值。为了能更好地说明如何使用以上函数和过程,下面举两个实例。
  
  实例1:
  
  开发应用程序通常要使用数据库和其它一些文件,这些文件的目录(包括路径和文件名)不应在程序中固定,而是保存在INI文件中,程序运行时由INI文件中读入。读入数据库文件的代码如下:
  DimDatabasenameAsString
  Databasename=GetIniS("数据库","职工","")
  IfDatabaseName=""ThenDatabaseName=InputBox("请输入数据库《职工》的目录"),
  App.Title)'也可通过"文件对话框"进行选择
  OnErrorResumeNext
  Setdb=OpenDatabas(DatabaseName)
  IfErr<>0Then
  MsgBox"打开数据库失败!",MB-
  ICONSTOP,App.Title:GotoErrorProcessing
  Else
  SetIniS"数据库","职工",DatabaseName
  EndIf
  OnErrorGoTo0
  ……
  实例2:
  
  为了方便用户操作,有时需要保存用户界面的某些信息,例如窗口的高度和宽度等。装载窗体时,从INI文件中读入窗体高度和宽度,卸载窗体时将窗体当前高度和宽度存入INI文件,代码如下:
  SubForm1_Load()
  ……
  Forml.Height=GetIniN("窗体1","高度",6000)
  Form1.Width=GetIniN("窗体1","高度",4500)
  EndSub
  ……
  SubForm1_Unload()
  ……
  SetIniN"窗体1","高度",Me.Height
  SetIniN"窗体1,"宽度",Me.Width
  ……
  EndSub->

来源:http://www.tulaoshi.com/n/20160219/1619423.html

延伸阅读
标签: Web开发
阅读提要 AJAX,一个异步JavaScript和XML的缩略词,是当今快速发展的Web开发界十分热门的技术。在这项新技术提供巨大能力的同时,它也燃发了在"Back"按钮问题上的不容置疑的争论。本文作者将向你解释怎样在真实世界中使用AJAX以及怎样在一个工程中评估它的价值。在你读完本文后,你就会明白什么是AJAX,在什么情况下,为什么以及怎样使用这...
标签: PHP
作者 Kevin Kardasz、Vadim Kudryavtsev、Robert Mark、Mikhail Seliverstov 麦吉尔大学的开发与校友关系部如何使用 PHP 和 Oracle 在网上支持多达 16 万名用户 在麦吉尔大学(位于加拿大魁北克省的蒙特利尔)的开发与校友关系部,我们正在使用行业级的 PHP 应用程序和 Oracle9 i ,将范围广泛的多层次服务转移到 Web 上,...
一、前言 随着多媒体硬件环境和软件环境的不断完善,目前,大部分计算机软件开发中都涉及多媒体软件技术的应用。 进行多媒体应用程序设计,从原理上说,可以采用从C 到多媒体专用开发系统(如TOOLBOOK、AUTHORWARE、DIRECTOR)等多种层次的工具。然而,由于多媒体软件涉及的媒体复杂多样、开发周期短并且需要多种专业人员参与,因此,...
标签: Web开发
新增加的内容,首先是两个新变量的声明:“subAry”和“subAryLen”。它们和之前的变量“dataArray”和“dataArrayLen”类似,除了它们指向不同的数组(特别是它们将指向那些“task”元素-当“dataArray”和“dataArrayLen”指向“pet”元素的时候)。 我们也改变了变量“insertData”的初始值-我们增加了一个表格头(<th )给我们的“task...
标签: Web开发
在过去,由于为了获得新数据而不得不重新加载web页面(或者加载其他页面)导致web应用程序发展被限制。虽然有其他方法可用(不加载其他页面),但是这些技术都没有被很好地支持而且有bug成灾的趋向。在过去的几个月里,一个过去并不被广泛支持的技术已经被越来越多的web冲浪者(web surfers??是指浏览器还是浏览者?)所接受,它给了开发者更...

经验教程

813

收藏

86
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部