PyS60开发环境搭建

作者:W.S.T 发布时间:October 13, 2009 分类:S60V3

本文将为您介绍如何在Windows系统下搭建PyS60开发环境,让你为你的爱机写下第一个程序做准备。
第一步,我们需要为电脑安装“诺基亚S60模拟程序”——为什么要安装?我们要做的是为自己的S60系统的手机编写程序,也就是说所写的程序将只能在手机上运行,而电脑是不能运行PyS60程序的,所以我们要先给自己的电脑安装一个模拟程序,把电脑模拟成S60系统,这样我们所写的PyS60程序就可以在电脑上运行调试了。
我们要先下载安装三个程序:
(1)、ActivePerl   下载地址:http://www.onlinedown.net/soft/8364.htm
下载后按照提示进行安装(最好安装在C盘)
(2)、S60SDK (开发工具包) 下载地址:地址很长,点我进入      
在诺基亚官方下载比较麻烦的就是要注册,不过是免费的,只要费一点功夫罢了。
记得选择你所有开发的手机的系统版本,里面有 S60第三版和第二版的SDK,记得要选择适合自己手机的(图一)。
还是按着提示进行安装,安装在C盘吧。

(3)、Sun Java Runtime Environment 
下载地址:
http://www.skycn.com/soft/27213.html
安装Java运行时环境主要是为了使S60SDK显示出来的模拟手机界面是中文的。
现在我们看看我们安装好的S60模拟机:打开 "开始"-"程序"-"S60 Developer Tools"-"3rd Edition FP1 SDK"-"Emulater"  (图二):
图一:下载S60SDK,选择适合的版本  图二:S60模拟器
第二步,在我们的S60模拟手机里安装Python
(1)、先下载 Python SDK 下载地址:
  http://sourceforge.net/project/showfiles.php?group_id=154155
点击 Download 进入下载页面。该网页有提供多个下载文件,在这里要按你刚才下载S60SDK时选择的版本选择对应的PyS60版本。有第二版跟第三版之分。如下图:
    图三:选择合适的PyS60 SDK
(2)、将下载的压缩文件解压,解压后能得到两个文件,一个是:sdk_files.zip  ,另一个是uninstall_PythonForS60_SDK_***.cmd ,这个文件是用来删除已安装的PythonForS60_SDK的,这里我们并不需要管他。将sdk_files.zip  解压,等到一个名字为 epoc32的文件夹,复制整个文件夹到诺基亚S60SDK安装的根目录下,例如我安装的是第三版F1,并且是安装在C盘,我就将epoc32文件夹复制到C:\Symbian\9.2\S60_3rd_FP1\ 目录下,电脑会提示该文件已存在,覆盖就好了。

(3)、现在再次打开S60 SDK的 Emulator  ,模拟器开机后进入菜单,在“安装”目录下可以发现Python了吧,打开Python,并在菜单项里选择 Run Script ,选择ball.py ,感受一下再电脑的S60模拟机上运行PyS60程序的感觉。
    图四:运行ball.py

(4)、如何把我们写的PyS60的程序放到虚拟机里去运行呢?如果你在诺基亚S60SDK的安装文件夹里搜索ball.py ,你就会发现在诺基亚S60SDK的安装文件夹里可以找到\Epoc32\winscw\c\python\ 这个路径,以我的电脑为例就是:C:\Symbian\9.2\S60_3rd_FP1\Epoc32\winscw\c\python
把你写的文件放到这个文件夹里就可以在虚拟机里通过Python运行了。其实Epoc32\winscw\c\中最后的c是指虚拟机的c盘。
第三步,安装Python电脑端的开发工具
(1)、上面我们已经将诺基亚S60的虚拟机安装好了,也为该虚拟机安装好了Python,但是我们如何给我们的手机写PyS60程序呢。如果是高手的话肯定会推荐你用记事本——呵呵,开玩笑的!我们都是菜鸟,所以我们不用记事本。这里向大家推荐Python官方提供的编辑器:IDLE.
下载Python  for windows 先,下载地址:www.python.org 
不推荐大家下载最新的2.6或3.0版,原因是PyS60的项目开发人员们对2.5版情有独钟。在后面我们将会提到的一个将Py文件转换为sis安装文件时需要用到的是Python2.5,所以在这里我们直接下载2.5版本的就好了。
(2)、安装好Python2.5后就可以通过 "开始"--"Python 2.5"--"IDLE (Python GUI)" 来打开IDLE,选择 File - new window ,在弹出的新窗口里面编写Python代码。IDLE支持自动缩进,语法变色等功能,但是我们在这里千万不要按F5哦,因为我们写的是PyS60程序,是要给手机运行的,所以不能直接让电脑运行,而要将文件保存到S60虚拟机的\Epoc32\winscw\c\python\ 目录下,通过S60虚拟机来运行。
    图五:Python Shell     图六:新建的窗口

