home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast.iso / pcmag / vol9n04.zip / HELP.PAS < prev    next >
Pascal/Delphi Source File  |  1990-01-22  |  2KB  |  68 lines

  1. HELP.PAS
  2.  
  3.  
  4. Unit Help;
  5. (* QuickPascal program *)
  6.  
  7. (**********************)
  8. (**)    INTERFACE   (**)
  9. (**********************)
  10. TYPE
  11.   StringPt = ^String;
  12.   HelpStrings = ARRAY [1..500] of StringPt;
  13.   HelpArray = ^HelpStrings;
  14.   HelpSet = OBJECT
  15.     size, number : Word;
  16.     messages : HelpArray;
  17.     PROCEDURE InitHelp(iSize : Word);
  18.     FUNCTION  AddMessage(M : String): Boolean;
  19.     FUNCTION  GetMessage(B : Word): String;
  20.     PROCEDURE DoneWithHelp;
  21.   END;
  22.  
  23. (**********************)
  24. (**) IMPLEMENTATION (**)
  25. (**********************)
  26.   PROCEDURE HelpSet.InitHelp(iSize : Word);
  27.   BEGIN
  28.     self.size := iSize;
  29.     self.number := 0;
  30.     GetMem(self.messages, SizeOf(pointer)*iSize);
  31.   END;
  32.  
  33.   FUNCTION HelpSet.AddMessage(M : String): Boolean;
  34.   BEGIN
  35.     IF self.number = self.size THEN AddMessage := FALSE
  36.     ELSE
  37.       BEGIN
  38.     Inc(self.number);
  39.     GetMem(self.messages^[self.number], succ(length(M)));
  40.     self.messages^[self.number]^ := M;
  41.     AddMessage := TRUE;
  42.       END;
  43.   END;
  44.  
  45.   FUNCTION HelpSet.GetMessage(B : Word): String;
  46.   BEGIN
  47.     IF B > self.number THEN GetMessage := ''
  48.     ELSE
  49.       GetMessage := self.messages^[B]^;
  50.   END;
  51.  
  52.   PROCEDURE HelpSet.DoneWithHelp;
  53.   VAR N : Word;
  54.   BEGIN
  55.     {Free up space taken by individual messages}
  56.     FOR N := self.number downto 1 DO
  57.       FreeMem(self.messages^[N],succ(length(self.messages^[N]^)));
  58.     {Free up space used for array of pointers to messages}
  59.     FreeMem(self.messages, SizeOf(Pointer)*self.size);
  60.   END;
  61.  
  62. END.
  63.  
  64.  
  65.  
  66.  
  67.  
  68.