どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 567

 

アレクセイビクブラドン

そうですね、普段からそうですが、非常にわかりやすいですね。私の不注意か過労のせいです。ご指摘ありがとうございます。

また、エラーでもなく、関数内の警告が 発生しました。

// 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:

アレクセイビクブラドン


普通のコードのようだ。この警告を無視していいのだろうか?


そこでは何が普通なのでしょうか?

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型はint型よりも値の範囲が 広くなっています。損なわれる場合があります。確かに、コンパイラはこのことを警告していますね。
 
Vladon:
警告は?
possible loss of data due to type conversion
 
VladislavVG:

どこが普通なんだ?

double型の値をint型に渡そうとしていますが、int型はint型よりもはるかに広い範囲の値を持つので、型の不一致(赤で表示)があります。損なわれる場合があります。確かにコンパイラは警告して いますね。
しかし、暗黙の型変換はどうでしょうか?エラーが発生する可能性があることには同意しますが。すぐにStrToIntegerで 変換した方が良いですよ。
削除済み  

文字数はどのように計算するのですか?

また、休日(土曜、日曜)かどうかはどうすればわかるのですか?

 
hoz:
暗黙の型変換はどうする?同意するものの、エラーが発生する可能性があります。StrToIntegerで 直接変換した方が良い。

intをdoubleで渡すのであれば問題はないのですが。範囲の小さい型の値を範囲の大きい型に渡すことになります。そして、データの損失もあり得ない。そして、その結果、警告もない。
[Deleted]  

みなさん、こんにちは。

MQL4のドキュメントが変更になりました。チュートリアルに変更はございません。

MQL4の新機能を使用するには、MQL5チュートリアル?

それとも、別の特殊な文献があるのでしょうか?

 
kosmos0975:

みなさん、こんにちは。

MQL4のドキュメントが変更になりました。チュートリアルに変更はございません。

MQL4の新機能を使用するには、MQL5チュートリアル?

それとも、別の特殊な文献があるのでしょうか?

いいえ、そんなことはありません。4を勉強するなら、4のためのドキュメントを勉強してください。どちらかというと、どこか絡み合っているような気もしますが。

私の見るところ、コンパイラが統一されました(4用とsub-4用の両方が書ける)。そのため、一部の違いを除き、ドキュメントが同じになっているのです。一般的に、私は4のドキュメントを読み、5には手を出さないようにとアドバイスしています。一見すると、もっと複雑です。そこから何かを失うことはありません。

 
パソコンからテレトレード社のライブ口座に アクセスしましたが、タブレットではライブ口座が開きません。タブレットはアンドロイド4.2.2で動作しています。