For loop running problem, please help.

Back to topics list To post a new topic, please log in or register
avatar
160
cashcube 2015.10.28 04:19
 

I have the following loop code:

for ( i = 0; i <= 59; i++)
{ 

 M = H + i;
  
     if(M == FS)
     { 
       Ready = StringConcatenate( IntegerToString(CH),":", IntegerToString(i));
       TL = StringToTime(Ready) ;
      //---------- Drawing time line--------------//
 
      Obj_Name="Tk";              // Name of the object
      ObjectCreate(Obj_Name,OBJ_VLINE,0,TL,0);// Create object..
      ObjectSet(Obj_Name,OBJPROP_COLOR, DarkOrange);       // ..and its color,..
      ObjectSet(Obj_Name,OBJPROP_STYLE, STYLE_DOT);       // ..and style..
     
     }   
     
 }     
    

When I run this program. For loop is working for first instance. For example when i = 6, M== FS condition satisfies, it draws the time line & then its gone out of the loop & again starting the loop from i = 0. 

I don't want that, I want it to start the loop now from i+1 after the first instance i.e in above example. Now loop should start after 6, i.e from 7.

How to do that?

Any help will be appreciated.

Thank you. 

avatar
3134
qjol 2015.10.28 05:45 #
 
string Obj_Name="Tk" + i;              // Name of the object

avatar
Moderator
3423
GumRai 2015.10.28 05:52 #
 

I'm not sure what you are trying to achieve

if you want to increment the starting point each time a for loop is called

   static int counter=0;
   for(i=counter; i<=59; i++)
     {
      //Your Code
     }
   counter++;
   if(counter>59)
      counter=0;

 that will do it, the last 2 lines set counter back to 0 when the maximum is reached

 In your code, you create an object called "Tk"

Once an object has been created, you cannot create another object with the same name. So if you want multiple lines, give a new name each time. If you just want a single line in a new position, use ObjectMove 

avatar
160
cashcube 2015.10.28 10:03 #
 
qjol:

GumRai:

I'm not sure what you are trying to achieve

if you want to increment the starting point each time a for loop is called

 that will do it, the last 2 lines set counter back to 0 when the maximum is reached

 In your code, you create an object called "Tk"

Once an object has been created, you cannot create another object with the same name. So if you want multiple lines, give a new name each time. If you just want a single line in a new position, use ObjectMove 

Thank you both for pointing out the problem. 

Thank you qjol , your code worked!

I updated the code.

 Obj_Name= IntegerToString(i) + "Tk" ; 

But when i tried to delete the those object at deinit() with the following code. Objects are not getting deleted.

for(int k=ObjectsTotal()-1;k>=0;k--)
   if(StringFind(ObjectName(k),"_Tk",0)>0)
      ObjectDelete(ObjectName(k));

How to delete those object when i remove the indicator?

Thank you. 

avatar
3134
qjol 2015.10.28 10:15 #
 
if(StringFind(ObjectName(k),"Tk",0)>0)

avatar
160
cashcube 2015.10.28 11:35 #
 
qjol:

Hi

Thank you for such a quick reply.

Previously I added "_" before as Object was naming like 4Tk etc etc. 

I understood my mistake.

Now its working perfectly.

 

 

 

 

Back to topics list  

To add comments, please log in or register