[Back to MEMORY SWAG index] [Back to Main SWAG index] [Original]
{$R-,S-,V-}
{
**
** CompMem - A routine to compare to areas of memory for equality
** by Richard S. Sadowsky [74017,1670]
** version 1.0 5/11/88
** released to the public domain
** requires file MEMCOMP.OBJ to recompile
**
}
unit MemComp;
interface
function CompMem(var Block1,Block2; Size : Word) : Word;
{ returns 0 if Block1 and Block2 are equal for Size bytes, otherwise }
{ returns position of first non matching byte }
implementation
function CompMem(var Block1,Block2; Size : Word) : Word; External;
{$L memcomp.Obj}
end.
{ --------------------- XX3402 CODE --------------------- }
{ cut this out and save as MEMCOMP.XX execute :
{ XX3402 D MEMCOMP.XX to create MEMCOMP.OBJ }
*XX3402-000108-110588--72--85-20839-----MEMCOMP.OBJ--1-OF--1
U+o+0qpZPKBjPL+iEJBBOtM5+++2Eox2FIGM-k+c7++0+E2FY+s+++25EoxBI2p3HE+++2m6
-+++cU5Fc0U++E++WxmAqXD+BchD-CAHBgJr0XP2TkPwwuNo-XO9FkEfkMvOmUc+9sc0++-o
***** END OF BLOCK 1 *****
{ ------------- TEST PROGRAM --------------------- }
{$R-,S-}
program CompTest;
uses MemComp;
type
Tipe = array[1..128] of byte;
var
Var1,Var2 : Tipe;
I,CompRes : Word;
begin
FillChar(var2,SizeOf(Tipe),0); { init Var2 to all zeros }
for I := 1 to 128 do { set var1 = 1 2 3 4 5 ... 128 }
Var1[I] := I;
CompRes := CompMem(Var1,Var2,128); { compare, should return first }
{ byte as non match }
WriteLn('While not equal, CompMem = ',CompRes); { show results }
Var2 := Var1; { make them equal }
CompRes := CompMem(Var1,Var2,128); { test again, should return 0 }
WriteLn('While equal, CompMem = ',CompRes);
Var2[128] := 0; { make all equal except last byte }
CompRes := CompMem(Var1,Var2,128); { test again, should return 128 }
WriteLn('While not equal, CompMem = ',CompRes);
end.
[Back to MEMORY SWAG index] [Back to Main SWAG index] [Original]