Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : traduction ??? [ Algorithme / Compression, Split et Cryptage ] (greg38bj)

dimanche 2 mars 2008 à 09:00:38 | traduction ???

greg38bj

bonjour à tous
Je galère sur la traduction d'un code que l'on m'a dit être en delphi
lorsque j'essaye, j'obtiens des erreurs un peu partout
je develloppe en vb2005.
est ce qu'une personne calée en delphi et en vb pourrait m'aider à traduire ce code s'il vous plait ? :

var Buffer : array[0..2097151] of byte; // Max size of a flash


function Get4Bytes(adr:longword):longword;
begin
  Result:=Buffer[adr] shl 24 + Buffer[adr+1] shl 16 + Buffer[adr+2] shl 8 + Buffer[adr+3];
end;


function BufferGetString(adr:longword):string;
var i:integer;
begin
   i:=0;
   Result:='';
   while (i<16) and (buffer[adr+i]<>0) do
    begin
     Result:=Result+chr(buffer[adr+i]);
     inc(i);
    end;
end;

function TFormMain.CalculateCRC(Start,Stop:longword):longword;
var CRC : longword;
    i:integer;
begin
   i:=Start;
   CRC := $FFFFFFFF;
   while (i <= Stop) do
      begin
       CRC := (CRC shl 8) xor (CRC_table[buffer[i] xor (CRC shr 24)]);
       inc(i);
      end;
   Result := CRC;
end;


procedure TFormMain.FixCRC;
var BlockID,offset,len,crc,newCRC:longword;
    ptr:longword;
    s:string;
begin
  Generate_CRC_Table(FidMergerSeed);
  Memo.Lines.Add('CRC Table Calculated!');
  ptr:=0;
  BlockID:=Get4Bytes(ptr);
  Memo.Lines.Add('BlockID = '+inttohex(BlockID,8));
  if BlockID = $E3000010 then
    begin
      Memo.Lines.Add('Boot loader -> NO CRC');
      Buffer[12]:=ord('N');
      Buffer[13]:=ord('C');
      Buffer[14]:=ord('R');
      Buffer[15]:=ord('C');
    end;
  offset:=Get4Bytes(ptr+8);
  ptr:=offset;
  // check for rest
  while (PTR+16 < BinSize) do
    begin
      BlockID:=Get4Bytes(ptr);
      len:=Get4Bytes(ptr+4);
      offset:=Get4Bytes(ptr+8);
      CRC:=Get4Bytes(ptr+12);
      s:='BlockID = '+inttohex(BlockID,8);
      s:=s+' SIZE = '+inttohex(len,8);
      s:=s+' OFFSET = '+inttohex(offset,8);
      s:=s+' Actual CRC = '+inttohex(crc,8);
      Memo.Lines.Add(s);
      s:='Bloc Name = '+BufferGetString(ptr+16);
      s:=s+' Version = '+BufferGetString(ptr+32);
      s:=s+' Date = '+BufferGetString(ptr+48);
      Memo.Lines.Add(s);
      newcrc:=CalculateCRC(ptr+16,ptr+16+len-1);
      s:='Calculate CRC = ' + inttohex(newcrc,8);
      if newCRC = CRC then
        s:=s+' - CRC OK!'
      else
        s:=s+' - CRC FAIL!';
      memo.Lines.Add(s);
      // Fix CRC
      if offset=0 then
       ptr:=ptr+len
      else
       ptr:=ptr+offset;
    end;


cet algo permet le decryptage du crc de plusieurs fichiers sur lesquels je bosse en ce moment
merci encore

@+
greg38bj

lundi 3 mars 2008 à 20:51:01 | Re : traduction ???

cantador

Membre Club
çà c'est pour foxi.

cantador

lundi 3 mars 2008 à 21:26:05 | Re : traduction ???

greg38bj

merci de porter interêt à ma question
Casy m'a répondu sur vbfrance
maintenant, je n'ai plus qu'à essayer de résoudre les bugs dûs au vb

@+
greg38bj



Cette discussion est classé dans : buffer, ptr, begin, crc, longword


Répondre à ce message

Sujets en rapport avec ce message

Bass Dsp [ par Nicolas___ ] Voila , je ne sais pas si l'idée va marcher mais bon je tente le coup A tous les passionnés de sons et de la librairie Bass (www.un4seen.com) ,Ayant d résolution sudoku backtrack [ par zwyx ] Bonjour à tous, Pour ceux qui aiment bien se creuser la tête sur de l'algorithmie... J'ai écrit un code permettant de résoude une grille de sudoku ré Aides pour les classes. [ par Hrivion ] Bonjour, Je poste ici car je code Sémaphore [ par Caribensila ] Salut,Voilà, je voudrais faire un truc pas compliqué :Je voudrais pouvoir lancer mon application plusieurs fois. Mais pas plus qu'un nombre de fois pr Groupe de Tbutton [ par nakos91 ] var  but:array [1..27] of TButton;begin  for i:=1 to 30 do    begin     but[i]:= TButton.Create(Self);     but[i].Parent := Form1;     but[i].Height:= sortir de la procedue avant la fin [ par promenneur77 ] je voudrais mettre fin au programme quand il m'affiche ' pas dans la liste'comment je doit faire ?procedure TForm1.Button1Click(Sender: TObj comment libérer le buffer ? [ par rimbaw ] Salut à tous!!J'ai fait un serveur en delphi 7 avec le composant idSyslogServer et je reçois plusieurs fois le même message. Est ce qu'il ya un moyen fenetre en arriere plan [ par totolito3535 ] Bonjour à tous, apres des recherches infructueuses, je m'adresses aux expert Delphi.Pour faire simple mon probleme est les suivant : mon application g Question aux internautes [ par Bacterius ] Bonjour, je voudrais juste savoir s'il est possible d'exprimer deux résultats d'une opération sans passer par "begin" "end" .Exemple :begin         if Opinion sur un composant TTreePanel [ par Francky23012301 ] Salut à tous,Ca commence à etre de notoriété internationale : Francky et le Design, ca fait deux .Alors quitte à faire un truc autant faire un truc sy


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.