实例67:读写INI
文件 实例说明 在本实例中,我们将应用VB.NET制作一个能够实现读写INI
文件的应用程序。程序运行结果如图67-1所示。 图67-1 运行结果 技术要点 INI
文件的格式 GetPrivateProfileInt()和GetPrivateProfileString()
函数 WritePrivateProfileString()
函数 实现步骤 ■ 新建项目 打开Visual Stu
dio.NET,选择“新建项目”,在项目类型窗口中选择“Visual Basic项目”,在模板窗口中,选择“Windows应用程序”,在
名称域中输入“RWIni”,然后选择保存路径。单击“确认”。 ■
添加控件和
菜单 向当前窗体上
添加两个Button控件,用于控制读写INI
文件;一个Group控件和两个Ra
dioButton控件,用于控制读写整型数据还是字符串型;三个Label控件和三个Text
Box控件,用于标注和输入节名、键名和值;其余两个Label控件,一个表示当前打开的
文件名,另一个表示读写的状态。最后
添加一个MainMenu控件,
生成菜单“
文件”、“
退出”,其中“
文件”下有一个子
菜单“打开INI
文件”。 ■ 设置
属性 切换到“
属性栏”,对窗体上的控件设置
属性。详细情况见表67-1。 表67-1 窗体各控件的
属性值 窗体/控件
属性 值 optInt value True Lablel5 Name Lblfilename Autosize true BackSytle 0-Transparent Button1 Text 读取 BackColor &H0080C0FF Style 1-Graphic Text
Box1 Name txtSection Text (空) 知识点:一个INI
文件由若干节(Section)组成,每个节中又由若干个关键字(Keyword)和值组成。关键字是用来保存独立的程序设置和那些重要信息的,用于控制应用程序的某个
功能;值可以是整型数或字符串。如果值为空,则表示应用程序已经为该关键字指定了缺省值。 INI
文件的一般形式如下: ………… [Section] keyword=value ………… INI
文件有严格的格式要求: (1)节名必须加“[”和“]”。 (2)对
文件做注释,要以“;”开头。 (3)关键字后必须有“=”。 ■
添加代码 keywordinfo = txtkeyword.Text Valueinfo = txtvalue.Text ' 检查输入是否合法,不合法时,
提示警告信息。 ' 读取INI
文件的
内容 Private Sub Button1_Click(ByVal eventSender As System.Object,ByVal eventArgs As System.EventArgs) Handles Button1.Click Dim readinfo As String Dim buffer As VB6.FixedLengthString = New VB6.FixedLengthString(255) Dim Sectioninfo As String Dim Valueinfo As String Dim keywordinfo As String Sectioninfo = txtsection.Text If Trim(Sectioninfo) = "" Then ' 在此可以用len(Sectioninfo)=0来代替 Msg
Box("请输入节名(Section)",Msg
BoxStyle.OKOnly,"
错误信息") Exit Sub End If If Trim(keywordinfo) = "" Then Msg
Box("请输入关键字(Keyword)","
错误信息") Exit Sub End If ' 判断读取的是数字还是字符串 If optint.Checked Then ' 使用 GetPrivateProfileInt
函数取回一个关键字的整型数值 readinfo = CStr(GetPrivateProfileInt(Sectioninfo,keywordinfo,-1,AXCommonDialog1.FileName)) ' GetPrivateProfileInt
函数返回取得的值,如果键没有找到,则返回由nDefault参数指定的值 If CDbl(readinfo) = -1 Then txtvalue.Text = "读取失败!" Else txtvalue.Text = readinfo End If Else ' 使用 GetPrivateProfileString
函数取回一个关键字的字符串数值 readinfo = CStr(GetPrivateProfileString(Sectioninfo,"没有找到相对应的键值",buffer.Value,255,AXCommonDialog1.FileName)) ' GetPrivateProfileString
函数返回放入lpReturnedString缓冲区的字节数, ' 键值放在由参数lpReturnedString指定的缓冲区中。该缓冲区是一个由nSize字节大小的固定字符串 If readinfo = "没有找到相对应的键值" Then txtvalue.Text = "读取失败!" Else txtvalue.Text = VB.Left(buffer.Value,CInt(readinfo)) End If End If End Sub ' 写入INI
文件 Private Sub Button2_Click(ByVal eventSender As System.Object,ByVal eventArgs As System.EventArgs) Handles Button2.Click Dim writeinfo As Boolean Dim buffer As VB6.FixedLengthString = New VB6.FixedLengthString(255) Dim Sectioninfo As Object Dim Valueinfo As String Dim keywordinfo As String Sectioninfo = txtsection.Text keywordinfo = txtkeyword.Text Valueinfo = txtvalue.Text ' 使用更新给定节中的新键值,或创建一个新键值, ' 或用来
删除一个节或键值 writeinfo = WritePrivateProfileString(Sectioninfo,Valueinfo,AXCommonDialog1.FileName) ' 注意,WritePrivateProfileString
函数设置成功,返回值为True,否则返回False If writeinfo = True Then Label4.Text = "写入INI
文件成功!" Else Label4.Text = "
错误!不能写入INI
文件!" End If End Sub ' 打开INI
文件 Public Sub mnuOpenINIFile_Popup(ByVal eventSender As System.Object,ByVal eventArgs As System.EventArgs) Handles mnuOpenINIFile.Popup mnuOpenINIFile_Click(eventSender,eventArgs) End Sub Public Sub mnuOpenINIFile_Click(ByVal eventSender As System.Object,ByVal eventArgs As System.EventArgs) Handles mnuOpenINIFile.Click ' 设置过滤器 AXCommonDialog1.Filter = "*.INI|*.ini" AXCommonDialog1.ShowOpen() If Len(AXCommonDialog1.FileName) = 0 Then Exit Sub ' 打开有效
文件后,按钮可用 Button1.Enabled = True Button2.Enabled = True '
显示当前打开的
文件名 lblfilename.Text = "现在打开的
文件是:" & AXCommonDialog1.FileName End Sub ■ 运行程序 单击
菜单“调试|启动”或单击 图标运行程序。 小结 INI
文件是包含了应用程序特定信息的文本
文件。比如将
用户所作的选择以及各种变化的系统信息记录在INI
文件中,通常是在应用程序运行时读取INI
文件中的信息,
退出应用程序时保存
用户对运行环境的某些
修改。