home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / nicol / sti_stru / sti_stru.pas
Encoding:
Pascal/Delphi Source File  |  1990-08-23  |  1.6 KB  |  68 lines

  1. Unit STI_STRU;
  2.  
  3. Interface
  4.  
  5. function  STI_StructHash(Var Data; Size : word) : word;
  6. function  STI_StructCompare(var Data1,Data2; Size : word) : Boolean;
  7. procedure STI_StructSwap(var Data1,Data2; Size : word);
  8.  
  9.  
  10. Implementation
  11.  
  12. {---------------------------------------------------------------------------}
  13.  
  14. procedure STI_StructSwap(var Data1,Data2; Size : word);
  15.  
  16. Var
  17.   Dummy1 : array[1..65535] of byte absolute Data1;
  18.   Dummy2 : array[1..65535] of byte absolute Data2;
  19.   DummyB : Byte;
  20.   Loop   : word;
  21. begin
  22.   for Loop := 1 to Size do
  23.     begin
  24.       DummyB        := Dummy1[Loop];
  25.       Dummy1[Loop]  := Dummy2[Loop];
  26.       Dummy2[Loop]  := DummyB;
  27.     end
  28. end;
  29.  
  30. {---------------------------------------------------------------------------}
  31.  
  32. function STI_StructCompare(var Data1,Data2; Size : word) : Boolean;
  33.  
  34. Var
  35.   Dummy1 : array[1..65535] of byte absolute Data1;
  36.   Dummy2 : array[1..65535] of byte absolute Data2;
  37.   Loop   : Word;
  38.  
  39. begin
  40.   STI_StructCompare := TRUE;
  41.   for Loop := 1 to Size do
  42.     if Dummy1[Loop] <> Dummy2[Loop] then
  43.       begin
  44.         STI_StructCompare := FALSE;
  45.         Exit;
  46.       end;
  47. end;
  48.  
  49. {---------------------------------------------------------------------------}
  50.  
  51. function STI_StructHash(Var Data; Size : word) : word;
  52.  
  53. Var
  54.   Temp  : longint;
  55.   Loop  : word;
  56.   Dummy : array[1..65535] of byte absolute Data;
  57.  
  58. begin
  59.   Temp := 0;
  60.   for Loop := 1 to Size do
  61.     Temp := Temp + Dummy[Loop];
  62.   STI_StructHash := (Temp mod Size);
  63. end;
  64.  
  65. {---------------------------------------------------------------------------}
  66.  
  67. begin
  68. end.