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

    {
    12 Jan 96 17:12, Mark Tassin wrote to All:
     MT> Can anybody help me find a Documented JAM message base unit for
     MT> TP 7.0? The one in JAMAPI would suffice except that all of the
     MT> functions that you can perform with it are undocumented, thus I
     MT> have to hunt through a slew function calls guessing what values I
     MT> should pass to them... RADU comes with the ability to post to
     MT> Hudson Message bases, but does not claim to support JAM, can
     MT> anybody point me to something that will let me post messages to
     MT> the JAM message base or am I screwed?

    MKSM106.LZH    226200  12-22-94  MK Source for Msg Access v1.06 - Mark May's
                                     Pascal OOP source code to access Squish,
                                     Jam, Hudson, *.Msg, and Ezycom message
                                     bases. Great for developing BBS utilities.
                                     (FW)

    Get the above archive,and here is
    a generic reader that I put together using Mark's units/source...

    (*   Generic Message Reader by Martin Woods 1:351/233.1      *)
    (* To use this you need MKSM106.LZH , Mark May's OOP library *)
    (* which should be availible just about anywhere             *)
    (* This program will read the following:                     *)
    (*          HUDSON,SQUISH,*.MSG,EZY and JAM                  *)
    (*    thanks to Mark May for writing a great Library!        *)

    Program Reader;
    {$M 16384, 0, 655360}
    {$I MKB.Def}

    {$X+}

      Uses Crt,MKMsgAbs, MKOpen, MKDos, MKstring;

    Var
      MsgOut: AbsMsgPtr;
      TmpStr: String;
      AreaId: String;
      ch:char;
      a,b: integer;
    Const
      StLen = 78;

    Begin
    If (ParamCount < 1) or (ParamStr(1) = '/?') Then
      Begin
      textattr:=$07;
      clrscr;
      writeln;
      textcolor(10);
      writeln('         Generic  READER version 01.0 by Martin Woods,June 1995');
      writeln;
      textcolor(11);
      WriteLn('           Proper syntax is:');
      WriteLn('           READER MsgAreaId');
      WriteLn;
      WriteLn('           Squish MsgAreaId Example = SC:\Max\Msg\Muffin');
      WriteLn('           Hudson MsgAreaId Example = H042C:\RA\MsgBase');
      WriteLn('           *.Msg  MsgAreaId Example = FC:\Mail');
      WriteLn('           Ezy    MsgAreaId Example = E0001C:\Ezy\MsgBase');
      WriteLn('           Jam    MsgAreaId Example = JC:\Msg\General');
      Halt(1);
      End;
    AreaId := Upper(ParamStr(1));

    If Not OpenMsgArea(MsgOut, AreaId) Then
      Begin
        WriteLn('Unable to open message base');
        Halt(4);
     End;
      textattr:=$07;
      clrscr;
      gotoxy(10,8);
      textcolor(10);
      write('Generic READER version 01.0 by Martin Woods,June 1995 '+#13);
      textcolor(7);
      Delay(1500); {opening screen here}

      MsgOut^.SeekFirst(1);
     While MsgOut^.SeekFound Do
       Begin
         window(1,1,80,25);
         textbackground(0);
         clrscr;
         textcolor(15);
           for a:=1 to 80 do write('Ä');  { header starts here }
             textcolor(2);
             MsgOut^.MsgStartUp;
             WriteLn(MsgOut^.GetMsgNum);
             Write('Message Number: ' + Long2Str(MsgOut^.GetMsgNum));
               If MsgOut^.IsPriv Then
                 Write('  (Priv)');
                   If MsgOut^.IsRcvd Then
                     Write(' (Rcvd)');
                     WriteLn;
                     Write('From: ' + PadRight(MsgOut^.GetFrom,' ',45));
                     Write('Date: ');
                     WriteLn(ReformatDate(MsgOut^.GetDate, 'MM/DD/YY')
                     + ' ' + MsgOut^.GetTime);
                     WriteLn('To: ' + MsgOut^.GetTo);
                     Write('Subj: ');
                     WriteLn(MsgOut^.GetSubj);
                     textcolor(15);
                       for a:=1 to 80 do write('Ä'); { header ends here }
                         window(1,wherey,80,25); {make a window to scroll message}
                         textcolor(7);
                         textbackground(0);
                         clrscr;
                         WriteLn;
                         MsgOut^.MsgTxtStartUp;
                  repeat

        TmpStr := MsgOut^.GetString(StLen);
        WriteLn(TmpStr);
        TmpStr := MsgOut^.GetString(StLen);
           if keypressed then
             begin
               ch := readkey;
                 if ch = #27 then halt;
              end;
                 if ch = #13 then
                   begin
                     WriteLn(TmpStr);
                  End;
          if wherey > 15 then
            begin
              textcolor(14);
              textbackground(1);
              writeln;
              writeln;
              write(' Esc to Quit  -   Press enter to Continue: '); {status line}
              clreol;
              textattr:=$07;
              ch := readkey;
                if ch = #27 then halt;
                  clrscr;
                  textcolor(7);
                end;
      until MsgOut^.EOM or (ioresult > 0);
        textcolor(14);
        textbackground(1);
        gotoxy(1,18);  {this is funky,any ideas how to optimize?}
        write(' Esc to Quit  -   Press enter to Continue:                     End
    ofMsg: ');clreol; {got word wrapped here}
        ch := readkey;
          if ch = #27 then halt;
            clrscr;
              If Length(TmpStr) > 0 Then
                 WriteLn(TmpStr);
                   If IoResult <> 0 Then;
                      MsgOut^.SeekNext;
                  End;
                     If Not CloseMsgArea(MsgOut) Then;
                 End.

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