오류, 버그, 질문 - 페이지 1499

 
Alexey Kozitsyn :
프로그래밍 지옥으로 가는 길은 글로벌포장 되어 있습니다." - Steve McConnell
이 경고가 없는 경우의 예만 표시됩니다. 변수를 전역으로 생성할지 아니면 로컬로 생성할지 여부는 프로그래머의 취향과 경험의 문제입니다.
 
Ilyas :
지역 및 전역 변수 (단순 유형 또는 생성자가 없는 "복합")의 실제 사용 부족에 대한 경고가 추가되지만 이 작업은 우선 순위가 낮습니다.
이해했습니다 감사합니다. 만일을 대비 하여 여기에서 개발자들의 관심을 끌도록 노력하겠습니다 .
 
Alexey Kozitsyn :
PC당 하나의 활성화. 터미널 수는 중요하지 않습니다.
어딘가에 확인이 있습니까?
 
Vladimir Pastushak :
어딘가에 확인이 있습니까?

구매자는 제품 구매 또는 대여 시 판매자가 지정한 횟수만큼 제품을 활성화할 수 있는 권한을 획득합니다. 예를 들어 제품을 구매할 때 20개의 활성화가 허용된 경우 판매자가 이후에 이 수를 줄인 경우에도 구매자는 20개의 다른 하드웨어 구성 에 제품을 설치할 수 있습니다.

https://www.mql5.com/ru/market/rules

Правила покупки торговых роботов, индикаторов, книг и журналов в MetaTrader Market
Правила покупки торговых роботов, индикаторов, книг и журналов в MetaTrader Market
  • www.mql5.com
Общие положения и правила пользования сервисом Market
 
이 포스트 에서 해상도로 축소한 이미지는 이미 원본보다 6배(바이트) 더 큽니다. 무엇 때문에?
 
Alexey Kozitsyn :
Slava, 좋은 오후입니다. 라이브러리에 대해 언급할 수 있습니까(위의 질문)?

이것이 우리가 그것을 수정하는 방법입니다

 long CChart::Open( const string symbol_name, const ENUM_TIMEFRAMES timeframe)
  {
   m_chart_id= ChartOpen (symbol_name,timeframe);
   if (m_chart_id== 0 )
      m_chart_id=- 1 ;
   return (m_chart_id);
  }
 
Slawa :

이것이 우리가 그것을 수정하는 방법입니다

네, 감사합니다. 그게 최선의 선택입니다. 도서관용. 오류 4024는 어떻습니까?
 
Slawa :

이것이 우리가 그것을 수정하는 방법입니다

그것을 하는 요점이 무엇입니까? 표준 라이브러리는 사용자가 원하는 대로 사용하지 말고 구조의 이념에 따라 사용해야 합니다. 사용자 Alexey Kozitsyn 은 이를 잘못 사용하고 출력에서 많은 버그를 얻습니다. CCart 객체를 생성한 직후, Attach 메소드를 사용하여 클래스 객체에 차트를 첨부해야 합니다. 이 메서드는 오버로드되어 현재 차트와 원하는 차트를 모두 바인딩할 수 있습니다. 그리고 Open 메서드를 변경하면 현재 차트로 작업하는 기능이 중지됩니다.

그리고 표준 라이브러리의 개발자에게 요청 - 라이브러리의 구조에 대한 설명을 작성하십시오. 많은 사람들이 그것을 이해하지 못하고 실수하기 시작하며, 당신은 그들의 인도에 따라 당신이 한 모든 것을 깨기 시작합니다.

 
Alexey Kozitsyn :

MT4 표준 라이브러리 에 대한 질문입니다.

Chart.mqh 파일

차트를 열고 싶습니다. Open(const string symbol_name, const ENUM_TIMEFRAMES timeframe) 메서드를 사용합니다.

1. 사용할 수 없는 기호를 사용하는 경우 ChartOpen() 함수는 오류 #4024 - 내부 오류를 반환합니다. 나는 오류가 내부적일 수 있다고 주장하지 않지만 훨씬 더 정확한 오류 코드 - # 4106 - 알 수 없는 문자가 있습니다. 오류 반환 코드를 변경할 수 있습니까? 왜냐하면 4024는 개발자에게 오류를 찾을 위치에 대해 아무 것도 알려주지 않습니다.

