用户多级权限判断

unit AdmitLevelUnit;

interface

uses
  Classes, SysUtils;


// 权限判断
// 函数SmallLevel可以判断64种权限  状态值为2^0=1,2^1=2,2^2=4,8,16....2^64
// 函数BigLevel可以判断36*36=1296种权限 '00','01',..'0z','10','11'....'zz'
// SmallLevel($1000,$111) result=false  SmallLevel($10,$111) result=true
// BigLevel('39','asef8392') result=false  BigLevel('83','asef8392') result=true
// PermitLevel为当前权限值 Userlevel为用户拥有的权限值
// 返回值true,为用户拥有当前权限值 false为用户没有当前权限值

type
  TAdmitLevel = class(TObject)
  public
    class function SmallLevel(PermitLevel,Userlevel : int64): boolean;
    class function BigLevel(PermitLevel,Userlevel  : String): boolean;
  end;

implementation

class function TAdmitLevel.SmallLevel(PermitLevel,Userlevel : int64): boolean;
begin
  result:=false;
  if (PermitLevel and Userlevel)>0 then result:=true;
end;
class function TAdmitLevel.BigLevel(PermitLevel,Userlevel  : String): boolean;
var
  ipos:integer;
begin
  result:=false;
  if length(PermitLevel)<>2 then exit;
  PermitLevel:=lowercase(PermitLevel);
  Userlevel:=lowercase(Userlevel);
  ipos:=pos(PermitLevel,Userlevel);
  while ipos >0 do
    if (ipos mod 2)=1 then
    begin
      result:=true;
      break;
    end
    else
    begin
      Userlevel:=copy(Userlevel,ipos+1,1296);
      ipos:=pos(PermitLevel,Userlevel);
    end;
end;

end.  

转载于:https://www.cnblogs.com/Thinknet/articles/392851.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值