Demande d'aide pour faire un algoritme de patch

SeBaZaToR2 Messages postés 16 Date d'inscription mercredi 3 mars 2004 Statut Membre Dernière intervention 13 janvier 2006 - 24 déc. 2005 à 23:09
cs_saifer Messages postés 115 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 19 décembre 2008 - 26 déc. 2005 à 01:43
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

cs_saifer Messages postés 115 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 19 décembre 2008 1
26 déc. 2005 à 01:43
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 }-
0
Rejoignez-nous