begin process at 2010 03 20 01:34:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Algorithme

 > 

Compression, Split et Cryptage

 > 

traduction ???


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

traduction ???

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ée 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...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales