PDA

Ver la Versión Completa : Comparar dos Streams entre sí y averiguar si son iguales


dec
07-06-2006, 19:54:28
La siguiente función devuelve "True" si los "Streams" que se pasan como parámetros resultan ser iguales. Esta función la escribió Federico (delphi.com.ar), un compañero de los Foros del ClubDelphi, si no recuerdo mal:


function CompararStreams(AStream1, AStream2: TStream): boolean;
var
Buff1, Buff2: Pointer;
iCount: LongInt;
const
BUFFER_SIZE = 1024*4;
begin
if AStream1.Size <> AStream2.Size then
Result := False
else
begin
Result := True;
GetMem(Buff1, BUFFER_SIZE);
GetMem(Buff2, BUFFER_SIZE);
try
repeat
iCount := AStream1.Read(Buff1^, BUFFER_SIZE);
AStream2.Read(Buff2^, BUFFER_SIZE);
if not CompareMem(Buff1, Buff2, iCount) then
begin
Result := False;
break;
end;
until iCount < BUFFER_SIZE;
finally
FreeMem(Buff1);
FreeMem(Buff2);
end;
end;
end;