Pytanie : Delphi Czytać ogromny kartoteka w ansistring kawał

Cześć - I używać 4 MD5 rutyna w program który pracować doskonale:
#1 - hashes kartoteka - standard
#2 - hashes a (binary kopia ochraniacz kartoteka + cel kartoteka)
#3 - hashes ansistring (ochraniacz + cel kartoteka czytać w ansistring) -
che być niezwykle slow* dla wielki kartoteka. - I read 32K blokowy buffers
ale wtedy musieć ansistring jeden char na raz.
Widzieć mój code.
#4 - Hash (Memo.text) sznurek.

* niezwykle wolny środek - wp8lywy przynajmniej 10 czas dłuższy MD5 standard.
(przyczyna I chcieć ono brać 100 czas równie długo).

If provided the che, w suma, wynikły sznurek, #2, #3 & #4 wszystkie produkty spożywcze the dokładny ten sam hash, che być najważniejszy - i.e niezwykle impotant. Mój MD5 funkcja, musieć przechodzić ansiString kartoteka - wymieniać lub AnsiString.  

In the końcówka, mój pytanie być, móc I szybko ogromny kartoteka w bezpośrednio w ansistring kawał?

TIA - Ed



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:
 StrBuf, StrBuf2, StrPad: ansistring
       // bufin2 - > szyk [1..32768] AnsiChar
       // StrPad wyznaczać jeden jeden, użytkownik wybierać,
       // protokół protokół  
          
       powtórka

          BlockRead (InFile, Bufin2, SizeOf (Bufin2), NumRead);
          BytsRem: = BytsRem - NumRead;
          NBlks: = NBlks + (1);
          StrBuf: = '';          
          jeżeli NumRead > (0) wtedy    
             dla k: = (1) NumRead robić // ** niezwykle zwalniać dla wielki kartoteka           
                 StrBuf: = StrBuf+AnsiString (Bufin2 [k]);

          jeżeli NBlks = (1) wtedy
             StrBuf2: = AnsiString (StrPad+StrBuf)
           inny
             StrBuf2: = AnsiString (StrBuf2+StrBuf);

          MD5Long: = MD5Hex (MD5Str (StrBuf2));

       do (NumRead = (0)) lub (BytsRem = (0)); // lub (NBlks = 2);

       Closefile (InFile);

       // Uzupełniać hash zawierać w MD5Long
       // Znacząco, MD5Long zgadzać się dokładnie z the
       // binary "kopiować kartoteka" hash - widzieć mój #2.

Odpowiedź : Delphi Czytać ogromny kartoteka w ansistring kawał

funkcja MD5Str (M: RawByteString): MD5Digest;

Ty musieć AnsiString gdy używać musieć. Ty dostawać różny hash gdy ty? Ty musieć.
Inne rozwiązania  
 
programming4us programming4us