[Back to MAIL SWAG index] [Back to Main SWAG index] [Original]

    {
    After lots of controversy, and a lot of reteaching myself the meanings of
    a few Words, I've redone my *.MSG reader....
    }

    Const MSGPRIVATE  = $0001;
    Const MSGConst    = $0002;
    Const MSGREAD     = $0004;
    Const MSGSENT     = $0008;
    Const MSGFile     = $0010;
    Const MSGFWD      = $0020;
    Const MSGorPHAN   = $0040;
    Const MSGKILL     = $0080;
    Const MSGLOCAL    = $0100;
    Const MSGHOLD     = $0200;
    Const MSGCRAP     = $0400;
    Const MSGFRQ      = $0800;
    Const MSGRRQ      = $1000;
    Const MSGCPT      = $2000;
    Const MSGARQ      = $4000;
    Const MSGURQ      = $8000;

    Type
         Fido_FromType    = Array [1..35] of Char;
         Fido_toType      = Array [1..35] of Char;
         Fido_SubType     = Array [1..71] of Char;
         Fido_DateType    = Array [1..19] of Char;

         FidoMsgType = Record
          From         : Fido_FromType; (* 0   *)
          toWhom       : Fido_toType;   (* 35  *)
          Subject      : Fido_SubType;  (* 71  *)
          AZDate       : Fido_DateType; (* 142 *)
          TimesRead    : Word;          (* 162 *)
          Dest_Node    : Word;          (* 164 *)
          orig_Node    : Word;          (* 166 *)
          Cost         : Word;          (* 168 *)
          orig_Net     : Word;          (* 170 *)
          Dest_Net     : Word;          (* 172 *)
          Date_Written : LongInt;       (* 176 *)
          Date_Arrived : LongInt;       (* 180 *)
          Reply        : Word;          (* 184 *)
          Attr         : Word;          (* 186 *)
          Up           : Word;          (* 188 *)
         end;

       MsgTxtPtr  = ^MsgTxtType;
       MsgTxtType = Array [1..65535] of Char;

    Var
      MessageFile : File;
      Msg         : FidoMsgType;
      MsgTxt      : MsgTxtPtr;

    Procedure ReadMessage(Fname : PathStr);
    Var
      Left : Word;
    begin
      Assign(MessageFile,FName);
      Reset(MessageFile,1);
      BlockRead(MessageFile,Msg,190);
      Left:=FileSize(MessageFile) - 190;
      New(MsgTxt);
      BlockRead(MessageFile,MsgTxt^,Left);
    end;
    {
    This will correctly read in a *.MSG File in two parts..THe Header(stored in
    Msg), and the Text which is a 64k buffer(stored in Pointer MsgTxt)...
    }

[Back to MAIL SWAG index] [Back to Main SWAG index] [Original]