注册 登录
编程论坛 VB6论坛

多行文字比对

yz1025 发布于 2023-12-01 12:52, 1834 次点击
要怎么写才能做到两份文字比对后,结果像UltraEdit文字比对后的储存结果?
用DOS FC指令比对后的结果,有点没那么完整。

[ 1 ]  C:\1.txt
[ 2 ]  C:\2.txt
------------------------------------------------------------------------------------------------------------------------
1       OS_AC
=======
          !> OS_DC
=======
2       Power_Short
3       IIH_GPIO
4       IIH_FSH
5       IIL_GPIO
6       IIL_FSH
7       efuse_blank_check
8       UID_fuse_chk
9       UID_Write
10       UID_Read
11       Parity_write
12       Parity_AF_Read
13       BANDGAP_fuse_chk
14       BANDGAP_BF
15       BANDGAP_Write
16       BANDGAP_Read
17       BANDGAP_AF
18       Tempsensor_90
19       TempSensor90_fuse_chk
20       Temp_Sensor_90_Write
21       Temp_Sensor_90_Read
22       Temp_F7_F8_F9_Check
23       Temp_F7_F8_F9_write100
24       Temp_F7_F8_F9_Read
25       DEVSLP_90C
26       MemoryBist_HV_step1
27       MemoryBist_HV_step2
28       MemoryBist_LV_step1
29       MemoryBist_LV_step2
30       VOLTAGE_STRESS
31       OS_AC_STRESS
=======
          !> OS_DC_STRESS
=======
32       POR_L2H
33       POR_H2L
34       POR_VCCAH_L2H
35       POR_VCCAH_H2L
36       VDT_FIO_L2H
37       VDT_FIO_H2L
38       VDT_MS_L2H
39       VDT_MS_H2L
40       VDT10_L2H
41       VDT10_H2L
42       VDT23_L2H
43       VDT23_H2L
44       VDT27_L2H
45       VDT27_H2L
46       VDT5V_L2H
47       VDT5V_H2L
48       PLL
49       RTC
50       TRNG
51       VREF
52       XTAL
53       DLL
54       PAD
55       Normal_scan_HV
=======
56     <! Normal_scan_LV
57     <! Speed_scan
=======
58       Sata_scan
59       MAX_Spi_fsh_intf
60       MIN_Spi_fsh_intf
61       MAX_Sata_intlpbk
62       MIN_Sata_intlpbk
63       MAX_Sata_nearend_lpbk
64       MIN_Sata_nearend_lpbk
65       MAX_Sata_extlpbk
66       MIN_Sata_extlpbk
67       MAX_Sram_loop
68       MIN_Sram_loop
69       MIN_Sram_loop320
70       SSCG
71       MAX_SPI_ECC
72       MIN_SPI_ECC
73       MemoryBist_HV_step1_Stress
74       MemoryBist_HV_step2_Stress
75       MemoryBist_LV_step1_Stress
76       MemoryBist_LV_step2_Stress
77       DEVSLP_90_STRESS
78       efuse_blank_check_HV
79       efuse_blank_check_LV
------------------------------------------------------------------------------------------------------------------------

[ 1 ]  C:\3.txt
[ 2 ]  C:\4.txt
------------------------------------------------------------------------------------------------------------------------
          !> Power_short
          !> Dendrite
=======
1       OS_AC
2       OS_DC
=======
3     <! Power_short
=======
4       IIH
5       IIL
6       PMOS_Leak
7       UID_read
8       BANDGAP_AF_Read_PASS
9       BANDGAP_AF
10       Tempsensor130
11       Tempsensor130_2
12       POR_L2H
13       POR_H2L
14       POR_VCCAH_L2H
15       POR_VCCAH_H2L
16       VDT_MS_L2H
17       VDT_MS_H2L
18       VDT27_L2H
19       VDT27_H2L
20       VDT23_L2H
21       VDT23_H2L
22       VDT18_L2H
23       VDT18_H2L
24       VDT10_L2H
25       VDT10_H2L
26       VDT_FIO_L2H
27       VDT_FIO_H2L
28       VDT5V_L2H
29       VDT5V_H2L
30       PLL
31       RTC
32       TRNG
33       VREF
34       XTAL
35       DLL
36       PAD
37       Normal_scan
38       Speed_scan
39       Sata_scan
40       Dram_scan
41       MAX_Dram_intlpbk
42       MIN_Dram_intlpbk
43       MAX_Spi_fsh_intf
44       MIN_Spi_fsh_intf
45       MAX_Sata_intlpbk
46       MIN_Sata_intlpbk
47       MAX_Sata_extlpbk
48       MIN_Sata_extlpbk
49       MAX_Sram_loop
50       MIN_Sram_loop
51       MIN_Sram_loop_320
52       SSCG
53       MAX_SPI_ECC
54       MIN_SPI_ECC
55       Bsd
56       MAX_Mbist
57       MIN_Mbist
58       MAX_DRAM_SHIFT
59       MIN_DRAM_SHIFT
60       MAX_DSP_SRAM_SCAN
61       MIN_DSP_SRAM_SCAN
62       MAX_TCM_SCAN_SHIFT
63       MIN_TCM_SCAN_SHIFT
64       MAX_Dram_acchk_v1222
65       MIN_Dram_acchk_v1222
66       MIN_CLE_v1230
67       Spi_sidd
=======
          !> NS_3E0x29_efuse_chk
          !> NS_3E0x29_efuse_Read
