📄 m77.htm
字号:
<html>
<head>
<title>VB教程</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<p align="center"><script src="../../1.js"></script></a>
<body bgcolor="#ffffff" leftmargin="5" topmargin="1" marginheight="5" marginwidth="5">
<div align=center>
<table border=0 cellpadding=0 cellspacing=0 width=680 align="center">
<tbody>
<tr>
<td bgcolor=#000000 height=9>
<div align=center class=H1> <font color="#FFFFFF">用VB开发应用程序如何使用INI文件</font> </font> </font></div>
</td>
</tr>
<tr valign=top>
<td class=H1 height=76>
<p align="left"> <br>
</font> <font color="#000000">为 了 方 便 用 户
使 用 和 使 系 统 具 有 灵 活 性, 大 多 数 Win-dows 应 用 程 序 将 用 户 所 做 的 选 择 以 及 各
种 变 化 的 系 统 信 息 记 录 在 初 始 化 (INI) 文 件 中。 因 此, 当 系 统 的 环 境 发 生 变 化 时,
可 以 直 接 修 改 INI 文 件, 而 无 需 修 改 程 序。 由 此 可 见, INI 文 件 对 系 统 功 能 是 至 关
重 要 的。 本 文 将 介 绍 采 用 Visual Basic for Windows(下 称 VB) 开 发 Windows 应
用 程 序 时 如 何 读 写 INI 文 件。 </font></span></p>
<p> <font color="#000000">INI 文 件 是 文 本 文 件, 由 若
干 部 分 (section) 组 成, 在 每 个 带 括 号 的 标 题 下 面, 是 若 干 个 以 单 个 单 词 开 头 的
关 键 词 (keyword) 和 一 个 等 号, 每 个 关 键 词 会 控 制 应 用 程 序 某 个 功 能 的 工 作 方 式,
等 号 右 边 的 值 (value) 指 定 关 键 词 的 操 作 方 式。 其 一 般 形 式 如 下 :</font></span></p>
<p> <br>
<br>
[section1]<br>
keyword1=valuel<br>
keyword2=value2<br>
… …<br>
[section2]<br>
keyword1=value1<br>
keyword2=value2<br>
… …<br>
<br>
</font></span></p>
<p> <font color="#000000">其 中, 如 果 等 号 右 边 无 任 何
内 容 (即 value 为 空), 那 就 表 示 Windows 应 用 程 序 已 为 该 关 键 词 指 定 了 缺 省 值,
如 果 在 整 个 文 件 中 找 不 到 某 个 关 键 词 (或 整 个 一 部 分), 那 同 样 表 示 为 它 们 指 定 了
缺 省 值。 各 个 部 分 所 出 现 的 顺 序 是 无 关 紧 要 的, 在 每 一 个 部 分 里, 各 个 关 键 词 的 顺
序 同 样 也 无 关 紧 要。 </font></span></p>
<p> 读 写 INI 文 件 通 常 有 两 种
方 式 : 一 是 在 Windows 中 用 “记 事 本” (Notepad) 对 其 进 行 编 辑, 比 较 简 单, 无 需
赘 述; 二 是 由 Windows 应 用 程 序 读 写 INI 文 件, 通 常 是 应 用 程 序 运 行 时 读 取 INI
文 件 中 的 信 息, 退 出 应 用 程 序 时 保 存 用 户 对 运 行 环 境 的 某 些 修 改。 </font></span></p>
<p> 关 键 词 的 值 的 类 型 多 为 字
符 串 或 整 数 型, 应 分 两 种 情 况 读 写。 为 了 使 程 序 具 有 可 维 护 性 和 可 移 植 性, 最 好 把
对 INI 文 件 的 读 写 封 装 在 一 个 模 块 (RWINI.BAS) 中, 在 RWI-NI.BAS 中 构 造 GetIniS
和 GetIniN 函 数 以 及 SetIniS 和 Se-tIniN 过 程, 在 这 些 函 数 和 过 程 中 需 要 使 用
WindowsAPI 的 “GetPrivateprofileString”、 “GetPrivateProfileInt” 和 “WritePrivateProfileString”
函 数。 </font></span></p>
<p> <font color="#000000">RWINI.BAS 模 块 的 程 序 代
码 如 下 :</font></span></p>
<p> <font color="#000000">在 General-Declearation
部 分 中 声 明 使 用 到 的 Windows API 函 数 :</font></span></p>
<p> <br>
<br>
Declare Function GetprivateprofileString Lib “Ker-nel” (ByVal lpAppName
As String,<br>
ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpRetrm-StringAs<br>
String, ByVal cbReturnString As Integer, ByVal Filename As String) As
Integer<br>
Declare Function GetPrivatePfileInt Lib “Kernel” (ByVal lpAppName As
String,<br>
ByVal lpKeyName As String, ByVal lpDefault As Integer, ByVal Filename
As String) As<br>
Integer<br>
Declare Funciton WritePrivateprofileString Lib “Kernel” (ByVal lpApplicationName<br>
As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal
lplFileName<br>
As String) As Integer<br>
Function GetIniS(ByVal SectionName As String, ByVal KeyWord As String,
ByValDefString<br>
As String) As String<br>
Dim ResultString As String *144, Temp As Integer<br>
Dim s As String, i As Integer<br>
Temp%=GetPrivateProfileString(SectionName, KeyWord, “”, ResultString,
144, AppProfileName())<br>
‘检 索 关 键 词 的 值<br>
If Temp%> 0 Then ‘关 键 词 的 值 不 为 空<br>
s=“”<br>
For i=1 To 144<br>
If Asc(Mid$(ResultString, i, 1)) =0 Then<br>
Exit For<br>
Else<br>
s=s & Mid$(ResultString, i, 1)<br>
End If<br>
Next<br>
Else<br>
Temp%=WritePrivateProfilesString(sectionname, KeyWord, DefString, ppProfileName())<br>
‘将 缺 省 值 写 入 INI 文 件<br>
s=DefString<br>
End If<br>
GetIniS=s<br>
End Function<br>
Function GetIniN(ByVal SectionName As String, ByVal KeyWord As String,
ByValDefValue<br>
As Ineger) As Integer<br>
Dim d As Long, s As String<br>
d=DefValue<br>
GetIniN=GetPrivate ProfileInt(SectionName,<br>
KeyWord, DefValue, ppProfileName())<br>
If d <> DefValue Then<br>
s=“” &d<br>
d=WritePrivateProfileString(SectionName,<br>
KeyWord, s, AppProfileName())<br>
End If<br>
End Function<br>
Sub SetIniS(ByVal SectionName As String, BtVa KeyWord As String, ByVal
ValStr<br>
As String)<br>
Dim res%<br>
res%=WritePrivateprofileString(SectionName, KeyWord, ValStr, AppProfileName())<br>
End Sub<br>
Sub SetIniN(ByVal SectionName As String, ByVal KeyWord As String, ByVal
ValInt<br>
As Integer)<br>
Dim res%, s$<br>
s$=Str$(ValInt)<br>
res%=WriteprivateProfileString(SectionName, KeyWord, s$, AppProfileName())<br>
End Sub</font></span></p>
<p> <font color="#000000">SectionName 为 每 一 部 分
的 标 题, KeyWord 为 关 键 词, GetIniS 和 GetIniN 中 的 DefValue 为 关 键 词 的 缺 省
值, SetIniS 和 SetIniN 的 ValStr 和 ValInt 为 要 写 入 INI 文 件 的 关 键 词 的 值。
为 了 能 更 好 地 说 明 如 何 使 用 以 上 函 数 和 过 程, 下 面 举 两 个 实 例。 </font></span></p>
<p> <font color="#000000">实 例 1:</font></span></p>
<p> 开 发 应 用 程 序 通 常 要 使 用
数 据 库 和 其 它 一 些 文 件, 这 些 文 件 的 目 录 (包 括 路 径 和 文 件 名) 不 应 在 程 序 中 固 定,
而 是 保 存 在 INI 文 件 中, 程 序 运 行 时 由 INI 文 件 中 读 入。 读 入 数 据 库 文 件 的 代 码
如 下 :</font></span></p>
<p> <br>
<br>
Dim Databasename As String<br>
Databasename=GetIniS(“数 据 库”, “职 工”, “”)<br>
If DatabaseName=“” Then DatabaseName=InputBox(“请 输 入 数 据 库 《职 工》 的 目
录”),<br>
App.Title)’ 也 可 通 过 “文 件 对 话 框” 进 行 选 择<br>
On Error Resume Next<br>
Set db=OpenDatabas(DatabaseName)<br>
If Err <> 0 Then<br>
MsgBox“打 开 数 据 库 失 败 !”, MB-<br>
ICONSTOP, App.Title:Goto ErrorProcessing<br>
Else<br>
SetIniS“数 据 库”, “职 工”, DatabaseName<br>
End If<br>
On Error GoTo 0<br>
… …<br>
<br>
</font></span></p>
<p> <font color="#000000">实 例 2:</font></span></p>
<p> <font color="#000000">为 了 方 便 用 户 操 作, 有 时 需
要 保 存 用 户 界 面 的 某 些 信 息, 例 如 窗 口 的 高 度 和 宽 度 等。 装 载 窗 体 时, 从 INI 文 件
中 读 入 窗 体 高 度 和 宽 度, 卸 载 窗 体 时 将 窗 体 当 前 高 度 和 宽 度 存 入 INI 文 件, 代 码
如 下 :</font></span></p>
<p> <br>
<br>
Sub Form1_Load()<br>
… …<br>
Forml.Height=GetIniN(“窗 体 1”, “高 度”, 6000)<br>
Form1.Width=GetIniN(“窗 体 1”, “高 度”, 4500)<br>
End Sub<br>
… …<br>
Sub Form1_Unload()<br>
… …<br>
SetIniN“窗 体 1”, “高 度”, Me.Height<br>
SetIniN“窗 体 1,” 宽 度 “, Me.Width<br>
… …<br>
End Sub </font></span>
<p align=left> </p>
<p align="left">
</table>
</div>
<p align="center"><a href="../../pian/vb.htm">回首页</a>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -