Fehler, Irrtümer, Fragen - Seite 2973

 
Denis Kirichenko:

Liebe Entwickler, bitte überprüfen Sie, ob <Arrays\ArrayObj.mqh> korrekt ist:

Technisch gesehen liegt kein Fehler vor. In diesem Fall ist virtuell impliziert, auch wenn es nicht ausdrücklich angegeben ist.

 
A100:

Technisch gesehen, liegt kein Fehler vor. In diesem Fall ist das Virtuelle impliziert, auch wenn es nicht ausdrücklich erwähnt wird.

Ich danke Ihnen. Aber ich würde mir eine gewisse syntaktische Einheitlichkeit wünschen. Schließlich haben wir zum Beispiel schon eine:

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

 

Der Marktordner ist voll von Experten

11

aber ich kann nur die ersten 6 testen

11

Was ist falsch und was soll ich tun?

 

CryptDecode(CRYPT_BASE64 Fehler

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

---

Die FunktionCryptEncodeA erzeugt eine Zeile, die CryptDecodeA nicht dekodieren kann und erzeugt den Fehler "4029" in MT4, "4006" in MT5

Protokollzeile: vj9jDk+GxxB4W1zQc4/rC4OPvttMcgcF5ZFVC7m7l50=

Wenn Sie das letzte "=" entfernen, wird die Datei entschlüsselt und es tritt kein Fehler auf.

In diesem Fall wird php normal und korrekt entschlüsselt:

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

---

Wir verschlüsseln die gleiche Zeile auf dem Server: "indikator_chart_fenster"

Wir erhalten das Ergebnis:"vj9jDk+GxxB4W1zQc4/rC54fEtkLAsAONkyeprqmMlw="

Fügen Sie diese Zeile in den mql-Code ein, und der Fehler tritt erneut auf - entfernen Sie das letzte "=", und alles funktioniert einwandfrei.

---

Geben Sie einen zufälligen Verschlüsselungscode ein, und der Server erhält die Zeichenfolge: "8CpXr3OlVlVhGs41syHA0+HqZKnatswQjRWn2fKYN4qN4==".

Einfügen der Zeichenfolge in die mql-Code - Fehler, entfernt ein "=" so dass nur ein - funktionierte gut (was war der Schlüssel, der die Zeichenfolge mit zwei Gleichheiten erstellt - konnte nicht reproduzieren)

Ich will eine Antwort, vielleicht mache ich etwas falsch!

 

Keine Speicherfreigabe während der Optimierung.

Der Screenshot zeigt den Speicherverbrauch bei Verwendung nur eines Agenten während der Optimierung:

Der Fehler bezieht sich auf ein ähnliches Design wie unten im Code, der Fehler taucht hier nicht auf:

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

Haben Sie dazu eine Meinung?

 
Denis Nikolaev:

Der Marktordner ist voll von Experten

aber ich kann nur die ersten 6 testen

Was ist falsch und was soll ich tun?

Dies ist eine 4. Sie haben das Limit der Anzahl erreicht.

 

Warum wird test.mq5 anstelle von test.mqproj kompiliert, während das Projekttest.mqprojgeschlossen ist?

Erst durch das Löschen der Dateitest.mqproj ist alles wieder in Ordnung
 

Ist es möglich, eine png-Datei in den Ordner MQL/Images in Codebase hochzuladen?

Die png-Dateien scheinen erlaubt zu sein, aber aus irgendeinem Grund werden sie nicht an den Server gesendet - nach dem Absenden des Formulars sind die png-Dateien nicht in der Liste der hochgeladenen Dateien.

 
Artyom Trishkin:

Das ist eine Vier. Das Limit ist erreicht.

Vielen Dank, Artem. Die Säuberung hat geholfen.

 
Stanislav Korotky:

Ist es möglich, eine png-Datei in den Ordner MQL/Images in Codebase hochzuladen?

Die png-Dateien scheinen erlaubt zu sein, aber aus irgendeinem Grund werden sie nicht an den Server gesendet - nach dem Absenden des Formulars sind die png-Dateien nicht in der Liste der hochgeladenen Dateien.

Ich werde noch mehr hinzufügen. Ich habe alle Dateien wie mit EasyAndFastGUI (https://www.mql5.com/ru/code/19703) archiviert und in MQL5/Images hochgeladen. Die Zip-Datei wurde auf dem Server registriert, aber die Kompilierung ist immer noch nicht erfolgreich - der Server sagt, dass er die Ressourcendateien nicht sieht. Frage: Wie wurde EasyAndFastGUI kompiliert?

Oder muss ich die Moderatoren bitten, die Übermittlung manuell erneut zu starten(https://www.mql5.com/en/code/33770/ - öffentlich nicht verfügbar)?

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