Question : Delphes a lu les dossiers énormes dans les morceaux ansistring

Salut - j'emploie 4 routines MD5 dans un programme qui fonctionnent parfaitement : le
#1 - hache un dossier - le standard
#2 - hache le
#3 d'a (copie binaire de dossier de garniture + de dossier de cible) - hache (dossier de garniture + de cible lu dans ansistring) - un
qui est extrêmement slow* pour de grands dossiers. - Je lis le buffers
du bloc 32K mais d'autre part dois convertir en un char ansistring à la fois. Le
voient mon code.
#4 - hacher la corde (Memo.text). moyens extrêmement lents du

* - prises au moins 10 fois plus longtemps que MD5 standard.
(cause que je ne veux pas admettre que cela prend 100 fois aussi longues). le

If a fourni la même chose, au total, les cordes en résultant, #2, #3 et #4 tous produisent l'exact le même gâchis, qui est primordial - c.-à-d. extrêmement impotant. Pour employer mes fonctions MD5, elles doivent être passées à un nom de fichier ou à un AnsiString.  est-ce que

In l'extrémité, ma question, j'est peut rapidement lire les dossiers énormes dans directement dans les morceaux ansistring ?

TIA - class= " lineNumbers " >
1 de >



: 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= " de
 StrBuf, StrBuf2, StrPad : ansistring
       // bufin2 - > rangée [1..32768] d'AnsiChar
       // StrPad est assigné un de plusieurs, utilisateur choisi,
       protocoles anti-collision de //  
          
       répétition

          BlockRead (InFile, Bufin2, SizeOf (Bufin2), NumRead) ;
          BytsRem : = BytsRem - NumRead ;
          NBlks : = NBlks + 1 ;
          StrBuf : = '' ;          
          si NumRead > 0 puis    
             pour k : = 1 à NumRead font // ** ralentir extrêmement pour de grands dossiers           
                 StrBuf : = StrBuf+AnsiString (Bufin2 [k]) ;

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

          MD5Long : = MD5Hex (MD5Str (StrBuf2));

       jusqu'à (NumRead = 0) ou (BytsRem = 0) ; // ou (NBlks = 2) ;

       Closefile (InFile) ;

       // a accompli le gâchis est contenu dans MD5Long
       // d'une manière plus importante, MD5Long est conforme exactement au
       les dossiers « copiés » de // binaires hachent - voir le mon #2.
class= > " clair " de 
class= de

Réponse : Delphes a lu les dossiers énormes dans les morceaux ansistring

fonction MD5Str (M : RawByteString) : MD5Digest ;

Vous ne devriez pas devoir convertir en AnsiString en employant ceci. Obtenez-vous un gâchis différent quand vous ne faites pas ? Vous ne devriez pas.
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us