Impostazione di SlickEdit per lavorare e compilare documenti MQL4/5. - pagina 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;
  }

Ecco un esempio dalla bibliotecadi Artyom Trishkin, tutto è buono solo un ma: l'autore ha un sacco di involucri non utilizzati, come lui sostiene saranno utilizzati più tardi, ma ora è per le note, promemoria.
Voglio usare la sua libreria, ma non è possibile farlo senza orientarsi nel codice senza editor aggiuntivi che permettono di collassare il codice. Nel momento in cui sfogliate tutto il codice in MetaEditor dall'inizio alla fine, avete già dimenticato quello che volevate. Sono stanco di usare tutti i possibili add-on nell'editor standard come Ctrl+g, più carta e penna!

Domanda:

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

Quando passiamo un parametro a un metodo tramite puntatore o creiamo un puntatore a una classe altrimenti non è possibile MQL (o questo). SlickEdit rifiuta di definire metodi di classi passate per puntatore, che è una definizione rigorosa di MQL.
Ma se cambiamo l'operatore di puntatore (*) in operatore di riferimento (&), tutto diventa visibile e funziona anche l'autodefinizione dei membri della classe. Ma questo non è permesso in MQL!

Da qui la domanda come e dove impostare il puntatore dell'operatore (*) in modo che sia trattato in SlickEdit come operatore (&).

 
BmC:

Ecco un esempio dalla bibliotecadi Artyom Trishkin, tutto è buono solo un ma: l'autore ha un sacco di involucri non utilizzati, come lui sostiene saranno utilizzati più tardi, ma ora è per le note, promemoria.
Voglio usare la sua libreria, ma non è possibile farlo senza orientarsi nel codice senza editor aggiuntivi che permettono di collassare il codice. Nel momento in cui sfogliate tutto il codice in MetaEditor dall'inizio alla fine, avete già dimenticato quello che volevate. Sono stanco di usare tutti gli add-on possibili nell'editor standard come Ctrl+g, più carta e penna!

Domanda:

Quando passiamo un parametro a un metodo tramite puntatore o creiamo un puntatore a una classe altrimenti non è possibile MQL (o questo). SlickEdit rifiuta di definire metodi di classi passate per puntatore, che è una definizione rigorosa di MQL.
Ma se cambiamo l'operatore di puntatore (*) in operatore di riferimento (&), tutto diventa visibile e funziona anche l'autodefinizione dei membri della classe. Ma questo non è permesso in MQL!

Da qui la domanda come e dove impostare il puntatore dell'operatore (*) in modo che sia trattato in SlickEdit come operatore (&).

Temo che gli operatori (&) e (*) non possano essere sovrascritti (non è colpa di SE).

Devi lavorare con MQL5 come con C++ in SE? non so cosa consigliarti.... provare a lavorare come con C#.

 
Andrey Dik:

Temo che gli operatori (&) e (*) non possano essere sovrascritti (non è colpa di SE).

probabilmente funziona con MQL5 come con C++ in SE? non so cosa consigliare.... provare a lavorare come con C#.

Sto lavorando come un linguaggio utente non C# e C++ poiché penso che le macro tratteranno gli operatori (* e &) in modo diverso in situazioni diverse.

 
BmC:

Sto lavorando come un linguaggio personalizzato non C# e C++, poiché penso che le macro tratteranno gli operatori (* e &) in modo diverso in situazioni diverse.

È possibile creare e lavorare con una lingua personalizzata in SE? Non ne ero a conoscenza.

Intendevo quanto segue:


 

È possibile impostare, solo nella versione pro, la propria lingua. Come indicato nell'aiuto quando si crea il proprio linguaggio non specificato nella guida SlickEdit, ci si trova di fronte a una configurazione di macro più avanzata, quindi sto cercando questa macro che è configurata per cercare metodi annidati in una classe passata per puntatore.
Ho capito che il C++ passato per oggetto puntatore (*) implica l'uso dell'operatore (->) invece di (.) in MQL. Quindi, se sostituite o applicate comandi di compilazione condizionale in una macro quando definite un linguaggio personalizzato, questi operatori saranno sostituiti. Significa che non posso usare le impostazioni dei linguaggi suggeriti C# o C++ in questo caso, dato che in realtà voglio cambiare la struttura di accesso degli operatori.

Ho scaricato la versione 25 e ora la sto regolando. Ho letto sui forum che ha delle impostazioni più flessibili per collegare le lingue personalizzate. Proverò a creare sia un linguaggio personalizzato che su template C# e C++ e vedere quale è meglio e forse posterò le istruzioni per impostare la versione 25.

 
BmC:

È possibile impostare, solo nella versione pro, la propria lingua. Come indicato nell'aiuto quando si crea il proprio linguaggio non specificato nella guida SlickEdit, ci si trova di fronte a una configurazione di macro più avanzata, quindi sto cercando questa macro che è configurata per cercare metodi annidati in una classe passata per puntatore.
Ho capito che il C++ passato per oggetto puntatore (*) implica l'uso dell'operatore (->) invece di (.) in MQL. Quindi, se sostituite o applicate comandi di compilazione condizionale in una macro quando definite un linguaggio personalizzato, questi operatori saranno sostituiti. Significa che non posso usare le impostazioni dei linguaggi suggeriti C# o C++ in questo caso, poiché voglio effettivamente cambiare la struttura di accesso dell'operatore.

Ho scaricato la versione 25 e ora la sto regolando. Ho letto sui forum che ha delle impostazioni più flessibili per collegare le lingue personalizzate. Proverò a creare sia il linguaggio personalizzato che il template C# e C++ e vedrò quale dei due è migliore e forse posterò le istruzioni per impostare la versione 25.

Sì, volevo solo dire che se è possibile creare un linguaggio personalizzato, puoi provare a farlo: crea un linguaggio personalizzato, trasferisci le impostazioni dei linguaggi pronti dal file di linguaggio CPP o C# corrispondente e poi prova a cambiare il comportamento degli operatori corrispondenti.

 
Andrey Dik:

Sì, volevo solo dire che se è possibile creare un linguaggio personalizzato, si può provare a fare quanto segue: creare un linguaggio personalizzato, trasferire le impostazioni dai linguaggi pronti dal file di linguaggio CPP o C# corrispondente e poi provare a cambiare il comportamento degli operatori corrispondenti.

è così che ho fatto, le impostazioni devono essere trasferite SOLO da c# (CSharp) perché è più adatto a passare oggetti per riferimento. In c++ (cpp) invece dell'operatore (.) bisogna inserire l'operatore (->) per riferirsi ai metodi dell'oggetto.

Secondo problema quando si crea una lingua personalizzata, la colorazione non viene passata tramite le impostazioni di copia nella versione 25, o è solo il serbatoio SlickEdit v25.0.2.0 64-bit. (Sono sicuro che è colpa degli sviluppatori con la colorazione, tutto funzionava nella versione precedente, si è fermato in questa).