用登錄檔儲存資料 (VB函式篇) (轉)

gugu99發表於2008-03-01
用登錄檔儲存資料 (VB函式篇) (轉)[@more@]

 

 

用登錄檔儲存資料(VB篇) 作 者 : 揚眉    簡介    登錄檔最開始是出現在 3.x,是用來為OLE儲存資料的。那時Windows和其應用的設定值大多都


儲存在各不相同的.INI中。例如我們最為熟悉的System.ini和Win.ini就是這樣的檔案。當越安越多,


這種檔案也越來越多,而且遍佈的各個角落。既不便於管理,也浪費了很多空間(因為這些檔案大多都很小)。    當Windows 95推出的時候,登錄檔應運而生。所有的設定值,不論是的,還是應用程式的,


都被儲存在一個樹型結構的中。這樣確實方便了不少,而且對多環境提供了更好的支援。而對程式設計師而言就麻煩了一些,


必須瞭解的是登錄檔的結構,又因為登錄檔不再是單一的文字檔案,所以必須用專門函式來操作登錄檔。    登錄檔(Registry)是儲存程式執行引數和使用者設定的最佳地方。聽過了太多的告誡,編輯登錄檔對很多人來


說似乎是一件神秘而複雜的事,但在VB中,透過四個登錄檔函式,一切都變得簡單起來。    如果你對登錄檔有一些瞭解,那麼應該知道登錄檔的結構和我們所熟悉的檔案系統的結構是一樣的,都是樹型結構。


用主鍵來代替目錄以劃分各種不同的資訊。在主鍵下面還可以有子主鍵和三種不同型別的鍵值。每個鍵值可以是字串,


二進位制值或者雙字值中的一種。 提供了一個標準的註冊位置(主鍵)以建立於 Visual Basic


的應用程式的程式資訊:   HKEY_CURRENT_USERSoftwareand VBA Program Settings    下面的所有函式所讀寫的登錄檔路徑都是以這個路徑為根的相對位置。    SaveSetting    這個函式用來向登錄檔資料庫寫入一些資料    SaveSetting appname, section, key, setting    appname    在向登錄檔寫入資料之前,你必須計劃好一個用在整個應用程式中的appname 。可以把登錄檔的內容比作一臺,


那麼appname就是器。它必須是一個字串,也可以用數字,不過要用CStr 函式把它轉換成字串格式。


事實上它代表的是應用程式或工程的名稱。一般來說,appname在整個應用程式中應該保持不便。    section    section可以說是這個模型中的目錄,就向一臺計算機上的目錄一樣。它用來把設定分類,可以包含Key或者子section。


如果給它傳遞vbNullChar 這個值的話,就表示要操作的鍵是在根目錄下的,也就是在appname下面的。    key    相當於一個檔名。    setting    它代表檔案中的資訊,可以是一個數字或者字串。    完後,在登錄檔的HKEY_CURRENT_USERSoftwareVB and VBA Program Settingsappnamesection"主鍵下面


的名為“key”的鍵將被賦值為“setting”,


如果相應的主鍵或者鍵名不存在,將會被建立。    GetSetting    這個函式用來從登錄檔中提取資料。    GetSetting(appname, section, key[, default])    Appname,section和key的含義和上面的一樣。    default    如果Visual Basic沒有找到指定的鍵,函式將返回引數default中得值。這個引數是可選的,但是對錯誤情況的處理很方便。


如果沒有選用這個引數,


而指定的鍵的名稱不存在,函式將返回一個長度為0的字串。    下面看看例子: SaveSetting "Logon Master", "UsersUser0", _ "Name", "John" 註釋:這將把資料"John"儲存到登錄檔的 "Logon MasterUsersUser0Name" 註釋:不過這是相對路徑,相對於一個根 De.Print GetSetting("Logon Master", _ "UsersUser0", "Name", "Anonymous" 註釋:這將顯示"John" Debug.Print GetSetting("Logon Master", _ "UsersUser1", "Name", "Anonymous" 註釋:這次顯示的將是"Anonymous",因為在 註釋:"Logon MasterUsersUser1Name"沒有預先儲存值。 GetAllSettings    這個函式用來提取某個目錄(主鍵)下面的所有檔案(子鍵)。    GetAllSettings(appname, section)    引數的含義和其他的函式都是一樣的。但這個函式和其他幾個比起來更為複雜。他返回的的是一個2維字串陣列,


包含了所有的子鍵名稱和鄉音的子鍵值。看看下面這個例子,你很容易的就能搞清楚: 註釋: 定義一個Variant型別的變數來儲存GetAllSettings返回的二維陣列 註釋: Interger型別值用來計數 Dim MySettings As Variant, intSettings As Integer 註釋:先在登錄檔中填入一些值 SaveSetting "Logon Master", "UsersUser0", _ "Name", "John" SaveSetting "Logon Master", "UsersUser0", _ "Priviledges", "Supervisor" 註釋:提取預先設定的資料 MySettings = GetAllSettings("Logon Master", _ "UsersUser0") 註釋:顯示出來 For intSettings = LBound(MySettings, 1) _ To UBound(MySettings, 1) 註釋:MySettings(x,0)中包含的是鍵名,註釋:而MySettings(x,1) 中包含的是鍵值 Debug.Print MySettings(intSettings, 0), _ MySettings(intSettings, 1) Next intSettings    注意:GetAllSettings並不返回目錄名,只是返回鍵名和相應的鍵值。    DeleteSetting    除了儲存和提取資料,我們還要能夠刪除登錄檔中的註冊項。這就要用到DeleteSetting函式了。    DeleteSetting appname[, section[, key]]    這個函式用來刪除主鍵或者鍵。如果要刪除的是鍵,要給出它所在的鍵名。如果要刪除的是主鍵,


這它下面所有的鍵和子主鍵都會被刪除。如果你要刪除應用程式所有的登錄檔資訊,就只用指定appname就可以了。    例如: DeleteSetting "Logon Master", "UsersUser0", "Name" 註釋:這將刪除Name鍵。 DeleteSetting "Logon Master", "Users" 註釋:這將刪除"Logon MasterUsers"主鍵和其下的所有內容。 DeleteSetting "Logon Master" 註釋:這將刪除應用程式"Logon Master"下面的所有內容。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1000230/,如需轉載,請註明出處,否則將追究法律責任。

相關文章