[Back to MAIL SWAG index] [Back to Main SWAG index] [Original]
{
> Is there somebody who can give me an example of
> how to write an JAM Base message (RemoteAccess) ?
> I already have JAMAPI and MKMSG I'll need just an simple unit how to
> write fast and simple an message to the JAM base..
Try this... It should work with the standard JAMAPI (I think, at least I
can't remember changing anything in it). It's a little piece of testcode
I wrote to play around with JAM :
}
Program JAMTest;
Uses
JAM, JAMmb, JAMcrc32;
Var
JAMMsg : JAMAPIPTR;
ToUsername : String[100];
Position : LongInt;
S : String;
MsgNo : LongInt;
Error : Boolean;
Function FileLength (Handle:INTEGER) : LongInt;
Var
Position : LongInt;
Begin
Position := JAMMsg^.SeekFile (Handle, 1, 0);
FileLength := JAMMsg^.SeekFile (Handle, 2, 0);
JAMMsg^.SeekFile (Handle, 0, Position);
End; { FileLength }
Begin
New (JAMMsg, Init);
New (JAMMsg^.WorkBuf);
With JAMMsg^ Do
Begin
If (WorkBuf <> NIL) Then
Begin
WorkLen := SizeOf(JAMBUF);
BaseName := 'ANOTHER';
Error := Not OpenMB;
If Error Then Error := Not CreateMB;
If Not Error Then
Begin
If LockMB(True) Then
Begin
MsgNo := (FileLength(IdxHandle) Div SizeOf(JAMIDXREC)) +
HdrInfo.BaseMsgNum;
Hdr.MsgNum := MsgNo;
(* Add an index record *)
ToUsername := 'Marco Miltenburg';
With Idx Do
Begin
S := ToUsername;
LowCaseBuf (S[1], Length(S));
UserCRC := crc32(S[1], Length(S), -1);
HdrOffset := FileLength (JAMMsg^.HdrHandle);
End;
StoreMsgIdx(MsgNo);
Position := 1;
FillChar (Workbuf^, SizeOf(WorkLen), #0);
S := 'This is a test in JAM.'#13#10;
AddField (0, FALSE, Length(S), Position, S[1]);
S := '--- WhatEver/386 v0.0'#13#10;
AddField (0, FALSE, Length(S), Position, S[1]);
Hdr.TxtLen := Position - 1;
Hdr.TxtOffset := FileLength(TxtHandle);
StoreMsgTxt;
FillChar (Workbuf^, SizeOf(WorkLen), #0);
S := 'WhatEven/386 v0.0'; Position := 1;
AddField (2, TRUE, Length(S), Position, S[1]);
S := ToUserName;
AddField (3, TRUE, Length(S), Position, S[1]);
S := 'Just a message';
AddField (6, TRUE, Length(S), Position, S[1]);
S := 'WhatEver/386 v0.0';
AddField (7, TRUE, Length(S), Position, S[1]);
With Hdr Do
Begin
ReservedWord := 0;
SubfieldLen := Position;
TimesRead := 0;
MsgIdCRC := -1;
ReplyCRC := -1;
ReplyTo := 0;
Reply1st := 0;
ReplyNext := 0;
DateWritten := 0;
DateReceived := 0;
DateProcessed:= 0;
Attribute := MSG_LOCAL Or MSG_PRIVATE Or MSG_TYPEECHO;
Attribute2 := 0;
PasswordCRC := -1;
Cost := 0;
End; { With }
StoreMsgHdr(MsgNo);
WriteFile(HdrHandle, WorkBuf^, Position);
Inc(HdrInfo.ActiveMsgs);
UpdHdrInfo(True);
End { If }
Else
WriteLn ('Unable to lock JAM base ''', BaseName,'''');
End { If }
Else
WriteLn ('Unable to open JAM base ''', BaseName,'''');
Dispose (WorkBuf);
Dispose (JAMMsg);
End { If }
Else
WriteLn ('Unable to allocate Work Buffer memory');
End; { With }
End.
[Back to MAIL SWAG index] [Back to Main SWAG index] [Original]