포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 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);

유형 불일치가 있습니다(빨간색으로 강조 표시됨): 이중 유형 값을 int 유형에 전달하려고 하며, 그 범위는 int 유형보다 훨씬 더 넓습니다. 의미 상실이 있을 수 있습니다. 확실히 컴파일러는 이에 대해 경고합니다.
 
Vladon :
경고가 무엇입니까?
possible loss of data due to type conversion
 
VladislavVG :

거기 뭐가 정상이야?

유형 불일치가 있습니다(빨간색으로 강조 표시됨): 이중 유형 값을 int 유형에 전달하려고 하며, 그 범위는 int 유형보다 훨씬 더 넓습니다. 의미 상실이 있을 수 있습니다. 확실히 컴파일러는 이에 대해 경고합니다.
암시적 유형 변환은 어떻습니까? 동의하지만 오류가 발생할 수 있습니다. StrToInteger 를 통해 즉시 변환하는 것이 좋습니다.
 

문자 수를 계산하는 방법?

그리고 휴일(토요일, 일요일)인지 확인하는 방법은 무엇입니까?

 
hoz :
암시적 유형 변환은 어떻습니까? 동의하지만 오류가 발생할 수 있습니다. StrToInteger 를 통해 즉시 변환하는 것이 좋습니다.

int를 double로 전달했다면 문제가 없을 것입니다. 범위가 더 작은 유형의 값을 더 큰 유형에 전달할 것입니다. 데이터 손실 가능성은 없습니다. 따라서 경고도 없을 것입니다.
 

안녕하세요 여러분!

MQL4 문서가 변경되었습니다. 교과서는 바뀌지 않았다.

새로운 MQL4 기능을 사용하려면 MQL 5 튜토리얼을 공부해야 합니까?

아니면 다른 특별한 문헌이 있습니까?

 
kosmos0975 :

안녕하세요 여러분!

MQL4 문서가 변경되었습니다. 교과서는 바뀌지 않았다.

새로운 MQL4 기능을 사용하려면 MQL 5 튜토리얼을 공부해야 합니까?

아니면 다른 특별한 문헌이 있습니까?

아니요, 필요하지 않습니다. 4-ku를 공부한다면 4-ke에 대한 문서를 공부하십시오. 하지만, 그런 면에서 그들은 어떻게든 얽혀 있습니다.

내가 볼 수 있듯이 컴파일러는 이제 통합되었습니다(4-ku 및 under-ku 둘 다 작성할 수 있음). 따라서 몇 가지 차이점을 제외하고 문서가 반복됩니다. 일반적으로 4일에 대한 문서를 읽는 것이 좋지만 5일에 올라가지 않는 것이 좋습니다. 언뜻보기에는 더 어렵습니다. 이것으로 아무것도 잃지 않을 것입니다.

 
나는 컴퓨터에서 원격 무역 회사를 통해 실제 계정 으로 이동하고 모든 것이 태블릿에서 작동하며 실제 태블릿 계정은 Android 4.2.2에서 열리지 않습니다. 이유가 뭔지 말해줘?