Make your own free website on Tripod.com



VB 程式字串的加長

VB 類程式 ASCII 字串在同一資料段內,是可相互借用的,也就是可拿其他字串剩下的空白來彌補字串不足地方。
挪用後只要修正其長度標示即可。

如何確定是同一資料段呢 ? 尋找 FFCC31,這就是資料段的起始位置。
一般來說,每個資料段相隔至少數百 Bytes,所以只要是一眼就看到的附近字串都可以借用的。

VB 字串格式:
型式-字元長度-訊息字串-xx-字元長度-X值-Y值-欄位長度
or
型式-字元長度-訊息字串-xx-xx-xxxx-字元長度-X值-Y值-欄位長度

[各段] 代表意義詳後面

前面的 [字元長度] 是針對 [訊息字串],後面的 [字元長度] 是針對 [X,Y 值...]。

範例,如下圖
&Save As 因為英文字比中文字 (Bytes) 短,通常沒辦法翻成 [另存新檔...]:

以同一功能表 (同資料段) 而言,可直接借用。

&Save As 翻成 [另存新檔...] 不足 3 Bytes 
&Print 翻成 [列印] 多出 2 Bytes 
&Exit 翻成 [結束] 多出 1 Bytes 
2+1=3 好巧是吧 ! 是不是剛好夠呢 ?

所以就把 [列印] 及 [結束] 後面多出來的空白挪到 [另存為] 後面,然後改成 [另存新檔...]。

但,這樣還不行呦,必須再修改其長度標示。
也就是,字串 [另存新檔...] 前面的 08 改成 0B,[列印] 以及 [結束] 前面的 06 及 05 改成 04 就可以了。
如下圖:


修正後畫面如下:

各段代表意義:

型式:
000101 = 一般
000501 = [方型] 勾選
000601 = [圓型] 點選
000401 = 按鈕
001303 = 功能表

欄位長度:
依型式而定代表 [欄位長度] 或 [按鈕寬度]

長度或座標值一律為 16 進制,低位元在前:
Ex:
0400 => 0004 = 4
0401 => 0104 = 256+4 = 230

∼如塵∼

回索引