gpt4 book ai didi

Delphi函数比较两个TStream的内容?

转载 作者:行者123 更新时间:2023-12-03 14:42:30 26 4
gpt4 key购买 nike

我需要比较两个TStream后代是否具有相同的内容。对我来说唯一有趣的结果是 bool 值是/否。

我将编写一个简单循环,逐字节检查流内容。

但我好奇想知道是否已经存在函数。我没有在 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;

关于Delphi函数比较两个TStream的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4605908/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com