當前位置:成語大全網 - 書法字典 - 如何給文件添加鍵值?

如何給文件添加鍵值?

這是我從其他地方引用的:)

許多Microsoft編程語言(如Visual Basic、VBScript和Jscript)都提供了集合。您可以將集合看作壹個數組,並且可以使用內置函數來完成基本任務,例如存儲和操作數據。您不必擔心數據在哪個行列中,而是使用唯壹的鍵來訪問它。

VBScript和Jscript都提供類似的對象,通常稱為腳本。字典對象或字典對象。它類似於壹個二維數組,將相關項的鍵和數據存儲在壹起。而真正的面向對象方法不應該直接訪問數據項,必須使用字典對象支持的方法和屬性來實現。

本章提供了壹些示例頁面,允許您試驗腳本運行時對象的方法和屬性。這些實例位於下載文件的Chaper05子目錄中。

創建和使用字典對象

創建字典對象的示例如下:

在VBScript中:

Dim對象數據

Set objMyData = Server。CreateObject("腳本。字典》)

//在Jscript中:

var objMyData = Server。CreateObject('腳本。字典’);

& lt!-帶有對象元素的服務器端-& gt;

& lt對象RUNAT = " SERVER " SCOPE = " PAGE " ID = " objMyData "

PROGID= "腳本。字典" & gt

& lt/OBJECT & gt;

字典對象也可以在客戶端的IE中使用。

1成員匯總。字典對象

表5-2和5-3列出了字典對象的屬性和方法及其相應的描述。

添加鍵/項對時,如果鍵已經存在;或者刪除壹個鍵/條目對,該鍵/條目對不存在,或者更改已經包含數據的Dictionary對象的CompareMode,這將產生錯誤。

表5-2字典對象的屬性和描述

解釋自然

CompareMode(僅VBScript)設置或返回鍵的字符串比較模式。

計數是只讀的。返回字典中鍵/條目對的數量。

Item(key)設置或返回指定鍵的輸入值。

Key(key)設置鍵值。

表5-3字典對象的方法和描述

方發明

Add(key,item)將鍵/項對添加到字典中。

Exists(key)如果指定的鍵存在,則返回True,否則返回False。

Items()返回壹個包含Dictionary對象中所有條目的數組。

Keys()返回包含Dictionary對象中所有鍵的數組。

Remove(key)刪除指定的鍵/條目對。

RemoveAll()刪除所有鍵/條目對。

2.在字典中添加和刪除條目

壹旦妳得到了壹個新的(空的)字典,妳可以向它添加條目,從中獲取條目和刪除條目:

在VBScript中:

objMyData。添加“我的關鍵字”,“我的項目”添加帶有關鍵字MyKey的值MyItem

objMyData。Add "YourKey "," your item " ' Add value your item with key your key

blnIsThere = objMyData。Exists("MyKey ")'返回True,因為該項存在

strItem = objMyData。Item("YourKey ")'檢索您的鍵的值

strItem = objMyData。Remove("MyKey ")'檢索並刪除您的密鑰

objMyData。“全部刪除”刪除所有項目

在JScript中,等效的代碼是:

//在JScript中;

objMyData。Add ('MyKey ',' my item ');//用關鍵字MyKey添加值MyItem

objMyData。Add ('YourKey ',' your item ');//用key YourKey為YourItem添加值

var blnIsThere = objMyData。存在(' MyKey ');//返回True,因為該項存在

var strItem = objMyData。item(' your key ');//檢索鍵的值

var strItem = objMyData。移除(' MyKey ');//檢索並移除您的密鑰

objMyData。remove all();//刪除所有項目

3.修改鍵或條目的值

您可以通過修改鍵的值或修改與特定鍵相關聯的條目的數據來更改存儲在字典中的數據。下面的代碼用鍵MyKey更改條目中的數據。

ObjMyData。VBScript中的Item("MyKey") = "NewValue " "

ObjMyData。item(' MyKey ')= ' new value ';//在JScript中

如果在字典中沒有找到指定的鍵,將在字典中創建壹個新的鍵/條目對,將MyKey作為鍵,將New Value作為其條目值。有趣的是,如果使用壹個不存在的鍵來檢索壹個條目,不僅會得到壹個空字符串(這是可以想象的),還會向字典中添加壹個新的鍵/條目對。關鍵字是指定的關鍵字,但條目的數據為空。

您可以使用Key屬性只更改鍵值,而不更改相應條目的數據。要將現有密鑰MyKey更改為MyNewKey,可以使用:

objMyData。VBScript中的Key("MyKey") = "MyNewValue " "

objMyData。item(' MyKey ')= ' my new value ';//在JScript中

如果找不到指定的鍵,將生成運行時錯誤。

4.設置比較模式

Dictionary的CompareMode屬性僅適用於VBScript,不能在JScript中使用。比較字符串鍵時,允許指定比較方法。兩個允許的值是BinaryCompare(0)和TextCompare(1)。BinaryCompare(0)是二進制數比較(即區分大小寫);TextCompare(1)是文本比較(即不區分大小寫)。

查閱字典

學習字典的時候,有兩個方法和壹個屬性需要特別註意。它們允許我們遍歷字典中存儲的所有鍵/項對。Items方法以壹維數組的形式返回字典中的所有條目數據,而keys方法以壹維數組的形式返回所有現有的鍵值。您可以使用Count屬性來獲取鍵或條目的數量。

例如,可以使用下面的代碼獲取名為objMyData的字典中的所有鍵和條目值。請註意,雖然Count屬性保留了字典中鍵/條目的數量,但VBScript和JScript的數組總是以下標0開始。因此,數組下標應該是0到Count-1。

在VBScript中:

arrKeys = objMyData。將所有的鍵放入壹個數組中

arrItems = objMyData。將所有的項目放入壹個數組中

For intLoop = 0到objMyData。count–1 '遍歷數組

StrThisKey = arrKeys(intLoop)'這是鍵值

StrThisItem = arrItems(intLoop)'這是項目(數據)值

然後

//在JScript中

//使用Keys()和Items()方法獲取VB樣式的數組

var arr keys = new VBArray(objMyData。Keys())。to array();

var arr items = new VBArray(objMyData。Items())。to array();

for(int loop = 0;intLoop & ltobjMyData。數數;intLoop++) {

//循環訪問數組

strThisKey = arr keys[int loop];//這是鍵值

strThisItem = arrItems[int loop];//這是項目(數據)值

}

您也可以在VBScript中使用For Each … Next語句來完成相同的功能:

在VBScript中將字典作為集合進行叠代

對於到達項目中的每個對象

回應。寫目標& amp" = " & amparrItems(objItem)和amp“& ltBR >;

然後

字典對象示例

本書提供了壹系列示例文件,可用於測試腳本運行時庫的各種屬性。

本章代碼的默認頁面提供了壹系列可用VBScript示例的鏈接。壹些示例對於JScript也是有效的。這些例子存儲在Chapter05目錄下相應的子目錄中,顯示的界面如圖5-2所示:

要查看dictionary對象的操作,請單擊菜單頁面上的第壹個鏈接,打開名為show_dictionary.asp的頁面。該頁面顯示了我們提供的Dictionary對象的內容,允許您試驗其屬性和方法。屏幕如圖5-3所示:

1的Global.asa文件。詞典

Dictionary對象示例頁面提供的其中壹個文件是global.asa,它創建並預先填充了壹個具有會話層範圍的Dictionary對象,因此它的內容不會在頁面請求之間丟失。壹般來說(考慮到可擴展性),這不是壹個理想的做法。在這個例子中,我們可以看到Dictionary的屬性和方法的效果。

如果您在自己的服務器上下載並安裝示例,則必須基於這個global.asa文件創建壹個虛擬應用程序。或者將其內容添加到默認站點根文件夾中的global.asa文件中。第3章描述了如何用向導創建虛擬應用程序。但是,對於本例,創建虛擬應用程序最簡單的方法是右鍵單擊Chapter05 sample文件夾中的dictionary子文件夾,然後單擊“屬性”對話框的“主目錄”選項卡中的“創建”按鈕,如圖5-4所示:

在這個global.asa文件中,代碼使用

& ltOBJECT ID = " objBookList " RUNAT = " SERVER " SCOPE = " SESSION "

PROGID= "腳本。字典" & gt

& lt/OBJECT & gt;

& ltSCRIPT LANGUAGE = " VBScript " RUNAT = " SERVER " & gt;

Sub Session_onStart()

objBookList。添加“2610”,“專業動態服務器頁面3.0”

objBookList。添加“1274”,“即時JavaScript”

objBookList。添加“2882”,“開始ASP組件”

objBookList。添加“1797”,“專業ASP技術”

objBookList。添加“1835”、“AD0 2.0程序員參考”

set Session(" my dictionary ")= objBookList

末端接頭

& lt/SCRIPT & gt;

2.字典示例頁面

在“腳本”的主頁面中。Dictionary對象”,第壹個任務是在會話層的範圍內獲取dictionary對象實例的引用。請註意,該引用是壹個對象變量,因此必須在VBScript中使用Set關鍵字。

然後,檢查妳是否得到了壹個對象(這是壹個好習慣),如果妳沒有正確構建壹個包含global.asa文件的虛擬應用,檢查問題出在哪裏。您將看到我們自己的消息取代了ASP錯誤消息(但是請註意,對於此操作,必須關閉默認的錯誤處理)。

& lt%

“出錯時繼續下壹步”關閉錯誤處理以測試對象是否存在

從用戶會話中檢索字典對象

set objMyData = Session(" my dictionary ")

If IsObject(objMyData) Then '在會話中找到字典對象

% & gt

& ltP & gt& ltDIV CLASS="subhead " >用數組叠代字典& lt/DIV & gt;

& lt%

arrKeysArray = objMyData。將所有的鍵放入壹個數組中

arrItemsArray = objMyData。將所有的項目放入壹個數組中

For intLoop = 0到objMyData。Count - 1 '遍歷數組

回應。寫“Key:& lt;B& gt;”& amparrKeysArray(intLoop)和amp“& lt/B& gt;值:& ltB& gt;”_

& amparrItemsArray(intLoop)和amp“& lt/B& gt;& ltBR >;

然後

% & gt

…其他代碼和控件放在這裏…

& lt%

其他

在會話中找不到字典對象

回應。寫入“會話的global.asa中沒有字典對象”

如果…就會結束

% & gt

頁面上顯示的字典內容列表是使用Dictionary對象的Key和Items方法創建的兩個數組,前面的代碼可以遍歷這兩個數組。

3.詞典頁面控件

在Dictionary的內容列表下是壹系列的HTML控件,可以用來設置Dictionary對象的壹些屬性,執行各種方法。這些控件都在壹個

在< FORM >上;在段落中,改變壹個屬性或者執行壹個方法是通過壹個按鈕來實現的(沒有標題)。屬性和方法的值放在按鈕旁邊的文本框或列表框中。

該頁面上的第壹個按鈕用於設置字典中條目的鍵屬性。這裏,下拉列表用於選擇壹個現有的鍵值。下面的代碼為頁面的這壹部分創建壹個控件。為了填充列表,使用了另壹種遍歷字典對象的技術,即對於每個… Next語句。代碼如下:

& lt表單操作= " & lt% =請求。server variables(" SCRIPT _ NAME ")% >METHOD="POST " >

& ltP & gt& ltDIV CLASS="subhead " >字典屬性& lt/DIV & gt;

& ltINPUT TYPE = " SUBMIT " NAME = " cmdChangeKey " VALUE = " " & gt;

字典。鍵(“

& ltSELECT NAME = " lstChangeKey " SIZE = " 1 " >

& lt%

對於objMyData中的每個對象

回應。寫" & lt選項>;"& ampobjItem

然後

% & gt

& lt/SELECT & gt;") = "

& ltINPUT TYPE = " TEXT " NAME = " txtChangeKey " SIZE = " 15 " VALUE = " New Key NAME " >"

& ltBR & gt

…其他控件放在這裏…

& lt/FORM & gt;

4.使用字典的屬性和方法

在“劇本”上。字典對象"頁面,點擊按鈕查看並修改條目的關鍵屬性,如圖5-5所示:

再次將表單提交到頁面。該頁面包含壹個腳本片段,用於檢查被單擊按鈕的值。它通過在集合中查找按鈕的名稱來確定哪個按鈕被單擊。如果找到與cmdChangKey對應的值,則從列表或文本框中獲取相應的值,並用於更改Key屬性:

查找從表單部分按鈕發送的命令

如果Len(請求。Form("cmdChangeKey "))然後

strKeyName = Request。Form("lstChangeKey ")'列表框中的現有鍵

strNewKey =請求。Form("txtChangeKey ")'來自文本框的新鍵值

objMyData。Key(strKeyName) = strNewKey '設置該項的Key屬性

如果…就會結束

頁面重新加載後,可以在詞典內容列表中看到相應的結果,如圖5-6所示:

頁面上的其余代碼用於設置項的Item屬性或執行Dictionary對象的方法。下面是這些操作的代碼,每壹段代碼都非常類似於演示Key屬性的代碼。每次在字典的內容列表中顯示結果:

如果Len(請求。Form("cmdChangeItem "))然後

strKeyName = Request。列表框中的Form("lstChangeItem ")'現有鍵

strNewValue =請求。Form("txtChangeItem ")'來自文本框的新項目值

objMyData。' Item(strKeyName) = strNewValue '設置項目屬性

如果…就會結束

如果Len(請求。Form("cmdAdd "))

strKeyName = Request。Form("txtAddKey ")'來自文本框的新鍵值

strItemValue =請求。Form("txtAddItem ")'來自文本框的新項目值

objMyData。Add strKeyName,strItemValue '執行Add方法

如果…就會結束

如果Len(請求。Form("cmdRemove "))然後

strKeyName = Request。列表框中的Form("lstRemove ")'存在鍵

objMyData。“刪除strKeyName”執行Remove方法

如果…就會結束

如果Len(請求。Form("cmdRemoveAll "))然後

objMyData。' RemoveAll '執行RemoveAll方法

如果…就會結束

例如,如果您現在點擊添加方法按鈕,壹個新條目將被添加到字典內容列表中,如圖5-7所示:

結果如圖5-8所示:

您可以在此頁面中測試字典對象的屬性和方法,您將發現哪些因素和環境會導致字典對象錯誤。例如,嘗試添加壹個與現有條目具有相同鍵值的條目,看看會發生什麽。