Contributor: MARTIN WOODS

{
AR> Could someone give me sample source code to access the RA USER FILE
This should help get you started...
}
Program RA_User_Viewer;
Uses Crt, Dos;
{$I STRUCT.200}
Var
   UserRec : USERSrecord;
   UserFile : File of USERSrecord;
   SysPath,UserPath,ConfigPath : String;
   SysRec: CONFIGrecord;
   SysFile : File of CONFIGrecord;
   X,a : Integer;
   Done : Boolean;
   Ch : Char;

Function FixPath(Path : String): String;
    Begin
    If Path[Length(Path)] <> '\' Then
        Path := Path+'\';
     FixPath := Path;
    End;
procedure drawscreen;
begin;
    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(11,24);
   Write('(PgUp) Last User     (PgDn) Next User     (ESC) Exit');
end;

Begin
   ClrScr;
   SysPath := GetEnv('RA');           {[drive]:\RA}
       SysPath := Fixpath(SysPath);   {[drive]:\RA\}
       ConfigPath := SysPath + 'CONFIG.RA'; {[drive]:\RA\CONFIG.RA}
   {$I-}
   Assign(SysFile,ConfigPath);
   Reset(SysFile);
    {$I+}
    If IOresult <> 0 then Begin
    WriteLn(' Error Reading ',ConfigPath);
    WriteLn(' Exiting with Errorlevel 1');
    Halt(1);  {Exit at errorlevel 1,[drive]:\RA\CONFIG.RA not Found}
    End;      {Is the enviroment variable set?}
   read(SysFile,SysRec); {open up CONFIG.RA and find the Path to the}
                         { Messsage base,(where users.bbs is stored) }
   Close(SysFile);
   UserPath := FixPath(SysRec.MsgBasePath); { here it is! }
   UserPath:=UserPath + 'USERS.BBS';
   {$I-}
   Assign(UserFile,UserPath);
   Reset(UserFile);
   {$I+}
    If IOresult <> 0 then Begin
     WriteLn(' Error Reading ',UserPath);
     WriteLn(' Exiting with Errorlevel 2');
     Halt(2);{Exit At Errorlevel 2,[drive]:\Msgbase\Users.bbs not found}
    End;
   X := 0;
   Done := False;
Repeat
   textattr:=$07;
   ClrScr;
   Seek(UserFile, X);
   Read(UserFile, UserRec);
   gotoxy(1,3);
   with UserRec do
   Begin
   Writeln('User #    : ',X+1);
   Writeln('Name      : ',Name);
   Writeln('Handle    : ',Handle);
   WriteLn('Security  : ',Security);
   WriteLn('Location  : ',Location);
   WriteLn('Data #    : ',DataPhone);
   WriteLn('Home #    : ',VoicePhone);
   WriteLn('Birthday  : ',BirthDate);
   Write('Last Call : ',LastDate);
   WriteLn(' ',Lasttime);
          case Sex of
               1 : writeln ('Sex       : Male');
               2 : writeln ('Sex       : Female');
              else writeln ('Sex       : Unknown');
            end;
   WriteLn('Addr 1    : ',Address1);
   WriteLn('Addr 2    : ',Address2);
   WriteLn('Addr 3    : ',Address3);
   Writeln('Msg''s Posted : ',Msgsposted);
   Writeln('Last Read    : ',Lastread);
   Writeln('Msg Group    : ',Msggroup);
   Writeln('Msg Area     : ',Msgarea);
   WriteLn('Comment      : ',Comment);
   gotoxy(46,3);
   writeln('Files Downloaded   : ',Downloads);
   gotoxy(46,4);
   writeln('Download Kilobytes : ',Downloadsk);
   gotoxy(46,5);
   Writeln('Files Uploaded     : ',Uploads);
   gotoxy(46,6);
   writeln('Upload Kilobytes   : ',Uploadsk);
   gotoxy(46,7);
   writeln('Credits  : ',Credit);
   gotoxy(46,8);
   writeln('Protocol : ',DefaultProtocol);
   gotoxy(46,9);
   writeln('Language : ',Language);
   gotoxy(46,10);
   writeln('Number of Calls :',NoCalls);
   end; {with}
    drawscreen;
    Ch := Readkey;
   if (ch=#0) then ch:=readkey;
   Case ch Of
     #81 : If X < FileSize(UserFile)-1 Then Inc(X);
     #73 : If X > 0 Then Dec(X);
     #27 : Done := True;
end;
Until done;
Close(UserFile);
textattr:=$07;
clrscr;
End.