OOP, Vorlagen und Makros in mql5, Feinheiten und Anwendungen - Seite 23

 
Igor Makanu:

damit ich tun kann, was ich will.


interessiert an den gestern vorgeschlagenen Optionen mit dem Zauberspruch #defaine abracadabra ##_

UPD:

Vladimir Simakov OK, ich werde versuchen, es herauszufinden

Igor Makanu:

also mach was ich will


interessiert an den gestern vorgeschlagenen Varianten mit dem Zauberspruch #defaine abracadabra ##_

UPD:

Vladimir Simakov OK, ich werde versuchen, es herauszufinden

UPD:

HOORAY! ES HAT GEKLAPPT! (С)


Danke! Es hat geklappt, wie beabsichtigt!


PZY: Wie würde ich __MQL5__- und __MQL4__-Makros zu diesem Abrakadabra hinzufügen, aber fast_xxx()-Funktionen werden niemals in MQL4-Code vorkommen - vom Wort NEVER

UPD:

HOORAY! ES HAT GEKLAPPT! (С)


Danke, es lief alles nach Plan!


PZY: Wie würde ich __MQL5__ und __MQL4__ Makros zu diesem Abrakadabra hinzufügen, aber fast_xxx() Funktionen werden niemals in MQL4 Code sein - vom Wort NEVER

#ifdef __MQL5__
   #ifdef  USE_FAST
      #define  CONNECT fast_connect
   #else
      #define  CONNECT connect
   #endif
#else
   #define  CONNECT connect
#endif
 

Woher weiß ich, welches Terminal (MT4/MT5) den Code ausführt?

eine wahr/falsch-Variable ist ausreichend

 
Igor Makanu:

Woher weiß ich, welches Terminal (MT4/MT5) den Code ausführt?

eine wahr/falsch-Variable ist ausreichend

bool is_mt5=(TerminalInfoString(TERMINAL_NAME)=="MetaTrader 5");
 
Artyom Trishkin:

OK, aber ich möchte in den Makros nachsehen, es wird wahrscheinlich etwas Einfaches sein.

UPD:

#ifdef __MQL5__
  #define  mql5 true
#else
  #define  mql5 false 
#endif

bool isMQL5 = mql5;
 
Igor Makanu:

OK, aber ich möchte in den Makros nachsehen, es wird wahrscheinlich etwas Einfaches sein.

UPD:

Was ist die heilige Bedeutung?

 
Artyom Trishkin:

Was ist die heilige Bedeutung?

Prüfen Sie den Compiler. Wenn es der "richtige Compiler" ist, sollte er alles Unnötige in der Kompilierphase herauswerfen.

#ifdef __MQL5__
  #define  mql5 true
#else
  #define  mql5 false 
#endif

const bool isMQL5 = mql5;

const string txt_1000symbols = "Язык MetaQuotes Language 5 (MQL5) является объектно-ориентированным языком программирования высокого уровня и предназначен для написания"
                               "автоматических торговых стратегий, пользовательских технических индикаторов для анализа разнообразных финансовых рынков. Он позволяет не только писать разнообразные"
                               "экспертные системы, предназначенные для работы в режиме реального времени, но и создавать собственные графические инструменты, помогающие принимать торговые решения."
                               "MQL5 основан на концепции широко распространенного языка программирования С++, по сравнению с MQL4 в нем добавлены перечисления, структуры, классы и обработка событий."
                               " Благодаря расширению числа встроенных основных типов, взаимодействие исполняемых программ на MQL5 с другими приложениями "
                               "посредством dll максимально облегчено. Синтаксис языка MQL5 подобен синтаксису С++, и это позволяет легко переносить на него программы из современных языков "
                               "программирования. Для целей изучения языка все темы сгруппированы по следующим разделам.\n";
//+------------------------------------------------------------------+
void OnStart()
  {
   if(isMQL5) Print(txt_1000symbols);
   Print("end");
  }
//+------------------------------------------------------------------+

kompilieren und die Größe der .ex5 beobachten ;)

SZY: in if() können SieisMQL5 ,mql5 , Sie können const Modifikator entfernen - im Allgemeinen ist es eine korrekte Compiler.

 

es einen solchen Kodex gibt:

#import "mydll.dll"
#import

mt4 erstellt keine neuen Kopien der dll im Speicher, wenn sie von 2 EA aufgerufen wird, ich möchte die dll selbst nicht bearbeiten (sie ist 100 % zufriedenstellend), es ist einfacher, die Datei mydll.dll 5 Mal zu kopieren

Ich brauche ein Makro, um Folgendes zu erhalten

#define  dllnum 02

#import "mydll02.dll"
#import

Aber ich möchte prüfen, ob es kein Makro gibt,dllnum dann wird es "mydll.dll"sein



UPD:

dies gelöst

#define  dllnum 2

#define  DEF_QUOTES(arg) #arg

#ifdef  dllnum
   #define  DEF_DLL_NAME(a,b) DEF_QUOTES(a##0##b.dll)
#else
   #define  DEF_DLL_NAME(a,b) DEF_QUOTES(a.dll)
#endif 

   
string s =  DEF_DLL_NAME(mydll,dllnum);


UPD2: nicht gelöst (((.

'mydll02.dll' - Ausdrücke sind im globalen Bereich nicht zulässig

 
Igor Makanu:

es einen solchen Kodex gibt:

mt4 erstellt keine neuen Kopien der dll im Speicher, wenn sie von 2 EA aufgerufen wird, ich möchte die dll selbst nicht bearbeiten (sie ist 100 % zufriedenstellend), es ist einfacher, die Datei mydll.dll 5 Mal zu kopieren

Ich brauche ein Makro, um Folgendes zu erhalten

Aber ich möchte prüfen, ob es kein Makro gibt,dllnum dann wird es "mydll.dll"sein



UPD:

dies gelöst


UPD2: nicht gelöst (((.

'mydll02.dll' - Ausdrücke sind im globalen Bereich nicht zulässig

Das wird nicht funktionieren, denke ich.

DEF_QUOTES(a##0##b.dll)

Er bekommt hier kein gültiges Token. Im Allgemeinen sollte mcl in der Lage sein

#import "jkjfkj"".dll"

aber leider, wie man so schön sagt, bist du nicht hier bei C++))

 
Vict:

Das wird nicht funktionieren, denke ich.

erhält er hier kein gültiges Token. Eigentlich sollte der MCL in der Lage sein

aber leider, wie man so schön sagt - das ist nicht C++))

mm-hmm

Zumindest habe ich versucht, die Token in die Makrodatei einzuschließen.... es ging wieder schief

#define  FNAME <mylib.mqh>

#include  FNAME

#include' - doppelte Anführungszeichen oder spitze Klammern < werden benötigt

#include' - Ausdrücke sind im globalen Bereich nicht erlaubt


 
Igor Makanu:

Ich verstehe es einfach nicht - wozu brennen die Kerzen? So funktioniert das, denke ich:

#define  LIB "kjkjkjk.dll"
#import  LIB

Ich gebe zu, dass es nützlich sein kann, wenn eine bestimmte Konfiguration korrigiert werden soll.

PS: wenn Sie es wirklich wollen, versuchen Sie name_dll (ohne Punkt), vielleicht klappt es ja.