EgtGeneral 1.5d5 :

- migliorato confronto binario tra file (si interrompe oltre 10 differenze).
This commit is contained in:
Dario Sassi
2014-04-27 20:06:57 +00:00
parent d8f3704d20
commit 8dfee2b65d
2 changed files with 12 additions and 7 deletions
+12 -7
View File
@@ -1,13 +1,14 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2014
//----------------------------------------------------------------------------
// File : FileCompare.cpp Data : 06.03.14 Versione : 1.5c1
// File : FileCompare.cpp Data : 27.04.14 Versione : 1.5d5
// Contenuto : Funzioni per confronto tra due file (di testo).
//
//
//
// Modifiche : 11.12.13 DS Creazione modulo.
// 06.03.14 DS Possibilità di ri-sincronizzarsi dopo due linee.
// 27.04.14 DS Nel confronto binario ci si arresta alla 10^ differenza.
//
//----------------------------------------------------------------------------
@@ -183,7 +184,7 @@ BinaryFileCompare( const string& sFile1, const string& sFile2, const string& sFi
// ciclo sui buffer dei due file
int nDiff = 0 ;
const int DIM_BUFF = 512 ;
const int DIM_BUFF = 8192 ;
char cBuff1[DIM_BUFF] ;
char cBuff2[DIM_BUFF] ;
ifIn1.read( cBuff1, DIM_BUFF) ;
@@ -191,14 +192,16 @@ BinaryFileCompare( const string& sFile1, const string& sFile2, const string& sFi
ifIn2.read( cBuff2, DIM_BUFF) ;
int nBuff2 = int( ifIn2.gcount()) ;
int nBase = 0 ;
while ( nBuff1 > 0 && nBuff2 > 0) {
while ( nBuff1 > 0 && nBuff2 > 0 && nDiff < 10) {
// confronto dei blocchi
for ( int i = 0 ; i < nBuff1 && i < nBuff2 ; ++i) {
if ( cBuff1[i] != cBuff2[i]) {
nDiff ++ ;
// emetto differenze
ofOut << " F1(" << ( nBase + i) << "):" << CharToHexString( cBuff1[i]) << endl ;
ofOut << " F2(" << ( nBase + i) << "):" << CharToHexString( cBuff2[i]) << endl ;
// emetto prime 10 differenze
if ( nDiff <= 10) {
ofOut << " F1(" << ( nBase + i) << "):" << CharToHexString( cBuff1[i]) << endl ;
ofOut << " F2(" << ( nBase + i) << "):" << CharToHexString( cBuff2[i]) << endl ;
}
}
}
@@ -213,8 +216,10 @@ BinaryFileCompare( const string& sFile1, const string& sFile2, const string& sFi
// emetto riassunto differenze
if ( nDiff == 0)
ofOut << " Same content" << endl ;
else
else if ( nDiff <= 10)
ofOut << " Found " << nDiff << " differences !!!" << endl ;
else
ofOut << " Found a lot of differences ( > 10) !!!" << endl ;
// chiudo i file
ofOut.close() ;