Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 567

 

AlexeyVik, Vladon,

Sì, come di solito accade, è abbastanza ovvio. O è la mia disattenzione o il mio superlavoro. Grazie per il suggerimento.

Si è verificato un altro errore, nemmeno un errore, ma un avvertimento nella funzione:

// 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);
//----
}

Sulla linea:

            fia_OUT[li_int] = StrToDouble (fsa_Value[li_size - 1]) * fi_Factor;
Il codice sembra essere a posto. Questi avvertimenti dovrebbero essere ignorati?
 
Qual è l'avvertimento?
 
hoz:

AlexeyVik, Vladon,


Sembra un codice normale. Dovremmo ignorare questi avvertimenti?


Cosa c'è di normale lì?

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);

Avete un errore di tipo (evidenziato in rosso): state cercando di passare un valore di tipo double nel tipo int, che ha una gamma di valori molto più ampia di int. Ci può essere una perdita di valore. Sicuramente il compilatore ti avverte di questo.
 
Vladon:
Qual è l'avvertimento?
possible loss of data due to type conversion
 
VladislavVG:

Cosa c'è di normale?

Avete un type mismatch (evidenziato in rosso): state cercando di passare un valore di tipo double nel tipo int, che ha una gamma di valori molto più ampia di int. Ci può essere una perdita di valore. Sicuramente il compilatore lo avverte.
Ma che dire della conversione implicita dei tipi? Anche se sono d'accordo che questo può causare un errore. È meglio convertire subito tramite StrToInteger.
 

Come si calcola il numero di caratteri?

E come faccio a sapere se è un giorno di riposo (sabato, domenica)?

 
hoz:
E la conversione implicita dei tipi? Anche se sono d'accordo, può causare un errore. Meglio convertire direttamente tramite StrToInteger.

Se passaste l'int in double, non ci sarebbero problemi. Passereste un valore di un tipo con un intervallo più piccolo a un tipo con un intervallo più grande. E non ci sarebbe nessuna possibile perdita di dati. E, di conseguenza, non ci sarebbe nemmeno un avvertimento.
 

Ciao a tutti!

La documentazione di MQL4 è cambiata. Il tutorial non è cambiato.

Per utilizzare le nuove caratteristiche di MQL4 è necessario studiare il tutorial MQL5 ?

O c'è un'altra letteratura speciale?

 
kosmos0975:

Ciao a tutti!

La documentazione di MQL4 è cambiata. Il tutorial non è cambiato.

Per utilizzare le nuove caratteristiche di MQL4 è necessario studiare il tutorial MQL5 ?

O c'è un'altra letteratura speciale?

No, non è vero. Se studiate il 4, studiate la documentazione per il 4. Anche se, semmai, le due cose sono in qualche modo intrecciate.

Per come la vedo io, il compilatore è ora unificato (si può scrivere sia per 4-ka che per sub-ka). Ecco perché la documentazione è la stessa, tranne che per alcune differenze. In generale, consiglio di leggere la documentazione per il 4 e stare lontano dal 5. È più complicato, a prima vista. Non ci perderete niente.

 
Sono entrato in un conto live attraverso la società Teletrade dal mio computer e il mio tablet non apre un conto live il tablet è in esecuzione su Android 4.2.2. qual è la ragione?
Motivazione: