Erreurs, bugs, questions - page 304

 
Yedelkin:

Je tire cette fonction de Référence MQL5 / Notions de base du langage / Fonctions

Mais le compilateur imprime '(' - le point-virgule est attendu.

Qu'est-ce que cela signifie ?

J'ai vérifié en utilisant l'exemple de l'édition (en remplaçant le premier paramètre passé). Tout est OK, aucune erreur ne s'est produite.

L'exemple d'aide correct ressemble à ceci

//function linfunc
double linfunc(double a, double b)
{
return(a + b);
}

Je n'ai pu obtenir un message comme le vôtre personnellement que dans un seul test, lorsque j'ai remplacé la première accolade par une accolade ronde. Puis j'ai reçu ce message

'(' - le point-virgule est attendu

Si le nombre de parenthèses (droite et gauche) ne correspond pas, l'avertissement suivant est généré

';' - token inattendu
'}' - le point-virgule est attendu

PS

Si j'essaie de compiler l'exemple actuel (avec un "a" russe), le compilateur génère une erreur comme il le devrait

a' - identifiant non déclaré

 
Yedelkin:

N'inventez pas pour les autres des choses qui n'existent pas :) Le symbole a été corrigé immédiatement dans l'éditeur, comme une évidence. L'erreur se produit lorsque le curseur se trouve devant la parenthèse ouvrante, mais pas avant le caractère "a". En étant humainement attentif, vous auriez dû le remarquer dans le commentaire du compilateur cité.

La question demeure : https://www.mql5.com/ru/forum/1111/page304#comment_48136

Explication. La question s'est posée, non pas parce que je m'assois et compile bêtement des exemples à partir du livre de référence, mais parce que ce message d'erreur apparaît lorsque je crée une fonction fonctionnelle. Faire référence à l'exemple de la référence ne change rien. Vous pouvez même supprimer la description des arguments de l'en-tête - le problème persiste.

Oui, il a une erreur, très probablement sans rapport avec cet exemple.....

Vous devez regarder l'ensemble du code...

 
Yedelkin:

Je tire cette fonction de Référence MQL5 / Notions de base du langage / Fonctions

Mais le compilateur imprime '(' - le point-virgule est attendu.

Qu'est-ce que cela signifie ?

Nous avons corrigé la lettre dans l'exemple, mais nous ne pouvions pas obtenir cette erreur exacte. Pouvez-vous fournir le code complet afin que nous puissions le reproduire ?
 
Rosh:
La lettre dans l'exemple a été corrigée, mais c'est exactement le genre d'erreur que nous ne pouvions pas obtenir. Pouvez-vous fournir le code complet pour que nous puissions le reproduire ?

