{ 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.