内存比较函数 - CompareMem(文件、数组等比较)
2011-07-30 19:33
537 查看
所属单元: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;
相关文章推荐
- 典型的Top K算法_找出一个数组里面前K个最大数...或找出1亿个浮点数中最大的10000个...一个文本文件,找出前10个经常出现的词,但这次文件比较长,说是上亿行或十亿行,总之无法一次读入内存,
- 典型的Top K算法_找出一个数组里面前K个最大数...或找出1亿个浮点数中最大的10000个...一个文本文件,找出前10个经常出现的词,但这次文件比较长,说是上亿行或十亿行,总之无法一次读入内存,
- 典型的Top K算法_找出一个数组里面前K个最大数...或找出1亿个浮点数中最大的10000个...一个文本文件,找出前10个经常出现的词,但这次文件比较长,说是上亿行或十亿行,总之无法一次读入内存,
- 典型的Top K算法 _找出一个数组里面前K个最大数_找出1亿个浮点数中最大的10000个_一个文本文件,找出前10个经常出现的词,但这次文件比较长,说是上亿行或十亿行,总之无法一次读入内存.
- 典型的Top K算法_找出一个数组里面前K个最大数...或找出1亿个浮点数中最大的10000个...一个文本文件,找出前10个经常出现的词,但这次文件比较长,说是上亿行或十亿行,总之无法一次读入内存
- 典型的Top K算法_找出一个数组里面前K个最大数...或找出1亿个浮点数中最大的10000个...一个文本文件,找出前10个经常出现的词,但这次文件比较长,说是上亿行或十亿行,总之无法一次读入内存,
- 快速内存比较函数CompareMem(Delphi SSE优化算法应用之二)
- 分享下如何写JS数组sort的比较函数
- 使用不规则数组(ragged array)和agetline()将整个文件读入内存
- Android 读取内存文件返回byte数组
- dll的def文件与__declspec(dllexport)导出函数方式比较
- 从内存角度分析:数组删除自己内部指定对象和通过函数形参改值问题
- Java的内存复制(主要是数组)效率比较
- JavaScript 数组几个比较有用的函数
- 数组、指针、函数、函数指针的内存布局
- c#关于移动文件的三个函数比较
- dll的def文件与__declspec(dllexport)导出函数方式比较
- 内存映射文件与内存读写实现进程间通信的比较
- python文件open()函数参数:r和rb比较
- 基于php常用函数总结(数组,字符串,时间,文件操作)