Merci à tous pour votre attention à la question ! Le problème est qu'il n'y a pas de "code complet" qui pourrait déclencher une erreur. Je viens de décider de vérifier l'affirmation d'un manuel C++ selon laquelle la valeur d'une variable externe, qui est transmise à une fonction en tant qu'argument, ne peut pas être modifiée par la fonction (ou quelque chose comme ça - enfin, du domaine de l'auto-éducation). J'ai créé une fonction primitive pour vérifier - le compilateur génère une erreur. J'ai consulté la référence, copié l'exemple, corrigé le symbole dans l'exemple - toujours la même erreur. J'ai essayé d'insérer la fonction dans un modèle de script et dans le modèle de conseiller expert, l'erreur ne change pas. En fait, le "code complet" se compose uniquement de la fonction de l'exemple, qui a été insérée dans le corps vide de la fonction onTick() ou onStart().

Je posterai ce code pseudo-complet dans la soirée, mais je ne sais pas si cela peut aider. J'essaierai également de surcharger l'ordinateur, puisqu'il a été utilisé en mode "aller et retour" pendant une semaine.

 
Rosh:
La lettre de l'exemple a été corrigée, mais il n'a pas été possible d'obtenir cette erreur exacte. Pouvez-vous fournir le code complet pour que nous puissions le reproduire ?
void OnStart()
  {
   double                       // тип возвращаемого значения
   linfunc (double a, double b)  // имя функции и список параметров
     {
                               // составной оператор
      return (a + b);           // возвращаемое значение
     }
  }
Il se reproduit en quelque sorte comme ça.
 
Swan:
D'une certaine manière, cela se reproduit comme ça.

Vous essayez de définir une fonction dans une autre - c'est inacceptable. La section sur l'appel de fonction vous le dit explicitement :

Une fonction peut être déclarée ou décrite n'importe où dans le programme de manière globale, c'est-à-dire en dehors des autres fonctions. Une fonction ne peut pas être déclarée ou décrite dans une autre fonction.

 
Rosh:

Vous essayez de définir une fonction dans une autre - c'est inacceptable. La section sur l'appel de fonction le dit explicitement :

Merci pour cette précision ! C'est exactement mon cas.

Les connaissances théoriques ne garantissent pas l'exactitude de leur application dans la pratique :) Mon erreur.

 

Construire 392.

Lors de la suppression d'un graphique, celui-ci n'apparaît pas dans la liste des graphiques supprimés. Il s'avère que l'option de menu Fichier>Ouvrir les graphiques supprimés ne fonctionne pas.

J'ai accidentellement fermé (au lieu de déplier) le tableau, j'espérais le voir dans les supprimés, et puis....

 
Ashes:

Construire 392.

Lors de la suppression d'un graphique, celui-ci n'apparaît pas dans la liste des graphiques supprimés. Il s'avère que l'option de menu Fichier>Ouvrir les graphiques supprimés ne fonctionne pas.

J'ai accidentellement fermé (au lieu de déplier) le tableau, en espérant le voir dans ceux qui ont été supprimés, et puis...

Cochez la case.


 

Certains agents ne démarrent pas à distance, voici le journal :

LE      0       5.0.6.84        14:51:19        login (build 392)
HN      2       Tester  14:51:20        initial synchronization error
JF      2       5.0.6.84        14:51:20        send error 10038
LJ      0       Tester  14:51:20        tester agent shutdown
KO      0       5.0.6.84        15:25:41        login (build 392)
HD      2       Tester  15:25:42        initial synchronization error
NM      0       Tester  15:25:42        tester agent shutdown
HM      0       127.0.0.1       15:36:37        login (build 392)
FK      0       Network 15:36:38        2548 bytes of optimization passes loaded
HM      0       Network 15:36:38        16 bytes of input parameters loaded
HE      0       Network 15:36:38        3788 bytes of group info loaded
GP      0       Network 15:36:38        3358 bytes of tester parameters loaded
HG      0       Network 15:36:38        2948 bytes of input parameters loaded
KL      0       Network 15:36:38        671 bytes of selected symbols loaded
CD      0       Tester  15:36:38        expert file added: Experts\MyExperts\ExpCrossEMA.ex5. 133395 bytes loaded
QS      0       Tester  15:36:38        initial deposit 5000.00 USD, leverage 1:100
PJ      0       Tester  15:36:38        successfully initialized
NP      0       Network 15:36:38        146 Kb of total initialization data received
MG      0       Tester  15:36:38        optimization pass 393 started
LR      0       TesterAgent     15:36:38        Intel Core2 Duo  E8200 @ 2.66 GHz, 2047 MB, PR49
DI      0       Symbols 15:36:40        EURUSD: symbol synchronized, 2904 bytes of symbol info received
QS      0       History 15:36:40        EURUSD: load 704 Kb of history data to synchronize
OF      0       History 15:36:40        EURUSD: history synchronized from 2009.01.02 to 2011.01.31
KK      0       History 15:36:42        EURUSD: contains 366322 M1 records of beginning data from 2009.01.02 10:00 to 2009.12.31 18:59
CH      0       History 15:36:42        EURUSD,M5: history cache reserved for estimated 150171 bars
JO      0       History 15:36:42        EURUSD,M5: history begins from 2009.01.02 10:00
NK      0       Tester  15:36:42        EURUSD,M5 (Alpari-Demo): every tick generating
KS      0       Tester  15:36:42        EURUSD,M5: testing of Experts\MyExperts\ExpCrossEMA.ex5 from 2010.01.01 00:00 to 2011.01.01 00:00 started with inputs:
PN      0       Tester  15:36:42          Inp_Signal_CrossEMA_FastPeriod=30
GG      0       Tester  15:36:42          Inp_Signal_CrossEMA_SlowPeriod=18
DS      0       Tester  15:36:42          Inp_Expert_Title=ExpCrossEMA
MK      0       Tester  15:36:42          Inp_Money_FixLot_Percent=10
FM      0       Tester  15:36:42          Inp_Money_FixLot_Lots=0.1
GO      0       ExpCrossEMA (EURUSD,M5) 15:36:42        2010.01.01 00:00:00   CSignalCrossEMA::ValidationSettings: period of slow EMA must be greater than period of fast EMA
RF      0       ExpCrossEMA (EURUSD,M5) 15:36:42        2010.01.01 00:00:00   OnInit: error signal parameters
DM      2       Tester  15:36:42        tester stopped because OnInit failed
FG      0       Network 15:36:42        16 bytes of tester parameters received
PR      0       Tester  15:36:42        optimization pass 1817 started
FK      0       Tester  15:36:42        initial deposit 5000.00 USD, leverage 1:100
FL      0       Tester  15:36:44        EURUSD,M5 (Alpari-Demo): every tick generating
GE      0       Tester  15:36:44        EURUSD,M5: testing of Experts\MyExperts\ExpCrossEMA.ex5 from 2010.01.01 00:00 to 2011.01.01 00:00 started with inputs:
GE      0       Tester  15:36:44          Inp_Signal_CrossEMA_FastPeriod=28
KM      0       Tester  15:36:44          Inp_Signal_CrossEMA_SlowPeriod=49
DJ      0       Tester  15:36:44          Inp_Expert_Title=ExpCrossEMA
IM      0       Tester  15:36:44          Inp_Money_FixLot_Percent=10
RF      0       Tester  15:36:44          Inp_Money_FixLot_Lots=0.1
GO      0       Tester  15:36:45        output to log disabled
IO      0       Tester  15:37:10        OnTester result 0

Bien que via localhost cet agent fonctionne localement.

Quelle pourrait être la raison ?