Questions des débutants MQL5 MT5 MetaTrader 5 - page 1200

 

Une autre question.

J'ai une structure.

struct Fann
{
   int      answer;
   double   v_main_up;
   double   v_add_up;
   double   v_main_dn;
   double   v_add_dn;
   double   data_1[];
   double   data_2[];
   double   data_3[];
};
Fann vfann;

Je l'ai rempli et je veux l'enregistrer dans un fichier.

FileWriteStruct(filehandle,vfann);

Le compilateur se plaint - 'vfann' - les structures ou les classes contenant des objets ne sont pas autorisées.

Je suppose qu'il n'aime pas les tableaux. Mais comment puis-je sauvegarder cette structure ?
 
Сергей Таболин:

Une autre question.

J'ai une structure.

Je l'ai rempli et je veux l'enregistrer dans un fichier.

Le compilateur se plaint - 'vfann' - les structures ou les classes contenant des objets ne sont pas autorisées.

Je suppose qu'il n'aime pas les tableaux. Mais comment puis-je sauvegarder cette structure ?

Oui, il ne devrait pas y avoir de tableaux.FileWriteStruct

...La structure ne doit pas contenir de chaînes de caractères, detableaux dynamiques, defonctions virtuelles et de pointeurs vers des objets et des fonctions.

Документация по MQL5: Файловые операции / FileWriteStruct
Документация по MQL5: Файловые операции / FileWriteStruct
  • www.mql5.com
//|                                          Demo_FileWiteStruct.mq5 | //|                        Copyright 2013, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Структура для хранения данных свечи                              |...
 
Сергей Таболин:

Une autre question.

J'ai une structure.

Je l'ai rempli et je veux le sauvegarder dans un fichier.

Le compilateur se plaint - 'vfann' - les structures ou les classes contenant des objets ne sont pas autorisées.

Je suppose qu'il n'aime pas les tableaux. Mais comment puis-je sauvegarder cette structure ?
Créez une structure avec une structure au lieu de tableaux. Tout d'abord, rangez chaque tableau dans sa propre structure. Puis emballez la structure résultante dans la structure résultante. Déballez dans l'ordre inverse.
 
Сергей Таболин:

Je comprends qu'il n'aime pas les tableaux. Comment sauvegarder cette structure ?

le traduire en texte, l'enregistrer élément par élément.

 
Artyom Trishkin:
Créez une structure avec une structure au lieu de tableaux. Tout d'abord, chaque tableau doit être emballé dans sa propre structure. Puis emballez la structure résultante dans la structure résultante. Déballez dans l'ordre inverse.
Igor Zakharov:

traduire en texte, sauvegarder élément par élément.

Merci.

Que dites-vous de ça ?

struct Fann
{
   int      answer;
   double   v_main_up;
   double   v_add_up;
   double   v_main_dn;
   double   v_add_dn;
};
Fann vfann;

   double   data_1[];
   double   data_2[];
   double   data_3[];
...........................
      FileWriteStruct(filehandle,vfann);
      FileWriteArray(filehandle,data_1);
      FileWriteArray(filehandle,data_2);
      FileWriteArray(filehandle,data_3);

FILE_BIN.

Ensuite, nous pouvons lire tout cela dans la structure et les tableaux dans le même ordre ?

Que se passe-t-il s'il y a plusieurs enregistrements de ce type ?

 
Сергей Таболин:

Merci.

Que dites-vous de ça ?

FILE_BIN.

Ensuite, vous pouvez tout lire dans la structure et les tableaux dans le même ordre ?

Et s'il y a plusieurs enregistrements de ce type ?

Ouais. Je n'ai pas pu trouver cette astuce à la volée, non plus. Si vous ne pouvez pas le faire du tout, vous pouvez le faire de cette façon. Mais il est toujours préférable de trouver comment créer une structure dans une structure. Il suffit de demander comment le faire. En même temps, je vais aussi apprendre quelque chose d'autre...

 
Alexey Viktorov:

