文本差异检查程序

文本差异检查,比如同一份文档,有两个拷贝,但其中一份可能做了一些修改。这两份文档的差异在哪里?类似应用,检查代码差异的工具就很多。UltraEdit 这样的文本编辑工具也提供文本差异比较的功能。这就是所谓的 Diff 工具。

如果我们自己用 Delphi 写的程序需要这么一个功能,怎么办?网上有一个国外作者写的开源的 Diff.pas。

我用这个 Diff.pas 做了一个简单的程序,主要解决了差异如何显示的问题。

通常的 Diff 工具,会将两个文档并排显示,并且用颜色将两个文档不一致的地方标记出来。Diff.pas 帮我们把文档的差异找出来了,如何显示它?一开始我想用 RichEdit 来显示,然后发现 RichEdit 要搞定文字背景色比较麻烦。然后我想到了 HTML,这玩意用来显示富文本,比较简单方便。

这里涉及到几个技术点:

1. 空格如何在浏览器中显示?对于 HTML 来说,空格是会被忽略掉的。一个方法是把空格都替换为 HTML 的标记 &nbsp,但比较麻烦。查了一下,发现对 html 来说,包含在 pre 标签中间的文本,空格和回车换行都被浏览器正常显示。因此,采用了这个方法。

2. 排版正常可读:将文本套入 BootStrap 框架,则不管浏览器窗口大小,排版都会正常显示。

3. 为一段文字加上背景色:用 HTML 标签 span 把文字包围起来,其 class 设置为一个指定的名字。自己写一个 css 指定这个 class 的背景色。比如:

 .bg-green{
  background-color: #AAFFAA;
}
 

为了比较简单地使用 BootStrap 框架,先写好一个带有 BootStrap 的 html 文件,其内容为空,加上替换标记。程序加载这个模板文件,将要显示的文本替换掉里面的替换标记,然后另存为一个 html 文件,然后用 TWebBrowser 去打开它。

整个程序的源代码,我已经打包上传到 csdn 的下载里面。可以去我上传的资源里去找。

这里有个小小的问题要注意:模板 html 文件里面的 charset 写的是 UTF8,如果你的文本是中文并且不是 utf8 编码,显示出来会乱码。要么你改模板文件的 charset 部分,要么直接鼠标右键在 WebBrowser 里面点出菜单,选择编码格式为 gb2312 它就会正常显示了。如果是英文则没有任何问题。

最后,源码下载地址:https://download.csdn.net/download/pcplayer/10718707

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值