错误、漏洞、问题 - 页 2973

 
Denis Kirichenko:

亲爱的开发者,请检查<Arrays\ArrayObj.mqh>是否正确

技术上没有错误。在这种情况下,虚拟是隐含的,即使没有明确规定。

 
A100:

从技术上讲,没有错误。在这种情况下,虚拟是隐含的,即使没有明确说明

谢谢你。但我希望有一些句法上的统一性。毕竟,我们已经有了一个,比如说。

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

 

市场文件夹里有很多专家

11

但我只能测试前6个

11

什么是错的,我应该怎么做?

 

CryptDecode(CRYPT_BASE64 error)

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

---

CryptEncodeA 函数创建了一个CryptDecodeA 无法解码的行,在MT4中产生错误 "4029",在MT5中产生错误 "4006"

Log line: vj9jDk+GxxB4W1zQc4/rC4OPvttMcgcF5ZFVC7m7l50=

如果你去掉最后一个"="--那么它就会解密,而且没有错误。

在这种情况下,php可以正常、正确地解密。

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

---

我们对服务器上的同一行进行加密。"Indicator_chart_window"

我们得到的结果是:"vj9jDk+GxxB4W1zQc4/rC54fEtkLAsAONkyeprqmMlw="

在mql代码中插入这一行,又出错了--去掉最后一个"=",一切正常。

---

放入一些随机的加密密钥,服务器得到的字符串:"8CpXr3OlVlVhGs41syHA0+HqZKnatswQjRWn2fKYN4qN4=="

在mql-code中插入字符串--错误,删除了一个"=",只留下一个--工作正常(创建两个等号的字符串的键是什么--无法重现)。

我想知道答案,也许我做错了什么!

 

在优化过程中没有释放内存。

该截图显示了在优化过程中只使用一个代理时的内存消耗。

这个错误与下面代码中的类似设计有关,这个错误在这里没有显示出来。

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

对此有什么想法吗?

 
Denis Nikolaev:

市场文件夹里有很多专家

但我只能测试前6个

什么是错的,我应该怎么做?

这是个四。已经达到了数量的极限。

 

为什么是test.mq5而不是test.mqproj被编译? 而test.mqproj 项目被关闭

只有通过删除test.mqproj 文件一切才恢复 正常。
 

是否可以将png文件上传到代码库中的MQL/Images文件夹?

png文件似乎是被允许的,但由于某些原因,它们没有被发送到服务器上--提交表格后,png文件不在上传的列表中。

 
Artyom Trishkin:

那是一个四。达到了极限。

谢谢你,Artem。清理工作很有帮助。

 
Stanislav Korotky:

是否可以将png文件上传到代码库中的MQL/Images文件夹?

png文件似乎是被允许的,但由于某些原因,它们没有被发送到服务器上--提交表格后,png文件不在上传的列表中。

我再加点。我已经像用EasyAndFastGUI(https://www.mql5.com/ru/code/19703)归档了所有文件,并将它们上传到MQL5/Images。压缩文件已经在服务器上注册了,但编译仍然不成功--服务器说它没有看到资源文件。问题:EasyAndFastGUI是如何编译的?

还是我必须要求版主再次手动推送提交https://www.mql5.com/en/code/33770/ - 公开不可用)?

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