=======
68       efuse_check
------------------------------------------------------------------------------------------------------------------------
15 回复
#2
yuma2023-12-14 08:25
用Excel比较,编程比较不准确,很多东西考虑不到。
#3
wube2023-12-26 17:54
虽然用DOS命令FC可以比对两个原始文件档,但是很难组合出1楼的结果,所以偷吃步

...
FN:
Print #FileNum, "@echo off"
Print #FileNum, "cd /d " & Chr(34) & iPath & Chr(34)
Print #FileNum, "start uedit32.exe 1.txt 2.txt"
....
最后我是选择呼叫UltraEdit,使用里面的Ultra Compare Lite,吃比对出来的Reault.txt

pID1 = Shell("cmd /c " & FN, vbNormalFocus)' Call Bat
MyDoEvents 5000

'让使用者操作后得到Result.txt关闭UltraEdit,程式在继续....
   
pID2 = FindProcessEx("uedit32.exe")
Call WaitEXE(pID2)
        
If CloseProcess("ucl.exe") = True Then
   'XXX
End If
.....


#4
nhjsjjs2024-05-01 13:57
不同的比对软件,可能比较适合不同的使用环境。有一种比对结果的展示的思路是:文本甲经过怎样的编辑后,变成了文本乙。这就需要展示几个方面的信息:1.经过了多少个步骤的编辑。因为这个步骤一般不会少,所以应该放在一个可以“下拉”的列表中。“平铺”就不好了。2.要指明编辑的类型:是“插入”?还是“删除”、“更换”?3.要指出操作的“位置”和“内容”“位置”可以用“3次醒目的闪烁”、最后光标的位置来指明。“内容”本来就在两边的文本里,只要选中了列表里的项,位置和内容就会“自动选中”了。注意:当“位置”或“内容”不在“当前窗口”的时候,文本框的“滚动条”会“自动滚动”,直至它们出现。4.当使用者对文本中的“彩色字符”进行“关注”时,只要“选中彩色字”,就可以获得该次编辑步骤的全部(编辑的类型、位置和文字)的信息。(“编辑的类型”在下拉列表自动显示)对“文本比对程序”的“算法”一般都有一个要求:保留最多的、不动的字数。不然,比对的结果就会“无意义”。比如说:修改过程:“……删除文本甲最后一段,然后键入文本乙最后一段”,这就太笼统了,不符合实际情况了。                            不好意思,我又重新上传了一次!
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
●我上传的程序,适用于“中文文本的比对”。而对于比较长的英文的“计算机代码”式文本不合适。特此提醒!

[此贴子已经被作者于2024-5-7 11:22编辑过]

#5
yuma2024-05-02 06:28
以下是引用nhjsjjs在2024-5-1 13:57:31的发言:

楼主能否把你要比对的2个文件上传一下?我想用我自己编写的程序比对一下试试看。谢谢!
不同的比对软件,可能比较适合不同的使用环境。有一种比对结果的展示的思路是:文本甲经过怎样的编辑后,变成了文本乙。这就需要展示几个方面的信息:
1.经过了多少个步骤的编辑。
因为这个步骤一般不会少,所以应该放在一个可以“下拉”的列表中。“平铺”就不好了。
2.要指明编辑的类型:是“插入”?还是“删除”、“更换”?
3.要指出操作的“位置”和“内容”
“位置”可以用“3次醒目的闪烁”、最后光标的位置来指明。“内容”本来就在两边的文本里,只要选中了列表里的项,位置和内容就会“自动选中”了。
注意:当“位置”或“内容”不在“当前窗口”的时候,文本框的“滚动条”会“自动滚动”,直至它们出现。
4.当使用者对文本中的“彩色字符”进行“关注”时,只要“选中彩色字”,就可以获得该次编辑步骤的全部(编辑的类型、位置和文字)的信息。(“编辑的类型”在下拉列表自动显示)
对“文本比对程序”的“算法”一般都有一个要求:保留最多的、不动的字数。不然,比对的结果就会“无意义”。比如说:修改过程:“……删除文本甲最后一段,然后键入文本乙最后一段”,这就太笼统了,不符合实际情况了。