(3)、一件必须强调的事!!!
当我们为自己的手机写PyS60程序时会发现有时经常会出现一些奇怪的错误,尽管按着书本上教把每一个代码都写对了,但是保存到\Epoc32\winscw\c\python\ 目录下通过S60虚拟机去运行时还是总会出现错误。有一个可能的原因是我们所保存的文件的编码不符合要求,在这里我们保存文档的编码时不仅要保存为utf-8格式,而且必须是 utf-8 无BOM格式编码,其实通过IDLE保存的文件的编码只能设定为utf-8 格式,所以在这里提醒一下大家保存的时候要先通过其他文本编辑器将式转换为 utf-8 无BOM格式编码,阿海推荐一个简单易用的编辑器 Notepad++,这个编辑器同时也可以作为Python代码编辑器,而转换格式的功能在 “格式”菜单中。
第四步,编译与打包PyS60程序
(1)、编译。Python是一种解释性的语言,相对而言其运行效率远没有C/C++等语言高,所以Python官方提供了将py文件编译成二进制码的pyc文件,以提高程序的运行效率。我们如何对已写好的py文件进行编译,一个很简单的办法就是在IDLE中直接输入下面的命令:
  import py_compile
  file=raw_input("请输入需要编译文件的路径:")   #例如我们所要编译的文件在"c:\python25\ball.py"
  py_compile.compile(file)
第一句的意思是:调用Python本身提供的py_compile模块,第二句的意思是将你所要编译的py文档的调用并赋值给file,最后一句就是用py_compile模块的compile方法对file进行编译,编译后可以将该文件进行打包,转换为S60系统下的sis安装文件。
(2)、打包。如果我们的程序在S60虚拟机上测试已经没有问题了,那么我们就可以开始将我们程序打包成sis文件,安装到我们的手机上。首先我们要准备两个文件:ensymble.rar 和  openssl.zip。点击进入下载页面下载后将ensymble.rar解压并将解压得的文件 ensymble.py 复制到你电脑上Python2.5的安装目录下,以我为例的话就是将ensymble.py文件复制到C:\python25\ 中。然后再将openssl.zip 解压,将解压得到的文件复制到 系统盘 windows目录下例如 C:\windows\  。
做好这些后,我们就可以来将我们的程序打包了,在 "开始"--"运行" 中输入cmd,进入命令行模式,然后输入 cd c:\python25\  进入到Python的文件目录下接下来的事情就有点难了,我们要在命令行下输入:Python ensymble.py py2sis 源代码.py --uid=0x12345678 --caps=”ReadUserData+UserEnvironment+WriteUserData” --icon=图标文件.svg 目标程序.sis

下面我要重点解释下这段命令的含义:
1、前面的"Python ensymble.py py2sis"不用解释什么了,就是告诉CMD你要干什么
2、"源代码.py" 这个就是你的源代码的名字,是什么就打什么,直接打名字就可以了,因为我们已经放到了python根目录下了
3、接下来的东西 --(两个减号),后面的都是参数,有些是必要,不能少,有些是非必要,可以去掉。
4、"--uid=0x12345678" (必要)软件的 UID ,不能与别的程序冲突,一般乱填的话没问题吧。。重复的概率蛮小的
5、"--caps=”ReadUserData+UserEnvironment+WriteUserData”" (非必要)caps就是权限,这里包含3个权限,可以自行去掉,我现在也就知道这三个权限,别的以后添加
6、"--icon=图标文件.svg"(非必要),很简单,图标文件,用法同理可得
7、"目标程序.sis" (必要),生成sis文件的名字别
         注意不要漏掉这行命令中间的空格哦,漏掉了就没用了。
