MQL4/5 문서 작업 및 컴파일을 위한 SlickEdit 설정. - 페이지 10

 
CArrayObj *CSelect::ByOrderProperty(
CArrayObj *list_source ,ENUM_ORDER_PROP_INTEGER property, long value,ENUM_COMPARER_TYPE mode)
  {
   if (list_source== NULL ) return NULL ;
   CArrayObj *list = new CArrayObj();
   if (list== NULL ) return NULL ;
   list. FreeMode ( false );
   ListStorage. Add (list);
   int total=list_source. Total ();
   for ( int i= 0 ; i<total; i++)
     {
       COrder *obj =list_source. At (i);
       if (!obj. SupportProperty (property)) continue ;
       long obj_prop=obj. GetProperty (property);
       if (CompareValues(obj_prop,value,mode)) list. Add (obj);
     }
   return list;
  }

다음은 Artyom Trishkin 라이브러리의 예입니다. 모든 것이 정상입니다. 단 한 가지입니다. 작성자는 나중에 사용할 것이라고 주장하면서 사용하지 않은 래퍼가 많이 있으며 지금은 메모, 알림용입니다.
그의 라이브러리를 사용하고 싶지만 코드를 접을 수 있는 추가 편집기 없이 탐색하려면 코드 방향을 지정하지 않고는 불가능합니다. MetaEditor에서 전체 코드를 처음부터 끝까지 스크롤하는 동안 원하는 것을 이미 잊어버렸습니다. 나는 이미 Ctrl + g와 같은 표준 편집기에 가능한 모든 추가 기능과 펜과 종이 한 장을 사용하는 데 지쳤습니다!

문제:

list. FreeMode ( false );
list_source. At (i);

포인터로 메소드에 매개변수를 전달하거나 다른 방식으로 클래스에 대한 포인터를 생성하면 MQL(또는 this )이 불가능합니다. SlickEdit는 엄격한 MQL 정의인 포인터가 전달하는 클래스 메서드 정의를 거부합니다.
그러나 포인터 연산자(*)를 참조 연산자(&)로 변경하면 모든 것이 표시되고 클래스 멤버의 자동 감지도 작동합니다. 그러나 이것은 MQL에 허용되지 않습니다!

따라서 SlickEdit에서 연산자(&)와 동일한 것으로 간주되도록 연산자(*) 포인터를 설정하는 방법과 위치에 대한 문제가 발생했습니다.  

 
BmC :

다음은 Artyom Trishkin 라이브러리의 예입니다. 모든 것이 정상이지만 한 가지: 작성자는 나중에 사용할 것이라고 주장하면서 사용하지 않은 래퍼가 많이 있으며 지금은 메모, 알림용입니다.
그의 라이브러리를 사용하고 싶지만 코드를 접을 수 있는 추가 편집기 없이 탐색하려면 코드 방향을 지정하지 않고는 불가능합니다. MetaEditor에서 전체 코드를 처음부터 끝까지 스크롤하는 동안 원하는 것을 이미 잊어버렸습니다. 나는 이미 Ctrl + g와 같은 표준 편집기에 가능한 모든 추가 기능과 펜과 종이 한 장을 사용하는 데 지쳤습니다!

문제:

포인터로 메소드에 매개변수를 전달하거나 다른 방식으로 클래스에 대한 포인터를 생성하면 MQL(또는 this )이 불가능합니다. SlickEdit는 엄격한 MQL 정의인 포인터가 전달하는 클래스 메서드 정의를 거부합니다.
그러나 포인터 연산자(*)를 참조 연산자(&)로 변경하면 모든 것이 표시되고 클래스 멤버의 자동 감지도 작동합니다. 그러나 이것은 MQL에 허용되지 않습니다!

따라서 SlickEdit에서 연산자(&)와 동일한 것으로 간주되도록 연산자(*) 포인터를 설정하는 방법과 위치에 대한 문제가 발생했습니다.  

(&) 및 (*) 연산자는 재정의할 수 없습니다(SE의 잘못이 아님).

SE에서 C++와 같이 MQL5로 작업할 수 있습니까? 무엇을 조언해야 할지 모르겠습니다.... C#과 같이 작업해 보십시오.

 
Andrey Dik :

(&) 및 (*) 연산자는 재정의할 수 없습니다(SE의 잘못이 아님).

SE에서 C++와 같이 MQL5로 작업할 수 있습니까? 무엇을 조언해야 할지 모르겠습니다.... C#과 같이 작업해 보십시오.

