Errores, fallos, preguntas - página 1026

 
avoitenko:

Bild 842/64 bit. Al declarar un canva:

aparece un error:

Variable estática no resuelta 'CCanvas::m_default_colors'

¿Soy el único que tiene este error?

Todo el mundo parece tener uno.

MetaDriver:

Intenta inicializarlo explícitamente:

Aunque esto parece ser un error, según la documentación. https://www.mql5.com/ru/docs/basis/oop/staticmembers

.....Los miembros de la clase Static no necesitan ser inicializados explícitamente de forma global, se inicializarán automáticamente cuando se cargue el programa. ......

No se han hecho cambios en el código de la clase, y el error no estaba ahí antes.

//+------------------------------------------------------------------+
//| 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:

Parece que es lo mismo para todos.

No se ha hecho ningún cambio en el código de la clase, y antes no había ese error.

Así es como se compila:

#include <Canvas\Canvas.mqh>

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

CCanvas bmp;
 

¡Hola! Ayúdame a resolver un problema.

He empezado a transferir mis desarrollos de mt4 a mt5. Por primera vez me he encontrado con un problema de carga de DLL. Compila bien pero cuando arranco el indicador. Error "no se puede abrir la dll". Se acabaron los mensajes de error. He leído todos los artículos y lo he colocado todo: Biblioteca en el directorio ...\NTerminals\NMetaTrader 5\NMQL5\NLibraries

//+------------------------------------------------------------------+
//|                                                   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:

así es como se compila:

Sí, pero ¿para qué sirve todo esto?

En el constructor de la clase, este array también se inicializa con nuevos valores, sobreescribiendo los que sugeriste.

En fin, así:

#include <Canvas\Canvas.mqh>
uint CCanvas::m_default_colors[9]={0};
CCanvas bmp;
Compila sin errores. Y que los desarrolladores digan el sentido de introducir m_default_colors en la ayuda.
 
avoitenko:

Sí, pero ¿para qué?

En el constructor de la clase este array también se inicializa con nuevos valores, borrando los que sugieres.

En fin, eso es todo:

Compila sin errores. Y que los desarrolladores puedan decir el significado de m_default_colors en la ayuda.

Te dije que era un error, así que ve a servicedesk con él.

Aunque, a juzgar por la documentación, se trata de un error. https://www.mql5.com/ru/docs/basis/oop/staticmembers

.....Los miembros de la clase Static no necesitan ser inicializados explícitamente de forma global, se inicializarán automáticamente al inicio del programa. ......

El resto de mis sugerencias están dedicadas a ejecutar el programa en presencia de este fallo. La inicialización intermedia realiza esta función, por lo que se puede trabajar sin esperar a que se solucione el fallo.

Este es un esquema típico de mis acciones en tales situaciones.

 

MetaDriver:

La inicialización intermedia realiza esta función, por lo que se puede trabajar sin esperar a que se solucione el error.

Este es un esquema típico de mis acciones en tales situaciones.

Y mis acciones también. Gracias.

Y el Servicio de Atención al Cliente lee y relee este hilo, así que lo arreglarán.

 

Al_key:

Error "no se puede abrir la dll". No hay más mensajes.

El terminal no encuentra su DLL.

La ruta a copiar se puede ver a través del MetaEditor, tomando las propiedades de la carpeta MQL5 en el navegador, la ruta se escribe en el campo "Ubicación". Y luego copie su DLL en la carpeta [ruta]\MQL5\Libraries\.

 
Vladon:

Estimada administración, algo está mal en el servidor de metaQuotes-DEMO

Dice el registro : 2013.08.01 11:58:35 Red '1449777': conexión a MetaQuotes-Demo perdida

La cuenta ha sido prohibida por el servidor de operaciones por una actividad comercial excesiva. La plataforma de negociación se protege a sí misma y cierra las cuentas que envían solicitudes de negociación sin sentido en cada tic.
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
 
avoitenko:

El terminal no encuentra su DLL.

Usted puede ver la ruta de copia en el MetaEditor, tomando las propiedades de la carpeta MQL5 en el navegador, la ruta se escribe en la columna de ubicación. Y a continuación, copie su DLL en la carpeta [ruta]\MQL5\Libraries\

Sí, pero como he escrito, ya he copiado libmysql [ruta]\MQL5\Libraries\
 
Al_key:
Sí, pero como escribí, ya copié libmysql [ruta]\MQL5\Libraries\.

Voy al meta editor y abro las propiedades de la carpeta MQL5, pero hay alguna ruta que no está asociada a mi carpeta del terminal. ¿Será siempre así a partir de ahora, o puedo ajustarlo? Por cierto, lo hice y copié todo. Sigue el mismo error.


Ok, nueva edición del post. Todo parece funcionar, un montón de otros errores, voy a mirar en él ahora. Y todavía cómo hacer una carpeta estándar para los índices y EAs y otros datos. ¿Ayudará el interruptor /portable?