home *** CD-ROM | disk | FTP | other *** search
- const accessstr:array [accesstype] of string[8]=
- ('By level','Keep out','Let in','');
-
- procedure setuseraccflag; {Forward: var u:userrec; bn:integer; ac:accesstype}
- begin
- if (ord(ac) and 1)=1
- then u.access1:=u.access1+[bn]
- else u.access1:=u.access1-[bn];
- if (ord(ac) and 2)=2
- then u.access2:=u.access2+[bn]
- else u.access2:=u.access2-[bn]
- end;
-
- function getuseraccflag (var u:userrec; bn:integer):accesstype;
- var ac:accesstype;
- begin
- getuseraccflag:=accesstype(ord(bn in u.access1) or
- (ord(bn in u.access2) shl 1))
- end;
-
- procedure setallflags (bn:integer; ac:accesstype);
- var cnt:integer;
- u:userrec;
- begin
- for cnt:=1 to filesize(ufile)-1 do begin
- seek (ufile,cnt);
- read (ufile,u);
- setuseraccflag (u,bn,ac);
- seek (ufile,cnt);
- write (ufile,u)
- end
- end;
-
- procedure setalluserflags; { FORWARD (var u:userrec; ac:accesstype) }
- var b1,b2:byte;
- begin
- b1:=(ord(ac) and 1)*255;
- b2:=((ord(ac) and 2) shr 1)*255;
- fillchar (u.access1,32,b1);
- fillchar (u.access2,32,b2)
- end;
-
- procedure getacflag (var ac:accesstype; var tex:mstr);
- begin
- writestr ('[K]ick off, [B]y level, [L]et in:');
- ac:=invalid;
- if length(input)=0 then exit;
- case upcase(input[1]) of
- 'B':ac:=bylevel;
- 'L':ac:=letin;
- 'K':ac:=keepout
- end;
- tex:=accessstr[ac]
- end;