任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 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);

你有一个类型不匹配的问题(用红色标出):你试图将一个double类型的值传递给int类型,而int类型的值范围 比double宽得多。可能会有价值损失。当然,编译器会警告你这一点。
 
Vladon:
有什么警告?
possible loss of data due to type conversion
 
VladislavVG:

这有什么正常的?

你有一个类型不匹配的问题(用红色标出):你试图将一个double类型的值传递给int类型,而int类型的值范围比double宽得多。可能会有价值损失。当然,编译器会警告这一点
但隐含的类型转换呢?虽然我同意这可能会导致错误。你最好马上通过StrToInteger 进行转换。
 

我如何计算字符数?

我怎么知道是否是休息日(周六、周日)?

 
hoz:
隐式类型转换呢?虽然我同意,但这可能会导致错误。最好直接通过StrToInteger 转换。

如果你是用双倍数传递int,那就没有问题了。你将把一个范围较小的类型的值传递给一个范围较大的类型。而且不会有数据丢失的可能。因此,也不会有任何警告。
 

大家好!

MQL4的文档已经改变。该教程没有改变。

为了使用MQL4的新功能,有必要学习MQL5教程。

还是有其他特殊的文献?

 
kosmos0975:

大家好!

MQL4的文档已经改变。该教程没有改变。

为了使用MQL4的新功能,有必要学习MQL5教程。

还是有其他特殊的文献?

不,你不知道。如果你学习4,学习4的文件。虽然,如果有的话,它们在某种程度上是相互关联的。

在我看来,现在的编译器是统一的(你可以为4和sub-4编写)。这就是为什么文件是一样的,除了一些差异。一般来说,我建议阅读4号文件,远离5号文件。乍一看,它更复杂。你不会从中失去任何东西。

 
我通过Teletrade公司从我的电脑访问了一个真实账户,我的平板电脑不能打开真实账户,平板电脑运行在安卓4.2.2上。