Newsgroup: it.comp.lang.delphi
Titolo: CRC per Delphi 2009 compatibile con CRC32 di PHP4/5

Salve,
 sto cercando una funzione/componente per Delphi 2009 che mi
permettare di calcolare
il CRC di un file che sia compatibile con la funzione CRC32 di
PHP4/5 .
Il mio obiettivo è generare in Delphi dei files, calcolarne il CRC,
scrivere i CRC su un file;
trasferirli su un sito web, verificarli con il CRC32 di PHP prima di
elaborarli.
Ringraziamenti anticipati
                       Zeno

ma il crc32 non è standard?
A parte cio, a te no serve un *componente compatibile con d2009*: ti
serve qualcosa che faccia questa operazione con d2009...
Non hai trovato nessuna implementazione sui soliti siti?
A.


Sto girando da un pò .... ma forse mi sono perso.
Grazie
   Ciao
     Zeno

Per una mia vecchia applicazione D4 ho usato un semplicissimo file .PAS 
contenente una funzione "crc32" che riceveva in ingresso un file, e 
restituiva il valore del CRC.  Ti sara' sufficiente includere quella 
funzione nel sorgente, e certamente sara' compatibile con Delphi 2009, dato 
che era scritta in Pascal standard.
Verifica se la trovi online, altrimenti scrivimi su lucantignano [at] gmail 
[dot] com e vedo di cercartelo stasera o domattina :-)
Luca 

Ecco, ho trovato questi:
http://read.pudn.com/downloads99/sourcecode/flash/402610/crc32.pas__.htm
http://read.pudn.com/downloads75/sourcecode/disk/277350/Crc32.pas__.htm
Se ben ricordo, avevo usato il primo dei due.
Saluti,
Luca 

Grazie per le segnalazioni.


Sto provando MD5 al posto del CRC:
Ho trovato interessante l'articolo :
http://stackoverflow.com/questions/392657/md5-hashing-in-delphi-2009
solo che non riesco a capire come fare a passare fare l'MD5 di un file
invece che di una stringa.
Zeno

 invece che di una stringa.
... forse leggendo i bytes che compongono il file, in sequenza, come se 
fosse una stringa unica?
Se non ricordo male, anche per il CRC32 (e per qualsiasi sistema di 
checksum) la procedura e' la stessa...
Luca 

 invece che di una stringa.
In genere, queste cose permettono l'uso di uno stream.
A.

 Luca
Partendo da : 
http://stackoverflow.com/questions/392657/md5-hashing-in-delphi-2009
ho letto una riga alla volta la passavo a MD5.Update() ma il risultato
era diverso da quello che mi diceva un programmino free come "MD5
Check Utility";
l'errore era che le righe hanno anche il CRLF , l'ho aggiunto alla
stringa e il risultato concorda.
Il codice che sto usando sembra proprio "fast food" o "spaghetti
code"   ma funziona con Delphi 2009 e sembra dare risultato giusto nel
mio caso.
Come lo modifichereste per togliere quel brutto Chr(13) + Chr(10)  ?
Ringraziamenti anticipati
             Zeno
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
var
  MD5: IMD5;
  riga:string;
  F: TextFile;
begin
  MD5 := GetMD5;
  MD5.Init;
  AssignFile(F, 'c:\pippo.txt');
  reset(F);
  while not eof(F)
   do
    begin
    readln(F,riga);
     MD5.Update(TByteDynArray(RawByteString(riga+Chr(13) + Chr(10) )),
Length(riga+Chr(13) + Chr(10) ));
    end;
  closefile(F);
  Edit2.Text := LowerCase(MD5.AsString);

 Come lo modifichereste per togliere quel brutto Chr(13) + Chr(10)  ?
Ma in D2009 ci sono gli indy? in questo caso c'ï¿œ del codice semplice 
per hashare una file qui:
http://delphi.about.com/od/objectpascalide/a/delphi-md5-hash.htm
oppure puoi sempre usare unit e componenti opensource e freeware presi 
da torry: 
http://www.torry.net/quicksearchd.php?String=md5&Title=Yes
Ovviamente se cerchi una soluzione alternativa alla tua.
Ciao
-- 
Morde

 Ma in D2009 ci sono gli indy? in questo caso c'è del codice semplice


 Puoi fare una prova al volo ?
Mi spiace ma sono su D5 ora.
Ciao
-- 
Morde

 
Oppure, piï¿œ semplicemente e opensource, l'OP puï¿œ indagare nelle unit di 
FreePascal ;) :
http://www.freepascal.org/docs-html/packages/md5/index-5.html
Supponendo, poi, che tu abbia installato fpc come nel seguente percorso:
C:\FPC\2.2.4\fpcbuild-2.2.4\fpcsrc\packages\hash\src
in questa directory puoi trovare altre unit interessanti, tra cui: 
crc.pas, uuid.pas, md5.pp
Antonio

 uuid.pas, md5.pp
Ottimo feed Antï¿œ :-)
-- 
Morde

 elaborarli.
Rialimento il thread in quanto oggi e' stato pubblicato un articolo in 
proposito.
http://delphi.about.com/b/2009/08/14/cyclic-redundancy-code-crc-filecheck.htm
Ciao
-- 
Morde