老实说这么做实在太麻烦了,所以下面我提供一个简单的方式,我将上面 ensymble.rar  和  openssl.zip 打包成一个安装文件,而且还写了一个程序来完成那个命令行的工作。
这里是下载地址:http://www.uushare.com/user/dongnanyanhai/file/1697435
目前暂定的学习方向是PyS60的游戏开发+delphi开发PyS60的编程环境
一切都处于入门的阶段啊,慢慢努力!


诺基亚s60v3关于卸载与删除的最常见的3个问题

作者:W.S.T 发布时间:October 12, 2009 分类:S60V3

资料来源于互联网,不同的机型处理方法可能不一样,操作需谨慎!

(一)主题安装后在程序管理里找不到相关删除时:
注:E为存储卡.C为手机机身存储.

如果主题安装在C盘那么在手机端使用第三方文件管理器进行下面的删除工作.
手机连接电脑时选择数据模式进行连接,也可以直接把存储卡拿出来使用读卡器进行删除工作.然后进入到E:\private\10207114\import下,主题文件都在这里,每个主题安装后都会自动生成一个文件夹,而每个文件夹内的文件与你安装的主题名字相符合,确定好需要删除主题后连带这个文件夹整个删除即可.

(二)如何删除程序管理中未安装的程序?

1、先去"程序管理",把那写xxxxxxx.sis的未安装文件名记录下来
2、然后用读卡器,插入存储卡,用PC解决问题
3、打开:\private\10202dce\下,找到同名文件,然后把它删除
其实这样子,在程序管理里面已经没有那个未安装的提示了,但这个只是取消那个提示,不是完整删除,对于结构简单的程序,很容易解决,但对于复杂的程序,就比较难清理光了
4、可以回到:\private\,然后找到之前xxxxxxx.sis的前面xxxxxxx的文件夹,把整个文件夹删除,就可以.....(可以在PC中使用搜索功能,选择“所有文件和文件夹”,在“全部或部分文件名”中填入“xxxxxxx*”,*为通配符,将找到的文件夹删除……)
5、再到:\resource\apps\下看能不能找到名称包含之前xxxxxxx的文件,如xxxxxxx.rsc等等,把它删除(注意!!:因为在这个文件夹里,很多都是以原程序名存在的文件,所以不一定会找到xxxxxxx的文件....只能尽力了,这有个办法:就是在刚才记录“程序管理”中未安装的SIS时,先点击该软件安装,看安装的第一个界面,会有该程序的名称,记住它,毕竟你自己的手机,自己安装过的软件应该能够记得,然后再在:\resource\apps\中找到该软件相关的文件,名称都是有所关联的,所以并不是很难找……)
6、同样在:\private\10003a3f\import\apps\,使用与resource一样的方法查找
基本就这样了,总的来说,只要做完第3步就可以达到想要的效果了
还是劝大家对没有把握的文件不要动手.....阅读并操作此帖的,必须对S60文件结构有一定的了解,对文件的操作和属性有一定掌握的能力
此法很管用,还有助于帮助大家了解Symbian系统的文件存放……
提醒大家小心使用!不要误删了系统文件!

(三)删除JAR游戏问题? 无法删除java或残留图标。
s60第三版的系统在安装一个jar格式比如aaa.jar的软件或游戏时,会在E:\PRIVATE\102033E6\MIDlets目录下建立一个带中括号的文件夹,比如[10168f78],里面会有与安装文件同名的aaa.jar以及uids两个文件,安装的同时还会在E:\System\Install\Registry下产生与上面这个中括号文件夹同名的注册文件10168f78.reg.
  在不能正常删除这个软件时,只要在E:\PRIVATE\102033E6\MIDlets目录里删除该软件的目录[10168f78],再将E:\System\Install\Registry里面相应的10168f78.reg删除就可以了!
  你安装了几个*.jar格式的软件或游戏,E:\PRIVATE\102033E6\MIDlets里面就有几个带中括号的文件夹,一定要打开看看里面的文件名是否是你要删除那个!有时候在E:\System\Install\Registry里面可能找不到相应的*.reg文件,不用管它了,把E:\PRIVATE\102033E6\MIDlets里面带中括号的文件夹删除就可以了!

