Erros, bugs, perguntas - página 1026

 
avoitenko:

Bild 842/64 bit. Ao declarar um canva:

aparece um erro:

Variável estática não resolvida 'CCanvas::m_default_colors'

Serei eu o único que tem este insecto?

Todos parecem ter um.

MetaDriver:

Tente inicializar explicitamente:

Embora isto pareça ser um insecto, de acordo com a documentação. https://www.mql5.com/ru/docs/basis/oop/staticmembers

.....Os membros da classe estática não precisam de ser inicializados explicitamente a nível global, serão inicializados automaticamente quando o programa for carregado. ......

Não foram feitas alterações no código de classe, e o erro não existia 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 ser o mesmo para todos.

Não foram feitas quaisquer alterações ao código de classe, e antes não existia tal erro.

É assim que se compila:

#include <Canvas\Canvas.mqh>

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

CCanvas bmp;
 

Olá! ajudem-me a resolver um problema.

Comecei a transferir os meus desenvolvimentos do mt4 para o mt5. Pela primeira vez, enfrentei um problema com o carregamento de DLL. Compila bem, mas quando inicio o indicador. Erro "não pode abrir dll". Acabaram-se as mensagens de erro. Li todos os artigos e coloquei-os em todo o lado: Biblioteca no directório ...Terminais MetaTrader 5 MQL5 Bibliotecas

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

é assim que se compila:

Sim, mas para que serve tudo isto?

No construtor de classes, esta matriz também é inicializada com novos valores, substituindo os que sugeriu.

Seja como for, assim:

#include <Canvas\Canvas.mqh>
uint CCanvas::m_default_colors[9]={0};
CCanvas bmp;
Compila sem erros. E deixar os programadores dizerem o significado de m_default_colors na ajuda.
 
avoitenko:

Sim, mas para quê?

No construtor de classes, esta matriz também é inicializada com novos valores, eliminando os que sugere.

Seja como for, é tudo:

Compila sem erros. E deixar que os programadores possam dizer o significado de m_default_colors na ajuda.

Eu disse-vos que era um insecto, por isso vão ao servicedesk com ele.

Embora, a julgar pela documentação, isto é um bug. https://www.mql5.com/ru/docs/basis/oop/staticmembers

.....Os membros da classe estática não precisam de ser inicializados explicitamente a nível global, serão inicializados automaticamente no arranque do programa. ......

O resto das minhas sugestões são dedicadas à execução do programa na presença deste bug. A inicialização intermédia executa esta função, para que possa trabalhar sem esperar pela correcção do bug.

Este é um esquema típico das minhas acções em tais situações.

 

MetaDriver:

A inicialização intermédia desempenha esta função, para que possa trabalhar sem esperar que o bug seja corrigido.

Este é um esquema típico das minhas acções em tais situações.

E as minhas acções também. Obrigado.

E o Service Desk lê e relê este fio, pelo que o corrigirá.

 

Al_key:

Erro "não pode abrir dll". Não há mais mensagens.

O terminal não encontra a sua DLL.

O caminho para a cópia pode ser visto através do MetaEditor, tomando as propriedades da pasta MQL5 no navegador, o caminho é escrito no campo "Localização". E depois copie a sua DLL na pasta [caminho]MQL5³Libraries³³.

 
Vladon:

Cara administração, algo está errado com o servidor de metaquotas-DEMO

Diz no log : 2013.08.01 11:58:35 Rede '1449777': ligação a MetaQuotes-Demo perdido

A conta foi banida pelo servidor de negociação por excesso de actividade comercial. A plataforma de negociação protege-se a si própria e encerra as contas que despropositadamente enviam pedidos de negociação em cada tic.
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
 
avoitenko:

O terminal não encontra a sua DLL.

Pode ver o caminho de cópia no MetaEditor, tomando as propriedades da pasta MQL5 no navegador, o caminho é escrito na coluna de localização. E depois copie a sua DLL na pasta [path]MQL5Libraries

Sim, mas como escrevi, já copiei a libmysql [caminho]MQL5
 
Al_key:
Sim, mas como escrevi, já copiei a libmysql [caminho]MQL5Libraries

Vou ao meta editor e abro as propriedades da pasta MQL5, mas há algum caminho que não está associado à minha pasta terminal. Será sempre assim a partir de agora, ou posso ajustá-lo? A propósito, fi-lo e copiei tudo. Continua a ser o mesmo erro.


Ok, nova edição para o post. Tudo parece estar a funcionar, um monte de outros erros, vou agora analisar o assunto. E ainda como fazer uma pasta padrão para índices e EAs e outros dados. Será que a chave /portável ajudará?