Ошибки, баги, вопросы - страница 1026

 
avoitenko:

Билд 842/64 бит. При объявлении канвы:

появляется ошибка:

unresolved static variable 'CCanvas::m_default_colors'

Это только у меня одного такое?

Похоже, что у всех.

MetaDriver:

Попробуй проинициализировать явно:

Хотя, судя по документации, это баг.  https://www.mql5.com/ru/docs/basis/oop/staticmembers

.....Статические члены класса не требуется инициализировать явно на глобальном уровне, они будут проинициализированы автоматически при загрузке программы. ......

Изменений не произошло в коде класса, а ошибки раньше такой не было.

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

Похоже, что у всех.

Изменений не произошло в коде класса, а ошибки раньше такой не было.

вот так компилируется:

#include <Canvas\Canvas.mqh>

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

CCanvas bmp;
 

Здравствуйте! Помогите решить проблему.

Начал переносить наработки с мт4 на мт5. Впервые на новом MQL Столкнулся с проблемой загрузки DLL. Компилируется хорошо, но при запуске индюка. Ошибка "cannot open dll". Больше никаких сообщений. Перечитал соответствующие статьи, вроде все куда надо разместил: библиотеку в директорию ...\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:

вот так компилируется:

Да, но зачем всё это?

В конструкторе класса этот массив также инициализируется новыми значениями, затирая те, что Вы предложили.

В общем, так:

#include <Canvas\Canvas.mqh>
uint CCanvas::m_default_colors[9]={0};
CCanvas bmp;
компилируется без ошибок. А смысл ввода m_default_colors пусть в справке расскажут разработчики.
 
avoitenko:

Да, но зачем всё это?

В конструкторе класса этот массив также инициализируется новыми значениями, затирая те, что вы предложили.

В общем, так:

компилируется без ошибок. А смысл ввода m_default_colors пусть в справке расскажут разработчики.

Ну я сразу и сказал  что это баг.   С этим в сервисдеск.

Хотя, судя по документации, это баг.  https://www.mql5.com/ru/docs/basis/oop/staticmembers

.....Статические члены класса не требуется инициализировать явно на глобальном уровне, они будут проинициализированы автоматически при загрузке программы. ......

Остальные  мои предложения посвящены запуску программы в условиях наличия этого бага.  Промежуточная инициализация такую функцию выполняет, значит можно работать не дожидаясь исправления бага.

Это типичная схема моих действий  в подобных ситуациях.

 

MetaDriver:

Промежуточная инициализация такую функцию выполняет, значит можно работать не дожидаясь исправления бага.

Это типичная схема моих действий  в подобных ситуациях.

И моих действий тоже. Спасибо.

А сервисдеск эту ветку читает и перечитывает, так что подправят.

 

Al_key:

Ошибка "cannot open dll". Больше никаких сообщений.

Не находит терминал вашей DLL.

Путь для копирования можно увидеть через MetaEditor, взяв свойства папки MQL5 в навигаторе, путь прописан в графе "Расположение". И далее скопировать вашу DLL в папку [путь]\MQL5\Libraries\

 
Vladon:

Уважаемая администрация, что-то с сервером метаквотс ДЕМО

Пишет  в журнале : 2013.08.01 11:58:35 Network '1449777': connection to MetaQuotes-Demo lost

Счет был забанен торговым сервером за чрезмерную торговую активность. Торговая платформа защищается и отключает те счета, которые бездумно шлют торговые запросы на каждый тик.
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
 
avoitenko:

Не находит терминал вашей DLL.

Путь для копирования можно увидеть через MetaEditor, взяв свойства папки MQL5 в навигаторе, путь прописан в графе "Расположение". И далее скопировать вашу DLL в папку [путь]\MQL5\Libraries\

Да, но как я уже написал, я уже скопировал libmysql [путь]\MQL5\Libraries\
 
Al_key:
Да, но как я уже написал, я уже скопировал libmysql [путь]\MQL5\Libraries\

Захожу в метаэдитор, открываю свойства папки MQL5, там вообще какой-то путь, который с папкой моего терминала не связан. Это теперь всегда так будет или настроить можно? Да, кстати сделал так, скопировал все. Все равно таже ошибка.


Так, новая правка сообщения. Все вроде заработало, куча других ошибок, сейчас буду разбираться. И все же как сделать стандартную папку для индюков и советников и других данных. Ключ /portable поможет?

Причина обращения: