MetaTrader 4 Build 529 beta rilasciato con un nuovo compilatore - pagina 49

 
Interesting:
E senza codice come aiutare?

Il codice è di 200 righe, + non è commentato affatto (ho tradotto la funzione e il suo riferimento ai binari OOP).

Pensavo che qualcuno avesse incontrato qualcosa di simile (io stesso sospetto costruttori e distruttori, li ho sia nella classe base che nei discendenti di default (non specificati affatto))

Posterò il codice se ne ho bisogno, lo commenterò comunque per me stesso,

Ma lo posterò domani, ora vado a dormire.

 

Quando ShellExecuteA è chiamato da shell32.dll, appare questo messaggio:

Potreste chiamare "shell32.dll :: ShellExecuteA, DLL non consentita
Violazione di accesso scrivere 0x00000000

Io lo chiamo così:

#import "shell32.dll"
int ShellExecuteA(int a0,string a1,string a2,string a3,string a4,int a5);
#import

PS. ho dimenticato di abilitare il permesso di chiamata dll, ma se si abilita il permesso di chiamata dll, il terminale va in crash quando si esegue il tester

 
VOLDEMAR:

Oppa, una voce dal passato .... Non è che per caso hai la prima build, vero?

Bild 541 naturalmente.
 
Barbarian:

Quando ShellExecuteA è chiamato da shell32.dll, appare questo messaggio:

Potreste chiamare "shell32.dll :: ShellExecuteA, DLL non consentita
Violazione di accesso scrivere 0x00000000

Io lo chiamo così:

#import "shell32.dll"
int ShellExecuteA(int a0,string a1,string a2,string a3,string a4,int a5);
#import

PS. ho dimenticato di attivare il permesso di chiamare la dll, ma se si attiva il permesso per la dll, quando si esegue il tester, il terminale va in crash


Le stringhe sono ora unicode.

Dovete usare la versione unicode della funzione

#import "shell32.dll"
int ShellExecuteW(int a0,string a1,string a2,string a3,string a4,int a5);
#import

 
ALXIMIKS:

Il codice è di 200 righe, + non è commentato affatto (ho tradotto la funzione e il suo riferimento ai binari OOP).

Pensavo che qualcuno avesse incontrato qualcosa di simile (io stesso sospetto costruttori e distruttori, li ho sia nella classe base che nei discendenti di default (non specificati affatto))

Posterò il codice se ne ho bisogno, lo commenterò comunque per me stesso,

Ma lo posterò domani, stanotte dormo.


Se non c'è niente di segreto, pubblicate il codice e i passi per la riproduzione o per il servicedesk. Grazie

 
stringo:

Le stringhe sono unicode.

Dovete usare la versione unicode della funzione

Sì, non è così semplice, sembra che tu debba ancora scrivere L davanti ai letterali di stringa.
 
digits:

aiutatemi a capire perché questo codice compilato su 509 funziona quando viene chiamato da un EA

in EA, il codice viene chiamato e gestito in questo modo:

ma se il codice è compilato in ME dalla build 540 allora il file di log EA scrive:

E EA non funziona correttamente o non funziona affatto.


Avete provato nella build 541?

Hanno provato a riprodurre sulla base delle vostre fonti finora senza successo. Puoi postare tutte le fonti e i dettagli (OS, simbolo, broker, cartella di installazione, permessi, ecc.) sul servicedesk

 
ALXIMIKS:

Puoi dirmi la possibile causa del crash))

Ho realizzato la funzione di calcolo principale dell'indicatore tramite OOP (la sto studiando da qualche giorno).

Tutto funziona bene (a 3000 bar la velocità di calcolo è aumentata di 2-3 volte).

Ma quando cerco di eseguire 2 indicatori si blocca e tutto si blocca ......


È meglio andare direttamente su servicedesk con tutte le fonti e una descrizione.
 
void OnStart()
{
//---
//+------------------------------------------------------------------+
//| Lo script visualizza informazioni sullo strumento
//+------------------------------------------------------------------+
Print("Symbol=",Symbol());
Print("Dimensione del punto nella valuta della quotazione=",MarketInfo(Symbol(),MODE_POINT));
Print("Passo minimo di variazione del prezzo del titolo in punti=",MarketInfo(Symbol(),MODE_TICKSIZE));
}

LOG:

2013.11.15 12:43:11.716 ttt EURUSD,M1: rimosso

2013.11.15 12:43:11.716 ttt EURUSD,M1: Passo minimo di variazione del prezzo del simbolo in punti=1e-005.0

2013.11.15 12:43:11.716 ttt EURUSD,M1: Pip size in the quote currency=1e-005.0

2013.11.15 12:43:11.716 ttt EURUSD,M1: Symbol=EURUSD

2013.11.15 12:43:11.707 ttt EURUSD,M1: caricato con successo


 
HIDDEN:
void OnStart()
{
//---
//+------------------------------------------------------------------+
//| Lo script visualizza informazioni sullo strumento
//+------------------------------------------------------------------+
Print("Symbol=",Symbol());
Print("Dimensione del punto nella valuta della quotazione=",MarketInfo(Symbol(),MODE_POINT));
Print("Passo minimo di variazione del prezzo del titolo in punti=",MarketInfo(Symbol(),MODE_TICKSIZE));
}

LOG:

2013.11.15 12:43:11.716 ttt EURUSD,M1: rimosso

2013.11.15 12:43:11.716 ttt EURUSD,M1: Passo minimo di variazione del prezzo del simbolo in punti=1e-005.0

2013.11.15 12:43:11.716 ttt EURUSD,M1: Pip size in the quote currency=1e-005.0

2013.11.15 12:43:11.716 ttt EURUSD,M1: Symbol=EURUSD

2013.11.15 12:43:11.707 ttt EURUSD,M1: caricato con successo


Confuso dal formato scientifico dell'output dei dati?

1e-005.0 = 0.00001. Cinque cifre, dopo tutto.
Per stampare in rappresentazione decimale, usate DoubleToStr dentro Print o andate a una nuova versione di Print: PrintFormat.

Motivazione: