uninit lokale Variablen

 

Hallo Kollegen,


mal eine Frage zu den lokalen Variablen, welche ich in einer 

void()

verwende, das terminal schreibt mir immer 


das ganze ist in einer Funktion in einem include gespeichert


void CTradePanel::OnClickButton1(void) // Buy Button
  {

   double SL_Neu,TP_Neu, price, StopPips;
   MqlTick tick;
   if(!SymbolInfoTick(Symbol(),tick)) GetLastError();

   if(m_radio_group2.Value()==0) Type_Vaild=ORDER_TIME_DAY;
   else if(m_radio_group2.Value() == 1) Type_Vaild = ORDER_TIME_SPECIFIED;
   else if(m_radio_group2.Value() == 2) Type_Vaild = ORDER_TIME_GTC;
   else Type_Vaild=ORDER_TIME_SPECIFIED_DAY;

   if(m_radio_group1.Value()==0) Risikoart=FixLots;
   else if(m_radio_group1.Value()==1) Risikoart=Geldbetrag;
   else Risikoart=Prozent;

   if(m_radio_group1.Value()!=0 && m_check_box2.Checked()==false)
     {
      Print("use Fix lots only with SL = 0");
     }
   else if(m_radio_group1.Value()==0 && m_check_box2.Checked()==false)
     {
      SL_Neu = 0;
      if(ObjectFind(0,"TPLine")) TP_Neu = ObjectGetDouble(0,"TPLine",OBJPROP_PRICE,0);
      else TP_Neu = 0;
      price=ObjectGetDouble(0,"BuySellLine",OBJPROP_PRICE,0);
      Lots=StringToDouble(m_edit1.Text());
     }
   else
     {
      SL_Neu=ObjectGetDouble(0,"StopLine",OBJPROP_PRICE,0);
      TP_Neu=ObjectGetDouble(0,"TPLine",OBJPROP_PRICE,0);
      price=ObjectGetDouble(0,"BuySellLine",OBJPROP_PRICE,0);
      StopPips=MathAbs(SL_Neu-price)*MathPow(10,_Digits);
      Lots=RisikoberechnungPanel(_Symbol,StringToDouble(m_edit1.Text()),StopPips,Risikoart);
     }



  }



hat da jemand eine Idee?

 
amando:

hat da jemand eine Idee?

Ganz einfach.... der compiler meckert weil du Variablen definierst aber nicht initialisierst ( mit einem Wert füllen) .

Sie dann aber möglichweise, weil in einem if else Konstrukt, benutzt werden.


Deshalb :   Grundregel 1 -> gleich nach dem definieren initialisieren.

 
Christian:

Ganz einfach.... der compiler meckert weil du Variablen definierst aber nicht initialisierts ( mit einem Wert füllen) .

Sie dann aber möglichweise weil in einem if else Konstrukt benutzt werden.


Deshalb :   Grundregel 1 -> gleich nach dem definieren initialisieren.

ah, alles klar, d.h

einfach  

TP_neu=0;

danke, jetzt ist mir das klar, initialisieren = mit Wert befüllen ;-) eigentlich eh logisch, sonst hängen die in der Luft