我需要比较两个TStream后裔具有相同的内容。
对我来说唯一有趣的结果是布尔值是/否。
我要编写一个简单循环逐字节检查流内容。
But I'm curious了解是否已有函数。我没有在 DelphiXE 或 JCL/JVCL 库中找到任何内容。
当然,两个流的大小相同!
确切地说,正如 Nickolay O. 所说,您应该分块读取流并使用 CompareMem。这是一个例子(包括尺寸测试)...
function IsIdenticalStreams(Source, Destination: TStream): boolean;
const Block_Size = 4096;
var Buffer_1: array[0..Block_Size-1] of byte;
Buffer_2: array[0..Block_Size-1] of byte;
Buffer_Length: integer;
begin
Result := False;
if Source.Size <> Destination.Size then
Exit;
while Source.Position < Source.Size do
begin
Buffer_Length := Source.Read(Buffer_1, Block_Size);
Destination.Read(Buffer_2, Block_Size);
if not CompareMem(@Buffer_1, @Buffer_2, Buffer_Length) then
Exit;
end;
Result := True;
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)