home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Pascal / Utilities / Siege Watch 2.0 / utility.p < prev    next >
Encoding:
Text File  |  1994-04-23  |  2.4 KB  |  101 lines  |  [TEXT/PJMM]

  1. { utility.p --> just code modules that handle utility}
  2. {routines. }
  3. unit Utility;
  4.  
  5. interface
  6.  
  7.     function GetGmtDelta: LONGINT;
  8.     procedure SetCheckItem (setupDlg: DialogPtr;
  9.                                     item: integer;
  10.                                     truth: Boolean);
  11.     procedure NegateCheckItem (setupDlg: DialogPtr;
  12.                                     item: integer;
  13.                                     var truth: Boolean);
  14.     function CompareMyValues (value, max, min: extended;
  15.                                     previous: Boolean): Boolean;
  16.     function ChooseRandom (min, max: integer): integer;
  17.  
  18. implementation
  19.     uses
  20.         Script, SANE, Globals;
  21. { choose a random integer between min and max }
  22.     function ChooseRandom (min, max: integer): integer;
  23.         var
  24.             randNum: integer;
  25.             range, t: LONGINT;
  26.     begin
  27.         randNum := Random;
  28.         if randNum < 0 then
  29.             randNum := -randNum;
  30.  
  31.         range := max - min;
  32.         t := (randNum * range) div 32767;
  33.         ChooseRandom := min + t;
  34.     end;
  35. { compare two extended values }
  36.     function CompareMyValues (value, max, min: extended;
  37.                                     previous: Boolean): Boolean;
  38.         var
  39.             relMax, relMin: RelOp;
  40.     begin
  41.         relMax := Relation(value, max);
  42.         relMin := Relation(value, min);
  43.         if (((relMax = LessThan) or (relMax = EqualTo)) and ((relMin = GreaterThan) or (relMin = EqualTo))) then
  44.             begin
  45.                 CompareMyValues := previous;
  46.             end
  47.         else
  48.             begin
  49.                 CompareMyValues := FALSE
  50.             end;
  51.     end;
  52. { get number of  seconds we are offset from Greenwich Mean Time }
  53.     function GetGmtDelta: LONGINT;
  54.         var
  55.             internalGMTDelta: LONGINT;
  56.             myLocation: MachineLocation;
  57.     begin
  58.         ReadLocation(myLocation);
  59.         internalGMTDelta := BitAnd(myLocation.gmtDelta, $ffffff);
  60.         if (BitAnd(BitShift(internalGMTDelta, -23), 1) = 1) then
  61.             begin
  62.                 internalGMTDelta := BitOr(internalGMTDelta, $ff000000);
  63.             end;
  64.         GetGmtDelta := internalGMTDelta;
  65.     end;
  66. { given a dialog, and a check item index, set it to negative of its state }
  67.     procedure NegateCheckItem (setupDlg: DialogPtr;
  68.                                     item: integer;
  69.                                     var truth: Boolean);
  70.     begin
  71.         if truth then
  72.             begin
  73.                 truth := FALSE;
  74.             end
  75.         else
  76.             begin
  77.                 truth := TRUE;
  78.             end;
  79.         SetCheckItem(setupDlg, item, truth);
  80.     end;
  81. { set the value of a check box in a dialog }
  82.  
  83.     procedure SetCheckItem (setupDlg: DialogPtr;
  84.                                     item: integer;
  85.                                     truth: Boolean);
  86.         var
  87.             iHandle: ControlHandle;
  88.             iType: integer;
  89.             iRect: Rect;
  90.     begin
  91.         GetDItem(setupDlg, item, iType, Handle(iHandle), iRect);
  92.         if truth then
  93.             begin
  94.                 SetCtlValue(iHandle, 1);
  95.             end
  96.         else
  97.             begin
  98.                 SetCtlValue(iHandle, 0);
  99.             end;
  100.     end;
  101. end.