편집기에서 공동 프로젝트에 대해 논의해 봅시다. 공동 프로젝트가 있는 이유와 이동하는 위치 - 페이지 13

 
Artyom Trishkin :
답은 이미 있었다. 컴파일러 언어를 통해 정의합니다. 여러 언어가 있어야 하는 것(예: 설정)은 각 언어별로 작성됩니다.
추가로 #ifdef를 구출합니다.
조금 이해가 가지 않습니다. 터미널의 언어에 따라 EA 설정의 언어를 프로그래밍 방식으로 변경할 수 있습니까 ???
 
Vladimir Pastushak :
조금 이해가 가지 않습니다. 터미널의 언어에 따라 EA 설정의 언어를 프로그래밍 방식으로 변경할 수 있습니까 ???

프로그램 수준에서 프로그래밍 방식으로 - 아니요. 컴파일 수준에서 그렇습니다.

 
Artyom Trishkin :

프로그램 수준에서 프로그래밍 방식으로 - 아니요. 컴파일 수준에서 그렇습니다.


즉, 프로그램에 54개의 설정이 있고 다른 설명과 다른 링크를 사용하여 다른 언어로 여러 버전의 프로그램을 만들어야 하는 경우 각 버전의 설정을 번역하고 결합할 필요가 없습니까?

 
Vladimir Pastushak :

즉, 프로그램에 54개의 설정이 있고 다른 설명과 다른 링크를 사용하여 다른 언어로 여러 버전의 프로그램을 만들어야 하는 경우 각 버전의 설정을 번역하고 결합할 필요가 없습니까?

필요.

프로그램이 작동하는 동안 표시되는 모든 것은 터미널 언어에 연결될 수 있으며 설정은 코드 자체에만 연결될 수 있습니다. 이렇게 하려면 프로그램에서 여러 버전의 입력 매개변수를 만들고 정의로 컴파일할 때 원하는 설정 언어를 선택해야 합니다.

 
Artyom Trishkin :

필요.

프로그램이 작동하는 동안 표시되는 모든 것은 터미널 언어에 연결될 수 있으며 설정은 코드 자체에만 연결될 수 있습니다. 이렇게 하려면 프로그램에서 여러 버전의 입력 매개변수를 만들고 정의로 컴파일할 때 원하는 설정 언어를 선택해야 합니다.


어떨지 상상도 안가는데... 지식이 부족한거같은데 예를 들어도 될까요?

 
Vladimir Pastushak :

어떨지 상상도 안가는데... 지식이 부족한거같은데 예를 들어도 될까요?

예시:

 //+------------------------------------------------------------------+
//| defines                                                          |
//+------------------------------------------------------------------+
#define __MQL_COMPILE_LANG__ // закомментировать для компиляции в eng
//+------------------------------------------------------------------+
//| Русский язык компиляции                                          |
//+------------------------------------------------------------------+
#ifdef __MQL_COMPILE_LANG__
   enum   ENUM_INPUT_YES_NO
     {
      INPUT_YES                        =   1 ,                 // Да
      INPUT_NO                         =   0                  // Нет
     };
   enum ENUM_INPUT_ON_OFF
     {
      INPUT_ON                         =   1 ,                 // Вкл
      INPUT_OFF                        =   0                  // Выкл
     };
   enum ENUM_INPUT_START_DAY_OF_WEEK
     {
      INPUT_WEEK_START_ON_SUNDAY,                           // Воскресение
      INPUT_WEEK_START_ON_MONDAY,                           // Понедельник
     };
   enum ENUM_USE_SYMBOL_LIST_FROM
     {
      INPUT_SYMBOLS_CURRENT,                                 // Текущий
      INPUT_SYMBOLS_FROM_DEFINES_LIST,                       // Из заданного списка
      INPUT_SYMBOLS_FROM_MARKET_WATCH                       // Из обзора рынка
     };
   enum ENUM_USE_MAGIC_LIST_FROM
     {
      INPUT_MAGIC_ONE,                                       // Один заданный
      INPUT_MAGIC_FROM_DEFINES_LIST                         // Из заданного списка
     };
   enum ENUM_MONTH_NAME
     {
      MONTH_JANUARY,                                         // Январь
      MONTH_FEBRUARY,                                       // Февраль
      MONTH_MARCH,                                           // Март
      MONTH_APRIL,                                           // Апель
      MONTH_MAY,                                             // Май
      MONTH_JUNE,                                           // Июнь
      MONTH_JULY,                                           // Июль
      MONTH_AUGUST,                                         // Август
      MONTH_SEPTEMBER,                                       // Сентябрь
      MONTH_OCTOBER,                                         // Октябрь
      MONTH_NOVEMBER,                                       // Ноябрь
      MONTH_DECEMBER                                         // Декабрь
     };
