エラー、バグ、質問 - ページ 1026

 
avoitenko:

Bild 842/64 bit.キャンバを宣言するとき。

というエラーが表示される。

未解決の静的変数 '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の読み込みで問題に直面しました。コンパイルはうまくいくのですが、インジケータを起動すると。cannot open dll "というエラーが発生しました。エラーメッセージが出なくなった。I've read all the articles and placed it all way: Library in directory ...\TerminalsMetaTrader 5 templatesLibraries

//+------------------------------------------------------------------+
//|                                                   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を[path]フォルダの中にコピーします。

 
Vladon:

管理者の皆様へ、metaQuotes-DEMOのサーバーに異常が発生しています。

ログに記載 : 2013.08.01 11:58:35 ネットワーク '1449777': MetaQuotes-Demoへの接続が失わ れました。

このアカウントは、過度の取引行為により取引サーバーから禁止されています。取引プラットフォームは自らを保護し、無心に取引要求を 毎ティック送信するようなアカウントをシャットダウンします。
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
 
avoitenko:

ターミナルでDLLが見つからない。

コピーしたパスはMetaEditorのナビゲータでMQL5フォルダのプロパティを取ると、場所の欄にパスが書かれているのが確認できます。そして、作成したDLLを[path]フォルダの中にコピーします。

Yes, but as I wrote, I already copied libmysql [path]\MQL5Libraries
 
Al_key:
Yeah, but like I wrote, I already copied libmysql [path]\MQL5Librariesธิ์.

メタエディタでMQL5フォルダのプロパティを開くと、私のターミナルフォルダとは関係ないパスが表示されています。これからずっとこのままなのか、それとも調整できるのか?ちなみに、そうして全部コピーしました。それでも同じエラーです。


OK、新たに編集して投稿します。すべて動いているようです、他のエラーの束、これから調べます。そしてやはりインデックスやEAなどのデータの標準フォルダの作り方。ポータブルキーは役に立ちますか?