Cuestión : Delphi leyó archivos enormes en los pedazos ansistring

Hola - utilizo 4 rutinas MD5 en un programa que trabajen perfectamente: el
#1 - desmenuza un archivo - el standard
#2 - desmenuza el
#3 de a (copia binaria del archivo del cojín + del archivo de blanco) - desmenuza (archivo del cojín + de blanco leído en ansistring) - un
que sea extremadamente slow* para los archivos grandes. - Leo el buffers
del bloque 32K pero por otra parte tengo que convertir a un un carbón de leña ansistring a la vez. El
considera mi code.
#4 - desmenuzar la secuencia (Memo.text). medios extremadamente lentos del

* - tomas por lo menos 10 veces más de largo que MD5 standard.
(causa que no quiero admitir que toma 100 veces tan largas). el

If proporcionó iguales, en total, las secuencias resultantes, #2, #3 y #4 todos producen el exacto el mismo picadillo, que es supremo - es decir extremadamente impotant. Para utilizar mis funciones MD5, deben ser pasadas un nombre de fichero o un AnsiString.  ¿el

In el extremo, mi pregunta soy, puedo leer rápidamente archivos enormes en directo en pedazos ansistring?

TIA - class= " lineNumbers " >
1 del >



: 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: class= codeBody " prettyprint " del id= " codeSnippet842380 " del >
 StrBuf, StrBuf2, StrPad: el ansistring
       // bufin2 - > arsenal [1..32768] de AnsiChar
       // StrPad se asigna uno de varios, usuario seleccionado,
       protocolos anticolisión de //  
          
       repetición

          BlockRead (InFile, Bufin2, SizeOf (Bufin2), NumRead);
          BytsRem: = BytsRem - NumRead;
          NBlks: = NBlks + 1;
          StrBuf: = '';          
          si NumRead > 0 entonces    
             para k: = 1 a NumRead hace // ** retardarse extremadamente para los archivos grandes           
                 StrBuf: = StrBuf+AnsiString (Bufin2 [k]);

          si NBlks = 1 entonces
             StrBuf2: = AnsiString (StrPad+StrBuf)
           
             StrBuf2: = AnsiString (StrBuf2+StrBuf);

          MD5Long: = MD5Hex (MD5Str (StrBuf2));

       hasta (NumRead = 0) o (BytsRem = 0); // o (NBlks = 2);

       Closefile (InFile);

       // terminó el picadillo se contiene en MD5Long
       // más importante, MD5Long conviene exactamente con
       los archivos “copiados” binarios de // desmenuzan - ver mi #2.
class= > " claro " de 
class= del

Respuesta : Delphi leyó archivos enormes en los pedazos ansistring

función MD5Str (M: RawByteString): MD5Digest;

Usted no debe tener que convertir a AnsiString al usar esto. ¿Usted consigue un diverso picadillo cuando usted no lo hace? Usted no debe.
Otras soluciones  
 
programming4us programming4us