Ошибки, баги, вопросы - страница 1331

 

Вот так - действительно была бы неопределенность

void f( uint )  { Print( __FUNCSIG__ ); }
void f( int  )  { Print( __FUNCSIG__ ); }
void OnStart()
{
        char ch = 0;
        f( ch ); // неопределенность 
}

которая странным образом преодолеватся компилятором, если переписать пример по другому

#import "Test.ex5"
        void f( uint );
#import
        void f( int  )  { Print( __FUNCSIG__ ); }
void OnStart()
{
        char ch = 0;
        f( ch ); // вызывается f(int), а должна генерироваться неопределенность
}
 
Ваша правда
 
Не знаю, говорилось уже или нет. В Метаэдиторе при совпадении имени input-переменной с именем локальной переменной (либо с именем поля класса) последняя везде выделяется красным цветом, так же как input-переменная.  Возникает путаница при чтении кода.  Надо бы исправить это.
 
Alexey Navoykov:
Не знаю, говорилось уже или нет. В Метаэдиторе при совпадении имени input-переменной с именем локальной переменной (либо с именем поля класса) последняя везде выделяется красным цветом, так же как input-переменная.  Возникает путаница при чтении кода.  Надо бы исправить это.

давать одинаковые имена сущностям кода - попытка выстрелить себе в ногу :)

проще изменить имя input переменной и не будет ни каких проблем и путаниц...

 

MT4/845, Windows7/64 bit. Вопрос по переводе текста на новую строку с помощью \n. Сделал скрипт:

#property strict

string t1="Text_1";
string t2="Text_2";

void OnStart()
  {
   Print(t1+"\n "+t2);
   Print("Text_3"+"\n Text_4");
  }

Результат:


Надеялся, что значения Text_2 и Text_4 будут на других строках. Подскажите что не так.

 
Konstantin Karpov:

давать одинаковые имена сущностям кода - попытка выстрелить себе в ногу :)

проще изменить имя input переменной и не будет ни каких проблем и путаниц...

Ваш совет бессмысленен практически. Никто специально одинаковые имена не даёт. Код локальных функций живёт своей обособленной жизнью. А внешняя программа - своей.  При этом имена внешних переменных могут со временем меняться, а также добавляться новые внешние переменные.  И если после этого вдруг в одной из сотни функций окажется локальная переменная с таким же именем, то что, по-вашему, надо переименовывать глобальную переменную?   Не стоит искать оправдания багам разработчиков.
 

MT4/845, Windows7/64 bit. Скрипт:

#property strict

double d1 = 2.009745110811111111111111111;
double d2 = 3.654;
double d3;
//---
void OnStart()
  {
   d3=d1/d2;
   Print("A: d3 = ",DoubleToString(d3));
   Print("B: d3 = ",DoubleToStr(d3));
   Print("C: d3 = ",DoubleToString(d3,16));
   Print("D: d3 = ",DoubleToString(d3,8));
   Print("E: d3 = ",DoubleToString(NormalizeDouble(d3,8)));
   Print("F: d3 = ",DoubleToString(NormalizeDouble(d3,7)));
   Print("G: d3 = ",DoubleToString(NormalizeDouble(d3,8),7));
   Print("H: d3 = ",DoubleToString(NormalizeDouble(d3,8),8));
  }
//+------------------------------------------------------------------+

Результат:


Кто-нибудь знает как можно на печать вывести цифру 0.55001234 ?

 
Maxim Khrolenko:

MT4/845, Windows7/64 bit. Скрипт:

Результат:


Кто-нибудь знает как можно на печать вывести цифру 0.55001234 ?

 

 Print("C: d3 = ",DoubleToString(d3,8));

 

 
Maxim Khrolenko:

MT4/845, Windows7/64 bit. Вопрос по переводе текста на новую строку с помощью \n. Сделал скрипт:

Очевидно ошибка в MT4 (в MT5 все нормально)
 
A100:
Очевидно ошибка в MT4 (в MT5 все нормально)
Понятно, надеюсь разработчики обратят на это внимание.
Причина обращения: