Errori, bug, domande - pagina 2973

 
Denis Kirichenko:

Cari sviluppatori, per favore controllate se <Arrays\ArrayObj.mqh> è corretto:

Tecnicamente non c'è nessun errore. In questo caso il virtuale è implicito, anche se non esplicitamente specificato

 
A100:

Tecnicamente, non c'è nessun errore. In questo caso il virtuale è implicito, anche se non esplicitamente dichiarato

Grazie. Ma mi piacerebbe avere una certa uniformità sintattica. Dopo tutto, ne abbiamo già uno, per esempio:

class CArrayDouble : public CArray
  {

   ...

   protected:
   virtual void      QuickSort(int beg,int end,const int mode=0);
  }

//+------------------------------------------------------------------+

class CArrayString : public CArray
   {

   ...

   protected:
   virtual void      QuickSort(int beg,int end,const int mode=0);
  }

 

La cartella del mercato è piena di esperti

11

ma posso testare solo i primi 6

11

Cosa c'è di sbagliato e cosa dovrei fare?

 

CryptDecode( erroreCRYPT_BASE64

int OnInit()
{
   string text="";
   string res="";
   string key="fuyTkH3cd63K9Htrl2xdFgjerPjmla8h";

   text="indicator_chart_window";
   if(!CryptEncodeA(text,key,res))
      Print("Error: Encode:",GetLastError());

   Print(res);

   text="vj9jDk+GxxB4W1zQc4/rC4OPvttMcgcF5ZFVC7m7l50=";
   if(!CryptDecodeA(text,key,res))
      Print("Error: Decode:",GetLastError());

   Print(res);
   return(INIT_SUCCEEDED);
}

//------------------------------------------------------------------
bool CryptEncodeA(string InputText,string key,string &Output) {
   uchar scr[];
   uchar dst[];
   uchar res[];
   uchar key_aes256[];
   uchar key_base64[];
   StringToCharArray(InputText,scr);
   StringToCharArray(key,key_aes256);
   if(CryptEncode(CRYPT_AES256,scr,key_aes256,dst)==0) return(false);
   if(CryptEncode(CRYPT_BASE64,dst,key_base64,res)==0) return(false);
   Output = CharArrayToString(res);
   return(true);
}
//--
bool CryptDecodeA(string InputText,string key,string &Output) {
   uchar scr[];
   uchar dst[];
   uchar res[];
   uchar key_base64[];
   uchar key_aes256[];
   StringToCharArray(InputText,scr);
   StringToCharArray(key,key_aes256);
   if(CryptDecode(CRYPT_BASE64,scr,key_base64,dst)==0) return(false);
   if(CryptDecode(CRYPT_AES256,dst,key_aes256,res)==0) return(false);
   Output = CharArrayToString(res);
   return(true);
}

---

La funzioneCryptEncodeA crea una linea che CryptDecodeA non può decodificare e genera un errore "4029" in MT4, "4006" in MT5

Linea di log: vj9jDk+GxxB4W1zQc4/rC4OPvttMcgcF5ZFVC7m7l50=

Se si rimuove l'ultimo "="- allora si decifra e non c'è errore.

In questo caso, php decripta normalmente e correttamente:

$secret_key = 'fuyTkH3cd63K9Htrl2xdFgjerPjmla8h';

$s = "indicator_chart_window";
$res = base64_encode(openssl_encrypt($s,"AES-256-ECB",$secret_key,OPENSSL_RAW_DATA));
echo $res.'<br>';

$s= "vj9jDk+GxxB4W1zQc4/rC54fEtkLAsAONkyeprqmMlw=";
$res = openssl_decrypt(base64_decode($s),"AES-256-ECB",$secret_key,OPENSSL_ZERO_PADDING|OPENSSL_RAW_DATA);
echo $res;

---

Cifriamo la stessa linea sul server: "finestra_cartografia_indicatrice"

Otteniamo il risultato:"vj9jDk+GxxB4W1zQc4/rC54fEtkLAsAONkyeprqmMlw="

Inserite questa linea nel codice mql ed errore di nuovo - rimuovete l'ultimo "=" e tutto funziona bene.

---

Metti una chiave di crittografia casuale, il server ottiene la stringa: "8CpXr3OlVlVhGs41syHA0+HqZKnatswQjRWn2fKYN4qN4=="

Inserita la stringa nel codice mql - errore, rimosso un "=" lasciandone solo uno - ha funzionato bene (quale era la chiave che creava la stringa con due uguali - non si poteva riprodurre)

Voglio una risposta, forse sto sbagliando qualcosa!

 

Nessuna liberazione di memoria durante l'ottimizzazione.

La schermata mostra il consumo di memoria quando si usa un solo agente durante l'ottimizzazione:

Il bug è legato a un disegno simile a quello riportato qui sotto nel codice, il bug non si presenta qui:

input int ii;//Для оптимизации
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class My_class
  {
public:
   struct s_Frame_info
     {
      ulong          event_index;
      uchar          frame_id;
      int            data_size;
     };
   struct s_Frame
     {
      s_Frame_info   frame_info;
      uchar          data[];
     };
   s_Frame           _data_local[];

   void              GGG()
     {
      ArrayResize(_data_local,1024);
      for(int i1=0; i1<1024; i1++)
        {
         int len1=ArrayRange(_data_local[i1].data,0);
         ArrayResize(_data_local[i1].data,len1+1,128*1024);
        }
     }
  } *my_class;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   my_class=new My_class();
   my_class.GGG();
   return INIT_SUCCEEDED;
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   my_class._data_local[0].data[0]=0;
   delete my_class;
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  }
//+------------------------------------------------------------------+

Qualche pensiero su questo?

 
Denis Nikolaev:

La cartella del mercato è piena di esperti

ma posso testare solo i primi 6

Cosa c'è di sbagliato e cosa dovrei fare?

Questo è un quattro. Hanno raggiunto il limite del numero.

 

Perché test.mq5 viene compilato al posto di test.mqproj? mentre il progettotest.mqprojè chiuso

Solo cancellando il filetest.mqproj tutto è tornato alla normalità
 

È possibile caricare un file png nella cartella MQL/Images in codebase?

I file png sembrano essere permessi, ma per qualche ragione non vengono inviati al server - dopo aver inviato il modulo i file png non sono nella lista caricata.

 
Artyom Trishkin:

Questo è un quattro. Raggiunto il limite.

Grazie, Artem. La pulizia ha aiutato.

 
Stanislav Korotky:

È possibile caricare un file png nella cartella MQL/Images in codebase?

I file png sembrano essere permessi, ma per qualche ragione non vengono inviati al server - dopo aver inviato il modulo i file png non sono nella lista caricata.

Ne aggiungerò altri. Ho archiviato tutti i file come con EasyAndFastGUI (https://www.mql5.com/ru/code/19703) e li ho caricati in MQL5/Images. Il file zip è stato registrato sul server, ma la compilazione non è ancora riuscita - il server dice che non vede i file delle risorse. Domanda: Come ha compilato EasyAndFastGUI?

O devo chiedere ai moderatori di spingere manualmente il submit di nuovo(https://www.mql5.com/en/code/33770/ - pubblicamente non disponibile)?

EasyAndFastGUI - библиотека для создания графических интерфейсов
EasyAndFastGUI - библиотека для создания графических интерфейсов
  • www.mql5.com
Библиотека EasyAndFastGUI дает возможность создавать графические интерфейсы для своих MQL-программ.