Fehler, Irrtümer, Fragen - Seite 1026

 
avoitenko:

Bild 842/64 bit. Bei der Deklaration eines canva:

erscheint ein Fehler:

Unaufgelöste statische Variable 'CCanvas::m_default_colors'

Bin ich der Einzige, der diesen Fehler hat?

Jeder scheint einen zu haben.

MetaDriver:

Versuchen Sie, explizit zu initialisieren:

Laut der Dokumentation scheint dies jedoch ein Fehler zu sein. https://www.mql5.com/ru/docs/basis/oop/staticmembers

.....Statische Klassenmitglieder müssen nicht explizit global initialisiert werden, sie werden automatisch initialisiert, wenn das Programm geladen wird. ......

Am Code der Klasse wurden keine Änderungen vorgenommen, und der Fehler war vorher nicht vorhanden.

//+------------------------------------------------------------------+
//| Class CCanvas                                                    |
//| Usage: class for working with a dynamic resource                 |
//+------------------------------------------------------------------+
class CCanvas
  {
private:
   uint              m_style;                  // line style template
   uint              m_style_idx;              // variable - current index of bit in line style template
   static uint       m_default_colors[9];      // default colors

protected:
 
tol64:

Es scheint für alle gleich zu sein.

Am Code der Klasse wurden keine Änderungen vorgenommen, und der Fehler trat vorher nicht auf.

So wird es kompiliert:

#include <Canvas\Canvas.mqh>

static uint  CCanvas::m_default_colors[9] = 
  {0x444444, 0x444444, 0x444444, 0x444444, 0x444444, 0x444444, 0x444444, 0x444444, 0x444444 };

CCanvas bmp;
 

Hallo! Helfen Sie mir, ein Problem zu lösen.

Ich habe begonnen, meine Entwicklungen von mt4 auf mt5 zu übertragen. Zum ersten Mal habe ich ein Problem mit dem Laden der DLL. Es kompiliert gut, aber wenn ich den Indikator starte. Fehler "dll kann nicht geöffnet werden". Keine Fehlermeldungen mehr. Ich habe alle Artikel gelesen und es so platziert: Bibliothek im Verzeichnis ...\Terminals\MetaTrader 5\MQL5\Libraries

//+------------------------------------------------------------------+
//|                                                   Test MySQL.mq5 |
//|                                                               me |
//|                                                               no |
//+------------------------------------------------------------------+
#property copyright "me"
#property link      "no"
#property version   "1.00"
#property indicator_separate_window

#import "libmysql.dll"
int mysql_init(int db);
int mysql_errno(int TMYSQL);
int mysql_real_connect( int TMYSQL,string host,string user,string password, string DB,int port,int socket,int clientflag);
int mysql_real_query(int TMSQL,string query,int length);
void mysql_close(int TMSQL);
#import 


int i = 0;
int mysql;
string query;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   Print(GetLastError());
   mysql = mysql_init(mysql);
   if (mysql!=0) Print("allocated");
   string host="localhost";
   string user="root";
   string password="1111";
   string DB="fxdb";
   int clientflag =0;
   int port = 3306;
   string socket="";
   int res = mysql_real_connect(mysql,host,user,password,DB,port,socket,clientflag);
   int err = GetLastError();
   if (res == mysql) Print("connected");
   else Print("error = ",mysql," ",mysql_errno(mysql)," ");
   //До этой строки все правильно работает.
   i++;   
   StringConcatenate(query, "INSERT INTO ",
                                    //CharToStr(039),
                                    "test", 
                                    //CharToStr(039), 
                                    " (", 
                                    //CharToStr(039), 
                                    "ID", 
                                    //CharToStr(039), 
                                    ", ",
                                    //CharToStr(039), 
                                    "text",
                                    //CharToStr(039), 
                                    ") VALUES (", 
                                    CharToString(039),
                                    DoubleToString(i,0),
                                    CharToString(039),
                                    ", ",
                                    CharToString(039), 
                                    "testtext",
                                    CharToString(039),
                                    ")"
                                    );
   Print("i = ", i);                                    
   Print(query);
   
 
   int length = StringLen(query);
   mysql_real_query(mysql,query,length);
   int myerr=mysql_errno(mysql);
   if (myerr>0)Print("error=",myerr); else Print(i, "good"); 
   return(0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
  {
//---
   
  }
//+------------------------------------------------------------------+
 
MetaDriver:

so wird es kompiliert:

Ja, aber wozu ist das alles gut?

Im Klassenkonstruktor wird dieses Array ebenfalls mit neuen Werten initialisiert, wobei die von Ihnen vorgeschlagenen Werte überschrieben werden.

Wie auch immer, so:

#include <Canvas\Canvas.mqh>
uint CCanvas::m_default_colors[9]={0};
CCanvas bmp;
Kompiliert ohne Fehler. Und lassen Sie die Entwickler die Bedeutung von m_default_colors in der Hilfe erklären.
 
avoitenko:

Ja, aber wozu?

Im Klassenkonstruktor wird dieses Array ebenfalls mit neuen Werten initialisiert, wobei die von Ihnen vorgeschlagenen Werte ausgelöscht werden.

Wie auch immer, das war's:

Kompiliert ohne Fehler. Und lassen Sie die Entwickler die Bedeutung von m_default_colors in der Hilfe erklären.

Ich habe Ihnen gesagt, dass es ein Fehler ist, also gehen Sie damit zu servicedesk.

Nach der Dokumentation zu urteilen, ist dies jedoch ein Fehler. https://www.mql5.com/ru/docs/basis/oop/staticmembers

.....Statische Klassenmitglieder müssen nicht explizit global initialisiert werden, sie werden beim Programmstart automatisch initialisiert. ......

Der Rest meiner Vorschläge ist der Ausführung des Programms in Gegenwart dieses Fehlers gewidmet. Die Zwischeninitialisierung führt diese Funktion aus, so dass Sie arbeiten können, ohne auf die Fehlerbehebung zu warten.

Dies ist ein typisches Schema für mein Handeln in solchen Situationen.

 

MetaDriver:

Die Zwischeninitialisierung führt diese Funktion aus, so dass Sie arbeiten können, ohne auf die Behebung des Fehlers zu warten.

Dies ist ein typisches Schema für mein Handeln in solchen Situationen.

Und mein Handeln auch. Ich danke Ihnen.

Und der Service Desk liest diesen Thread immer wieder, damit er das Problem beheben kann.

 

Al_key:

Fehler "dll kann nicht geöffnet werden". Keine weiteren Nachrichten.

Das Terminal kann Ihre DLL nicht finden.

Der Pfad zum Kopieren kann durch MetaEditor gesehen werden, wobei die Eigenschaften des MQL5-Ordners im Navigator, wird der Pfad in das Feld "Location" geschrieben. Und dann kopieren Sie Ihre DLL in den Ordner [Pfad]\MQL5\Libraries\.

 
Vladon:

Liebe Administration, mit dem metaQuotes-DEMO-Server stimmt etwas nicht

Im Protokoll steht: 2013.08.01 11:58:35 Netzwerk '1449777': Verbindung zu MetaQuotes-Demo verloren

Das Konto wurde vom Handelsserver wegen übermäßiger Handelsaktivitäten gesperrt. Die Handelsplattform schützt sich selbst und schließt Konten, die bei jedem Tick sinnlos Handelsanfragen senden.
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
 
avoitenko:

Das Terminal kann Ihre DLL nicht finden.

Sie können den Kopierpfad in MetaEditor sehen, indem Sie die Eigenschaften des MQL5-Ordners im Navigator nehmen, der Pfad ist in der Spalte location angegeben. Und dann kopieren Sie Ihre DLL in den Ordner [Pfad]\MQL5\Libraries\

Ja, aber wie ich schon schrieb, habe ich libmysql [Pfad]\MQL5\Libraries\ bereits kopiert.
 
Al_key:
Ja, aber wie ich schon schrieb, habe ich libmysql [Pfad]\MQL5\Libraries\ bereits kopiert.

Ich gehe zum Meta-Editor und öffne die Eigenschaften des MQL5-Ordners, aber es gibt einen Pfad, der nicht mit meinem Terminal-Ordner verbunden ist. Wird es von nun an immer so sein, oder kann ich es anpassen? Übrigens habe ich das getan und alles kopiert. Immer noch derselbe Fehler.


Ok, neue Bearbeitung des Beitrags. Alles scheint zu funktionieren, ein Haufen anderer Fehler, ich werde es mir jetzt ansehen. Und noch, wie man einen Standardordner für Indizes und EAs und andere Daten erstellt. Hilft die Taste /portable?