Make your own free website on Tripod.com

中文化ASCII字串的高級技巧

---Pascal語系字串(2)

作者: 梁瑞本   

一、使用前提

□□當中文化一個Pascal語系字串時,當需要增加的字串超過三個的話,那麼前面的方法就不能用了,因為前面的方法只能增加三個字串。以下的方法請您只有在必要的時候 (需要增加四個或以上的字串) 使用,因為修改後對軟體是否會有影響我還不得而知,不過我測試了幾個程式,證明是可行的。

二、操作過程

□□和以上幾個方法一樣,讓我們用UEDIT32開啟一個含有Pascal語系字串的檔案,在這裡依然使用AcqRUL為例。使用的的字串還是「Drive not responding!」 (圖1)

 

 

 

 

這回與上次不同,不是修改或替換FF來增加字串,而是透過更改字串的位置來建立一個新的字串,這次我們更改字串為「這是調虎離山的例子,很成功 ! 」,共有28個字串。增加7個字串這麼多,採用上次的方法根本行不通,現在讓我們轉到字串的位置 (方法同Pascal語系字串 (1) ) ,把游標移到字串的首字串上,記下在UEDIT32狀態欄出現的該字串在檔案中的偏移地址「755980」。現在,讓我們往下尋找一個有很多ASCII值為「00」的字串的地方。終於在偏移檔案頭「804256」處發現了很多的00 (指ASCII值為「00」的字串,以下同) 。現在,讓我們把提示訊息放到這裡您,首先選擇適當的地方,具體為與「00」開始和結束之間要保持至少相距5個「00」以上 (為了保險) ,這是修改後的圖片 (圖2)

我是在「00」中間進行修改的。我們的目的是建立一個新的Pascal語系字串,用來替換那個舊的字串,所以這個字串與其它的Pascal語系字串一樣,有字串標識符FF,有字串長度標識符,然後由三個00隔開字串。我們現在已經完成建立新的字串的工作了,那麼我們要把新的字串關聯到程式中去,讓程式顯示的是新的字串,而不是以前的那個。
□□執行代碼轉換器,在十進制輸入框中輸入舊的字串首字串偏移「755980」,取得原調用偏移代碼為「0C954B00」,把游標移到新建的字串的首字串,在UEDIT32任務欄中得到新的首字串的偏移為「804278」,再用代碼轉換器求得新的調用偏移代碼為「B6514C00」,按CTRL+F調用UEDIT32的尋找對話框,以十六進制方式尋找「0C954B00」,方向設定為「向上」,按下「下一個」在檔案中尋找。這個代碼在離檔案頭偏移「753968」處找到,把它替換成「B6514C00」即可。修改完成後保存檔案,就可以執行程式來測試一個是否增加成功。這是修改後的提示框 (圖3)

四、常見問題

□□這種方法常見的問題是,建立新的字串時不小心增加了檔案的長度 (我就試過好幾回) ,造成程式不能執行。二是用來建立的地方不是程式空餘的地方,而是含有代碼或資料,這樣會造成不可預知的錯誤,所以當您修改程式後不能正常執行,而您又確定沒有增加檔案長度,並且字串的調用偏移代碼修改正確,那麼您可以試試換一個地方來建立字串。一般向下尋找「00」來建立的成功率比較高。由於文中的一些常用操作在前兩篇已詳細介紹了,所以在這裡沒有給出圖片,所以有什麼不明白的話,可以參考一下前幾章的操作。

五、最後的話

□□至此,我們介紹了如何增加C、Pascal語系字串的長度,已經可以應付目前大多數的WIN32程式了,當然,新的方法和新的工具不斷出現,以後可能會有更好的工具來代替手動操作,那時我們中文化ASCII字串就更容易了。



回教學