上面的方法,只能删除程序体,不能删除残留图标,下面继续删除图标的方法
要删除图标,需要借用一个taskman系统工具(笔者使用的是best-taskman 1.0汉化版)。打开taskman转到"已装程序",找到要删除的这个程序,选项>程序详情>弹出Application info信息清单,记下记下第二行:如UID:0X101ebe51。同时记下最后一行如filename:   e:\2700450257.fakeapp。
把储存卡在电脑用读卡器打开,转到E:\private\10003a3f\import\apps\NonNative\Resource\文件夹下,里面全是.rsc文件和.mbm文件。找到刚才记下的第二行中与UID:0X........后面相同的文件名,有两个,一个是_reg.rsc文件,一个是_loc.rsc文件(如101ebe51_reg.rsc和101ebe51_loc.rsc),同时也要在后缀为.mbm的文件中找到与刚才记下的最后一行中filename\e:后面数字相同的那个文件名(只有一个,如icono2700450257.mbm).将找到的这三个文件全部删除,就ok了!实际上,如果用记事本打开101ebe51_reg.rsc文件,也可以看到里面就含有要删除的程序名和图标名(.mbm文件)


S60第三版汉化教程精选之八神篇第五课

作者:W.S.T 发布时间:October 12, 2009 分类:S60V3

第五课:汉化风暴列表汉化
教程作者:摩登
讲解人员:摩登
发布人员:摩登

这节课我们讲汉化风暴列表汉化!
其实我们前面所学的手动汉化都很少用到,现在的汉化都交给了汉化工具——汉化风暴
我用几天的时间讲手动汉化不为别的,只为了让你们知道汉化的基本原理,这也是一个汉化人员必需要懂得的!
就算你手动汉化不怎么懂,请别这么轻易放弃汉化,还有我们彩虹的汉化风暴支持你!相信上完这节课后你也会汉出自己的作品!手动汉化以后会慢慢懂得!
我们这次是以高级锁这个软件为例,按我们常规先解包软件并安装软件!
安装这个软件前我先提醒大家,高级锁这个软件汉化版安装后是不能删除,英文版安装后可以删除的,请大家放心安装!
我先和大家分享个好方法,首先安装软件,然后解包软件,查看语言包安装路径后用汉化风暴对着安装路径打开,例如高级锁语言包路径C\RESOURCE\APPS\AdvancedDeviceLocksPro0x2001061D.r01,我们就用汉化风暴对着这个路径打开,不过要破解手机此方法才有用!
好,转入正题
我们先来打开软件熟悉下我们要汉化的菜单内容
如图1

接着我们打开汉化风暴,按选项会弹出菜单,再选开始这个选项便提示“列表方式”与“十六进制”两个选项可供选择,如图2

我们这次是讲列表汉化,那当然是选列表方式继续下一步
选择列表方式后是选择我们要汉的语言包了,语言包在哪我刚刚讲过,在这就不用多说了
打开语言包后我们要汉的内容以列表方式展示在我们眼前
如图3


现在我们有两种方式汉化,第一种方式,如果你有一定的汉化经验,你可以从开始一直汉到最后,就是选中要汉的内容按确定健直接输入汉化内容,再继续汉下个,如图4


第二种方式,如果你是新学汉化的话就不要那么疯狂,首先打开软件熟悉下内容再对着内容汉,就以菜单的第一个内容为例,我们可以用查找功能来找到它,先按菜单,再选编辑,接着选查找来找出我们要汉的内容,也可以直接按2键,如图5

选择查找后会提示输入查找内容,我们就输入刚才软件菜单上的第一个内容Auto Lock Interval
如图6

确认后便会找到结果,现在我们按确认输入中文内容,然后确定
如图7

