[Back to FILES SWAG index] [Back to Main SWAG index] [Original]
{
Here's the demo Program I promised. You'll have to add the missing
Type definitions before you will be able to run this Program.
}
Program Demo_Read_User_Files;
Type
(* NOTE: Missing Type definitions need to go here, before this *)
(* Program will compile. *)
(* *)
(* ie: uflags, suflags, acrq, mhireadr, mzscanr, fzscanr, *)
(* colors. *)
(* *)
(* USERS.IDX : Sorted names listing *)
UserIdxRec = Record
Name : String[36]; (* Name (Real or handle) *)
Number : Integer; (* User number *)
RealName : Boolean; (* User's Real name? *)
Deleted : Boolean; (* Deleted or not *)
Left : Integer; (* Record or -1 *)
Right : Integer; (* Record or -1 *)
end;
(* USERS.DAT : User Records *)
UserRec = Record
Name : String[36]; (* System name *)
RealName : String[36]; (* Real name *)
PW : String[20]; (* PassWord *)
Ph : String[12]; (* Phone # *)
BDay : String[8]; (* Birthdate *)
FirstOn : String[8]; (* First on date *)
LastOn : String[8]; (* Last on date *)
Street : String[30]; (* Street address *)
CityState : String[30]; (* City, State *)
ZipCode : String[10]; (* Zipcode *)
(* Type of computer *)
UsrDefStr : Array[1..3] of String[35];
(* Occupation *)
(* BBS reference *)
Note : String[35]; (* SysOp note *)
UserStartMenu : String[8]; (* Menu to start at *)
LockedFile : String[8]; (* Print lockout msg*)
Flags : set of uflags; (* Flags *)
SFlags : set of suflags; (* Status flags *)
AR : set of acrq; (* AR flags *)
(* Voting data *)
Vote : Array[1..25] of Byte;
Sex : Char; (* Gender *)
TTimeOn, (* Total time on *)
UK, (* UL k *)
DK : LongInt; (* DL k *)
TLToday, (* # Min left today *)
ForUsr, (* Forward mail to *)
FilePoints : Integer; (* # Of File points *)
UpLoads, DownLoads, (* # Of ULs/# of DLs*)
LoggedOn, (* # Times on *)
MsgPost, (* # Message posts *)
EmailSent, (* # Email sent *)
Feedback, (* # Feedback sent *)
Timebank, (* # Mins in bank *)
TimebankAdd, (* # Added today *)
DlKToday, (* # KBytes dl today*)
DlToday : Word; (* # Files dl today *)
Waiting, (* Mail waiting *)
LineLen, (* Line length *)
PageLen, (* Page length *)
OnToday, (* # Times on today *)
Illegal, (* # Illegal logons *)
Barf,
LastMBase, (* # Last msg base *)
LastFBase, (* # Last File base *)
SL, DSL : Byte; (* SL / DSL *)
(* Message last read date ptrs *)
MHiRead : mhireadr;
(* Which message bases to scan *)
MzScan : mzscanr;
(* Which File bases to scan *)
FzScan : fzscanr;
(* User colors *)
Cols : colors;
Garbage : Byte;
(* Amount of time Withdrawn today *)
TimebankWith : Word;
(* Last day PassWord changed *)
PassWordChanged : Word;
(* Default QWK archive Type *)
DefArcType : Byte;
(* Last conference they were in *)
LastConf : Char;
(* Date/time of last qwk packet *)
LastQwk : LongInt;
(* Add own messages to qwk packet? *)
GetOwnQwk : Boolean;
(* Scan File bases For qwk packets? *)
ScanFilesQwk : Boolean;
(* Get private mail in qwk packets? *)
PrivateQwk : Boolean;
(* Amount of credit a User has *)
Credit : LongInt;
(* Amount of debit a User has *)
Debit : LongInt;
(* Expiration date of this User *)
Expiration : LongInt;
(* Subscription level to expire to *)
ExpireTo : Char;
(* User's color scheme # *)
ColorScheme : Byte;
(* Echo Teleconf lines? *)
TeleConfEcho : Boolean;
(* Interrupt during typing? *)
TeleConfInt : Boolean;
end;
(***** Check For IO error, and take some sort of action? *)
(* *)
Procedure CheckForIOerror;
Var
in_Error : Integer;
begin
in_Error := ioresult;
if (in_Error <> 0) then
begin
Writeln(' I/O Error = ', in_Error);
(* Take some sort of action to correct error, or halt Program *)
end
end; (* CheckForIOerror. *)
Var
rc_TempUI : UserIdxRec;
rc_TempUR : UserRec;
fi_UsersIdx : File of UserIdxRec;
fi_UsersDat : File of UserRec;
begin
(* Open USERS.IDX File. *)
assign(fi_UsersIdx, 'USERS.IDX');
{$I-}
reset(fi_UsersIdx);
{$I+}
CheckForIOerror;
(* Read first Record from File. *)
read(fi_UsersIdx, rc_TempUI);
CheckForIOerror;
(* Display data from the first Record. *)
With rc_TempUI do
begin
Writeln('Name = ', Name);
Writeln('Number = ', Number);
Writeln('Real Name = ', RealName);
Writeln('Deleted = ', Deleted);
Writeln('Left = ', Left);
Writeln('Right = ', Right)
end;
(* Read 10th Record from File. *)
seek(fi_UsersIdx, pred(10));
read(fi_UsersIdx, rc_TempUI);
CheckForIOerror;
(* Display data from the 10th Record. *)
With rc_TempUI do
begin
Writeln('Name = ', Name);
Writeln('Number = ', Number);
Writeln('Real Name = ', RealName);
Writeln('Deleted = ', Deleted);
Writeln('Left = ', Left);
Writeln('Right = ', Right)
end;
(* Close USERS.IDX File. *)
close(fi_UsersIdx);
CheckForIOerror;
(* Open USERS.DAT File. *)
assign(fi_UsersDat, 'USERS.DAT');
{$I-}
reset(fi_UsersDat);
{$I+}
CheckForIOerror;
(* Read first Record from File. *)
read(fi_UsersDat, rc_TempUR);
CheckForIOerror;
(* Display data from the first Record. *)
With rc_TempUR do
begin
Writeln('Name = ', Name);
Writeln('Real Name = ', RealName);
Writeln('Street = ', Street);
Writeln('CityState = ', CityState);
Writeln('ZipCode = ', ZipCode);
Writeln('Sex = ', Sex)
end;
(* Read 10th Record from File. *)
seek(fi_UsersDat, pred(10));
read(fi_UsersDat, rc_TempUR);
CheckForIOerror;
(* Display data from the 10th Record. *)
With rc_TempUR do
begin
Writeln('Name = ', Name);
Writeln('Real Name = ', RealName);
Writeln('Street = ', Street);
Writeln('CityState = ', CityState);
Writeln('ZipCode = ', ZipCode);
Writeln('Sex = ', Sex)
end;
(* Close USERS.DAT File. *)
close(fi_UsersDat);
CheckForIOerror;
end.
[Back to FILES SWAG index] [Back to Main SWAG index] [Original]