MetaTrader 4 Build 529 beta publié avec un nouveau compilateur - page 49

 
Interesting:
Et sans code, comment aider ?

Le code fait 200 lignes, + il n'est pas du tout commenté (j'ai traduit la fonction et sa référence aux rails OOP).

Je pense que quelqu'un a rencontré un problème similaire (je soupçonne moi-même les constructeurs et les destructeurs, je les ai à la fois dans la classe de base et dans les descendants par défaut (pas du tout spécifiés)).

Je posterai le code si j'en ai besoin, je le commenterai pour moi-même de toute façon,

Mais je le posterai demain, je vais dormir maintenant.

 

Lorsque ShellExecuteA est appelé depuis shell32.dll, ce message apparaît :

Pourriez-vous appeler "shell32.dll : : ShellExecuteA, DLL non autorisée
Violation d'accès write 0x00000000

Je l'appelle comme ça :

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

PS. J'ai oublié d'activer l'autorisation d'appel de dll, mais si vous activez l'autorisation d'appel de dll, le terminal se bloque lorsque vous exécutez le testeur.

 
VOLDEMAR:

Oppa, une voix du passé .... Vous n'auriez pas par hasard le premier modèle, n'est-ce pas ?

Bild 541 bien sûr.
 
Barbarian:

Lorsque ShellExecuteA est appelé depuis shell32.dll, ce message apparaît :

Pourriez-vous appeler "shell32.dll : : ShellExecuteA, DLL non autorisée
Violation d'accès write 0x00000000

Je l'appelle comme ça :

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

PS. J'ai oublié d'activer la permission d'appeler la dll, mais si vous activez la permission pour la dll, lorsque vous exécutez le testeur, le terminal se plante.


Les chaînes de caractères sont maintenant unicode.

Vous devez utiliser la version unicode de la fonction

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

 
ALXIMIKS:

Le code fait 200 lignes, + il n'est pas du tout commenté (j'ai traduit la fonction et sa référence aux rails OOP).

Je pense que quelqu'un a rencontré un problème similaire (je soupçonne moi-même les constructeurs et les destructeurs, je les ai à la fois dans la classe de base et dans les descendants par défaut (pas du tout spécifiés)).

Je posterai le code si j'en ai besoin, je le commenterai pour moi-même de toute façon,

Mais je le posterai demain, je dors ce soir.


S'il n'y a rien de secret, postez le code et les étapes à reproduire ou à dépanner. Merci

 
stringo:

Les chaînes de caractères sont unicode.

Vous devez utiliser la version unicode de la fonction

Oui, ce n'est pas si simple, il semble que vous ayez encore besoin d'écrire L devant les chaînes littérales.
 
digits:

aidez-moi à comprendre pourquoi ce code compilé sur 509 fonctionne lorsqu'il est appelé depuis un EA

dans EA, le code est appelé et traité comme ceci :

mais si le code est compilé dans ME à partir du build 540, alors le fichier journal EA écrit :

Et EA ne fonctionne pas correctement ou ne fonctionne pas du tout.


Avez-vous essayé dans le build 541 ?

J'ai essayé de reproduire sur la base de vos sources jusqu'à présent sans succès. Pouvez-vous poster toutes les sources et les détails (OS, symbole, broker, dossier d'installation, permissions, etc.) sur le servicedesk

 
ALXIMIKS:

Pouvez-vous me dire quelle est la cause possible de ce crash) ?

J'ai réalisé la fonction de calcul principale de l'indicateur par le biais de la POO (je l'étudie depuis quelques jours maintenant).

Tout fonctionne bien (à 3000 bars la vitesse de calcul a augmenté de 2-3 fois).

Mais lorsque j'essaie d'exécuter 2 indicateurs , il se bloque et tout se bloque .......


Il est préférable d'aller directement à Servicedesk avec toutes les sources et une description.
 
void OnStart()
{
//---
//+------------------------------------------------------------------+
//| Le script affiche des informations sur l'outil |.
//+------------------------------------------------------------------+
Print("Symbole=",Symbole()) ;
Print("Taille du point dans la devise de cotation=",MarketInfo(Symbol(),MODE_POINT)) ;
Print("Pas minimum de changement de prix du titre en points=",MarketInfo(Symbol(),MODE_TICKSIZE)) ;
}

LOG:

2013.11.15 12:43:11.716 ttt EURUSD,M1 : supprimé

2013.11.15 12:43:11.716 ttt EURUSD,M1 : Pas minimum de changement de prix du symbole en points=1e-005.0

2013.11.15 12:43:11.716 ttt EURUSD,M1 : Taille du Pip dans la devise de cotation=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 : chargé avec succès


 
HIDDEN:
void OnStart()
{
//---
//+------------------------------------------------------------------+
//| Le script affiche des informations sur l'outil |.
//+------------------------------------------------------------------+
Print("Symbole=",Symbole()) ;
Print("Taille du point dans la devise de cotation=",MarketInfo(Symbol(),MODE_POINT)) ;
Print("Pas minimum de changement de prix du titre en points=",MarketInfo(Symbol(),MODE_TICKSIZE)) ;
}

LOG:

2013.11.15 12:43:11.716 ttt EURUSD,M1 : supprimé

2013.11.15 12:43:11.716 ttt EURUSD,M1 : Pas minimum de changement de prix du symbole en points=1e-005.0

2013.11.15 12:43:11.716 ttt EURUSD,M1 : Taille du Pip dans la devise de cotation=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 : chargé avec succès


Le format scientifique de la sortie des données vous déconcerte ?

1e-005.0 = 0.00001. Cinq chiffres, après tout.
Pour imprimer en représentation décimale, utilisez DoubleToStr dans Print ou allez à la nouvelle version de Print : PrintFormat.