补充一点,查找内容还可以按5键继续查找下一个相同的内容
汉化风暴还带有在线翻译功能,就算你不懂英文俄文也无所谓,每个人也不一定精通英文俄文吧
现在我们来讲汉化风暴自带在线翻译汉化
就以菜单第二个内容为例,先把光标移到要汉的内容按拨号键会弹出菜单让我们选择翻译语言,这是英文我们当然是选英文到中文了
如图8

稍等片刻翻译完成后汉化内容便翻译出来,如图9

接着按确认继续汉下个,依此我们把软件菜单上的内容全部汉完
如图10


现在我们先保存测试下有没有错误,希望大家能养成这种习惯!保存按菜单再按保存,它又弹出“备份”与“保存”两个选项让我们选择,我们就选保存吧!其实保存也自动备份的,也可以直接按7键保存或备份
如图11

保存成功后我们看看效果
如图12

下面我给出一点经验,像图13带%d这样的内容千万不要直接按拔号键翻译完成后就确认,要先选中内容,在输入汉化内容时把英文单词先删除剩下%d,再输入汉化内容,否则软件打不开或其它错误,因为翻译后会使符号变成汉字符号,大家这里要注意!

还有像图14、15、16这样的内容千万不要汉,这些都是系统的代码!


汉化风暴列表汉化基本是这样,大家在汉化时一定要对着软件内容汉,汉完一段先保存测试有没有错误,如有错误可以及时发现!
没风就没起浪,没经过错误就没经验!所以大家要多些实践,多些思考,就会得到多些经验



S60第三版汉化教程精选之八神篇第三课

作者:W.S.T 发布时间:October 12, 2009 分类:S60V3

第三课:A码的汉化与借位
教程作者:许愿
讲解人员:摩登
发布人员:呓语晨羊

前期回顾:
首先我们回顾一下上次学过的内容,A码即ASCII码,是美国标准信息交换码的英文缩写。它是用一个八位二进制数来表示一个符号(字符)。
例如字母“A”用二进制数01000001表示,其相应的十进制数是65,十六进制数是41H。手机软件中字母的A码都是指该字母的8位二进制数转换成十六进制数的值。一个英文字母占1个字符.一个汉字占2个字符,汉字字符2字节,英文字符1字节,中文标点2字节,英文标点1字节,所以有时标点符号都不能搞错!

本期内容:
又以PhoNetInfo这个软件为例,我们先安装软件,安装后打开软件按左软键打开菜单,有About,Reboot device,Exit三组英文 如图1

以About为例吧,我们先打开x-plore找到语言包位置按菜单\文件\用十六进制查看模式打开PhoNetInfo.rsc 如图2

打开后按左软键选择编辑,然后再左软键选择查找字符,输入About注意大小一定要分清 会找到结果 如图3

大家看About的字符串是41626F7574前面还有两个字节是0505,这两个字节"0505"是About的A码指针,其作用是用来指示字串的长度及字符数的,是用16进制的计数方式,这两个字节"0505"是About的A码指针,其作用是用来指示字串的长度及字符数的,是用16进制的计数方式,我们前面学的16进制现在修改指针就用上了,前面一个05代表这个字串有5个字符,简单点来说就是有五个英文字母,后面的05代表这个字串是由5个字节构成(也就是41 62 6F 75 74这5个字节构成),对于英文字符来说,有效字符和字串长度是一样的,但要汉化成中文就不同了,我们必须用中文的Unicode字符去替换,因为只有Unicode字符才能正常显示中文,但是我们不能直接替换成“关于”这两个字符的U码代码,中文编码的使用是需要加上标识符的,这个标识符是以0F开头(表示以下内容为Unicode编码),以E0结尾(E0表示以后为ASCII编码)。其实只要有0F就行了,结尾有没有E0无所谓,不过有时你剩下一个字节你如果用U码就不够了,这时就要用E0来代替。
大家注意0是阿拉伯数字0
现在我们到功能表打开十六进制转换器,打开后按选项再选择转换,弹出输入框后要我们输入中文,我们就输入About的中文意思“关于”,确定后关于的U码显示在屏幕上,我们先记住这段代码如图4

