Erros, bugs, perguntas - página 2973

 
Denis Kirichenko:

Caros programadores, por favor verifiquem se <Arrays\ArrayObj.mqh> está correcto:

Tecnicamente, não há erro. Neste caso, o virtual está implícito, mesmo que não explicitamente especificado

 
A100:

Tecnicamente, não há erro. Neste caso, o virtual está implícito, mesmo que não explicitamente declarado

Obrigado. Mas eu gostaria de alguma uniformidade sintáctica. Afinal de contas, já temos um, por exemplo:

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);
  }

 

A pasta Mercado está cheia de especialistas

11

mas só posso testar os primeiros 6

11

O que está errado e o que devo fazer?

 

CryptDecode( erroCRYPT_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);
}

---

A funçãoCryptEncodeA cria uma linha que a CryptDecodeA não consegue descodificar e gera erro "4029" em MT4, "4006" em MT5

Linha de registo: vj9jDk+GxxB4W1zQc4/rC4OPvttMcgcF5ZFVC7m7l50=

Se remover o último "="-então decifra e não há erro.

Neste caso, o php decifra normalmente e correctamente:

$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;

---

Encriptamos a mesma linha no servidor: "janela_cartão_indicador"

Obtemos o resultado:"vj9jDk+GxxB4W1zQc4/rC54fEtkLAsAONkyeprqmMlw=".

Insira novamente esta linha no código mql e erro - retire o último "=" e tudo funciona bem.

---

Coloque alguma chave de encriptação aleatória, o servidor recebeu a string: "8CpXr3OlVlVhGs41syHA0+HqZKnatswQjRWn2fKYN4qN4==".

Inseriu a cadeia no código mql - erro, removeu um "=" deixando apenas um - funcionou bem (qual foi a chave que criou a cadeia com dois iguais - não se podia reproduzir)

Quero uma resposta, talvez eu esteja a fazer algo de errado!

 

Sem libertação de memória durante a optimização.

A captura de ecrã mostra o consumo de memória quando se utiliza apenas um agente durante a optimização:

O bug está relacionado com um desenho semelhante ao abaixo indicado no código, o bug não aparece aqui:

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()
  {
  }
//+------------------------------------------------------------------+

Alguma ideia sobre isto?

 
Denis Nikolaev:

A pasta Mercado está cheia de especialistas

mas só posso testar os primeiros 6

O que está errado e o que devo fazer?

Este é um quatro. Ter atingido o limite do número.

 

Porque é que test.mq5 compilado em vez de test.mqproj ? enquanto o projectotest.mqprojestá encerrado

Apenas apagando o ficheirotest.mqproj tudo volta ao normal
 

É possível carregar um ficheiro png para a pasta MQL/Images na base de código?

Os ficheiros png parecem ser permitidos, mas por alguma razão não são enviados para o servidor - depois de submeter o formulário, os ficheiros png não estão na lista carregada.

 
Artyom Trishkin:

Isso é um quatro. Atingido o limite.

Obrigado, Artem. A limpeza tem ajudado.

 
Stanislav Korotky:

É possível carregar um ficheiro png para a pasta MQL/Images na base de código?

Os ficheiros png parecem ser permitidos, mas por alguma razão não são enviados para o servidor - depois de submeter o formulário, os ficheiros png não estão na lista carregada.

Vou acrescentar mais. Arquivei todos os ficheiros como com EasyAndFastGUI (https://www.mql5.com/ru/code/19703) e carreguei-os para MQL5/Images. O ficheiro zip foi registado no servidor, mas a compilação ainda não foi bem sucedida - o servidor diz que não vê os ficheiros de recursos. Pergunta: Como é que o EasyAndFastGUI compilou?

Ou tenho de pedir aos moderadores que empurrem manualmente a submissão novamente(https://www.mql5.com/en/code/33770/ - publicamente indisponível)?

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