回复 楼主 yz1025---对 “UltraCompare 结果.txt” 的解读和自编程序的“导出结果”形式的设想
UltraCompare的“结果.txt”比较好的表示出了“比较”的结果,同时,它把左右2个文本的全部内容都记录下来了。(下面的叙述用“左文本”表示“左面的修改前的文本”;用“右文本”表示“右面的修改后的文本”)
左文本通过一系列的编辑操作,成了右文本。编辑的类型一般是3种:删除、插入和修改。其实“修改”是由“删除”跟“插入”组成的。
在“结果.txt”中,左文本的行,有3种表示形式:(行首都有“行号”)
1.行号右面有“*”,表示编辑后会被替换。
2.行号右面有“<!”,表示编辑后会被删除。
3.行号右面没有“符号”,表示编辑后会保留不动。其实就是2个文本的“公共子序列”。
在“结果.txt”中,来自右文本的行,有2种表示形式:(行首都没有“行号”)
1.左面有“*”,表示编辑后会替换左面的行。
2.左面有“!>”,表示它是编辑后被插入进来的。至于它的“来源”,“结果.txt”没有表示出“来自右文本的哪一行”。
综上所述,在“结果.txt”中,共有 5 种 形式。
结果.txt
----------------------------------------------------------
316 RT1.Locked = True 表示编辑后会保留不动,也是“2个文本的[公共子序列]”。
324 * 'ReDim P 表示编辑后会被替换
314 <! Label13.Cap 表示编辑后会被删除
* Label13.Caption = 表示编辑后会从右文本来替换左面的行
!> ReDim Preserve QS(1 表示它是编辑后被从右文本插入进来的
========================================================
JieGuo.txt
---------------------------------------------------------------------
325 ZT = "" 是保留的行,也是“2个文本的[公共子序列]”,与 “结果.txt”一样。
324 <!* 'ReDim Preserve 编辑后将会被删除或被替换。
!>* Tot = Tot + TTot 编辑后从右边文本插进来的或替换后的行
--------------------------------------------------------------------------------------
鉴于 “修改”是由“删除”跟“插入”组成的,也为使算法简单一些。我设计的结果文本,用 3 种形式来表示各类的行:
行首带有行号的都是左文本的行,其中:
1.行号的右面带“<!*” 表示编辑后将会被删除或被替换。
2.行号的右面不带符号,是保留的行,也是“2个文本的[公共子序列]”。(跟“结果.txt”的表示一样)
3.来自右文本的行,“行首不带行号”且带“!>*” 。表示是从右边文本插进来的或替换后的行。
自编的程序,在调试中,完成后会上传。
对我的想法,欢迎提出意见。
[此贴子已经被作者于2024-5-16 17:04编辑过]