Errori, bug, domande - pagina 1026

 
avoitenko:

Bild 842/64 bit. Quando si dichiara un canva:

appare un errore:

Variabile statica irrisolta 'CCanvas::m_default_colors'

Sono l'unico che ha questo bug?

Tutti sembrano averne uno.

MetaDriver:

Provate a inizializzare esplicitamente:

Anche se questo sembra essere un bug, secondo la documentazione. https://www.mql5.com/ru/docs/basis/oop/staticmembers

.....I membri statici della classe non hanno bisogno di essere inizializzati esplicitamente a livello globale, saranno inizializzati automaticamente quando il programma viene caricato. ......

Non sono stati fatti cambiamenti nel codice della classe, e l'errore non c'era prima.

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

Sembra essere lo stesso per tutti.

Non sono state apportate modifiche al codice della classe, e prima non c'era questo errore.

Ecco come si compila:

#include <Canvas\Canvas.mqh>

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

CCanvas bmp;
 

Ciao, aiutami a risolvere un problema.

Ho iniziato a trasferire i miei sviluppi da mt4 a mt5. Per la prima volta ho affrontato un problema con il caricamento della DLL. Compila bene ma quando avvio l'indicatore. Errore "impossibile aprire dll". Niente più messaggi di errore. Ho letto tutti gli articoli e l'ho posizionato come segue: Libreria nella 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:

ecco come si compila:

Sì, ma a cosa serve tutto questo?

Nel costruttore della classe, questo array è anche inizializzato con nuovi valori, sovrascrivendo quelli che hai suggerito.

Comunque, come questo:

#include <Canvas\Canvas.mqh>
uint CCanvas::m_default_colors[9]={0};
CCanvas bmp;
Compila senza errori. E che gli sviluppatori dicano il significato di m_default_colors nell'aiuto.
 
avoitenko:

Sì, ma per cosa?

Nel costruttore della classe questo array viene anche inizializzato con nuovi valori, cancellando quelli che suggerisci tu.

Comunque, questo è tutto:

Compila senza errori. E lasciare che gli sviluppatori possano dire il significato di m_default_colors nell'aiuto.

Ti ho detto che era un bug, quindi vai a servirti con quello.

Anche se, a giudicare dalla documentazione, questo è un bug. https://www.mql5.com/ru/docs/basis/oop/staticmembers

.....I membri statici della classe non hanno bisogno di essere inizializzati esplicitamente a livello globale, saranno inizializzati automaticamente all'avvio del programma. ......

Il resto dei miei suggerimenti sono dedicati all'esecuzione del programma in presenza di questo bug. L'inizializzazione intermedia esegue questa funzione, quindi potete lavorare senza aspettare la correzione del bug.

Questo è uno schema tipico delle mie azioni in queste situazioni.

 

MetaDriver:

L'inizializzazione intermedia esegue questa funzione, quindi potete lavorare senza aspettare che il bug venga risolto.

Questo è uno schema tipico delle mie azioni in queste situazioni.

E anche le mie azioni. Grazie.

E il Service Desk legge e rilegge questo thread, quindi lo sistemeranno.

 

Al_key:

Errore "impossibile aprire dll". Nessun altro messaggio.

Il terminale non trova la tua DLL.

Il percorso di copia può essere visto attraverso MetaEditor, prendendo le proprietà della cartella MQL5 nel navigatore, il percorso è scritto nel campo "Location". E poi copiate la vostra DLL nella cartella [percorso]\MQL5\Libraries\.

 
Vladon:

Cara amministrazione, qualcosa non va con il server metaQuotes-DEMO

Dice nel log: 2013.08.01 11:58:35 Network '1449777': connessione a MetaQuotes-Demo persa

L'account è stato bannato dal server di trading per attività di trading eccessiva. La piattaforma di trading si sta proteggendo e sta disabilitando quei conti che inviano senza cervello richieste di trading ad ogni tick.
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
 
avoitenko:

Il terminale non trova la tua DLL.

Potete vedere il percorso di copia in MetaEditor, prendendo le proprietà della cartella MQL5 nel navigatore, il percorso è scritto nella colonna della posizione. E poi copiate la vostra DLL nella cartella [percorso]\MQL5\Libraries\

Sì, ma come ho scritto, ho già copiato libmysql [percorso]\MQL5\Libraries\
 
Al_key:
Sì, ma come ho scritto, ho già copiato libmysql [percorso]\MQL5\Libraries\.

Vado nel meta editor e apro le proprietà della cartella MQL5, ma c'è qualche percorso che non è associato alla mia cartella terminale. Sarà sempre così d'ora in poi, o posso regolarlo? A proposito, l'ho fatto e ho copiato tutto. Ancora lo stesso errore.


Ok, nuova modifica al post. Tutto sembra funzionare, un mucchio di altri errori, lo esaminerò ora. E ancora come fare una cartella standard per indici e EAs e altri dati. L'interruttore /portable aiuterà?