포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 1031

 
artmedia70 :
지표가 실수로 삭제되었을 때 이 지표에 의해 생성된 전역 변수를 삭제해야 하는 경우 지표의 OnDeinit() 함수에서 이러한 전역 변수의 삭제를 지정해야 합니다.
동시에 이것이 타임프레임 전환이 아니라 차트에서 지표의 제거인지 확인해야 합니다.
고맙습니다!
 
artmedia70 :
터미널에서 F3 키를 누르고 이 변수를 수동으로 삭제합니다. 그것은 한 번 생성되고 환경에 있습니다. 거기에서 고문이 읽습니다. 아니면 내가 당신을 오해 했습니까? 표시기 코드 자체에서 단순히 전역 터미널 변수 생성을 제거했지만 그 전에 이미 이 표시기에 의해 생성되었습니까?

Artem, 무슨 일이 일어나고 있는지 이해하도록 도와주세요. 여기 https://www.mql5.com/ru/code/10237 은 터미널의 모든 거래 이벤트에 대해 알려주는(더 정확하게는 통지하는 데 사용되는) 어드바이저의 코드입니다. 이 코드는 잘 작동했습니다. 나는 꽤 오랫동안 사이트를 떠나 있었다. mql4에 몇 가지 변경 사항이 있습니다. 이제 이 코드는 오류와 함께 컴파일됩니다. 배열 초기화 문자열을 컴파일할 때 오류가 발생합니다. 시간되시면 한번 보세요.

감사합니다.

ps. 문제가 뭔지 다른 분이 봐주시면 감사하겠습니다.

 
AlexeyVik :
글쎄요, 아마도 제가 제대로 공부한 적이 없는 C++에서 그런 것인지도 모르겠습니다. 그러나 mql은 단지 C와 비슷할 뿐입니다. 두 번째로, 귀하의 예에서 MAX_NUM_ORDER가 변수가 아닐 수 있지만 배열 차원을 변수로 설정할 수 없습니다.
배열 초기화 에 대해서는 여기를 참조하십시오 https://book.mql4.com/ru/variables/arrays
 
SunnYtheDreamer :

배열의 행과 열이 각각 선택되고 거기에 하나의 특정 값을 입력할 수 있습니다. 즉, 항목은 일반 변수와 동일해야 하지만 모든 값을 재설정해야 합니다.

ArrayInitialize(Arr_Tickets, 0);



요소에 대한 링크는 다음과 같습니다. - Arr_Tickets[MAX_NUM_ORDER,2] =0;

나는 그것을 썼다 - Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0};

 
valenok2003 :
배열 초기화에 대해서는 여기를 참조하십시오 https://book.mql4.com/ru/variables/arrays
네, 배열이 전역 수준에서 선언된 것 같아서 현명하게 하려고 합니다...
 
valenok2003 :

요소에 대한 링크는 다음과 같습니다. - Arr_Tickets[MAX_NUM_ORDER,2] =0;

나는 그것을 썼다 - Arr_Tickets[MAX_NUM_ORDER][2] = {0,0, ,0,0};

Arr_Tickets[MAX_NUM_ORDER,2] - 배열 요소 에 대한 참조

Arr_Tickets[MAX_NUM_ORDER][2] - 배열 요소에 대한 참조

컴파일러는 당신이 그것을 어떻게 작성하든 맹세하지 않으며, 다른 것이 아닌 하나의 특정 값을 기대합니다. 특별히 테스트했습니다.
다른 포럼 회원에게도 제공한 링크에서 동일한 확인: 각 인덱스가 대괄호로 묶인 인덱스를 지정할 수도 있습니다.

 
SunnYtheDreamer :

Arr_Tickets[MAX_NUM_ORDER,2] - 배열 요소에 대한 참조

Arr_Tickets[MAX_NUM_ORDER][2] - 배열 요소에 대한 참조

