Changes in new versions / Delphi 11 Alexandria

// *** before: ***
// a number could be written in decimal or in hex. A bit mask had to be
// translated into hex in your head, or built by shifting
const
  FlagRead  = $01;      // 0000 0001
  FlagWrite = $02;      // 0000 0010
  FlagExec  = $04;      // 0000 0100
  Mask      = $0A;      // which bits are these, exactly?

var
  Bits: Byte;
begin
  Bits := (1 shl 3or (1 shl 1);
end;

// *** in version 11: ***
const
  FlagRead  = %00000001;
  FlagWrite = %00000010;
  FlagExec  = %00000100;
  Mask      = %00001010;    // the bits are the literal

var
  Bits: Byte;
begin
  Bits := %00001010;
  Writeln(Bits);            // 10 - the value is an ordinary number

  // the prefix is the percent sign, the same one other Pascal compilers
  // have used for years
end;