论坛风格切换切换到宽版
  • 8468阅读
  • 16回复

试用《非标字串宏》映像(请 wanfu 指正) [复制链接]

上一主题 下一主题
离线大老胡
 

发帖
117
金钱
820
威望
82
只看楼主 倒序阅读 0 发表于: 2015-11-10
承蒙 wanfu 亲自指导使用非标字串宏,不胜感谢!!!


这二天在试用非标字串宏汉化我的那个 eng.lng 文件,基本做完了,实话讲,软件很好用,特别是可以改字数指示符功能很棒。
但也发现一些问题,借此反映给 wanfu,希望对完善软件有用:
      1. 对于大于 256 个字符(U-16码)的字串不能提取(有二十多条字数标志 XX01 的字串没有提取);
      2. 混杂东亚字符的字串仍未提取,不知是否我的设置有问题[在字符“–”(编码:1320)、“ ’”(编码:1920 如It’s)、“… ”(编码:2620) 和汉语标点 “ 和 ”];
      3. 字数指示符也有点小问题,当译文和原文字数相同时,如 OK(确定)、Mb(MB)等,字数指示符被清空,导致软件显示错误。
      4. 设置还是有点复杂,比如字符指示能否设置几种常见形式固定下来,便于选择。
         比如:有无字符标志(下拉列表) + 标志形式 + 有无字数指示(下拉列表) + 前缀 + 字符指示(字位) + 后缀 + 字串 + 字串结束标志


以上纯属个见,请指正。

离线wanfu

发帖
2734
金钱
12170
威望
1217
只看该作者 1 发表于: 2015-11-11
谢谢你的反馈,对你指出的问题答复如下:
1. 对于大于 256 个字符(U-16码)的字串不能提取(有二十多条字数标志 XX01 的字串没有提取)
请提供例子。
2. 混杂东亚字符的字串仍未提取,不知是否我的设置有问题[在字符“–”(编码:1320)、“ ’”(编码:1920 如It’s)、“… ”(编码:2620) 和汉语标点 “ 和 ”]
英文的默认字符编码范围定义为 0009-000A,000D,0020-007E,0080,00A9,00AE,大于 256 的超出了这个范围。如果要提取混杂英文以外字符的字串,必须自定义编码范围。或者干脆用非英文的语言作为要提取的语言。
要自定义编码范围时,可以在设置 -> 代码页项中的相应代码页中自己定义。此时为了过滤掉不包含英文的字串,可以选定启用特征码选项。
要用非英文语言作为要提取的语言,如果 Paasolo 方案中已经添加了该文件,则将该文件的 Passolo 来源列表的语言设置为要提取的语言。如果没有但已添加了其他要汉化的文件,可以临时设置其他文件的原始语言为要提取的语言,如果都没有,则添加要汉化的文件到 Passolo 方案中,并临时设置其来源语言为要提取的语言。然后编辑非标宏的提取对话框中的要提取的语言。
3. 字数指示符也有点小问题,当译文和原文字数相同时,如 OK(确定)、Mb(MB)等,字数指示符被清空,导致软件显示错误。
确认该错误,临时修正一下。
4. 设置还是有点复杂,比如字符指示能否设置几种常见形式固定下来,便于选择。
该问题我已经考虑过,但是涉及到兼容以前版本的问题,比如也可以用早期版本打开最新版本保存的 HCS 文件。暂时不考虑。


离线wanfu

发帖
2734
金钱
12170
威望
1217
只看该作者 2 发表于: 2015-11-11
已修正,请重新下载安装。

版本 2015.11.08 (Build 151111)
- 修正当字串未移位并且标识符不需要修改时标识符被清空的错误
离线大老胡

发帖
117
金钱
820
威望
82
只看该作者 3 发表于: 2015-11-12
回 1楼(wanfu) 的帖子
谢谢你的反馈,对你指出的问题答复如下:1. 对于大于 256 个字符(U-16码)的字串不能提取(有二十多条字数标志 XX01 的字串没有提取)请提供例子。

字数指示符问题确实解决,但第一个问题仍然存在。举例:






