MT5에서 어레이를 강제로 지우시겠습니까? - 페이지 3

 
Vladimir Karputov :

어레이 초기화 해제는 전적으로 코드 작성자의 잘못입니다. 자신의 실수를 찾으십시오. 알고리즘을 재구축하십시오.

오류가 없습니다.

선언될 때 0 이 있는 배열의 자동 초기화 가 단순히 제거되었습니다. 무엇 때문에? - 알려지지 않은. 이 때문에 어레이를 사용하기 전에 직접 어레이를 지워야 합니다. 항상 편리한 것은 아닙니다.

 
Реter Konow :

오류가 없습니다.

선언될 때 0 이 있는 배열의 자동 초기화 가 단순히 제거되었습니다. 무엇 때문에? - 알려지지 않은. 이 때문에 어레이를 사용하기 전에 직접 어레이를 지워야 합니다. 항상 편리한 것은 아닙니다.

어떻게 원하셨어요? 무심코 "4"의 스타일로 작성? 존재하지 않는 인덱스를 무심코 쿼리합니까? 어레이를 초기화해 줄 "삼촌"을 원하십니까?

MQL5는 습관적이지 않도록 이러한 아마추어를 강력하고 즉각적으로 손에 쥡니다. 즉시 올바르게 작성하는 법을 배우십시오. 배열을 만든 경우 모든 인덱스를 무시하고 채우십시오. 한 번에 모두 채우고 싶지 않다면 어레이 크기를 미리 늘려서 단계별로 채우십시오.

일반적으로 정상적인 알고리즘을 즉시 수행하고 문제를 다른 사람에게 전가하지 마십시오.

 
Vladimir Karputov :

그리고 어떻게 원하셨어요? 무심코 "4"의 스타일로 작성? 존재하지 않는 인덱스를 무심코 쿼리합니까? 어레이를 초기화해 줄 "삼촌"에게 의지하시겠습니까?

MQL5는 습관적이지 않도록 이러한 아마추어를 강력하고 즉각적으로 손에 쥡니다. 즉시 올바르게 작성하는 법을 배우십시오. 배열을 만든 경우 모든 인덱스를 무시하고 채우십시오. 한 번에 모두 채우고 싶지 않다면 어레이 크기를 미리 늘려서 단계별로 채우십시오.

일반적으로 정상적인 알고리즘을 즉시 수행하고 문제를 다른 사람에게 전가하지 마십시오.

어레이의 예비 청소 - 오류가 거의 발생하지 않습니다. 그녀는 편안합니다.

MT5에서 - 선언된 배열 , 쓰레기를 정리한 다음 - 사용하십시오.

MT4에서 - 배열을 선언하고 사용합니다.

그것이 모든 차이점입니다.

어레이를 지우는 작업을 사용자에게 전가하는 이유는 무엇입니까?

그의 전문성이 향상됩니까? 아마도. 그러나 긍정적인 감정을 더하지는 않을 것입니다.) 그러니, 내 부정적인 말을 실례합니다. 며칠 동안 나는 무슨 일이 일어나고 있는지 알 수 없었습니다. 삶은 것.))

 
속도 때문에 자동 청소를 제거했습니다.
 
Реter Konow :

오류가 없습니다.

선언될 때 0 이 있는 배열의 자동 초기화 가 단순히 제거되었습니다. 무엇 때문에? - 알려지지 않은. 이 때문에 어레이를 사용하기 전에 직접 어레이를 지워야 합니다. 항상 편리한 것은 아닙니다.

Piotr, 이 절차는 시간이 걸리기 때문에 초기화가 제거되었으며 C++ 및 MQL5에서는 사용하지 않는 것에 대해 비용을 지불하는 것이 관례가 아닙니다. 배열 초기화는 항상 필요한 것은 아닙니다. 예를 들어 배열을 필요한 값으로 즉시 채우면 필요하지 않습니다.

그리고 vporos에서 모두 동일하지만 복잡성이 명확하지 않습니다. 결국, 당신은 항상 배열의 크기를 알고 있습니다. 배열을 재배열하는 경우 배열에 추가하는 추가 요소 수를 항상 알 수 있습니다. 따라서 ArrayResize 다음에 오는 ArrayInitialize 함수를 호출하는 것은 어렵지 않다.

많은 추가 사항을 고려해야 할 때 사람들이 MQL5를 어떻게 사용하는지 묻게 될 것입니다. 내가 대답할 것이다. 좋은 수준에서 MQL5를 사용하는 사람들은 표준 라이브러리를 사용하기 때문에 이 모든 사소한 일에 대해 생각조차 하지 않고 어레이 초기화 또는 재매핑을 처리하지 않고 단순히 새 값을 추가합니다. 그러나 당신은 dartanyan이고 그런 것을 인식하지 못하기 때문에 ArrayInitialize를 사용하여 어레이를 저수준에서 힘들게 관리하는 단 하나의 옵션만 있습니다.

 
Vasiliy Sokolov :

