home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / BBS / GWAR241.ZIP / MSGFILE.TXT < prev    next >
Text File  |  1990-05-08  |  3KB  |  96 lines

  1. GLOBAL WAR MESSAGE FILE FORMAT (WARxx.MSG)
  2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3. WARxx.MSG is a FILE OF MsgRec
  4.  
  5. MsgRec is defined as:
  6.  
  7.   TYPE
  8.     MsgRec = RECORD
  9.       MsgFrom: 1..6;             {player who sent this message}
  10.       MsgTo  : SET OF 1..6;      {player(s) this message was sent to}
  11.       MsgTxt : String[70];       {the text of the message}
  12.     END;
  13.  
  14. When a new message is entered, a new record is appended to the WARxx.MSG file.
  15. Records are never deleted.  The MsgTo Set keeps track of who the message is
  16. to.  If a player number is in the MsgTo set, the message is considered New,
  17. (unread, undeleted, etc).  When a player deletes a message, his player number
  18. is removed from the MsgTo set.
  19.  
  20. Examples:
  21.  
  22. VAR
  23.   f    : FILE OF MsgRec;
  24.   Rec  : MsgRec;
  25.   s    : STRING;
  26.   ch   : CHAR;
  27.   RecNo: WORD;
  28.  
  29. BEGIN
  30.   Assign(f, 'WAR01.MSG');
  31.   {$I-} Reset(f); {$I+}
  32.   IF IOResult<>0 THEN ReWrite(f); {create file if it doesn't exist}
  33.  
  34. To read messages:
  35.  
  36.   Reset(f); RecNo := 0;
  37.   WHILE NOT EOF(f) DO BEGIN
  38.     Inc(RecNo);
  39.     Seek(f, RecNo);
  40.     Read(f, Rec);
  41.     IF ThisPlayerNumber IN Rec.MsgTo THEN BEGIN
  42.       Writeln('This message is from player #',Rec.MsgFrom);
  43.       Writeln(Rec.MsgTxt);
  44.       Writeln;
  45.     END;
  46.  
  47. To delete messages:
  48.  
  49.     Write('End of messages to you.  Delete messages?  ');
  50.     Read(ch);
  51.     IF UpCase(ch)='Y' THEN BEGIN
  52.       FOR RecNo:=1 TO FileSize(f)-1 DO BEGIN
  53.       Seek(f,RecNo);
  54.       Read(f, Rec);
  55.       {Now remove player number from MsgTo Set}
  56.       Rec.MsgTo := Rec.MsgTo - [ThisPlayerNumber];
  57.       Seek(f, RecNo);
  58.       Write(f, Rec);
  59.     END;
  60.  
  61. To send a messages:
  62.  
  63.      Write('Send message to which player(s)?  (!,",#,$,%,&) : ');
  64.      ReadLn(s);
  65.      IF Length(s)>0 THEN BEGIN
  66.        Rec.MsgTo := [];
  67.        FOR i:=1 TO Length(s) DO BEGIN
  68.          ch := s[i];
  69.          CASE ch OF
  70.            '!':Rec.MsgTo := Rec.MsgTo + [1];
  71.            '"':Rec.MsgTo := Rec.MsgTo + [2];
  72.            '#':Rec.MsgTo := Rec.MsgTo + [3];
  73.            '$':Rec.MsgTo := Rec.MsgTo + [4];
  74.            '%':Rec.MsgTo := Rec.MsgTo + [5];
  75.            '&':Rec.MsgTo := Rec.MsgTo + [6];
  76.          END;
  77.        END;
  78.        IF Rec.MsgTo <> [] THEN BEGIN
  79.          Writeln('Enter message now.  Press [ENTER] on a blank line to end.  ');
  80.          REPEAT
  81.            Write('Message:');
  82.            Readln(s);
  83.            IF s<>'' THEN BEGIN
  84.              Rec.MsgTxt  := s;
  85.              Rec.MsgFrom := player;
  86.              RecNo       := FileSize(f);  {append record to end of file}
  87.              IF RecNo=0 THEN RecNo := 1;
  88.              Seek(f, RecNo);
  89.              Write(f, Rec);
  90.            END;
  91.          UNTIL s='';
  92.          Writeln('Message sent.  ');
  93.        END;
  94.      END;
  95.      Close(f);
  96.