Einrichten von SlickEdit für die Arbeit mit und das Kompilieren von MQL4/5-Dokumenten. - Seite 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;
  }

Hier ist ein Beispiel aus der Bibliothekvon Artyom Trishkin, alles ist gut, nur eines nicht: Der Autor hat viele Umschläge nicht benutzt, da er behauptet, dass sie später benutzt werden, aber jetzt ist es für Notizen, Erinnerungen.
Ich möchte seine Bibliothek verwenden, aber es ist nicht möglich, dies zu tun, ohne sich im Code zu orientieren, ohne zusätzliche Editoren, die ein Zusammenklappen des Codes ermöglichen. Wenn Sie den gesamten Code in MetaEditor von Anfang bis Ende durchgehen, haben Sie bereits vergessen, was Sie wollen. Ich bin es leid, alle möglichen Zusatzfunktionen im Standard-Editor wie Strg+g sowie Stift und Papier zu verwenden!

Frage:

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

Wenn wir einen Parameter an eine Methode durch Zeiger übergeben oder erstellen Sie einen Zeiger auf eine Klasse sonst ist es nicht möglich, MQL (oder diese ). SlickEdit weigert sich, Methoden von Klassen zu definieren, die per Zeiger übergeben werden, was eine strenge Definition von MQL ist.
Wenn wir jedoch den Zeigeroperator (*) in einen Referenzoperator (&) umwandeln, wird alles sichtbar und es funktioniert sogar die automatische Definition von Klassenmitgliedern. Aber das ist in MQL nicht erlaubt!

Daher die Frage, wie und wo der (*)-Operator-Zeiger gesetzt werden kann, damit er in SlickEdit als (&)-Operator behandelt wird.

 
BmC:

Hier ist ein Beispiel aus der Bibliothekvon Artyom Trishkin, alles ist gut, nur eines nicht: Der Autor hat viele Umschläge nicht benutzt, da er behauptet, dass sie später benutzt werden, aber jetzt ist es für Notizen, Erinnerungen.
Ich möchte seine Bibliothek verwenden, aber es ist nicht möglich, dies zu tun, ohne sich im Code zu orientieren, ohne zusätzliche Editoren, die ein Zusammenklappen des Codes ermöglichen. Wenn Sie den gesamten Code in MetaEditor von Anfang bis Ende durchgehen, haben Sie bereits vergessen, was Sie wollten. Ich bin es leid, alle möglichen Zusatzfunktionen im Standard-Editor wie Strg+g sowie Stift und Papier zu verwenden!

Frage:

Wenn wir einen Parameter an eine Methode durch Zeiger übergeben oder erstellen Sie einen Zeiger auf eine Klasse sonst ist es nicht möglich, MQL (oder diese ). SlickEdit weigert sich, Methoden von Klassen zu definieren, die per Zeiger übergeben werden, was eine strenge Definition von MQL ist.
Wenn wir jedoch den Zeigeroperator (*) in einen Referenzoperator (&) umwandeln, wird alles sichtbar und es funktioniert sogar die automatische Definition von Klassenmitgliedern. Aber das ist in MQL nicht erlaubt!

Daher die Frage, wie und wo man den Zeiger des (*)-Operators setzt, damit er in SlickEdit als (&)-Operator behandelt wird.

Ich befürchte, dass die Operatoren (&) und (*) nicht überschrieben werden können (nicht die Schuld von SE).

Sie müssen mit MQL5 als mit C++ in SE arbeiten? Ich weiß nicht, was zu beraten.... versuchen, wie mit C# zu arbeiten.

 
Andrey Dik:

Ich befürchte, dass die Operatoren (&) und (*) nicht überschrieben werden können (nicht die Schuld von SE).

wahrscheinlich mit MQL5 arbeiten wie mit C++ in SE? weiß nicht, was zu beraten.... versuchen, wie mit C# zu arbeiten.

Ich arbeite als Benutzersprache und nicht mit C# und C++, da ich denke, dass Makros die Operatoren (* und &) in verschiedenen Situationen unterschiedlich behandeln werden.

 
BmC:

Ich arbeite als benutzerdefinierte Sprache, nicht C# und C++, da ich denke, dass Makros die Operatoren (* und &) in verschiedenen Situationen unterschiedlich behandeln werden.

Ist es möglich, eine benutzerdefinierte Sprache in SE zu erstellen und damit zu arbeiten? das war mir nicht bekannt.

Ich meinte das Folgende:


 