//+------------------------------------------------------------------+
//| Английский язык компиляции                                       |
//+------------------------------------------------------------------+
#else 
   enum   ENUM_INPUT_YES_NO
     {
      INPUT_YES                        =   1 ,                 // Yes
      INPUT_NO                         =   0                  // No
     };
   enum ENUM_INPUT_ON_OFF
     {
      INPUT_ON                         =   1 ,                 // On
      INPUT_OFF                        =   0                  // Off
     };
   enum ENUM_INPUT_START_DAY_OF_WEEK
     {
      INPUT_WEEK_START_ON_SUNDAY,                           // Sunday
      INPUT_WEEK_START_ON_MONDAY,                           // Monday
     };
   enum ENUM_USE_SYMBOL_LIST_FROM
     {
      INPUT_SYMBOL_CURRENT,                                 // Current
      INPUT_SYMBOLS_FROM_DEFINES_LIST,                       // From the specified list
      INPUT_SYMBOLS_FROM_MARKET_WATCH                       // From the market watch
     };
   enum ENUM_USE_MAGIC_LIST_FROM
     {
      INPUT_MAGIC_ONE,                                       // One specified
      INPUT_MAGIC_FROM_DEFINES_LIST                         // From the specified list
     };
   enum ENUM_MONTH_NAME
     {
      MONTH_JANUARY,                                         // January
      MONTH_FEBRUARY,                                       // February
      MONTH_MARCH,                                           // March
      MONTH_APRIL,                                           // April
      MONTH_MAY,                                             // May
      MONTH_JUNE,                                           // June
      MONTH_JULY,                                           // July
      MONTH_AUGUST,                                         // August
      MONTH_SEPTEMBER,                                       // September
      MONTH_OCTOBER,                                         // October
      MONTH_NOVEMBER,                                       // November
      MONTH_DECEMBER                                         // December
     };
#endif 
 
Artyom Trishkin :

예시:


고맙습니다! 알았어 더 쉬운게 있을줄 알았는데..

결국, 그것은 다음과 같이 작동하고, 러시아어 버전의 실행 프로그램을 컴파일하고, 꺼내고, 영어 버전을 컴파일하고, 무언가를 잊었다면 다시 실행하고, 실행 파일을 제거하는 것을 잊었다면 같은 언어로 된 파일을 얻었습니다. .

이제는 조금 다르게 하고 기계에서 했던 실수를 없애려고 노력합니다..

템플릿 프로젝트 를 만들었고 다음과 같습니다.

프로젝트 전문가

  • 코드 폴더
    • 프로그램 코드
  • 폴더 포함
    • 러시아어 설정
    • 영어 설정
  • 폴더 러시아어 버전의 프로그램
    • 프로그램의 러시아어 버전
  • 폴더 프로그램의 영어 버전
    • 프로그램의 영어 버전

나는 개발자들이 프로젝트에서 모든 것을 시작하고 즉시 프로젝트의 메인 페이지에서 코드에 있는 설명보다 우선하는 프로그램에 대한 설명을 작성하는 활동에 대해 조금 겁이 납니다...

이것은 한 프로그램의 다른 버전을 만들기 위해 다른 프로젝트를 수행하고 많은 폴더와 파일을 생성해야 한다는 위협이 됩니다...

 
Alexey Volchanskiy :

무엇 때문에? 글쎄요, 프로에서는 컴퓨터가 약하고 별도의 컴파일을 사용했기 때문에 역사적으로 수행되었습니다. 또한 컴파일된 형식 + .h의 헤더로 고객에게 전송할 수 있습니다.


간단하게, 편리합니다.

그리고 플러스 측면에서 이것은 지금도 사실입니다.

 
Artyom Trishkin :
답은 이미 있었다. 컴파일러 언어를 통해 정의합니다. 여러 언어가 있어야 하는 것(예: 설정)은 각 언어별로 작성됩니다.
추가로 #ifdef를 구출합니다.

오랫동안 별도의 .mqh 파일에 설정을 넣어 왔습니다. 멀티플랫폼 코어 .mq4/5가 있으며, 대부분이 클래스 정의이며 멀티플랫폼인 플러그 가능한 포함을 제외하고는 변경되지 않습니다.

이 접근 방식을 사용하면 새 로봇을 훨씬 쉽게 만들 수 있습니다. 신호 클래스에서 상속하고 고유한 열기/닫기 알고리즘을 작성하기만 하면 됩니다. 글쎄, 약간의 화장품 + 설탕.

최선을 다했으니까 고문 생성 과 관련된 수업, 이것은 내가 SB에서 절대적으로 좋아하지 않는 몇 안되는 것 중 하나입니다.

 
Vladimir Pastushak :

고맙습니다! 알았어 더 쉬운게 있을줄 알았는데..

결국, 그것은 다음과 같이 작동하고, 러시아어 버전의 실행 프로그램을 컴파일하고, 꺼내고, 영어 버전을 컴파일하고, 무언가를 잊었다면 다시 실행하고, 실행 파일을 제거하는 것을 잊었다면 같은 언어로 된 파일을 얻었습니다. .

이제는 조금 다르게 하고 기계에서 했던 실수를 없애려고 노력합니다..

템플릿 프로젝트를 만들었고 다음과 같습니다.

프로젝트 전문가

  • 코드 폴더
    • 프로그램 코드
  • 폴더 포함
    • 러시아어 설정
    • 영어 설정
  • 폴더 러시아어 버전의 프로그램
    • 프로그램의 러시아어 버전
  • 폴더 프로그램의 영어 버전
    • 프로그램의 영어 버전

나는 개발자들이 프로젝트에서 모든 것을 시작하고 즉시 프로젝트의 메인 페이지에서 코드에 있는 설명보다 우선하는 프로그램에 대한 설명을 작성하는 활동에 대해 조금 겁이 납니다...

이것은 한 프로그램의 다른 버전을 만들기 위해 다른 프로젝트를 수행하고 많은 폴더와 파일을 생성해야 한다는 위협이 됩니다...


동의해 난 이 분야에서 아무것도 먹지 않아 불필요해