所属单元:SysUtils
函数功能:快速内存比较函数,可对两个文件比较、数组进行比较。据测试速度比一般算法要高60~110%。
一、文件的比较
你是否遇到过比较两个任意后缀名文件内容是否相同的问题?(TFileStream其他类可以方便的操作这些文件,但如果说到比对内容,恐怕……)
下面就用这个函数快速而简单的比对两个文件内容的是否相同。
procedure TForm1.btn1Click(Sender: TObject);
var
cs1, cs2:TMemorystream;
begin
cs1 := TMemoryStream.Create;
cs2 := TMemoryStream.Create;
try
cs1.LoadFromFile('C:\a.bin');
cs2.LoadFromFile('C:\b.bin');
if (cs1.Size = cs2.Size) and CompareMem(cs1.Memory, cs2.Memory,cs1.Size) then
ShowMessage('文件内容相同')
else
ShowMessage('文件内容不同!');
finally
cs1.free;
cs2.free;
end;
end;
二、比较两个二维数组是否相等(转)
{对比静态数组}
procedure TForm1.btn4Click(Sender: TObject);
var
arr1: array[0..3] of AnsiChar;
arr2: array[0..3] of Byte;
begin
arr1[0] := 'A';
arr1[1] := 'B';
arr1[2] := 'C';
arr1[3] := 'D';
arr2[0] := 65;
arr2[1] := 66;
arr2[2] := 67;
arr2[3] := 68;
if CompareMem(@arr1, @arr2, SizeOf(arr1)) then
ShowMessage('arr1 与 arr2 中的数据相同');
end;
{对比动态数组}
procedure TForm1.btn2Click(Sender: TObject);
var
arr1: array of AnsiChar;
arr2: array of Byte;
begin
SetLength(arr1, 4);
SetLength(arr2, 4);
arr1[0] := 'A';
arr1[1] := 'B';
arr1[2] := 'C';
arr1[3] := 'D';
arr2[0] := 65;
arr2[1] := 66;
arr2[2] := 67;
arr2[3] := 68;
if CompareMem(arr1, arr2, SizeOf(arr1)) then
ShowMessage('arr1 与 arr2 中的数据相同');
end;
{多维数组也一样}
procedure TForm1.btn3Click(Sender: TObject);
var
arr1: array[0..1, 0..1] of AnsiChar;
arr2: array[0..1, 0..1] of Byte;
begin
arr1[0, 0] := 'A';
arr1[0, 1] := 'B';
arr1[1, 0] := 'C';
arr1[1, 1] := 'D';
arr2[0, 0] := 65;
arr2[0, 1] := 66;
arr2[1, 0] := 67;
arr2[1, 1] := 68;
if CompareMem(@arr1, @arr2, SizeOf(arr1)) then
ShowMessage('arr1 与 arr2 中的数据相同');
end;
内存比较函数 - CompareMem(文件、数组等比较)
最新推荐文章于 2024-07-26 13:58:55 发布