저는 매크로가 상황에 따라 연산자(* 및 &)를 다르게 취급할 것이라고 생각하기 때문에 C# 및 C++가 아닌 사용자 언어로 작업합니다.

 
BmC :

저는 매크로가 상황에 따라 연산자(* 및 &)를 다르게 취급할 것이라고 생각하기 때문에 C# 및 C++가 아닌 사용자 언어로 작업합니다.

SE에서 사용자 정의 언어를 만들고 작업할 수 있습니까? 나는 그것에 대해 몰랐다.

나는 다음을 의미했다.


 

언어 설정은 전문가용 버전에서만 가능합니다. SlickEdit 참조에 나열되지 않은 자신의 언어를 만들 때 도움말에 표시된 대로 더 심층적인 매크로 설정에 직면하게 되므로 전달된 클래스에서 중첩 메서드를 검색하도록 구성된 이 매크로를 찾고 있습니다. 바늘.
C++ 언어에서 포인터(*)로 전달된 객체는 MQL에서 (.) 대신 연산자(->)를 사용한다는 것을 의미한다는 것을 알아냈습니다. 따라서 매크로에서 조건부 컴파일 명령을 사용하여 대체하거나 적용하면 사용자 언어를 정의할 때 이러한 연산자가 자체적으로 대체된다는 결론입니다. 여기서부터 제안된 C# 또는 C++ 언어의 설정을 이 경우에는 사용할 수 없다는 결론이 나오므로 실제로는 오퍼레이터에 대한 호출 구조를 변경하고 싶습니다.

버전 25를 다운로드하고 설정하고 포럼에서 사용자 언어 연결 설정이 더 유연해졌다는 것을 읽었습니다. 사용자 지정 언어와 템플릿 C # 및 C ++를 모두 만들고 어떤 것이 가장 좋은지 확인한 다음 25번째 버전 설정 지침을 게시할 것입니다.

 
BmC :

언어 설정은 전문가용 버전에서만 가능합니다. SlickEdit 참조에 나열되지 않은 자신의 언어를 만들 때 도움말에 표시된 대로 더 심층적인 매크로 설정에 직면하게 되므로 전달된 클래스에서 중첩 메서드를 검색하도록 구성된 이 매크로를 찾고 있습니다. 바늘.
C++ 언어에서 포인터(*)로 전달된 객체는 MQL에서 (.) 대신 연산자(->)를 사용한다는 것을 의미한다는 것을 알아냈습니다. 따라서 매크로에서 조건부 컴파일 명령을 사용하여 대체하거나 적용하면 사용자 언어를 정의할 때 이러한 연산자가 자체적으로 대체된다는 결론입니다. 여기서부터 제안된 C# 또는 C++ 언어의 설정을 이 경우에는 사용할 수 없다는 결론이 나오므로 실제로는 오퍼레이터에 대한 호출 구조를 변경하고 싶습니다.

버전 25를 다운로드하고 설정하고 포럼에서 사용자 언어 연결 설정이 더 유연해졌다는 것을 읽었습니다. 사용자 지정 언어와 템플릿 C # 및 C ++를 모두 만들고 어떤 것이 가장 좋은지 확인한 다음 25번째 버전 설정 지침을 게시할 것입니다.

예, 사용자 정의 언어를 생성할 수 있다면 다음과 같이 시도할 수 있습니다. 사용자 정의 언어 생성, 해당 CPP 또는 C# 언어 파일에서 기성 언어의 설정 전송 및 그런 다음 해당 연산자의 동작을 변경해 보십시오.

 
Andrey Dik :

예, 사용자 정의 언어를 생성할 수 있다면 다음과 같이 시도할 수 있습니다. 사용자 정의 언어 생성, 해당 CPP 또는 C# 언어 파일에서 기성 언어의 설정 전송 및 그런 다음 해당 연산자의 동작을 변경해 보십시오.

그래서 나는 모든 것을 했고, 참조로 개체를 전달하는 데 더 적합하기 때문에 C#(CSharp)에서만 설정을 전송해야 합니다. C++(cpp)에서는 연산자(.) 대신에 연산자(->)를 삽입하여 개체의 메서드에 액세스해야 합니다.

두 번째 문제는 사용자 지정 언어를 만들 때 버전 25에서 색상이 복사 설정을 통해 전송되지 않거나 SlickEdit v25.0.2.0 64비트 탱크일 뿐입니다. (나는 이것이 채색에 대한 개발자의 실수라고 확신합니다. 모든 것이 이전 버전에서 작동했지만 이번 버전에서는 중단되었습니다.)