再返回刚才X管理器十六进制界面,将"About"的A码的字串"050541626F7574"要改为中文的U码的"关于"的字符串就是"02050F51734E8E" 如图5

这个字符串中:02表示有两个有效字符(即关于两字),05表示仍然占用五个字节(即0F 51 73 4E 8E这5个字节),0F表示以下的字节为U码,5173 4E8E分别是刚才转换“关于”两字的U码代码
好!我们先保存打包看看效果 如图6

上面讲的是A码的基本汉化,下面接着讲A码借位
这次的课程有点难度,如果你用心来听多点练习其实也不是很难。
我们还是以上次PhoNetInfo未完成的任务接着讲,我们上次已经把About汉掉了,现在我们也把Reboot device和Exit汉成中文,还是用x-plore管理器以十六进制模式打开PhoNetInfo.rsc语言包,按我们上次讲过的一样,先按选项选择编辑,再选查找输入Reboot device找到它的位置,Exit也在下面,看 借位图1

我们可以看到Reboot device的16进制编码为0d0d5265626f6f7420646576696365,0d0d指这个字符串有13个有效字符和占用13个字节,而下面的Exit的16进制编码为040445786974,只有四个字节,我们把Exit汉成“退出”至少也要五个字节才到啊!
难题出现咯!怎样才能把Exit汉成我们的中文“退出”呢?大家又看看Reboot device,它有13个字节,如果汉成“重启手机”还多几个字节的,而多出来的字节只能用00或20来填充,太浪费了。那我们就代表Exit向Reboot device借一个字节来用用吧,这个是有借没还的,呵呵~
我们把光标移到Reboot device的16进制编码区,大家看 图2

在指针0d之后17之前按C键随便删去一个字符,这里我删的是o,然后我们到Exit那按左软键选择插入模式任意插入一个字符,我加了个45也就是E的编码。借位之后别忘了修改Reboot device和Exit前面的指针,把Reboot device的两个0d 改成0c,Exit的两个04改成05
(开始Reboot device是13个字节,指针是0d,被Exit借了一个,现在剩下12个所以是0c,而Exit开始是4个字节,现在加了一个变成5个,所以是05)
好,按右键保存后退出x-plore,打包了签个名看看效果吧。 图3

大家看看Reboot device变成了Rebot device,Exit变成了EExit,我们借位成功了,接下来的是把它们改成我们中文的U码。我们把Rebot device的字符串0c0c5265626f7420646576696365汉成中文“重启手机”的字符串是050c0f91cd542f624b673a0020e0
再给大家重复指针是怎么得来的:05是指91cd 542f 624b 673a 0020这5个汉字U码代码,0020是空格,0c是指这段代码有12字节,即是0f 91 cd 54 2f 62 4b 67 3a 00 20 e0这12个字节,e0是后面剩下一个字节,用U码不够所以用e0补,e0也就是代表下面为A码 如图4

下面有几个注意点,是许愿师傅近年来汉化失败经验的总结:
1.每个字符 后接的17到第二个字符的数据指针之间都为系统数据,不能更改
2.借位后字符的数据指针不能忘记修改
3.借位只能在同级菜单内进行,就拿这个软件做例子,由于About只有5字节自身都难保了,所以Exit只能问Reboot device借位,而不能问上面菜单的General借,人家是不会借的,呵呵。

我来说说我的感觉。重复指针这里要严重感谢摩登,许愿的教程没有说明重复教程!


S60第三版汉化教程精选之八神篇第四课

作者:W.S.T 发布时间:October 12, 2009 分类:S60V3

第四课:A码汉化之A码偏移
教程作者:摩登
讲解人员:摩登
发布人员:冰封的♂心

开始上课
这节课我们来讲偏移,要会偏移必需要懂十六进制,下面我再给大家复习下十六进制
我想到一个能帮助大家容易理解十六进制的方法,我先给大家举个十进制的例子,帮大家容易理解
十进制基数0—9组成,逢十进一,也就是数到9就进一
例十进制:
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
十进制谁都会,只是举个例,
十六进制有16个基数,0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
十六进制逢十六进一,也就是数到F时进一再从0开始数