我猜测可能是 U-16 中错位 (插入一个 00 字节,此文件中确实存在此情况) 时大于 256 字节的字串就不能正确识别了,因为错误识别的都是在错位情况下,未错位好像可以提取。

离线wanfu

发帖
2734
金钱
12170
威望
1217
只看该作者 4 发表于: 2015-11-12
这个不是由于大于256个字符引起的,而是由于这些字串的开始地址在奇数位,而一般文件 Unicode 字串都是偶数位开始的。
非标宏按照 Unicode 转换整个文件为文本,然后按照 0000 字节来快速定位字串的开始地址,再分段提取。由于奇数位开始的字串按照 Unicode 转换后的字串不正确。所以就无法提取到这些字串了。




离线大老胡

发帖
117
金钱
820
威望
82
只看该作者 5 发表于: 2015-11-12
回 4楼(wanfu) 的帖子
wanfu:这个不是由于大于256个字符引起的,而是由于这些字串的开始地址在奇数位,而一般文件 Unicode 字串都是偶数位开始的。非标宏按照 Unicode 转换整个文件为文本,然后按照 0000 字节来快速定位字串 .. (2015-11-12 12:50) 

但不大于256字节的奇数位开始字串都能正常提取啊
离线wanfu

发帖
2734
金钱
12170
威望
1217
只看该作者 6 发表于: 2015-11-12
字节块分析法提取时,还会分析每个字节块,遇到奇数位时,就会分析二个字节值是否超过 255 和最前面的字节是否为 00,如果符合这二个条件,就会进行前补位,即前移一个字节。结果转换出来的字符不正确而无法提取。
Not enough free space on disk %s to create a backup. You can either go ahead with optimization without backing up any changes, or stop the optimization process (all changes made to this point will be saved), free up disk space and restart optimization.\r\n\r\nContinue optimizing without backup?
上面这个字串的前面长度标识符前后的字节为 00002301004E006F007400200065006E006F007500670068002000,此时的开始地址为 23 这个字节上,正好符合这个条件,程序就将开始地址前移了一位,造成后面的字串全部转换错误而跳过。
这个补位主要是为了正确提取以 00XX 这样字节开始的双字节的 Unicode 中文等字串,正在想办法修正这个问题。



离线大老胡

发帖
117
金钱
820
威望
82
只看该作者 7 发表于: 2015-11-12
回 6楼(wanfu) 的帖子
wanfu:字节块分析法提取时,还会分析每个字节块,遇到奇数位时,就会分析二个字节值是否超过 255 和最前面的字节是否为 00,如果符合这二个条件,就会进行前补位,即前移一个字节。结果转换出来 .. (2015-11-12 13:32) 

呵呵,麻烦大虾了,能者多劳了
离线wanfu

发帖
2734
金钱
12170
威望
1217
只看该作者 8 发表于: 2015-11-12
版本 2015.11.13 (Build 151113)
- 修正字节块分析法无法提取某些奇数位 Unicode 字串的错误
- 修正在提取对话框中重新选择其他非 PE 文件时区段显示了原打开的 PE 文件区段值
- 调整添加字符串时允许使用新自定义的字符串类型,并与原来的类型合并在一起

更改了奇数位 Unicode 字符串的开始地址判断方法,现在应该不会有遗漏了。
请选择字节块分析法用英语重新提取。提取前,请在配置对话框的代码页中,将拉丁文 1 的代码页范围修改一下,即在默认范围的后面增加一下范围:0441,2013,2019,2026,201C-201D。以便提取混有这些编码字符的字符串。

离线大老胡

发帖
117
金钱
820
威望
82
只看该作者 9 发表于: 2015-11-13
回 8楼(wanfu) 的帖子
wanfu:版本 2015.11.13 (Build 151113)- 修正字节块分析法无法提取某些奇数位 Unicode 字串的错误- 修正在提取对话框中重新选择其他非 PE 文件时区段显示了原打开的 PE 文件区段值- 调整添加字符串时允许使用 .. (2015-11-12 17:31)

好像还是不行,有些字串没有提取。
按你给的设置如下,应该是对的吧

图中选中字串未提取


还有几个,情况类似。
是不是字串前 0002  0100  0050  0061 ... 的判断不对,把 0201 没有作为一个 U-16 编码处理造成的?