컴파일러는 당신이 그것을 어떻게 작성하든 맹세하지 않으며, 다른 것이 아닌 하나의 특정 값을 기대합니다. 특별히 테스트했습니다.
다른 포럼 회원에게도 제공한 링크에서 동일한 확인: 각 인덱스가 대괄호로 묶인 인덱스를 지정할 수도 있습니다.

질문을 다시 하겠습니다. - 모든 것이 컴파일되고 제대로 작동하기 전에 그 이유를 설명할 수 있는 사람이 있습니까? 작동하지 않는 코드는 코드베이스에 허용되지 않았습니다...

그건 그렇고, 53 및 54 코드 줄에서 오류가 발생합니다. 54행에 무슨 문제가 있습니까? 그런 다음 문자열 배열을 시작하는 방법은 무엇입니까?

교과서를 뒤져도 string형 배열에 대한 정보는 없었고 숫자형 배열에 대한 정보만 있었습니다. 내가 잘못 검색한 것은 아닐까? 링크를 주세요.

 
valenok2003 :

Artem, 무슨 일이 일어나고 있는지 이해하도록 도와주세요. 여기 https://www.mql5.com/ru/code/10237 은 터미널의 모든 거래 이벤트에 대해 알려주는(더 정확하게는 통지하는 데 사용되는) 어드바이저의 코드입니다. 이 코드는 잘 작동했습니다. 나는 꽤 오랫동안 사이트를 떠나 있었다. mql4에 몇 가지 변경 사항이 있습니다. 이제 이 코드는 오류와 함께 컴파일됩니다. 배열 초기화 문자열을 컴파일할 때 오류가 발생합니다. 시간되시면 한번 보세요.

감사합니다.

ps. 문제가 뭔지 다른 분이 봐주시면 감사하겠습니다.

먼저 코드 시작 부분에 #property strict를 삽입하고 컴파일합니다.

다음과 같았습니다.

 #property copyright "Copyright © valenok2003@mail.ru"
#property link        "http://bluedream.ucoz.ru"

이 작업을 수행:

 #property copyright "Copyright © valenok2003@mail.ru"
#property link        "http://bluedream.ucoz.ru"
#property strict

그 후, 당신은 그것이 발행할 오류를 볼 필요가 있습니다.

 
artmedia70 :

먼저 코드 시작 부분에 #property strict를 삽입하고 컴파일합니다.

다음과 같았습니다.

이 작업을 수행:

그 후, 당신은 그것이 발행할 오류를 볼 필요가 있습니다.

꽂았는데 아무것도 바뀌지 않았습니다.

Arr_Tickets[MAX_NUM_ORDER][2] = {0,0,,0,0} 문자열을 가정합니다. ArrayInitialize (Arr_Tickets, 0 )로 바꿀 수도 있습니다.

Arr_Order_Symbol[MAX_NUM_SYMBOL] = {"",,""}; 문자열로 무엇을 해야 합니까? ArrayInitialize (Arr_Order_Symbol,"" ) 를 통해 문자열 배열을 초기화하려고 할 때 "내 이해가 안 돼요..."라는 메시지가 표시됩니다. 함수로 처리할 적절한 개체가 없습니다...

 
valenok2003 :

꽂았는데 아무것도 바뀌지 않았습니다.

Arr_Tickets[MAX_NUM_ORDER][2] = {0,0,,0,0} 문자열을 가정합니다. ArrayInitialize (Arr_Tickets, 0 )로 바꿀 수도 있습니다.

Arr_Order_Symbol[MAX_NUM_SYMBOL] = {"",,""}; 문자열로 무엇을 해야 합니까? ArrayInitialize (Arr_Order_Symbol,"" ) 를 통해 문자열 배열을 초기화하려고 할 때 "내 이해가 안 돼요..."라는 메시지가 표시됩니다. 함수로 처리할 적절한 개체가 없습니다...

이 배열은 0입니다. ZeroMemory()
사유: