merci
merci
Bon on suppose que tout ça est dans une string st par exemple.
Extraction du block
tout ça à mettre dans une boucle 'tant que iPos >0'...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 iPos := pos('88AA',st); if iPos >0 then //en fait on devrait avoir >4... begin sBlock:= copy(st,1,iPos); //on extrait le block dans sBlock //là tu fais ton traitement sur sBlock. st := copy(st,iPos+4,length(st)); // on enlève le block end;
Pour le traitement du block je passe la main...
Mais testes déja ça pour regarder si ça extrait les blocks.
Et où as-tu appris le français ?
Dans ton message, je n'ai personnellement pas compris ta demande ...
Et qu'appelles-tu un "boot" ?
Quel est l'entrée, la sortie, ...
ton fichier est-il long ? le Copy risque d'être lent à un grand nombre d'occurence, as-tu d'ailleurs des contraintes de temps ...
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
merci , j'ai besoin de votre aide specialement , et aussi ta ka garder tes critere pour toi meme ..Envoyé par ShaiLeTroll
C'est dommage, de ne pas savoir reconnaîtres ses tords, surtout que la manipulation de binaire, c'est l'une de mes spécialités, c'est très bête de ne pas répondre à mes questions qui ont pour but de faire avancer ton problème, d'ailleurs tu ne le mérites absoluement pas !
Ton message ne contient pas les informations suffisantes pour y apporter une solution convenable, philnext essaye d'y répondre, il fournit d'ailleurs une méthode pour découper les blocks, mais je n'ai pas eu l'impression que ton problème concernait le découpage, mais plus un calcul de ckecsum non ?
PS : Mes Critiques sont en fonction des mes critères de respect et d'exigeance, et tu n'arrives pas à écrire une seule phrase sans faute et avec le bon vocabulaire![]()
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
Salu ,
mon problem qui ce pose dans cette example est de calculer la chaine de caracter pour calculer le checksum .
dans le boot on trouve ceci :
AE0A12C54A2E1D0E88AA4EF01C3BA200C0BF2E10D1E00F10D20C220A00E20E58F88AAEEAA001E00F210F10FD..........
ce qui est en bleu c'est le Checksum et ce qui est en Rouge ces le separateur e block
dans ce boot pour calculer le checksum pour calculer les caractere qui sont avant le checksum .
Calculer [AE0A12C54] pour avoire le checksum [A2E1D0E]
voila comment sa ce passe dans cette example dans tout ce fichier
aussi une autre information le fihier ontient 2MO de taille , et aussi faut calculer tout ce fichier meme procedure avec ce dernier .
pour le cheksum voila la source :
j'attend votre aide !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 unit Checksum; interface procedure CalcChecksum(p: pointer; n: integer; var RC8: word); implementation procedure CalcChecksum(p: pointer; n: integer; var RC8: word); const ChecksumTable: array[0..255] of word = ( $0000, $c0c1, $c181, $0140, $c301, $03c0, $0280, $c241, $c601, $06c0, $0780, $c741, $0500, $c5c1, $c481, $0440, $cc01, $0cc0, $0d80, $cd41, $0f00, $cfc1, $ce81, $0e40, $0a00, $cac1, $cb81, $0b40, $c901, $09c0, $0880, $c841, $d801, $18c0, $1980, $d941, $1b00, $dbc1, $da81, $1a40, $1e00, $dec1, $df81, $1f40, $dd01, $1dc0, $1c80, $dc41, $1400, $d4c1, $d581, $1540, $d701, $17c0, $1680, $d641, $d201, $12c0, $1380, $d341, $1100, $d1c1, $d081, $1040, $f001, $30c0, $3180, $f141, $3300, $f3c1, $f281, $3240, $3600, $f6c1, $f781, $3740, $f501, $35c0, $3480, $f441, $3c00, $fcc1, $fd81, $3d40, $ff01, $3fc0, $3e80, $fe41, $fa01, $3ac0, $3b80, $fb41, $3900, $f9c1, $f881, $3840 ); type buffer = array[0..0] of byte; var i: integer; q: ^buffer; begin q := p; for i := 0 to n-1 do RC8 := hi(RC8) xor ChecksumTable[ q^[i] xor lo(RC8) ]; end; end.
Partager