int AnotherVariable; if(mypick=="aaa") AnotherVariable=aaa; if(mypick=="bbb") AnotherVariable=bbb;
Hmmm why are you using a string? aaa is an integer not a string.... It's the NAME of the variable .. not the VALUE of the variable.. The VALUE is 3.
Just say
int mypick =aaa;//which means mypick is equal to the value that the variable named aaa is holding..
now if you need it to be a string so that it will print you can say..
Print( "The value of mypick is: ",aaa);
or
Print("The value of aaa is: ",aaa);
when you say aaa it prints the VALUE of that variable named aaa.. 3
when you say "aaa" it prints aaa......
PipPip...Jimdandy
You can do it in this roundabout way
string ss="aaa,3,bbb,5,a,1,b,2,c,3,d,4,e,5,f,6,g,7,h,8,i,9,j,10,k,11,l,12,m,13,n,14,o,15,p,16,q,17,r,18,s,19,t,20,u,21,v,22,w,23,x,24,y,25,z,26"; string ssArray[]; StringSplit(ss,44,ssArray); int ssarraysize=ArraySize(ssArray); string mypick="aaa"; int ret=0; for (int x=0;x<ssarraysize-1;x++) { if(ssArray[x]==mypick) { ret=StrToInteger(ssArray[x+1]); Print("mypick ",mypick,"=",ret); break; } if(x==ssarraysize-2) Print("mypick ",mypick,"=NO VALUE"); }
You could use defines
#define aaa 3 #define bbb 5 Print(aaa); Print(bbb);
or create some enums
enum vals { aaa=3, bbb=5 }; Print(aaa); Print(bbb);
I want to return a number based on the content of a string.
//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int StringtoNumber(string mypick) { switch(mypick) { case aaa : return(3); break; case bbb : return(5); break; case ... : return(.); break; case ... : return(.); break; } return(-1);//not defined } //int mypickup = StringtoNumber("aaa");
many ways
int StringtoNumber(string mypick) { switch(mypick) { case "aaa" : return(aaa); break; case "bbb" : return(bbb); break; case ... : return(.); break; case ... : return(.); break; } return(-1);//not defined }I dont have a better way but write cases one by one.
int aaa=3;
int bbb=5;
string mypick="aaa";
- Your last post
- An associative structure
struct keyedInt{ string key; int val; }; keyedInt values[]; void keyedIntInsert(string key, int val){ int n = ArrayRange(values,0); ArrayResize(values, n+1); values[n].key = key, values[n].val = val; } int StringtoNumber(string mypick){ for(int idx = ArrayRange(values,0)-1; idx >= 0; idx--) if(values[idx].key = mypick) return( values[idx].val ); return(EMPTY); } OnInit(){ keyedIntInsert("aaa", 3); keyedIntInsert("bbb", 5); : int val = StringtoNumber("bbb"); // 5
or define a associative type class (see MQL4/include/Arrays/ArrayInt.mqh - Don't use a strings at all.
Constant values
non-constant enum keys{ aaa, bbb, ...}; int vals[] = { 3, 5, ... } : int value = vals[bbb];
enum keys{ aaa, bbb, ..., nKeys}; int vals[nKeys]; On...(){ vals[aaa] = 3; valus[bbb] = 5; : int value = vals[bbb]; // 5
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
I want to return a number based on the content of a string.
int aaa=3;
int bbb=5;
string mypick="aaa";
For example:
if mypick="aaa", then I want return the value of aaa (aaa=3 in my example, so that the returned value should 3)
if mypick="bbb", then I want return the value of bbb
I google the forum but still don't know how to do that. Need your help. Thanks