Скачать MetaTrader 5

Помогите убрать предупреждения

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
prt
369
prt  

При компиляции выдает вот такие предупреждения

possible use of uninitialized variable 'dist' 3123.mq4 28 109

possible use of uninitialized variable 'shag' 3123.mq4 37 111

possible use of uninitialized variable 'dist' 3123.mq4 72 109

possible use of uninitialized variable 'shag' 3123.mq4 81 110

Подскажите пожалуйста в какую сторону глядеть... ведь эти переменные объявленны

Файлы:
3123.mq4 6 kb
Alexander
2441
Alexander  

Наверное проще будет заменить

 if      (Digits==3 || Digits==5){dist=Dist_to_function*10*Point;    shag=Shag_to_function*10*Point;}
     else if (Digits==2 || Digits==4){dist=Dist_to_function*Point;       shag=Shag_to_function*Point;}

на

 if      (Digits==3 || Digits==5){dist=Dist_to_function*10*Point;    shag=Shag_to_function*10*Point;}
     else{dist=Dist_to_function*Point;       shag=Shag_to_function*Point;}
Dmitry Fedoseev
43506
Dmitry Fedoseev  
prt:


Подскажите пожалуйста в какую сторону глядеть... ведь эти переменные объявленны


При объявлении переменной надо присвоить ей значение:

int x=0;

Vasyl Nosal
18652
Vasyl Nosal  
Integer:


При объявлении переменной надо присвоить ей значение:

int x=0;

Если она не глобальная.
Dmitry Fedoseev
43506
Dmitry Fedoseev  
eevviill:
Если она не глобальная.


Той, по которой компилятор выдает предупреждение.
Alexey Viktorov
8037
Alexey Viktorov  

Чтобы было понятней давайте расшифруем всё по-порядку

#property strict

void Trailing(int Magic_to_function, string Symbol_Curent ,int Dist_to_function, int Shag_to_function, bool Isp_shag, bool Bezubitok)
{  
     double dist; 
     double shag;
     
     if      (Digits==3 || Digits==5){dist=Dist_to_function*10*Point;    shag=Shag_to_function*10*Point;}
     else if (Digits==2 || Digits==4){dist=Dist_to_function*Point;       shag=Shag_to_function*Point;}

1. Объявили переменные без явной инициализации

2. Присваивается значение этим переменным только при условии 1 или 2

Соответственно в случае не выполнения этих условий переменные так и останутся не инициализированными... О чём и предупреждает компилятор.

Я-бы написал так, учитывая что это, как мне кажется, для мультивалютника...

#property strict

void Trailing(int Magic_to_function, string Symbol_Curent ,int Dist_to_function, int Shag_to_function, bool Isp_shag, bool Bezubitok)
{
     double sp = MarketInfo(Symbol_Curent, MODE_POINT);
     double dist = Dist_to_function*sp; 
     double shag = Shag_to_function*sp;
     
     if(Digits == 3 || Digits == 5) // или лучше if(Digits % 2 == 1)
      {
       dist = Dist_to_function*10*sp;
       shag = Shag_to_function*10*sp;
      }
// и дальше по тексту
}
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий