UDIFF is a windows files comparison and differencing tool.It produces an attractive html output and can analyse very big files instantaneously. Some preferences and technical options allow the user to influence the behavior and the output of UDIFF as desired.

$49

 

Sample output
DIFFERENCES between DEMO1 and DEMO2
Generated using UDIFF
(also a module of Universal Report, an automatic code analysis and documentation tool)
PREVIOUS VERSION (Hide)CURRENT VERSION (Hide)
          delete lines(2)               modified lines(3)           added lines(3)               modified lines(3)
hide common lines       hide deleted lines         hide added lines       hide modified lines
 00: unsigned short L1,L2,T;
 01: AnsiString HA,HB,R;
 
 02:    if ((I == N) || (J == M)) {L[I+J*N] = 0;}
 03:    else{
 04:         if (L[I+J*N] == 10000)
 05:         {
 06:            T = HTML_STRING_LCS(A->Strings[I], B->Strings[J])           

 07:             if (T<2) {
 08:               if (T==0) EQCHANGED->Add(String(HA.Length())+":"+HA+HB);
 09:               else EQCHANGED->Add(":"+String(HA.Length())+":"+HA+HB);
 10:               L[I+J*N] = 1+LIST_LCSL(A, B, I+1, J+1, N, M,  L, SDIFF);
 11:            }
 12: 	   else{
 13:               L1 = LIST_LCSL(A, B, I+1, J, N, M,  L, SDIFF, EQCHANGED);
 14:               L2 = LIST_LCSL(A, B, I, J+1, N, M,  L, SDIFF, EQCHANGED);
 15:               if (L1<L2)  L[I+J*N] = L2; else  L[I+J*N] = L1;
 16:            }
 17:         }

 18:    }
 
 
 19:   return L[I+J*N];
 20: 
 00: unsigned short L1,L2,T;
 01: AnsiString HA,HB,R;
 02: I=0
 03:    if ((I == N) || (J == M)) {L[I+J*N] = 0;}
 04:    else{
 05:         if (L[I+J*N] == 30000)

 06:         {
 07:            T = HTML_STRING_LCS(A->Strings[I], B->Strings[J])           
 08:             if (T<2) {
 09:               if (T==0) EQCHANGED->Insert(String(HA.Length())+":"+HA+HB);
 10:               else EQCHANGED->Insert(":"+String(HA.Length())+":"+HA+HB);
 11:               L[I+J*N] = 1+LIST_LCSL(A, B, I+1, J+1, N, M,  L, SDIFF);
 12:            }
 13: 	   else{
 14:               L1 = LIST_LCSL(A, B, I+1, J, N, M,  L, SDIFF, EQCHANGED);
 

 
 15:            }
 16:         }
 17:    }
 18: delete L1;
 19: delete L2;
 20:   return L[I+J*N];
 21: