anchor.diff:   Self.root      := ini.ReadBool(section, 'root', false);
    Self.firstname := ini.ReadString(section, 'fname', '');
    Self.lastname  := ini.ReadString(section, 'lname', '');
  - Self.lastlogin := StrToDateTime(ini.ReadString(section, 'lastlogin', ''));
  + try
  +   Self.lastlogin := StrToDateTime(ini.ReadString(section, 'lastlogin', ''));
  + except
  +   Self.lastlogin := 0;
  + end;
    Self.fban      := ini.ReadBool(section, 'ban', false);
    Self.freg      := ini.ReadBool(section, 'reg', false);
   
  
positive.code: unit User;
  
  interface
  
  uses IniFiles, Generics.Collections, RPConst, DCPsha256, SysUtils, Classes;
  
  type
    TUser = class
     private
      fpasswd:string;
      fban:boolean;
      freg:boolean;
  
        procedure SetPasswd(passwd:string);
        procedure SetBan(state:boolean);
        procedure SetReg(state:boolean);
  
     public
  
      id:string;
      firstname:string;
      lastname:string;
      root:boolean;
      OblR: TDictionary<string, TORControlRights>;
      lastlogin:TDateTime;
  
  
        constructor Create(); overload;
  
negative.code: 
  class function TUser.ComparePasswd(plain:string; hash:string):boolean;
  begin
   Result := (hash = TUser.GenerateHash(AnsiString(plain)));
  end;//function
  
  class function TUser.GenerateHash(plain:AnsiString):string;
  