dsl , peu etre que jai mal exprimer le problem
je veu dire que la second calcule commence de 5A5A , ce qui veudire que le 5A5A est inclue au calcule pour avoire le checksum , sauf que au debut du fichier ya pas de 5A5A .
dsl , peu etre que jai mal exprimer le problem
je veu dire que la second calcule commence de 5A5A , ce qui veudire que le 5A5A est inclue au calcule pour avoire le checksum , sauf que au debut du fichier ya pas de 5A5A .
Ah, oki, hum, c'est donc assez complexe ton affaire, je n'ai pas les idées claires pour faire un bel algo ....
Donc première solution, dans le code suivant, tu retires TOUS les +2
Si cela ne fonctionne pas, bidouillons ta fonction CalcCRC32
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if SumPos + EndPos + 2 <= SumLen - EndPos + AmtTransferred then CopyMemory(@SumBuffer[0], @SumBuffer[SumPos+EndPos+2], (AmtTransferred - (EndPos + 2)) * REC_SIZE); SumPos := AmtTransferred - (EndPos + 2);
tu fais une nouvelle fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part CalcCRC32(@SumBuffer[0], (SumLen - CHECK_SIZE) * REC_SIZE, CheckBuffer);
dans CheckSumControl tu met maintenant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 procedure CalcCRC32_Plus5A5A(p: pointer; n: integer; var crc32: longword); var Buffer: array of Byte; begin SetLength(Buffer, n + 2); Buffer[0] := $5A; Buffer[1] := $5A; CopyMemory(@Buffer[2], p, n); CalcCRC32(@Buffer[0], n + 2, crc32); end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part CalcCRC32_Plus5A5A(@SumBuffer[0], (SumLen - CHECK_SIZE) * REC_SIZE, CheckBuffer);
Tu fais cela pour le boulot ou pour l'école ?
Cela manque de clareté ... tu n'as pas la doc précise du format ?
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Resalut ,Tu fais cela pour le boulot ou pour l'école ?
Cela manque de clareté ... tu n'as pas la doc précise du format ?
je fait sa ni pour l'ecole ni pour le bolot ! ces a titre personnel
je suis entrain d'apprendre a programmer les Eeprom's est ce fichier la est apartien a un microcontroleur Atmel AT90C512R .
voila une petite explication dans le fichier jointe , cela est la second calcule , et merci d'Avance .
J'ai bien compris ta demande, et as-tu essayé mes deux propositions (en particulier retier les +2, je l'ai testé cela semble fonctionner) ?
Sinon, tu veux modifier de la mémoire d'un micro-controleur, lol, apprend déjà à manipuler toi même le binaire ... tu me peux pas attendre que l'on te mache le travail, ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if SumPos + EndPos (*+ 2*) <= SumLen - EndPos + AmtTransferred then CopyMemory(@SumBuffer[0], @SumBuffer[SumPos + EndPos(*+ 2*)], (AmtTransferred - (EndPos(*+ 2*))) * REC_SIZE); SumPos := AmtTransferred - (EndPos(*+ 2*));
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Le Problem nes pas resolu , laisse tomber !! et merci de votre aide
Partager