国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

VB如何使用INI文件

2024-07-21 02:20:31
字體:
來源:轉載
供稿:網友
為了方便用戶使用和使系統具有靈活性,大多數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函數:

public declare function getprivateprofilestring lib“kernel”(byval lpappname as string,byval lpkeyname as _
  string,byval lpdefault as string,byval lpretrm-string as string,byval cbreturnstring as integer, _
  byval filename as string)as integer
public declare function getprivatepfileint lib“kernel”(byval lpappname as string,byval lpkeyname as string, _
  byval lpdefault as integer,byval filename as string)as integer
public declare funciton writeprivateprofilestring lib“kernel”(byval lpapplicationname as string, _
  byval lpkeyname as string,byval lpstring as string,byval lplfilename as string)as integer
public function getinis(byval sectionname as string,byvalkeyword as string,byval defstring as string)as string
  dim resultstring as string*144,temp as integer
  dim s as string,i as integer
  temp%=getprivateprofilestring(sectionname,keyword,"",resultstring,144,appprofilename())
  ’檢索關鍵詞的值
  if temp%>0 then ’關鍵詞的值不為空 
  s=""
  for i=1 to 144
   if asc(mid$(resultstring,i,1))=0 then
    exitfor
   else
    s=s & mid$(resultstring,i,1)
   end if
  next
  else
  temp%=writeprivateprofilesstring(sectionname,keyword,defstring,ppprofilename())
  ’將缺省值寫入ini文件
  s=defstring
  end if
  getinis=s
end function

public function getinin(byval sectionname as string,byval keyword as string,byval defvalue as ineger)as integer
  dim d as long,s as string
  d=defvalue
  getinin=getprivateprofileint(sectionname,
  keyword,defvalue,ppprofilename())
  if d<>defvalue then
   s=""
   d=writeprivateprofilestring(sectionname,
   keyword,s,appprofilename())
  end if
end function

public sub setinis(byval sectionname as string,btval keyword as string,byval valstr as string)
  dim res%
  res%=writeprivateprofilestring(sectionname,keyword,valstr,appprofilename())
end sub
public sub setinin(byval sectionname as string,byval keyword as string,byval valint as integer)
  dim res%,s$
  s$=str$(valint)
  res%=writeprivateprofilestring(sectionname,keyword,s$,appprofilename())
end sub

sectionname為每一部分的標題,keyword為關鍵詞,getinis和getinin中的defvalue為關鍵詞的缺省值,setinis和setinin的valstr和valint為要寫入ini文件的關鍵詞的值。為了能更好地說明如何使用以上函數和過程,下面舉兩個實例。

實例1:

  開發應用程序通常要使用數據庫和其它一些文件,這些文件的目錄(包括路徑和文件名)不應在程序中固定,而是保存在ini文件中,程序運行時由ini文件中讀入。讀入數據庫文件的代碼如下:

dim databasename as string
databasename=getinis(“數據庫”,“職工”,"")
if databasename="" then databasename=inputbox(“請輸入數據庫《職工》的目錄”),app.title)
’也可通過“文件對話框”進行選擇
on error resume next
set db=opendatabas(databasename)
if err<>0 then
 msgbox“打開數據庫失敗!”,mb-iconstop,app.title:gotoerrorprocessing
else
 set inis“數據庫”,“職工”,databasename
end if
on error goto 0
……

實例2:

  為了方便用戶操作,有時需要保存用戶界面的某些信息,例如窗口的高度和寬度等。裝載窗體時,從ini文件中讀入窗體高度和寬度,卸載窗體時將窗體當前高度和寬度存入ini文件,代碼如下:

private sub form1_load()
 ……
 forml.height=getinin(“窗體1”,“高度”,6000)
 form1.width=getinin(“窗體1”,“高度”,4500)
endsub
   ……
private sub form1_unload()
 ……
 setinin“窗體1”,“高度”,me.height
 setinin“窗體1,”寬度“,me.width
 ……
end sub

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 犍为县| 正宁县| 华宁县| 太保市| 栾城县| 五河县| 都匀市| 含山县| 河曲县| 嫩江县| 安庆市| 平顶山市| 河西区| 瓦房店市| 改则县| 台东市| 深水埗区| 江山市| 翁源县| 远安县| 五大连池市| 长宁县| 留坝县| 乐安县| 陕西省| 厦门市| 姜堰市| 九寨沟县| 梨树县| 黄浦区| 淮安市| 福建省| 禄丰县| 南宁市| 桑植县| 嘉鱼县| 手游| 定州市| 资阳市| 儋州市| 北流市|