vb 读写配置文件

vb 读写配置文件,第1张

下面这些代码可以实现对.INI文件的读写,用标准弯绝模块保存它..

Attribute VB_Name = "INIReadWrite"

Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, _

ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

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

''lpApplicationName 要在其中写入新字串的小节名称脊毕。这个字串不区分大小写

''lpszSection String 指定要在其中写入新串的小节。如尚不存在,会创建这个小节。这个字串不区分大小写。

''lpszKeyName String 要设置的项名或条目名。这个字串不区分大小写。用vbNullString可删除这个小节的所有设置项。

''lpszString String 指定为这个项写入的字串值。用vbNullString表示删除这个项现有的字串。

''lpFileName 读取文件名

Dim INIFilePath As String

Sub SetINI(ByVal INIPath As String)

INIFilePath = INIPath

End Sub

Sub WriteKey(ByVal Section As String, ByVal Key As String, Optional ByVal KeyValue As String = "")

WritePrivateProfileString Section, Key, KeyValue, INIFilePath

End Sub

Function ReadKey(ByVal Section As String, ByVal Key As String, Optional ByVal Size As Long = 256) As String

Dim Str As String

Str = Space(Size)

If GetPrivateProfileString(Section, Key, 0, Str, Size, INIFilePath) <>0 Then ReadKey = Str

End Function

窗体的话你可埋野姿以自己设计下,因为不知道你想要什么效果,或者你可以就上面的代码用MsgBox输出Key值来看看效果..

用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

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 Function WriteIniFileString(StandKey As String, keyName As String, keyValue As String, FileName) As Long

'写INI文件搜前函数

Dim leninikey As Long

Dim strkey As String * 255

WriteIniFileString = WritePrivateProfileString(StandKey, keyName, keyValue, FileName)

End Function

Private Function GetIniFileString(StandKey As String, keyName As String, Default As String, FileName As String) As String

'读取INI文件函数世歼清

Dim leninikey As Long

Dim strkey As String * 255

leninikey = GetPrivateProfileString(StandKey, keyName, Default, strkey, Len(strkey), FileName)

为了方便用户使用和使系统具有灵活性,大多数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函数:

Declare Function GetprivateprofileString Lib"Ker-nel"(ByVallpAppName As String,ByVallpKeyName As String,ByVallpDefault As String,ByVal lpRetrm-String As String,ByVal cbReturnString As Integer,ByVal Filename As String)As Integer

Declare FunctionGetPrivatePfileInt Lib "Kernel"(ByVal lpAppName As String,ByVal lpKeyName As String,ByVal lpDefault As Integer,ByVal Filename As String)As Integer

Declare FuncitonWritePrivateprofileString Lib "Kernel"(ByVal lpApplicationName As String,ByVal lpKeyName As String,ByVal lpString As String,ByVal lplFileName As String)As Integer

Function GetIniS(ByVal SectionName As String,ByVal KeyWord As String,ByVal DefString As String)As String

Dim ResultString As String * 144,Temp As Integer

Dims As String,i As Integer

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文件,代码如下:

Sub Form1_Load()

……

Forml.Height=GetIniN("窗体1","高度",6000)

Form1.Width=GetIniN("窗体1","高度",4500)

EndSub

……

Sub Form1_Unload()

……

SetIniN"窗体1","高度",Me.Height

SetIniN"窗体1,"宽度",Me.Width

……

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12147540.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存