Contributor: FRANK MCCORMICK 
{
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;
 

AltStyle によって変換されたページ (->オリジナル) /