Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 567

 

AlexeyVik, Vladon,

Ja, das ist, wie so oft, ziemlich offensichtlich. Entweder ist es meine Unaufmerksamkeit oder Überarbeitung. Danke für den Hinweis.

Ein weiterer Fehler ist aufgetreten, nicht einmal ein Fehler, sondern eine Warnung in der Funktion:

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

Auf der Linie:

            fia_OUT[li_int] = StrToDouble (fsa_Value[li_size - 1]) * fi_Factor;
Der Code scheint in Ordnung zu sein. Sollten diese Warnungen ignoriert werden?
 
Wie lautet die Warnung?
 
hoz:

AlexeyVik, Vladon,


Scheint ein normaler Code zu sein. Wollen Sie diese Warnungen ignorieren?


Was ist dort normal?

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

Sie haben eine Typinkongruenz (rot hervorgehoben): Sie versuchen, einen Wert vom Typ double an den Typ int zu übergeben, der einen viel größeren Wertebereich als int hat. Es kann zu einem Wertverlust kommen. Sicherlich warnt Sie der Compiler vor diesem Problem.
 
Vladon:
Wie lautet die Warnung?
possible loss of data due to type conversion
 
VladislavVG:

Was ist daran normal?

Sie haben eine Typinkongruenz (rot hervorgehoben): Sie versuchen, einen Wert vom Typ double an den Typ int zu übergeben, der einen viel größeren Wertebereich als int hat. Es kann zu einem Wertverlust kommen. Sicherlich warnt der Compiler vor diesem Problem.
Aber was ist mit der impliziten Typkonvertierung? Ich stimme zwar zu, dass dies einen Fehler verursachen kann. Am besten konvertieren Sie gleich über StrToInteger.
 

Wie berechne ich die Anzahl der Zeichen?

Und woher weiß ich, ob es ein freier Tag ist (Samstag, Sonntag)?

 
hoz:
Was ist mit der impliziten Typkonvertierung? Ich stimme zwar zu, aber das kann zu einem Fehler führen. Besser ist es, direkt über StrToInteger zu konvertieren.

Wenn Sie den int in double übergeben würden, gäbe es kein Problem. Sie würden einen Wert eines Typs mit einem kleineren Bereich an einen Typ mit einem größeren Bereich übergeben. Und es gäbe keinen möglichen Datenverlust. Und folglich gäbe es auch keine Warnung.
 

Hallo zusammen!

Die MQL4-Dokumentation hat sich geändert. Die Anleitung hat sich nicht geändert.

Um die neuen Funktionen von MQL4 zu nutzen, ist es notwendig, das MQL5-Tutorial zu studieren ?

Oder gibt es eine andere Spezialliteratur?

 
kosmos0975:

Hallo zusammen!

Die MQL4-Dokumentation hat sich geändert. Die Anleitung hat sich nicht geändert.

Um die neuen Funktionen von MQL4 zu nutzen, ist es notwendig, das MQL5-Tutorial zu studieren ?

Oder gibt es eine andere Spezialliteratur?

Nein, das müssen Sie nicht. Wenn Sie 4 studieren, studieren Sie die Dokumentation für 4. Obwohl, wenn überhaupt, sind sie irgendwie miteinander verflochten.

So wie ich es sehe, ist der Compiler jetzt vereinheitlicht (man kann sowohl für 4 als auch für sub-4 schreiben). Aus diesem Grund ist die Dokumentation bis auf einige Unterschiede gleich. Im Allgemeinen empfehle ich, die Dokumentation zu 4 zu lesen und von 5 Abstand zu nehmen. Auf den ersten Blick ist es etwas komplizierter. Sie werden dadurch nichts verlieren.

 
Ich habe von meinem Computer aus auf ein Live-Konto der Firma Teletrade zugegriffen und mein Tablet öffnet kein Live-Konto. Das Tablet läuft auf Android 4.2.2. woran liegt das?