a noobie question - help please

Back to topics list To post a new topic, please log in or register
avatar
215
buju 2016.02.01 09:32
 

Hi there

Im not asking for code , just a point in the right direction:

I need to define a changing variable, kinda hard to explain , so Ive sort've coded it:

 

extern int number= 'xxx';       // user input 1/2/3 . . etc

. . . .  

    double value1 = OrdersTotal();

   double value2 =OrdersTotal();

   double value3 = OrdersTotal();

 . . . 

if value(  number  ) . . .   //this would be value1 or value2 or value3 asdefined by the extern int number= 'xxx';

 

thanx so much 

avatar
Moderator
3427
GumRai 2016.02.01 09:53 #
 

It's difficult to work out exactly what you are asking.

Read the documentation for arrays, maybe that is what you mean? 

avatar
736
honest_knave 2016.02.01 10:57 #
 

If I understand what you want correctly, you want a user input which chooses which variable gets used in later calculations?

If so, you can't do that directly. You'd need to use a switch or if statement. 

enum variables
  {
   value1, // Use MyVal1
   value2, // Use MyVal2
   value3  // Use MyVal3
  };
extern variables number = value1;

void OnTick()
  {
   double MyVal1=10,
          MyVal2=20,
          MyVal3=30;
   switch(number)
     {
      case value1: Print(MyVal1); break; 
      case value2: Print(MyVal2); break;
      case value3: Print(MyVal3); break;
     }

  }


 

avatar
215
buju 2016.02.01 10:57 #
 

I try to explain: at start of EA a number is input eg 1,2,3 into extern int number , then during the execution of the EA a variable is called, eg value1,value2,value3. eg. If the input was '3' , then value3 would be called.

maybe . . .

 extern int number= 3;       // user input 1/2/3 . . etc

 . . .

if value[number ]  == 0; . . . 

 . .  

this would then be effectively :  if value3  ==0; . . . 

hope this makes sense :)

 

avatar
736
honest_knave 2016.02.01 11:05 #
 

Yep, that is what my example above should help you with.

I used an enumeration because it is cleaner for the end user and a switch statement is better for a large number of options, but you'd get exactly the same result using int and 'if' statements:

extern int number = 1;

void OnTick()
  {
   double MyVal1=10,
          MyVal2=20,
          MyVal3=30,
          value =27;
   if(number==1)      { if(MyVal1==value) {} } 
   else if(number==2) { if(MyVal2==value) {} }
   else if(number==3) { if(MyVal3==value) {} }
  }



avatar
736
honest_knave 2016.02.01 11:12 #
 

Alternatively, you can use the array like GumRai mentioned:

extern int number = 1;

void OnTick()
  {
   double MyVal0=10,
          MyVal1=20,
          MyVal2=30;

   double Values[3];
   Values[0]=MyVal0;
   Values[1]=MyVal1;
   Values[2]=MyVal2;

   if(Values[number]==27)
      {

 

avatar
215
buju 2016.02.01 11:21 #
 

yea , this is what I been looking for :)

thank you guys so very much

 

 

Back to topics list  

To add comments, please log in or register