.....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 templateuint m_style_idx; // variable - current index of bit in line style templatestaticuintm_default_colors[9]; // default colorsprotected:
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 |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mappingPrint(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");
elsePrint("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); elsePrint(i, "good");
return(0);
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+//| TradeTransaction function |//+------------------------------------------------------------------+voidOnTradeTransaction(constMqlTradeTransaction& trans,
constMqlTradeRequest& request,
constMqlTradeResult& result)
{
//---
}
//+------------------------------------------------------------------+
.....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.
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³³.
Cara administração, algo está errado com o servidor de metaquotas-DEMO
Diz no log : 2013.08.01 11:58:35Rede'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.
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á?
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Bild 842/64 bit. Ao declarar um canva:
aparece um erro:
Variável estática não resolvida 'CCanvas::m_default_colors'
Todos parecem ter um.
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.
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:
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
é 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:
Compila sem erros. E deixar os programadores dizerem o significado de m_default_colors na ajuda.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³³.
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
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]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á?