你们的附件根本下载不了,你们自己能下载的下来吗?
#6
小白到底白不2024-05-02 13:32
只有本站会员才能查看附件,请 登录


可以下载
#7
nhjsjjs2024-05-02 15:59
回复 5楼 yuma
不好意思,我刚刚又重新上传了一次附件和图片。您看看是否可以下载了。

只有本站会员才能查看附件,请 登录

●我上传的程序,适用于“中文文本的比对”。而对于比较长的英文的“计算机代码”式文本不合适。特此提醒!

[此贴子已经被作者于2024-5-2 17:11编辑过]

#8
yuma2024-05-05 19:18
以下是引用nhjsjjs在2024-5-2 15:59:39的发言:

不好意思,我刚刚又重新上传了一次附件和图片。您看看是否可以下载了。


●我上传的程序,适用于“中文文本的比对”。而对于比较长的英文的“计算机代码”式文本不合适。特此提醒!



这个网站有问题,无法下载文件,我这边还无法显示图片,还有文字乱码,不是我电脑的问题。
#9
小白到底白不2024-05-06 07:59
回复 8楼 yuma
我这边也无法显示图片,但能下载文件,下载文件这一块,应该是你浏览器的问题
#10
nhjsjjs2024-05-06 09:18
今天我登录后,自己附加的图片也看不到;自己上传的压缩文件也不能下载了。(5月6日)



[此贴子已经被作者于2024-5-7 11:23编辑过]

#11
小白到底白不2024-05-06 14:12
回复 10楼 nhjsjjs
只有本站会员才能查看附件,请 登录


还是浏览器的事
#12
yuma2024-05-06 20:25
回复 11楼 小白到底白不
这个网站上有文字乱码、图片不显示、附件无法下载问题,你们都发现不了吗?
#13
小白到底白不2024-05-07 08:50
回复 12楼 yuma
有乱码和头像图片不显示,是网站的原因。

帖子里的图片不显示是你自己的浏览器的原因,帖子里的附件不能下载也是你的浏览器的原因。

用百度搜chrome,结果中的第一行,谷歌浏览器。这个是我现在用的。能显示帖子里的图片和下载帖子里的附件。
#14
nhjsjjs2024-05-07 11:19
回复 11楼 小白到底白不
我也遇到这样的界面,后来我点击下方的 “继续前往bbs net.……(不安全)”,就可以看见插图和下载附件了。
#15
nhjsjjs2024-05-07 11:24
回复 11楼 小白到底白不
5月7日,我换了浏览器,用“360安全浏览器”。可以看见插图,也可以下载附件了。
#16
nhjsjjs2024-05-16 14:12
回复 楼主 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       表示它是编辑后被从右文本插入进来的  
========================================================
 
鉴于 “修改”是由“删除”跟“插入”组成的,也为使算法简单一些。我设计的结果文本,用 3 种形式来表示各类的行:
行首带有行号的都是左文本的行,其中:
1.行号的右面带“<!*” 表示编辑后将会被删除或被替换。
2.行号的右面不带符号,是保留的行,也是“2个文本的[公共子序列]”。(跟“结果.txt”的表示一样)
3.来自右文本的行,“行首不带行号”且带“!>*” 。表示是从右边文本插进来的或替换后的行。
自编的程序,在调试中,完成后会上传。
对我的想法,欢迎提出意见。
JieGuo.txt
---------------------------------------------------------------------
324    <!*        'ReDim Preserve    编辑后将会被删除或被替换。
325               ZT = ""            是保留的行,也是“2个文本的[公共子序列]”,与 “结果.txt”一样。
       !>*        Tot = Tot + TTot   编辑后从右边文本插进来的或替换后的行
--------------------------------------------------------------------------------------   
只有本站会员才能查看附件,请 登录





[此贴子已经被作者于2024-5-16 14:58编辑过]

1