Editörde ortak projeleri tartışalım - neden olduklarını ve nereye taşındıklarını - sayfa 13

 
Artyom Trishkin :
Zaten bir cevap vardı. Derleyici dili aracılığıyla tanımlayın. Birden çok dilde olması gerekenler - örneğin ayarlar - her dil için yazılır.
Daha fazla #ifdef kurtarmaya.
Biraz anlamıyorum, terminalin diline bağlı olarak EA ayarlarının dilini programlı olarak değiştirmek mümkün mü ???
 
Vladimir Pastushak :
Biraz anlamıyorum, terminalin diline bağlı olarak EA ayarlarının dilini programlı olarak değiştirmek mümkün mü ???

Programlı olarak program düzeyinde - hayır. Derleme düzeyinde, evet.

 
Artyom Trishkin :

Programlı olarak program düzeyinde - hayır. Derleme düzeyinde, evet.


Yani, programda 54 ayarım varsa ve programın farklı dillerde, farklı açıklamalar ve farklı bağlantılarla birkaç sürümünü yapmam gerekiyorsa, her sürüm için ayarları çevirip birleştirmem gerekmez mi?

 
Vladimir Pastushak :

Yani, programda 54 ayarım varsa ve programın farklı dillerde, farklı açıklamalar ve farklı bağlantılarla birkaç sürümünü yapmam gerekiyorsa, her sürüm için ayarları çevirip birleştirmem gerekmez mi?

İhtiyaç.

Program tarafından çalışması sırasında görüntülenen her şey terminal diline bağlanabilir ve ayarlar yalnızca kodun kendisine bağlanabilir. Bunu yapmak için, programdaki giriş parametrelerinin birkaç versiyonunu yapmanız ve tanımlarla derlerken istediğiniz ayar dilini seçmeniz gerekir.

 
Artyom Trishkin :

İhtiyaç.

Program tarafından çalışması sırasında görüntülenen her şey terminal diline bağlanabilir ve ayarlar yalnızca kodun kendisine bağlanabilir. Bunu yapmak için, programdaki giriş parametrelerinin birkaç versiyonunu yapmanız ve tanımlarla derlerken istediğiniz ayar dilini seçmeniz gerekir.


Nasıl olduğunu hayal bile edemiyorum ... Bilgide bir boşluk var gibi görünüyor, küçük bir örnek isteyebilir miyim?

 
Vladimir Pastushak :

Nasıl olduğunu hayal bile edemiyorum ... Bilgide bir boşluk var gibi görünüyor, küçük bir örnek isteyebilir miyim?

Misal:

 //+------------------------------------------------------------------+
//| 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 :

Misal:


Teşekkür ederim! Anladım, daha kolay bir şey olduğunu düşündüm..

Sonuçta, böyle çalışır, yürütücünün Rusça sürümünü derledi, çıkardı, İngilizcesini derledi, bir şeyi unuttuysanız, yeniden yapın, yürütülebilir dosyayı kaldırmayı unuttuysanız, aynı dilde bir dosyanız var . .

Şimdi biraz farklı yapıyorum, makinede yaptığım hataları ortadan kaldırmaya çalışıyorum..

Şablon projemi yaptım ve şuna benziyor

Proje Uzmanı

  • kod klasörü
    • program kodu
  • klasörü dahil et
    • ayarlar Rusça
    • İngilizce ayarları
  • programın Rusça versiyonu klasörü
    • Programın Rusça versiyonu
  • programın klasör İngilizce versiyonu
    • Programın İngilizce versiyonu

Geliştiricilerin projelerde her şeyi yapmaya başladıkları ve hemen projenin ana sayfasında, koddaki açıklamadan öncelikli olan programın bir açıklamasını yaptıkları aktiviteden biraz korkuyorum...

Bu, bir programın farklı sürümlerini oluşturmak için farklı projeler yapmanız ve bir sürü klasör ve dosya oluşturmanız gerektiği tehdidini ortadan kaldırır...

 
Alexey Volchanskiy :

Ne için? Profesyonellerde bu, bilgisayarlar zayıf olduğundan ve ayrı derleme kullanıldığından tarihsel olarak yapılmıştır. Ek olarak, müşteriye derlenmiş bir formatta + .h başlıklarında aktarabilirsiniz.


Basitçe, uygun.

Artı tarafta, bu şimdi bile doğru.

 
Artyom Trishkin :
Zaten bir cevap vardı. Derleyici dili aracılığıyla tanımlayın. Birden çok dilde olması gerekenler - örneğin ayarlar - her dil için yazılır.
Daha fazla #ifdef kurtarmaya.

Uzun zamandır ayarları ayrı bir .mqh dosyasına koyuyorum. Çok platformlu bir çekirdek .mq4/5 vardır, ideal olarak, çoğu sınıf tanımları olan takılabilir içerikler ve ayrıca çok platformlu olanlar dışında değişmez.

Bu yaklaşımla yeni bir robot yapmak çok daha kolay, sadece sinyal sınıfından miras almanız ve kendi açma/kapama algoritmanızı yazmanız yeterli. Eh, biraz kozmetik + şeker.

elimden geleni yaptım çünkü danışman oluşturma ile ilgili sınıflar , bu SB'de kesinlikle sevmediğim birkaç şeyden biri.

 
Vladimir Pastushak :

Teşekkür ederim! Anladım, daha kolay bir şey olduğunu düşündüm..

Sonuçta, böyle çalışır, yürütücünün Rusça sürümünü derledi, çıkardı, İngilizcesini derledi, bir şeyi unuttuysanız, yeniden yapın, yürütülebilir dosyayı kaldırmayı unuttuysanız, aynı dilde bir dosyanız var . .

Şimdi biraz farklı yapıyorum, makinede yaptığım hataları ortadan kaldırmaya çalışıyorum..

Şablon projemi yaptım ve şuna benziyor

Proje Uzmanı

  • kod klasörü
    • program kodu
  • klasörü dahil et
    • ayarlar Rusça
    • İngilizce ayarları
  • programın Rusça versiyonu klasörü
    • Programın Rusça versiyonu
  • programın klasör İngilizce versiyonu
    • Programın İngilizce versiyonu

Geliştiricilerin projelerde her şeyi yapmaya başladıkları ve hemen projenin ana sayfasında, koddaki açıklamadan öncelikli olan programın bir açıklamasını yaptıkları aktiviteden biraz korkuyorum...

Bu, bir programın farklı sürümlerini oluşturmak için farklı projeler yapmanız ve bir sürü klasör ve dosya oluşturmanız gerektiği tehdidini ortadan kaldırır...


Katılıyorum, bu alanda hiçbir şey yemiyorum, gereksiz