Fråga : Delphi läste enormt sparar in i ansistring en stor bit

Hi - jag använder 4 rutiner MD5 i ett program som fungerar perfekt:
#1 - pölsor en spara - standard
#2 -
#3 för pölsor binärt a (kopiera av vadderar sparar + uppsätta som mål sparar) - pölsor som en ansistring (vaddera + uppsätta som mål sparar läst in i en ansistring) -
, som är extremt slow* för stort, sparar. - Jag läser buffers
för kvarteret 32K men därefter måste att konvertera till en ansistring en röding i sänder.
ser min code.
#4 - pölsa (Memo.text) stränger. långsamt hjälpmedel för

* extremt - takes åtminstone 10 tider longer än MD5 standard.
(orsaka mig inte önskar att medge den tar 100 så långa tider).

If g samma, i slutsumman som resulterar stränger, #2, #3 & #4 all jordbruksprodukter avkräva samma pölsa, som är paramount - dvs. extremt impotant. Att använda min MD5 fungerar, de måste passeras endera en spara - namnge eller en AnsiString.  

In avsluta som är min ifrågasätter är, kan jag snabbt läsa enormt sparar in i direkt in i ansistring en stor bit?

TIA - class= " lineNumbers " >
1 för > StrBuf, StrBuf2, StrPad: ansistring
       // bufin2 - > samling [1..32768] av AnsiChar
       // StrPad tilldelas en av flera, den utvalda användaren,
       // anti-collision protokoll  
          
       repetition

          BlockRead (InFile, Bufin2, SizeOf (Bufin2), NumRead);
          BytsRem: = BytsRem - NumRead;
          NBlks: = NBlks + 1;
          StrBuf: = '';          
          om NumRead > 0 därefter    
             för K: = 1 till NumRead gör // ** som extremt är långsam för stort, sparar           
                 StrBuf: = StrBuf+AnsiString (Bufin2 [K]);

          om NBlks = 1 därefter
             StrBuf2: = AnsiString (StrPad+StrBuf)
           annars
             StrBuf2: = AnsiString (StrBuf2+StrBuf);

          MD5Long: = MD5Hex (MD5Str (StrBuf2));

       till (NumRead = 0) eller (BytsRem = 0); // eller (NBlks = 2);

       Closefile (InFile);

       // avslutade pölsa innehålls i MD5Long
       // huvudsakligen, MD5Long instämm exakt med
       // binärt ”som kopieras, sparar” pölsa - se min #2.
<-/pre>



" klar "

Svar : Delphi läste enormt sparar in i ansistring en stor bit

fungera MD5Str (M: RawByteString): MD5Digest;

Du bör inte måste att konvertera till AnsiString, när du använder detta. Du får en olik pölsa, när du inte gör? Du bör inte.
Andra lösningar  
 
programming4us programming4us