串編輯

串編輯

串表(string table)是一個存放應用程式要顯示的錯誤信息、提示或任何其他文本串的表。可以在工程檔案中存放多個串表。一般地,可以為程式的每個邏輯組定義一個獨立的串表。例如,可以設計與所有由File選單中的命令調用的選單相關的串。

概述

串表(string table)是一個存放應用程式要顯示的錯誤信息、提示或任何其他文本串的表。可以在工程檔案中存放多個串表。一般地,可以為程式的每個邏輯組定義一個獨立的串表。例如,可以設計與所有由File選單中的命令調用的選單相關的串。

將文本串定義為獨立的資源就可以很方便地在不修改原始碼的情況下編輯文本。例如,如果需要將某一Windows程式的界面翻譯成外語,那么將大部分文本放在串表中就可以簡化這個過程。(但仍需要翻譯其他資源如對話框中的文本。)

當處理串表時,要執行的四項主要任務是:

·啟動串編輯器

·創建並編輯串表

·保存串表

·測試串表

啟動串編輯器

如何啟動串編輯器與是要創建一個新的串表還是要編輯一個已經存在的串表有關。

啟動串編輯器以創建一個新的串表的步驟如下:

(1)打開希望將串表加入其中的工程。

串編輯 串編輯

(2)選擇Resource |New。

(3)在New Resource對話框中,在Resource Type列表框中選擇STRINGTABLE後再選擇OK。

Resource Workshop打開串編輯器並在工程視窗中放入一個對新串表敝引用。

啟動串編輯器以編輯一個已經存在的串表的步驟如下:

(1)打開包含希望編輯的串表的工程。

(2)在工程視窗中找出該串表。

(3)在該串表入口項上按兩次滑鼠鈕,或者先選擇它再選擇Resource|Edit。

所選擇的串表就會出現在串編輯器中。

處理串表

串編輯 串編輯

當打開串編輯器時就出現一個串表。如果剛剛創建了一個新串表,則不會見到任何串入口項,因為還沒有輸入任何串表。如果正在編輯一個已經存在的串表,那么就將見到與圖差不多的串入口項。

每個串表入口項都要有一個ID Source,一個ID Value,以及串本身。

串表中的每個串都必須有一個唯一的整數ID。Windows將所有的串分成若干段,每段包含16個串。ID為0到15的串構成第一個段,ID為16至31的串構成第二個段,等等。當在編譯資源時,各個串是按段來加入到執行檔中的。在運行時刻,這些段被裝入記憶體。

當應用程式需要某個特定的串時,Windows就將包含該串的整個串段裝入記憶體。了解了Windows如何處理串就能仔細設計串ID的賦值,以節約記憶體空間。

假設要為應用程式定義32個串。如果將從0到31的ID賦給這些串,則需向執行檔中加入兩個段。每當應用程式需要一個串時就有16個串被裝入記憶體,其中的一些可能是不需要的。

一種更好的辦法是對所有的串進行邏輯分組。例如,如應用程式的一個部分需要五個串,將它們編號為0到4。如果應用程式的第二部分需要九個串,則將它們編號為16至24,將它們放在第二個段中。這樣Windows就可以將相關的串一起裝入,而不會裝入其他不需要的串。雖然全部的段仍將被裝入,但每個未用的ID僅占用一個位元組的記憶體。所以,如果五個串放在一個段中,其他未用的ID僅占用11個位元組的記憶體。如果被裝入的段包含11個未用的串,則使用的空間就要多很多。

