home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 2 / ctrom_ii_b.zip / ctrom_ii_b / PROGRAM / PASCAL / MKMSG104 / MKMSGCVT / MKMSGCVT.PAS < prev    next >
Pascal/Delphi Source File  |  1994-01-09  |  4KB  |  141 lines

  1. Program MKMsgCvt;
  2. {$IFDEF WINDOWS}
  3. {$M 16384, 8196}
  4. {$ELSE}
  5. {$M 16384, 0, 655360}
  6. {$ENDIF}
  7.  
  8. {$I MKB.Def}
  9.  
  10. {$X+}
  11.  
  12. {$IFDEF WINDOWS}
  13. Uses MKWCrt,
  14. {$ELSE}
  15.   {$IFDEF OPRO}
  16.   Uses OpCrt,
  17.   {$ELSE}
  18.   Uses Crt,
  19.   {$ENDIF}
  20. {$ENDIF}
  21. MKMsgAbs, MKOpen, MKDos, MKString, MKFile, MKGlobT, MKAvatar;
  22.  
  23. Var
  24.   MsgIn: AbsMsgPtr;                    {pointer to input message object}
  25.   MsgOut: AbsMsgPtr;                   {pointer to output message object}
  26.   TmpStr: String;                      {temporary storage}
  27.   InAreaId: String;                    {Input msgareaid string}
  28.   OutAreaId: String;                   {Output msgareaid string}
  29.   TmpAddr: AddrType;                   {temporary address storage}
  30.   PriorWrap: Boolean;                  {prior text line was wrapped}
  31.   Ta: Byte;
  32.  
  33. Const
  34.   StLen = 78;                          {wrap strings at 78 characters}
  35.  
  36. {$I MKMCvt.Inc}
  37.  
  38. Begin
  39. Ta := TextAttr;
  40. If ParamCount < 2 Then
  41.   Begin
  42.   WriteLn('Proper syntax is:');
  43.   WriteLn('MsgCvt MsgAreaId(Input) MsgAreaId(Output)');
  44.   WriteLn;
  45.   WriteLn('   Squish MsgAreaId Example = SC:\Max\Msg\Muffin');
  46.   WriteLn('   Hudson MsgAreaId Example = H042C:\MK\MsgBase');
  47.   WriteLn('   *.Msg  MsgAreaId Example = FC:\Mail');
  48.   WriteLn('   Ezy    MsgAreaId Example = E0001C:\Ezy\MsgBase');
  49.   WriteLn('   Jam    MsgAreaId Example = JC:\Msg\General');
  50.   WriteLn;
  51.   WriteLn('Example:');
  52.   WriteLn('   MsgCvt H042C:\RA  JC:\MSG\GENERAL');
  53.   WriteLn;
  54.   Halt(1);
  55.   End;
  56. InAreaId := Upper(ParamStr(1));
  57. OutAreaId := Upper(ParamStr(2));
  58. DoBanner;                              {Display ansi banner}
  59. TextAttr := LightGreen;
  60. GoToXy(41, 4);
  61. Write(Copy(InAreaId, 1, 28));          {Display input MsgAreaId}
  62. GoToXy(41, 12);
  63. Write(Copy(OutAreaId, 1, 28));         {Display output MsgAreaId}
  64. If Not OpenMsgArea(MsgIn, InAreaId) Then
  65.   Begin
  66.   GoToXy(1, 25);
  67.   WriteLn('Unable to open input message base');
  68.   TextAttr := Ta;
  69.   Halt(4);
  70.   End;
  71. If Not OpenOrCreateMsgArea(MsgOut, OutAreaId) Then
  72.   Begin
  73.   GoToXy(1, 25);
  74.   WriteLn('Unable to open/create output message base');
  75.   TextAttr := Ta;
  76.   Halt(5);
  77.   End;
  78. MsgOut^.SetMailType(mmtNormal);
  79. If MsgOut^.LockMsgBase Then;
  80. MsgIn^.SeekFirst(1);                   {Start at begining of msg base}
  81. While MsgIn^.SeekFound Do
  82.   Begin
  83.   MsgIn^.MsgStartUp;                   {Initialize input msg}
  84.   MsgOut^.StartNewMsg;                 {Initialize output msg}
  85.   GoToXy(51, 20);
  86.   Write(PadLeft(Long2Str(MsgIn^.GetMsgNum),' ', 6));
  87.   MsgIn^.MsgTxtStartUp;                {Initialize input msg text}
  88.   MsgIn^.GetDest(TmpAddr);             {Set header fields}
  89.   MsgOut^.SetDest(TmpAddr);
  90.   MsgIn^.GetOrig(TmpAddr);
  91.   MsgOut^.SetOrig(TmpAddr);
  92.   MsgOut^.SetFrom(MsgIn^.GetFrom);
  93.   MsgOut^.SetTo(MsgIn^.GetTo);
  94.   MsgOut^.SetSubj(MsgIn^.GetSubj);
  95.   MsgOut^.SetCost(MsgIn^.GetCost);
  96.   MsgOut^.SetRefer(MsgIn^.GetRefer);
  97.   MsgOut^.SetSeeAlso(MsgIn^.GetSeeAlso);
  98.   MsgOut^.SetDate(MsgIn^.GetDate);
  99.   MsgOut^.SetTime(MsgIn^.GetTime);
  100.   MsgOut^.SetLocal(MsgIn^.IsLocal);
  101.   MsgOut^.SetRcvd(MsgIn^.IsRcvd);
  102.   MsgOut^.SetPriv(MsgIn^.IsPriv);
  103.   MsgOut^.SetCrash(MsgIn^.IsCrash);
  104.   MsgOut^.SetKillSent(MsgIn^.IsKillSent);
  105.   MsgOut^.SetSent(MsgIn^.IsSent);
  106.   MsgOut^.SetFAttach(MsgIn^.IsFAttach);
  107.   MsgOut^.SetReqRct(MsgIn^.IsReqRct);
  108.   MsgOut^.SetRetRct(MsgIn^.IsRetRct);
  109.   MsgOut^.SetFileReq(MsgIn^.IsFileReq);
  110.   MsgOut^.SetEcho(False);
  111.   PriorWrap := MsgIn^.WasWrap;
  112.   TmpStr := MsgIn^.GetString(StLen);   {Get line of message text}
  113.   While (Not MsgIn^.EOM) or (Length(TmpStr) > 0) Do
  114.     Begin
  115.     If ((TmpStr[1] = #1) and (Not PriorWrap)) Then
  116.       MsgOut^.DoKludgeLn(TmpStr)       {Save as ^A Kludge line}
  117.     Else
  118.       Begin
  119.       If MsgIn^.WasWrap Then
  120.         MsgOut^.DoString(TmpStr)       {Save as normal text}
  121.       Else
  122.         MsgOut^.DoStringLn(TmpStr);    {Save as normal text with CR}
  123.       End;
  124.     TmpStr := MsgIn^.GetString(StLen); {Get next line of message text}
  125.     End;
  126.   If MsgOut^.WriteMsg <> 0 Then        {Save message}
  127.     Begin
  128.     GoToXy(1,25);
  129.     WriteLn('Error: Unable to save message');
  130.     TextAttr := Ta;
  131.     Halt(6);
  132.     End;
  133.   MsgIn^.SeekNext;                     {Seek next message}
  134.   End;
  135. If MsgOut^.UnLockMsgBase Then;
  136. If Not CloseMsgArea(MsgIn) Then;
  137. If Not CloseMsgArea(MsgOut) Then;
  138. TextAttr := Ta;
  139. GoToXy(1,25);
  140. End.
  141.