Nur in der Pro-Version ist es möglich, eine eigene Sprache einzustellen. Wie in der Hilfe angegeben, wenn Sie Ihre eigene Sprache erstellen, die nicht in der SlickEdit-Anleitung angegeben ist, werden Sie mit einer fortgeschritteneren Makrokonfiguration konfrontiert, so dass ich nach diesem Makro suche, das so konfiguriert ist, dass es nach verschachtelten Methoden in einer per Zeiger übergebenen Klasse sucht.
Ich habe herausgefunden, dass C++ durch Zeiger (*) Objekt übergeben impliziert die Verwendung von Operator (->) anstelle von (.) in MQL. Wenn Sie also bei der Definition einer benutzerdefinierten Sprache bedingte Kompilierungsbefehle in einem Makro ersetzen oder anwenden, werden diese Operatoren ersetzt. Das bedeutet, dass ich die Einstellungen der vorgeschlagenen Sprachen C# oder C++ in diesem Fall nicht verwenden kann, da ich die Struktur des Operatorzugriffs tatsächlich ändern möchte.

Ich habe die Version 25 heruntergeladen und passe sie jetzt an. Ich habe in Foren gelesen, dass sie flexiblere Einstellungen für die Verbindung benutzerdefinierter Sprachen bietet. Ich werde versuchen, sowohl eine benutzerdefinierte Sprache als auch eine Vorlage für C# und C++ zu erstellen, um zu sehen, was besser ist, und vielleicht werde ich die Anweisungen zum Einrichten von Version 25 veröffentlichen.

 
BmC:

Nur in der Pro-Version ist es möglich, eine eigene Sprache einzustellen. Wie in der Hilfe angegeben, wenn Sie Ihre eigene Sprache erstellen, die nicht in der SlickEdit-Anleitung angegeben ist, werden Sie mit einer fortgeschritteneren Makrokonfiguration konfrontiert, so dass ich nach diesem Makro suche, das so konfiguriert ist, dass es nach verschachtelten Methoden in einer per Zeiger übergebenen Klasse sucht.
Ich habe herausgefunden, dass C++ durch Zeiger (*) Objekt übergeben impliziert die Verwendung von Operator (->) anstelle von (.) in MQL. Wenn Sie also bei der Definition einer benutzerdefinierten Sprache bedingte Kompilierungsbefehle in einem Makro ersetzen oder anwenden, werden diese Operatoren ersetzt. Das bedeutet, dass ich die Einstellungen der vorgeschlagenen Sprachen C# oder C++ in diesem Fall nicht verwenden kann, da ich die Struktur des Operatorzugriffs tatsächlich ändern möchte.

Ich habe die Version 25 heruntergeladen und passe sie jetzt an. Ich habe in Foren gelesen, dass sie flexiblere Einstellungen für die Verbindung benutzerdefinierter Sprachen bietet. Ich werde versuchen, sowohl eine benutzerdefinierte Sprache als auch eine C#- und eine C++-Vorlage zu erstellen und zu sehen, welche besser ist, und vielleicht werde ich die Anweisungen für die Einrichtung von Version 25 veröffentlichen.

Ja, ich wollte nur sagen, dass, wenn es möglich ist, eine benutzerdefinierte Sprache zu erstellen, Sie Folgendes versuchen können: Erstellen Sie eine benutzerdefinierte Sprache, übertragen Sie die Einstellungen der vorgefertigten Sprachen aus der entsprechenden CPP- oder C#-Sprachdatei und versuchen Sie dann, das Verhalten der entsprechenden Operatoren zu ändern.

 
Andrey Dik:

Ja, ich wollte nur sagen, dass Sie, wenn es möglich ist, eine benutzerdefinierte Sprache zu erstellen, Folgendes versuchen können: Erstellen Sie eine benutzerdefinierte Sprache, übertragen Sie die Einstellungen von vorgefertigten Sprachen aus der entsprechenden CPP- oder C#-Sprachdatei und versuchen Sie dann, das Verhalten der entsprechenden Operatoren zu ändern.

so habe ich es gemacht, die Einstellungen müssen NUR von c# (CSharp) übertragen werden, da es für die Übergabe von Objekten per Referenz besser geeignet ist. In C++ (cpp) müssen Sie statt des Operators (.) den Operator (->) einfügen, um auf Objektmethoden zu verweisen.

Zweites Problem bei der Erstellung von benutzerdefinierten Sprache, Färbung ist nicht über Kopiereinstellungen in Version 25 übergeben, oder es ist nur Tank SlickEdit v25.0.2.0 64-Bit. (Ich bin sicher, es ist Entwickler Fehler mit Färbung, alles funktionierte in der vorherigen Version, in dieser aufgehört).