當指定一個唯一的串ID時,可以使用一個整數或一個字母數字標識符(即C或C++中的#define,或Pascal中的常量說明),後者代表一個整數。如果選用字母數字標識符以使得串ID更容易記憶,就很可能希望將標識符存放在一個標識符檔案中(對C和C++來說是個頭檔案,對Pasesl來說是個單元檔案或包含檔案)。要確保當在串編輯器內保存標識符時這些檔案中的一個是存在的。

加人新串

注意串編輯器頭部的標題:

一個ID Source包含與該串相關的一個整數。如果將一個標識符賦為該ID,它就在這兒出現。否則,將看到整數ID。

一個ID Value總是包含該串的整數ID。

一個String是一個文本串。它在串表中存儲為一個Pascal串;亦即,在該串的文本之前有一個位元組指示該串的長度。一個串可包含255個文本字元。

欲向串表中插入一個新串,如果這個表是個新表,則可按下面的步驟為該串輸入信息,如第3,4,5步中所描述的那樣;如果打算將一個串加入一張表,則從第1步開始。

(1)選擇希望加入新串處的上一行中的串。

(2)按Ins或選擇Stringtable|New Item。

(3)鍵入該串的一個ID Source或接受串編輯器寫入這個域的數字。基於鍵入的ID Source,串編輯器找出ID Value的適當整數值(為將ID Source恢復至原始設定,在按Tab或 Enter之前按Esc)。

可以鍵入一個整數或一個代表整數的字母數字標識符。如果鍵入了一個不代表整數的字母數字標識符,則串編輯器就在按Enter或選擇一條選單時提示創建一個新的標識符。

創建一個新的標識符的步驟如下:

a.選擇Yes。New Identifier對話框出現。

b.為標識符鍵入一個新值並指定將它存儲在何處。選擇OK。

(4)按Tab或在String之下的框中按滑鼠鈕並鍵入文本串。

每個串最長可達255個字元,並可以包含任何C一類型的escape轉義序列,包括\n(換行),\t(制表),\r(回車),\\(反斜槓),\”(雙引號)。

當Resource Workshop編輯器在一個串入口項中遇到一個C類型轉義序列時,它就在目標代碼中產生相應的ASCII 十六進制值,並由程式負責正確地解釋該值。例如,當編譯器分析\b\040\x7F時,它就產生十六進制序列07207F。代碼可能將這一序列解釋為ASCII字元BEL,SPC和DEL,或者它可以給這些十六進制值賦予另外的意義:

(5)按Enter(接受新值)或Ins(接受並插入一個新值)。

編輯已經存在的串

利用串編輯器可以很方便地修改每個串。為用滑鼠來選擇一個串,在希望編輯的串上按一下滑鼠鈕即可。若是利用鍵盤,則按Tab,↑,或↓以在表中移動。將游標定位於希望編輯的串上。

修改串

可以刪除任何串的ID Source和String值並鍵入新的值。不能直接修改ID Value域中所顯示的內容,而應由串編輯器根據在ID Source域中鍵入的內容來對它更新。

恢復被修改的串值

可以利用Undo和Redo特性來恢復被修改了的串值。選擇Edit|Undo或按Alt+BkSp以取消所做修改。如果取消了過多的修改操作,選擇Edit|Redo或按Shift+Alt+BkSp以重做被取消的修改操作。

刪除串

為刪除一個串,先選擇該串再選擇Edit|Cut或String|Delete Stringtable Item。

編輯串表的資源腳本

除了編輯串表中的串之外,還可以利用文本編輯器來編輯資源腳本的串。

編輯串表的資源腳本的步驟如下:

(1)在工程視窗中選擇該串表。

(2)選擇Resource | Edit As Text。

此時將出現資源腳本文本,供編輯用。

修改串

編輯一個串的步驟如下:

(1)找出準備編輯的串並對它做必要的修改。注意僅可修改出現在引號之間的正文。

(2)在編輯器的控制選單框內按兩次滑鼠鈕。

(3)在回答提示“Resource has changed.Compile?”時選擇Yes。

Resource Workshop編輯所有的修改並將它們保存起來。如果出現語法錯誤,Resource Workshop便退回文本編輯器以改正錯誤。 ’

修改標識符

對串入口項的另一個成分(即標識符)的修改要更複雜些,因為標識符可能還不存在,或者需要修改成一個新的整數值。如果在串編輯器中修改一個標識符,編輯器就會提示輸入一個新值。然而,如果是在一個文本編輯器中對它進行修改的,就應該已將該標識符插入了一個適當的標識符檔案中。如果還沒有這樣做,編譯器就試圖編譯串表並返回這樣的錯誤信息:“Expecting unsigned short integer.”。說明編譯器試圖解釋該標識符名,但不能找到一個與之相關的標識符。

當然,總可以在ID Source域中插入標識符的實際整數值,但這樣做的話就會使串表和程式的可讀性和靈活性都受到影響。

如果編譯器由於某個標識符不存在而找不到它,就可以按如下步驟來插入一個新的標識符:

(1)使工程視窗為活動視窗。

(2)選擇Resource | Identifiers。

(3)選擇New鈕。

(4)在New|dentifier對話框中,輸入新的標識符名和值。

(5)如果必要的話,滾動File列表直到找出希望將標識符存入其中的檔案,選擇它後再選OK。

(6)在工程視窗中選擇Stringtable入口項,再一次選擇Resource | Edit As Text。

(7)再在控制選單框中按兩次滑鼠鈕,然後選OK以重新編譯。編譯器找到該標識符並成功地完成編譯。

可以看出,利用串編輯器來為串修改或增加標識符是很容易的。

保存串表

當做完所有的修改後應將它們保存起來,不要等待Resource Workshop在關閉工程時再提示。在創建一個新的串表資源時,Resource Workshop自動地在工程視窗的資源腳本中插入一個STRINGTABLE入口項。為保存串表,應該保存整個的工程。

為保存整個工程,選擇File | Save Project。

測試串表

為測試串表,需要將資源腳本編譯檔案編譯成一個執行檔。然後,可以運行該執行檔以觀察各個串是否像所想像中的出現。

相關詞條

熱門詞條

聯絡我們