Vraag : Delphi Gelezen reusachtige dossiers in ansistring brokken

Hallo - gebruik 4 van I MD5 routines in een programma die volkomen werken:
#1 - knoeiboel een dossier - standard
#2 - knoeiboel een (binair die exemplaar van stootkussendossier + doeldossier)
#3 - knoeiboel het ansistring (stootkussen + doeldossier in het ansistring wordt gelezen) -
die uiterst slow* voor grote dossiers is. - Ik las 32K blok buffers
maar anderzijds moet in ansistring klusje tegelijkertijd omzetten.
ziet mijn code.
#4 - hak het koord (van Memo.text). />* uiterst langzame middelen

(oorzaak die ik niet wil om toelaten het vergt 100 zo lange keer).

If verstrekte het zelfde, in totale, resulterende koorden, #2, produceren #3 & #4 allen de nauwkeurige zelfde knoeiboel, die - d.w.z. uiterst impotant primordiaal is. Om mijn MD5 functies te gebruiken, moeten zij of een dossier - naam of een AnsiString worden overgegaan.  

In het eind, mijn vraag is, ik reusachtige dossiers in in het ansistring van brokken kan direct snel lezen?

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: het ansistring
       // bufin2 - > serie [1..32768] van AnsiChar
       // StrPad wordt toegewezen één van verscheidene, geselecteerde gebruiker,
       // antibotsingsprotocollen  
          
       herhaal

          BlockRead (InFile, Bufin2, SizeOf (Bufin2), NumRead);
          BytsRem: = BytsRem - NumRead;
          NBlks: = NBlks + 1;
          StrBuf: = '';          
          als NumRead > 0 toen    
             voor k: = doet 1 aan NumRead // ** uiterst langzaam voor grote dossiers           
                 StrBuf: = StrBuf+AnsiString (Bufin2 [k]);

          als NBlks = 1 toen
             StrBuf2: = AnsiString (StrPad+StrBuf)
           anders
             StrBuf2: = AnsiString (StrBuf2+StrBuf);

          MD5Long: = MD5Hex (MD5Str (StrBuf2));

       tot (NumRead = 0) of (BytsRem = 0); // of (NBlks = 2);

       Closefile (InFile);

       Is de // Voltooide knoeiboel bevat in MD5Long
       // het belangrijkst, MD5Long gaat precies met akkoord
       // hakken de binaire „gekopi�ërde dossiers“ - zie mijn #2.

Antwoord : Delphi Gelezen reusachtige dossiers in ansistring brokken

functie MD5Str (M: RawByteString): MD5Digest;

U zou niet in AnsiString moeten moeten omzetten wanneer het gebruiken van dit. Krijgt u een verschillende knoeiboel wanneer u niet? U zou niet moeten.
Andere oplossingen  
 
programming4us programming4us