一个段有格式的文本先存成一个文本文件,如果当这个这段文字中相应位置有些内容有变化,用什么方法快速找到发生变化的内容???

解决方案 »

  1.   

    折半比较:
    A(100),B(100)if A(1...50)=B(1..50) then ‘首先看前面一半的内容是否相同,如果相同,就看后一半,
       if A(51...75)=B(51...75) then
          ....
        end if
    else 
        if A(1...25)=B(1...25)
            ....
        end if
    end if
           
    思想类似与折半查找!
    如果改动的地方很少,那么折半比较比一个一个比较快很多很多如果你的字符长度为1M,只有一出改动
    用普通的方法你要比较1000000/2次(平均)
    如果用折半比较最多需要20次
      

  2.   

    谢谢hudan(55555)提供一个好思路,不过我现在正在考虑怎么找到内容变化的那个起始位置和末尾位置。还有两次比较的文本字节长度可能不一样哦
      

  3.   

    用input filename1 for input  as #1  和 input filenuma2 for input as #2 将两个文本文件打开,然后用input #1,f1$ 和 input #2,f2$来分别读取.再用f1$<>f2$来比较.
      

  4.   

    这个问题不是很简单,有点模糊算法或人工智能的意思,因为有些不同的地方人眼一下就能看出来,但计算机却很难判断,几年前我们有人用汇编实现过,花了两年多时间才完善,我用VB改写了一下,用了半年的时间才算完善,可以比较出文本比源文本哪些地方不同,哪些地方多了几个字,哪些地方少了几个字,并用不同的颜色显示出来。有兴趣的话可以交流一下:[email protected]
      

  5.   

    可以的话,改变之前存一个,变之后存一个,然后shell用FC比较,应该很快.
      

  6.   

    我这里有一个 dll 文件,可以返回发生变化的内容,并且给出类似率。
      

  7.   

    还有一个方法,就是借用 Word 中的比较文件方法,然后遍历修改过的地方(插入和删除)。用 VB A就可以实现!
      

  8.   

    看来要举个实际例子来说说  
    第一个文件
    <html>
      <head>
      <tltle>123</title>
      </head>
      <body>
      abc
      777
      </body>
    </html>
    第二个文件
    <html>
      <head>
      <tltle>123</title>
      </head>
      <body>
      abc888
      777
      999
      </body>
    </html>
    可以看到第二个文件的abc后面多了个888
    而且777下面多了一行999    通过程序怎么找到这两个变化
    如果采用行比较的话因为第二个文件多了一行和第一行没法对应?所以即使勉强比较则会把第一个文件的</body>和第二个文件的999相比较,这当然不是我想要的结果,因为第二个文件实际有</body>, 我想要的结果是  把888 和 999这个两个变化的内容提出来。请高手代码指点啊
      

  9.   

    lrb820102(荣) 的说法可以,但实际是没有意义的,不实用
      

  10.   

    word都要老老实实的用个临时文件进行比较和临时储存,我看太智能了没有必要吧?
      

  11.   

    tiger322(tiger322) 
    把你的代码公布出来啊或者说说思路也好?
    难道非让我一个一个字节比较?
      

  12.   

    没想出有什么API好用,大概要用递归了
      

  13.   

    如果你就是只比较网页文件的话,那就好办了:
    用XMLDOM来处理就OK了,既方便又高效………
      

  14.   

    XMLDOM没用过  ,能介绍一下吗?
      

  15.   

    在网上搜索一下 fstrcmp ,你不会失望的