00000
00001
00002
00003
00004
00005
00006
00007
00008
00009
0000A
0000B
0000C
0000D
0000E
0000F
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
0001A
0001B
0001C
0001D
0001E
0001F
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
0002A
0002B
0002C
0002D
0002E
0002F
00030
虽然很哆嗦,这样可能大家容易理解
好我们开始讲偏移
我们还是以PhoNetInfo这个软件为例,大家得重新解包
就以菜单的Exit来讲解,大家都知道Exit只有4个字节,而要汉成中文得5个字节才够,大家看图1

(注:原图1损坏)

我们上次上用借位方法来汉它,如果上面两个都不能借的话我们就要用到偏移,我是说如果
我们还是用x-plore十六进制模式打开语言包,按菜单-编辑,再按菜单查找到EXit的位置,又按菜单选择插入模式

大家看图2,

我是在45与78之间插入45,即是E
插入字符后别忘了改指针,
好,字符插入完成,接下来的是要修改引索表
修改引索表是我们这节课的重点,也就是难点,大家一定要认真听
下面给大家举个例
例如一位作者写了本书,这本书有10页,后来作者有了灵感想补充一页内容,可这页内容要插在4与5页之间,那么原来的第5页要改为第6页,原来的第6页要改为第7页,即第5页以后的页码都得增加一页,书本页码增加了一页,目录也要修改,修改目录和修改书本页码一样都是从第5页以后加一页,书本的目录就像我们语言包的引索表,刚才插入的字符就像书本一样插入一个页码
现在来看看我们是在那两页之间插入一个字符的,大家看图3

十六进制表分为三个区,左边的为引索码区,中间是十六进制区,右边是字符区
先看看左边引索码区0002b7这个引索码,可以看作02b7,再看十六进制区和02b7同一行的第一个字节是00,那么这个00的引索码就是02b7,第二个是05,按十六进制计算方式它的引索码是02b8,第三个还是05,引索码02b9,第四个是45,引索码是02ba
我们是在45后面加了个字节45是不?
很明显看到我们是在我02ba后面加了一个字节,也就是在02ba与02bb之间加了一页
现在我们已知是在我02ba后面加了一页,有了目标我们就可以去修改引索表了
书本的目录是在开头,而语言包的引索表是在结尾
大家按菜单滚动至底部,看图4

我们看到的就是引索表了,我记得上第一节课时有位同学问我引索表怎么看?怎样才知道引索表从那里开始?
现在就慢慢解释给大家,大家从引索码000b9f那行开始看,从我划红线的地方开始是18 00 20 00 2b 00 47 00…这就是引索表的开始位置
往前面看是些乱七八糟没有顺序的代码,所以前面就不是引索表了
大家看我用红线划在一起的1800 2000 2b00…
这是A码形式,所以是反过来看的,应该看作0018 0020 002b…
还有个朋友向我求助过,他问我引索表为什么不是按这样0018 0019 0020 0021排下去的,为什么从0018就跳到0020,从0020就跳到002b呢?
引索表如果一个个排下下去的话不是比长城还要长么,呵…
如果一个个排下去你要改时改到手肿都改不完啊!
所以引索表省略了部分,大家明白了吧!
回到我们的主题,我们在上面插入了一个字节,也就是插入一页,我们是在02ba后面插入的是不,大家看图5,

引索表没有00ba这个引索码怎么改啊?
我们前面不是讲过被省略了吗!被省略了要怎么找呢?
大家看看我划红线的地方一个是6402 ,一个是cd02,我们说过看作0264、02Cd的
大家看0264比02ba小,02cd比02ba大
现在答案出来啦!0264比02ba小是前页的,前页是不能改的
那么就要从02cd开始改了,我们是插件一个字节所以02cd加1就是改为02ce,我们讲过例如书本在4与5页之间插入一页第5页以后的都得增加一页,所以02cd以后的如02df 024b…都要加1,如图6我都加1了

如果是插入两个字节就要增加2了,这个道理谁都懂!

好!这节课的偏移就全部讲完,大家要多多练习,我们下节课讲汉化风暴的汉化及注意点