Frage : Delphi las sehr große Akten in ansistring Klumpen

Hallo - ich verwende 4 Programme MD5 in einem Programm, die tadellos arbeiten:
#1 - hackt eine Akte - standard
#2 - hackt a (binäre Kopie der Auflageakte + der Zielakte)
#3 - hackt ein ansistring (die Auflage- + Zielakte gelesen in ein Ansistring) -
, das extrem slow* für große Akten ist. - Ich lese, Block 32K buffers
aber muss in eine ansistring eine Putzfrau andererseits auf einmal umwandeln.
sehen mein code.
#4 - (Memo.text) hacken Schnur.

* extrem langsame Mittel - Nehmen mindestens 10mal länger als MD5 standard.
(Ursache, die ich nicht zulassen möchte, dass es 100lange mal so nimmt).

If lieferte die selben, in der Gesamtmenge, resultierende Schnüre, #2, #3 u. alle produzieren #4 das genaue das gleiche Durcheinander entscheidend ist, das - d.h. extrem impotant. Um meine Funktionen MD5 zu verwenden, müssen sie geführt werden entweder einen Dateinamen oder ein AnsiString.  

In das Ende, meine Frage, kann bin ich sehr große Akten in direkt in ansistring Klumpen schnell lesen?

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 - > Reihe [1..32768] von AnsiChar
       // StrPad wird eins von mehreren zugewiesen, den vorgewählten Benutzer,
       //-Antikollisionsprotokolle  
          
       Wiederholung

          BlockRead (InFile, Bufin2, SizeOf (Bufin2), NumRead);
          BytsRem: = BytsRem - NumRead;
          NBlks: = NBlks + 1;
          StrBuf: = '';          
          wenn NumRead > 0 dann    
             für k: = tun 1 zu NumRead // ** für große Akten extrem verlangsamen           
                 StrBuf: = StrBuf+AnsiString (Bufin2 [k]);

          wenn NBlks = 1 dann
             StrBuf2: = AnsiString (StrPad+StrBuf)
           sonst
             StrBuf2: = AnsiString (StrBuf2+StrBuf);

          MD5Long: = MD5Hex (MD5Str (StrBuf2));

       bis (NumRead = 0) oder (BytsRem = 0); // oder (NBlks = 2);

       Closefile (InFile);

       // schloß Durcheinander wird enthalten in MD5Long ab
       // am wichtigsten, MD5Long stimmt genau mit überein
       //-binäre „kopierten Akten“ hacken - mein #2. sehen.

Antwort : Delphi las sehr große Akten in ansistring Klumpen

Funktion MD5Str (M: RawByteString): MD5Digest;

Sie sollten nicht in AnsiString umwandeln müssen, wenn Sie dieses verwenden. Erhalten Sie ein anderes Durcheinander, wenn Sie nicht tun? Sie sollten nicht.
Weitere Lösungen  
 
programming4us programming4us