エラー、バグ、質問 - ページ 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」のエラーを発生させる。

ログライン: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に文字列を挿入 - エラー、"="を1つだけ残して 削除 - 問題なく動作(2つの等しい文字列を作成するキーは何だった - 再現できませんでした)。

答えが欲しい!もしかしたら、私のやり方が悪いのかもしれない。

 

最適化中にメモリ解放を行わない。

スクリーンショットは、最適化の際にエージェントを1つだけ使用した場合のメモリ消費量を示しています。

コード内の以下のような類似のデザインに関連するバグで、バグがここに表示されない。

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つしかテストできない

何が問題で、どうすればいいのか?

これは4です。数の限界に達したこと。

 

test.mqprojプロジェクトが終了して いるのに、なぜtest.mq5がコンパイルされるのでしょうか?

test.mqprojを削除することで、すべてが 正常に戻ります。
 

コードベース内のMQL/Imagesフォルダにpngファイルをアップロードすることは可能でしょうか?

pngファイルは許可されているようですが、何らかの理由でサーバーに送信されません。フォームを送信した後、pngファイルはアップロードリストに表示されません。

 
Artyom Trishkin:

それは4点です。限界に達した。

アルテムさん、ありがとうございます。クレンジングが役に立っています。

 
Stanislav Korotky:

コードベース内のMQL/Imagesフォルダにpngファイルをアップロードすることは可能でしょうか?

pngファイルは許可されているようですが、何らかの理由でサーバーに送信されません。フォームを送信した後、pngファイルはアップロードリストに表示されません。

さらに追加します。EasyAndFastGUI(https://www.mql5.com/ru/code/19703)のように全てのファイルをアーカイブして、MQL5/Imagesにアップロードしています。ZIPファイルはサーバーに登録されましたが、コンパイルはまだ成功していません。サーバーはリソースファイルが見えないと言います。質問: EasyAndFastGUIはどのようにコンパイルしたのですか?

それとも、モデレーターに頼んで、手動でもう一度投稿を押してもらわなければならないのでしょうかhttps://www.mql5.com/en/code/33770/ - publicly unavailable)。

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