Intanto: grazie shishii per i complimenti^^

Poi, FreeManX, stavo pensando anche alla soluzione che mi hai proposto, in effetti potrei verificare l'hash ogni MB e vedere se corrispondo e se poi non concidono di riscaricare il blocco da 1MB, però nel casi che in un punto mancassero dei byte, non ci troverebbe più una corrispondenza, ossia, non so più se i byte successivi nel file corrotti corrispondano realmente alla posizione attuale.

Ad esempio:
File originale: ABCDEFGHILMOPQRSTUVZ
File corrotto: ABCDEKGHIMONOPQRSTUVZ
Un pezzo è corrotto e manca anche un dato.
Il blocca originale A è uguale al blocco del file corrotto A? Si
B=B?
Continuerebbe così fino ad F e vede che son differenti e lo riscarica.
Poi arriva ad L e chiede se è uguale ad M del secondo file, dice di no e lo riscarica.
poi controlla M con O e son diversi, cioè, riscaricherebbe tutto il file dal byte corrotto in poi.

Ogni soluzione che mi viene in mente ha delle falle, e ammetto di non essere in grado di risolvere, almeno non oggi.
Penso che la soluzione si trovi solo pensando a quello che farei io avendo due editor esadecimali con i due file aperto e facendolo manualmente.


SOLUZIONE A:
-Crea un file di SWAP la dim del file originale
-Controllo se il primo blocco da 1MB è uguale all'originale, se è uguale lo salva nel file di SWAP.
-Controllo il blocco da un 1MB partendo dalla fine del file e se è corretto lo svalo nel file SWAP.
Azz...ora diventa difficile da spiegarlo, inizio a programmarlo, però è drastico, perchè se mancano dei dati sia nel punto iniziale che nella parte finale, lui mi riscarica tutto il file! @_@
Non ho altre soluzioni!
CIAO