Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Размести программу в Маркете - это 7 миллионов потенциальных клиентов
prt
364
prt 2014.03.30 15:52 

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

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 2014.03.30 17:10  

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

 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
41175
Dmitry Fedoseev 2014.03.31 03:38  
prt:


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


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

int x=0;

Vasyl Nosal
18198
Vasyl Nosal 2014.03.31 05:15  
Integer:


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

int x=0;

Если она не глобальная.
Dmitry Fedoseev
41175
Dmitry Fedoseev 2014.03.31 06:14  
eevviill:
Если она не глобальная.


Той, по которой компилятор выдает предупреждение.
Alexey Viktorov
5172
Alexey Viktorov 2014.03.31 06:52  

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

#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;
      }
// и дальше по тексту
}
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий