错误、漏洞、问题 - 页 1026

 
avoitenko:

Bild 842/64位。当宣布一个canva。

出现了一个错误。

未解决的静态变量'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;
 

你好!帮我解决一个问题。

我已经开始将我的发展从mt4转移到mt5。我第一次遇到了加载DLL的问题。它编译得很好,但当我启动指标时。错误 "无法打开dll"。没有更多的错误信息。我已经阅读了所有的文章,并把它放在了所有的地方: Library in directory ...\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:

错误 "无法打开dll"。没有进一步的消息。

终端没有找到你的DLL。

你可以在MetaEditor中看到复制的路径,在导航器中取MQL5文件夹的属性,路径写在 "位置 "栏中。然后把你的DLL复制到[path]\MQL5\Libraries\文件夹中。

 
Vladon:

亲爱的管理员,metaQuotes-DEMO服务器出了问题。

日志中说:2013.08.01 11:58:35 网络 '1449777': 与MetaQuotes-Demo的连接丢失

该账户因过度的交易活动而被交易服务器禁止。交易平台正在保护自己,禁用那些无意识地在每个tick上发送交易请求 的账户。
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
 
avoitenko:

终端没有找到你的DLL。

你可以在MetaEditor中看到复制的路径,在导航器中取MQL5文件夹的属性,路径写在位置栏中。然后把你的DLL复制到[path]\MQL5\Libraries\文件夹里。

是的,但正如我所写的,我已经复制了libmysql [path]\MQL5\Libraries\。
 
Al_key:
是的,但就像我写的,我已经复制了libmysql [path]\MQL5\Libraries\。

我进入元编辑器,打开MQL5文件夹的属性,但有一些路径与我的终端文件夹没有关联。以后会一直这样吗,或者我可以调整吗?顺便说一下,我这样做了,并复制了所有的东西。还是同样的错误。


好吧,对帖子进行新的编辑。一切似乎都在工作,一堆其他的错误,我现在要研究一下。还有就是如何为指数和EA及其他数据制作一个标准的文件夹。/portable开关会有帮助吗?