Demande d'aide pour faire un algoritme de patch

Signaler
Messages postés
16
Date d'inscription
mercredi 3 mars 2004
Statut
Membre
Dernière intervention
13 janvier 2006
-
Messages postés
115
Date d'inscription
samedi 29 mars 2003
Statut
Membre
Dernière intervention
19 décembre 2008
-
Salut à tous(tes)

Je veux me faire un programme du genre de rtpatch. Pour ceux qui ne
connaisent pas ce programme, c'est un programme pour "patcher" un
programme ou un jeu. Jusque là il n'y a rien d'exceptionnelle. Ce qui
rend la tâche plus compliqué, c'est que le programme, rtpatch ne copie
pas le fichier au complet mais seulement la différence entre ces deux
fichiers pour mettre le fichier à jour.



Le problème c'est que je n'ai aucune idée comment faire pour comparer 2
fichiers et savoir ce que je dois copier pour faire la patch. Je
cherche l'algorithme de comparaison.



Un exemple:

Fichier A (1.0)

"allau a tou le monde"



Fichier A (1.1)

"Allo à tout le monde."



Fichier Update (un exemple)

"A<-au>àt." + instruction



Si vous avez des idées, où vous connaissez une source qui pourrait m'être utile, gênez vous pas!

J'attend vos nombreuses réponses (je l'espère).

et en même temps, joyeux temps des fêtes !!!

1 réponse

Messages postés
115
Date d'inscription
samedi 29 mars 2003
Statut
Membre
Dernière intervention
19 décembre 2008
1
Salut SeBaZaToR2.

Techniquement si tu veux faire un patch, tu connais à l'avance les
octets à modifier, dans ce cas il te suffi d'ouvrir le fichier en mode
binaire à l'aide de fopen( 'tonfichier', rb), tu te positionne à
l'octet voulu, fseek(...), et ensuite tu n'as plus qu'à écrire
fwrite(...) (si tu ne connais pas ces fonctions, cherche sur la msdn,
ou sur le site, tu trouveras de bon exemples d'utilisation !

Ce serait à mon avis une bonne facon de "patcher", mais bien sûr il
faut connaître les octets à modifier ainsi que leur nouvelle valeure.



Si tu ne connais pas les octets qu'il faut modifier, mais si tu dispose
des deux fichiers avec des versions différentes, tu peux ouvrir ces
deux derniers (toujours avec fopen(...)), et te déplacer octet par
octet, fseek('tonfichier', 1, SEEK_CUR), sur chacun des fichiers pour
les comparer octet par octet, fread( 'tonbuffer', 1, 1, 'tonfichier'),
ainsi tu pourras savoir quels octets sont différents !

voila à peu près pour le principe.



j'éspère t'avoir mis sur une piste pour démarrer.


-{ Saifer }-