2. 실패하면 ChartOpen()은 m_chart_id 필드를 0으로 설정합니다. 현재 차트로 작업을 시작하지만 사실이 아닙니다. 작업에 필요한 일정을 열 수 없습니다. 따라서 Detach() 메서드가 호출되지 않으면 현재 차트는 작업 후 단순히 닫힙니다. 또한 이것이 올바른 접근 방식이 아니라고 생각합니다. ChartOpen() 함수가 오류의 경우 -1을 반환하면 더 좋을 것입니다.

차트로 작업하기 전에 Attach !!!를 사용하여 클래스 개체에 차트를 첨부해야 합니다. 현재 차트( 0 )로 작업하지 않으려면 이 확인을 구현하고 작업에서 현재 차트의 사용을 금지합니다.

그리고 차트로 작업하고 Detach 메서드로 차트를 닫지 않고 종료한다는 것은 무엇을 의미합니까? 클래스의 소멸자나 OnDeinit에 한 줄을 작성하는 것이 정말 어렵습니까? 개체에 대한 작업은 엄격하게 제어되어야 하며, 그러면 실수를 피할 수 있습니다.

 
coderex :

그것을 하는 요점이 무엇입니까? 표준 라이브러리는 사용자가 원하는 대로 사용하지 말고 구조의 이념에 따라 사용해야 합니다. 사용자 Alexey Kozitsyn 은 이를 잘못 사용하고 출력에서 많은 버그를 얻습니다. CCart 객체를 생성한 직후, Attach 메소드를 사용하여 클래스 객체에 차트를 첨부해야 합니다. 이 메서드는 오버로드되어 현재 차트와 원하는 차트를 모두 바인딩할 수 있습니다. 그리고 Open 메서드를 변경하면 현재 차트로 작업하는 기능이 중지됩니다.

그리고 표준 라이브러리의 개발자에게 요청 - 라이브러리의 구조에 대한 설명을 작성하십시오. 많은 사람들이 그것을 이해하지 못하고 실수하기 시작하며, 당신은 그들의 인도에 따라 당신이 한 모든 것을 깨기 시작합니다.

나는 이것을하는 요점이 무엇인지 위에 분명히 썼습니다. 차트를 열 때 오류가 발생한 경우(예: 잘못된 기호가 지정된 경우) 어떤 이유로 인해 Attach(void) 메서드와 유사하게 Open() 메서드는 현재 차트의 식별자를 물체. 왜 부과합니까? 현재 차트로 작업하려면 말씀하신 대로 Attach(void) { m_chart_id=ChartID(); } 그리고 그게 다야. 그리고 여기서 우리는 어떤 이유로 잘못된 작업을 시작하는 분명히 잘못된 상황을 얻습니다. 일반적으로 이것은 ChartOpen() 함수 자체의 문제이지만, 변경하지 않을 것이기 때문에 최소한 라이브러리에서 변경하게 놔두십시오.

또 다른 주장입니다. 논리적으로 생각하십시오. 이 메서드를 Open()이라고 합니다. 새로운 일이 생길 징조입니다! 그리고 우리는 이 새로운 작업을 시작할 것입니다. 그리고 여기에서 우리는 오래된 것으로 작업하고 있음이 밝혀졌습니다. 논리가 안 보이네요. 그리고 당신은 이 부정확성을 어떤 목적으로 사용하는 것 같습니다.

이 메서드는 오버로드되어 현재 차트와 원하는 차트를 모두 바인딩할 수 있습니다. 그리고 Open 메서드를 변경하면 현재 차트로 작업하는 기능이 중지됩니다.

무엇을 죽일 것인가? 여전히 Attach() 메서드가 있고 이전과 같이 수행합니다. 말씀하신대로 Open() 함수에서 반환된 식별자를 확인하고 0보다 작으면 Attach(void) 메서드를 호출하십시오. 모두. 그러나 Attach(void) 메서드를 즉시 호출하고 현재 차트를 첨부할 수 있다면 왜 그러한 정원이 울타리가 되어야 하는지 명확하지 않습니다.

아마도 나는 당신을 이해하지 못합니다. 그런 다음 예를 들어 주십시오.

그리고 표준 라이브러리의 개발자에게 요청 - 라이브러리의 구조에 대한 설명을 작성하십시오. 많은 사람들이 그것을 이해하지 못하고 실수하기 시작하며, 당신은 그들의 인도에 따라 당신이 한 모든 것을 깨기 시작합니다.

얼마나 대단한 말씀입니까... 당신이 다른 사람들보다 똑똑하다고 생각하지 마십시오. 당신이 그렇지 않은 것으로 판명될 수도 있습니다.