Ouais. Je n'ai pas pu trouver cette astuce à la volée, non plus. Si vous ne pouvez pas le faire du tout, vous pouvez le faire de cette façon. Mais il est toujours préférable de trouver comment créer une structure dans une structure. Il suffit de demander comment le faire. En même temps, je vais aussi apprendre quelque chose d'autre.

Demander à ))))

J'ai essayé de le faire "à ma façon".

La première structure et les 3 tableaux se lisent bien (à condition que les tableaux ne soient pas dynamiques, sinon le premier tableau lit toutes les données écrites après la structure).

Toutefois, s'il y a plus d'entrées, il

   // Проверка
   double   rdata_1[6];
   double   rdata_2[6];
   double   rdata_3[6];
   
   filehandle = FileOpen(filename,FILE_READ|FILE_COMMON|FILE_BIN);
   if(filehandle != INVALID_HANDLE)
   {
      while(!FileIsEnding(filehandle))
      {
         FileReadStruct(filehandle,rfann);
         FileReadArray(filehandle,rdata_1);
         FileReadArray(filehandle,rdata_2);
         FileReadArray(filehandle,rdata_3);
         Print("++++++++++++++++++++++++++++++");
         Print("Структура");
         Print(rfann.v_main_up+"|"+rfann.v_main_dn+"|"+rfann.v_add_up+"|"+rfann.v_add_dn+"|"+rfann.answer);
         Print("Массивы");
         Print("--- 1");
         ArrayPrint(rdata_1);
         Print("--- 2");
         ArrayPrint(rdata_2);
         Print("--- 3");
         ArrayPrint(rdata_3);
      }
   }

ça donne ce foutu truc...

Структура
4.0|-1.0|2.8|-0.7|1
Массивы
--- 1
 1.00000  0.33225 -0.76202 -0.93263 -1.00000 -0.79174
--- 2
-0.14603  0.89562  0.91407  0.93450  0.89481  0.89829
--- 3
 0.89564  0.89217 -0.91174 -0.86623 -1.00000 -0.07680
++++++++++++++++++++++++++++++
Структура
1.839259944929932 e+277|-nan|5.295254096666168 e-315|3.0|-618173028
Массивы
--- 1
 2.10000 -2.00000 -1.40000 -0.85098 -1.00000 -0.79900
--- 2
-0.30490  0.47926  1.00000  0.70827  0.84163  0.84134
--- 3
 0.83925  0.84173  0.84760  0.84678  0.80368 -0.00063
++++++++++++++++++++++++++++++
Структура
9.384173261527221 e-276|5.298850499315376 e-315|2.955277867691187 e+299|-9.638234784517503 e-243|-1705145188
Массивы
--- 1
+0.00000 +0.00000  4.00000  2.80000  0.00000  0.00000
--- 2
 1.00000  0.22097 -0.37383 -0.73115 -0.81752 -1.00000
--- 3
-0.87753  0.46919  0.59706  0.76223  0.82610  0.84312
++++++++++++++++++++++++++++++
 
Artyom Trishkin:
Créez une structure avec une structure au lieu de tableaux. Tout d'abord, chaque tableau doit être emballé dans sa propre structure. Puis emballez la structure résultante dans la structure résultante. Déballez dans l'ordre inverse.

Artyom, pouvez-vous me donner un exemple ? Étant donné que la taille des tableaux est dynamique.

 
Сергей Таболин:

Demander à ))))

J'ai essayé de le faire "à ma façon".

La première structure et les 3 tableaux se lisent bien (à condition que les récepteurs des tableaux ne soient pas dynamiques, sinon le premier tableau lit toutes les données écrites après la structure).

Toutefois, s'il y a plus d'entrées, il

ça donne ce foutu truc...

Vous essayez d'écrire 4 fichiers différents et d'en ouvrir un seul. Désolé.... il n'y a pas de mots décents.

 
Alexey Viktorov:

Vous essayez d'écrire 4 fichiers différents et d'en ouvrir un seul. Désolé.... il n'y a pas de mots décents.

J'écris tout dans un seul fichier. L'écriture, suivie de la lecture, de plusieurs structures dans un fichier se passe bien.