Set of enumerations with Records in SmartMS

Top 

Example code : Set of enumerations with Records in SmartMS

 type

  TMyValueSet = record

    vsData: array of Integer;

    function Contains(const aSetValue: Integer): Boolean;

    procedure Include(const aSetValue: Integer);

    procedure Exclude(const aSetValue: Integer);

  end;

 

function TMyValueSet.Contains(const aSetValue: Integer): Boolean;

begin

  result := False;

  if vsData.count > 0 then

    result := vsData.IndexOf(aSetValue, vsData.Low) >= 0;

end;

 

procedure TMyValueSet.Include(const aSetValue: Integer);

begin

if not contains(aSetValue) then

  vsData.Add(aSetValue);

end;

 

procedure TMyValueSet.Exclude(const aSetValue: Integer);

var

  mIndex: Integer;

begin

  mIndex := vsData.IndexOf(aSetValue, vsData.low);

  if mIndex >= 0 then

    vsData.delete(mIndex);

end;

 

procedure TForm1.W3Button1Click(Sender: TObject);

var valor : TMyValueSet;

begin

 //valor.vsData := ['Java','Delphi','Visual Basic','Javascript'];

 valor.vsData := [1,2,3,4,5,6];

 WriteLn(valor);

 valor.Exclude(5);  // exclude element 5

 WriteLn(valor);

 valor.Include(9);  // include element 9

 WriteLn(valor);

 if valor.Contains(9then

   WriteLn('SMS exist');

end;

[1,2,3,4,6,9];  // length = 6

SMS exist 

 

 

JS output:

 function W3Button1Click(Self, Sender$8) {

      var valor = {vsData:[]};

      valor.vsData = [1,2,3,4,5,6].slice();

      WriteLn(valor);

      TMyValueSet$Exclude(valor,5);

      WriteLn(valor);

      TMyValueSet$Include(valor,9);

      WriteLn(valor);

      if (TMyValueSet$Contains(valor,9)) {

         WriteLn("SMS exist");

      }

   }

 

/// TMyValueSet = record

function Copy$TMyValueSet(s,d) {

   d.vsData=s.vsData;

   return d;

}

function Clone$TMyValueSet($) {

   return {

      vsData:$.vsData

   }

}

/// function TMyValueSet.Contains(var Self: TMyValueSet; const aSetValue: Integer) : Boolean

function TMyValueSet$Contains(Self$7, aSetValue) {

   var Result = false;

   Result = false;

   if (Self$7.vsData.length>0) {

      Result = Self$7.vsData.indexOf(aSetValue,0)>=0;

   }

   return Result

}

/// procedure TMyValueSet.Include(var Self: TMyValueSet; const aSetValue: Integer)

function TMyValueSet$Include(Self$8, aSetValue$1) {

   if (!TMyValueSet$Contains(Self$8,aSetValue$1)) {

      Self$8.vsData.push(aSetValue$1);

   }

}

/// procedure TMyValueSet.Exclude(var Self: TMyValueSet; const aSetValue: Integer)

function TMyValueSet$Exclude(Self$9, aSetValue$2) {

   var mIndex$3 = 0;

   mIndex$3 = Self$9.vsData.indexOf(aSetValue$2,0);

   if (mIndex$3>=0) {

      Self$9.vsData.splice(mIndex$3,1)

      ;

   }

}