[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]