[Back to MAIL SWAG index] [Back to Main SWAG index] [Original]
{
From: FRANK MCCORMICK
Subj: qwk code
Here is some QWK code I pulled from my UNIT which handles QWK REP
files uploaded to my BBS.
I have modified it to display the info contained in the REP file
(which is really just a compressed version of messages.dat)
}
PROCEDURE HandleRep;
Type
RepFmt = RECORD
totype : CHAR;
confasc : ARRAY [1..7] OF CHAR;
date : ARRAY [1..8] OF CHAR;
TIME : ARRAY [1..5] OF CHAR;
rto : ARRAY [1..25] OF CHAR;
from : ARRAY [1..25] OF CHAR;
sbj : ARRAY [1..25] OF CHAR;
null1 : ARRAY [1..20] OF CHAR;
blks : ARRAY [1..6] OF CHAR;
flag : CHAR;
conf : INTEGER;
null2 : ARRAY [1..3] OF CHAR;
END;
CONST
RCDLEN = 128;
VAR
RepHdr : RepFmt;
Buffer : ARRAY [1..128] OF CHAR;
FileRec : ARRAY [1..RCDLEN] OF CHAR;
Rcdno,mode : INTEGER;
RepFile : FILE;
Success : WORD;
MsgWriteError : INTEGER;
PROCEDURE NextReply (VAR Rcdno: INTEGER);
VAR Nblocks, i, start,err: INTEGER;
TempStr,filler : STRING [25];
LastLine : STRING [130];
done, finished, bad : BOOLEAN;
myarray : string[7];
ch : char;
BEGIN
Bad := FALSE;
Finished := FALSE;
BlockRead (RepFile, Buffer, 1, success); {scrap first block}
REPEAT
FillChar(RepHdr,SizeOf(RepHdr),#32);
{$I-}
BlockRead (RepFile, RepHdr, 1, Success ); {read header}
{$I+}
Err:=IOResult;
If Err = 0
THEN
BEGIN
MyArray:='';
FOR i:=1 to 7 DO {Build conf #}
IF RepHdr.confasc[i] <>#32
THEN
MyArray:=Myarray+RepHdr.confasc[i];
Val(MyArray,CurrentBaseNumber,err); { convert >Integer}
END
ELSE
BEGIN
Writeln(' ERROR Blockreading file ');
Halt(err);
END;
(** The following DISPLAYs the header information **)
Writeln('Base # ',CurrentBaseNumber);
Writeln('Ref # ',ord(RepHdr.Flag);
Writeln('To '+rephdr. Rto);
Writeln('Subj '+RepHdr. Sbj); {Get subject of message}
Writeln('Date '+Rephdr. Date); {Set msg date mm-dd-yy}
Writeln('Time '+Rephdr. Time); {Set msg time hh:mm}
(** Now start work on actual message **)
Tempstr := '' ;
FOR i := 1 TO 6 DO IF RepHdr. Blks [i] <> #32 {Get the # of blks }
THEN {In the message}
Tempstr := Tempstr + RepHdr. Blks [i];
VAL (Tempstr, NBlocks, Success);
Done := FALSE;
FOR i := 1 TO Nblocks - 1 DO {do number of blocks}
BEGIN
FillChar (BUFFER, SizeOf (BUFFER), #32);
LastLine := '';
BlockRead (RepFile, BUFFER, 1, success);
LastLine := asc2STR (BUFFER, 128); {convert from ASCII}
FOR Start := 1 TO Length (LastLine) {string to TP string}
DO
IF LastLine [start] = #227 {#227 in QWK paks}
THEN {Marks eol}
LastLine [start] := #13;
Writeln(LastLine);
END;
UNTIL Eof(repfile) OR Finished;
close(repfile);
END;
[Back to MAIL SWAG index] [Back to Main SWAG index] [Original]