1. Piotr, 이 절차는 시간이 걸리기 때문에 초기화가 제거되었으며 C++ 및 MQL5에서는 사용하지 않는 것에 대해 비용을 지불하는 것이 관례가 아닙니다. 배열 초기화는 항상 필요한 것은 아닙니다. 예를 들어 배열을 필요한 값으로 즉시 채우면 필요하지 않습니다.

2. 그리고 귀하의 질문에서 복잡성이 무엇인지 명확하지 않습니다. 결국, 당신은 항상 배열의 크기를 알고 있습니다. 배열을 재배열하는 경우 배열에 추가하는 추가 요소 수를 항상 알 수 있습니다. 따라서 ArrayResize 다음에 오는 ArrayInitialize 함수를 호출하는 것은 어렵지 않다.

3. 추가로 고려해야 할 사항이 많을 때 사람들이 MQL5를 어떻게 사용하는지 궁금할 수 있습니다. 나는 대답할 것이다. 좋은 수준에서 MQL5를 사용하는 사람들은 표준 라이브러리를 사용하기 때문에 이 모든 사소한 일에 대해 생각조차 하지 않고 어레이 초기화나 재매핑을 다루지 않고 단순히 새로운 값을 추가합니다. 그러나 당신은 dartanyan이고 그런 것을 인식하지 못하기 때문에 ArrayInitialize를 사용하여 어레이를 저수준에서 힘들게 관리하는 단 하나의 옵션만 있습니다.

바실리, 한 점씩:

1. 논리에 따르면 배열을 지우는 절차는 컴파일 단계에서 컴파일러가 한 번 수행합니다. 제거되면 컴파일러의 속도를 높여 프로그래머의 편의를 해치고 싶었지만 수준을 높일 수 있습니다.

2. 커널 크기는 Cybcode에 따라 다릅니다. 요소가 많을수록 커널 배열이 커집니다. 따라서 커널은 동적입니다. 단계적으로 구축하고 있습니다. 셀에 쓰레기가 있는 경우 다른 구성 단계의 함수에서 한 셀에서 다른 셀로 참조하면 프로그램 충돌이 발생합니다.

MT4에서는 초기화되지 않은 셀이 임의의 값이 아닌 0이었기 때문에 이러한 문제가 없었습니다. 요컨대, 내 기술은 기본적으로 순수 어레이와 함께 작동해야 합니다.

3. 나는 어레이의 강제적인 커스텀 클리어링에 반대하지 않는다. 며칠 동안 나는 왜 모든 것이 충돌하는지 이해하지 못했습니다. 나는 그것이 나에 관한 것이라고 생각했지만 밝혀졌습니다. 편의 시설 중 하나가 나에게서 빼앗겼습니다.))


신경쓰지 마세요. 익숙해질 것입니다.


추신. 그건 그렇고, 내 코드는 절대적으로 크로스 플랫폼이라고 말해야합니다. 이 청소 외에는 변경할 필요가 없습니다!

 
Реter Konow :

오류가 없습니다.

선언될 때 0 이 있는 배열의 자동 초기화 가 단순히 제거되었습니다. 무엇 때문에? - 알려지지 않은. ...

빠른 프로그램을 작성할 수 있습니다. 초기화가 항상 필요한 것은 아니며 배열이 즉시 데이터로 채워지는 경우가 더 많습니다.

 
Dmitry Fedoseev :

빠른 프로그램을 작성할 수 있습니다. 초기화가 항상 필요한 것은 아니며 배열이 즉시 데이터로 채워지는 경우가 더 많습니다.

확인. 분명한.

 
Реter Konow :

... 셀에 쓰레기가 있는 경우 다른 구성 단계의 함수에서 한 셀에서 다른 셀로 참조하면 프로그램 충돌이 발생합니다.

Peter, 당신의 핵심이 쓰레기라면 당신만이 책임이 있습니다. MQL4와 달리 MQL5는 사용자가 원하는 것을 이해하려고 하지 않으며, 당연히 그렇습니다.

 
Z.Y. Peter는 당신이 운명의 의지에 의해 한 번에 JavaScript에 관한 포럼에 참여했다면 훨씬 더 운이 좋았을 것이라고 생각합니다. 이 매력의 마차와 작은 카트가 있습니다. 나는 큰 높이에 도달했을 것입니다!