Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 567

 

AlexeyVik, Vladon,

 Да, как обычно и бывает, всё вполне очевидно. То ли невнимательность моя, то ли переутомление. Благодарствую за подсказку.

Появилась ещё одна, даже не ошибка, а предупреждение в функции:

 

// 1.5 Возвращает массив INT из элементов массива STRING. =================================================================================
void fCreat_StrToInt (string& fsa_Value[],                                     // Массив элементов string
                      int& fia_OUT[],                                          // Возвращаемый массив int
                      int fi_IND,                                              // Количество ячеек в массиве
                      int fi_Factor = 1,                                       // Множитель
                      string fs_NameArray = "")                                // Имя возвращаемого массива
{
    int    li_size = ArraySize (fsa_Value);
    string ls_row = "";
//----
    ArrayResize (fia_OUT, fi_IND);
    
    for (int li_int = 0; li_int < fi_IND; li_int++)
    {
        if (li_int < li_size)
        {
            fia_OUT[li_int] = StrToInteger (fsa_Value[li_int]) * fi_Factor;
        }
        else
        {
            fia_OUT[li_int] = StrToDouble (fsa_Value[li_size - 1]) * fi_Factor;
        }
        ls_row = StringConcatenate (ls_row, fs_NameArray, "[", li_int, "] = ", fia_OUT[li_int], "; ");
    }
    
    if (fs_NameArray != "") Print (ls_row);
//----
}

В строке:

            fia_OUT[li_int] = StrToDouble (fsa_Value[li_size - 1]) * fi_Factor;
Вроде бы нормальный код. Эти предупреждения игнорировать что-ли?
 
а предупреждение какое?
 
hoz:

AlexeyVik, Vladon,


Вроде бы нормальный код. Эти предупреждения игнорировать что-ли?


Что там нормального ?

void fCreat_StrToInt (string& fsa_Value[],                                     // Массив элементов string
                      int& fia_OUT[],                                          // Возвращаемый массив int
                      int fi_IND,                                              // Количество ячеек в массиве
                      int fi_Factor = 1,                                       // Множитель
                      string fs_NameArray = "")                                // Имя возвращаемого массива
{
    int    li_size = ArraySize (fsa_Value);
    string ls_row = "";
//----
    ArrayResize (fia_OUT, fi_IND);
    
    for (int li_int = 0; li_int < fi_IND; li_int++)
    {
        if (li_int < li_size)
        {
            fia_OUT[li_int] = StrToInteger (fsa_Value[li_int]) * fi_Factor; // это верно
        }
        else
        {
            fia_OUT[li_int] = StrToDouble (fsa_Value[li_size - 1]) * fi_Factor; // Это НЕ ВЕРНО !
        }
        ls_row = StringConcatenate (ls_row, fs_NameArray, "[", li_int, "] = ", fia_OUT[li_int], "; ");
    }
    
    if (fs_NameArray != "") Print (ls_row);

У Вас несоответствие типов (выделено красным): Вы в тип инт пытаетесь передать значение типа дабл диапазон значений которого намного шире, чем у инта. Может быть потеря значения. Наверняка компилятор об этом и предупреждает.
 
Vladon:
а предупреждение какое?
possible loss of data due to type conversion
 
VladislavVG:

Что там нормального ?

У Вас несоответствие типов (выделено красным): Вы в тип инт пытаетесь передать значение типа дабл диапазон значений которого намного шире, чем у инта. Может быть потеря значения. Наверняка компилятор об этом и предупреждает.
А как же неявное преобразование типов? Хотя согласен, это может повлечь за собой ошибку. Лучше сразу преобразовать через StrToInteger.
 

Как посчитать количество символов?

И как узнать, выходной ли это день(суббота, воскресение)?

 
hoz:
А как же неявное преобразование типов? Хотя согласен, это может повлечь за собой ошибку. Лучше сразу преобразовать через StrToInteger.

Если бы Вы передавали инт в дабл, то проблем бы не было. Вы бы передавали значение типа с меньшим диапазоном в тип с большим. И возможной потери данных не было бы. И, соответственно, предупреждения тоже не было бы.
 

Всем Привет!

Документация MQL4 стала другой. Учебник не изменился.

Чтобы использовать новые возможности MQL4 нужно изучить учебник MQL 5 ?

Или есть другая специальная литература ?

 
kosmos0975:

Всем Привет!

Документация MQL4 стала другой. Учебник не изменился.

Чтобы использовать новые возможности MQL4 нужно изучить учебник MQL 5 ?

Или есть другая специальная литература ?

 Нет, не нужно. Если изучаешь 4-ку, изучай документацию к 4-ке. Хотя, если уж на то пошло, то они как-то сплелись.

 Как я вижу, компилятор нынче единый (можно писать как под 4-ку, так и под-ку). Потому и документация повторяется, за исключением некоторых различий. В общем-то, советую читать документаци к 4-ке, а в 5-ку не лезть. Она по сложнее, на первый взгляд. От этого Вы ничего не потеряете.

 
захожу на реальный счет через компанию телетрейд с компьютера все работает с планшетки не открывается реальный счет планшетка на андроиде 4.2.2. подскажите в чем причина?
Причина обращения: