Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 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.

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

Всем Привет!

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

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

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

 
kosmos0975:

Всем Привет!

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

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

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

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

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

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