Originariamente inviato da LordSaga640
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
Prova con una soluzione divide et impera! (parolone grosso per dire) fai tipo ricerca binaria, potrebbe essere una soluzione.
Oppure per ovviare al problema detto da te del fatto del riscalare, quando trovi un inconcruenza, vedi lo stato del MB successivo, finche non lo trovi corretto, quando lo trovi, ti fermi e ripristini tutto dal punto del riscontro negativo a quello del positivo!
Penso che una soluzione del genere sia ottimale, anche xke ti permette di fare un restore di blocchi variabili con miglioria delle prestazioni, e non si blocchi fissi!

bye bye