{ {This program will find the RA enviroment,open up CONFIG.RA and get the path to the message base as it is entered in RACONFIG,then open up the USERS.BBS as found in the message base,then list all users by scrolling with the PgUp/PgDn keys,this program does not do anything exept *view* the users,as such it is a good learning tool and a skeleton for a user Editor} Program RA_User_Viewer; Uses Crt, Dos; {$I STRUCT.200} Var UserRec : USERSrecord; UserFile : File of USERSrecord; SysPath : String; SysRec: CONFIGrecord; SysFile : File of CONFIGrecord; X,a : Integer; Y : LongInt; Done : Boolean; Ch : Char; Begin ClrScr; SysPath := GetEnv('RA'); {find out where RA is} if SysPath[length(SysPath)] <> '\' then SysPath := SysPath + '\'; SysPath := SysPath + 'CONFIG.RA'; {$I-} Assign(SysFile,Syspath); Reset(SysFile); {$I+} If IOresult <> 0 then Begin WriteLn(' Error Reading ',SysPath); WriteLn(' Exiting with Errorlevel 1'); Halt(1); {Exit At Errorlevel 1, RA or Config.ra not found} End; read(SysFile,SysRec); {open up CONFIG.RA and find the *Path* to the} { Messsage base,(where users.bbs is stored) } Close(SysFile); {and close it up right away} SysPath := GetEnv('RA'); {start again here to find the Users.bbs} {from the above Path} SysPath := SysRec.MsgBasePath + 'USERS.BBS'; {$I-} Assign(UserFile,Syspath); Reset(UserFile); {$I+} If IOresult <> 0 then Begin WriteLn(' Error Reading ',SysPath); WriteLn(' Exiting with Errorlevel 2'); Halt(2); {Exit At Errorlevel 2 ,RA\Msgbase or Users.bbs not found} End; X := 0; Done := False; Repeat textattr:=$07; ClrScr; Seek(UserFile, X); Read(UserFile, UserRec); gotoxy(1,3); Writeln('User # : ',X+1); Writeln('Name : ',UserRec.Name); Writeln('Handle : ',UserRec.Handle); WriteLn('Security : ',UserRec.Security); WriteLn('Location : ',UserRec.Location); WriteLn('Data # : ',UserRec.DataPhone); WriteLn('Home # : ',UserRec.VoicePhone); WriteLn('Birthday : ',UserRec.BirthDate); Write('Last Call : ',UserRec.LastDate); WriteLn(' ',UserRec.Lasttime); IF UserRec.Sex=0 THEN WriteLn('Sex : Unknown'); IF UserRec.Sex=1 THEN WriteLn('Sex : Male'); IF UserRec.Sex=2 THEN WriteLn('Sex : Female'); WriteLn('Addr 1 : ',UserRec.Address1); WriteLn('Addr 2 : ',UserRec.Address2); WriteLn('Addr 3 : ',UserRec.Address3); Writeln('Msg''s Posted : ',UserRec.Msgsposted); Writeln('Last Read : ',UserRec.Lastread); Writeln('Msg Group : ',UserRec.Msggroup); Writeln('Msg Area : ',UserRec.Msgarea); WriteLn('Comment : ',UserRec.Comment); gotoxy(46,3); writeln('Files Downloaded : ',UserRec.Downloads); gotoxy(46,4); writeln('Download Kilobytes : ',UserRec.Downloadsk); gotoxy(46,5); Writeln('Files Uploaded : ',UserRec.Uploads); gotoxy(46,6); writeln('Upload Kilobytes : ',UserRec.Uploadsk); gotoxy(46,7); writeln('Credits : ',UserRec.Credit); gotoxy(46,8); writeln('Protocol : ',UserRec.DefaultProtocol); gotoxy(46,9); writeln('Language : ',UserRec.Language); gotoxy(46,10); writeln('Number of Calls :',UserRec.NoCalls); textattr:=14; gotoxy(25,1); write(' Remote Access User Viewer'); textattr:=$01; gotoxy(1,2); for a:=1 to 80 do write('Í'); gotoxy(1,23); for a:=1 to 80 do write('Ä'); textattr:=15; gotoxy(1,24); Write(' (PgUp) Last User (PgDn) Next User (ESC) Exit'); Ch := Readkey; Case ch Of #81 : If X < FileSize(UserFile)-1 Then Inc(X); #73 : If X > 0 Then Dec(X); #27 : Done := True; #0 : Begin end; End; Until done; Close(UserFile); End.