Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1200

 

Eine andere Frage.

Ich habe eine Struktur.

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;

Ich habe es ausgefüllt und möchte es in einer Datei speichern.

FileWriteStruct(filehandle,vfann);

Der Compiler beschwert sich - 'vfann' - Strukturen oder Klassen, die Objekte enthalten, sind nicht erlaubt

Ich schätze, er mag keine Arrays. Aber wie kann ich diese Struktur speichern?
 
Сергей Таболин:

Eine andere Frage.

Ich habe eine Struktur.

Ich habe es ausgefüllt und möchte es in einer Datei speichern.

Der Compiler beschwert sich - 'vfann' - Strukturen oder Klassen, die Objekte enthalten, sind nicht erlaubt

Ich schätze, es mag keine Arrays. Aber wie kann ich diese Struktur speichern?

Ja, es sollten keine Arrays vorhanden sein.FileWriteStruct

...Die Struktur darf keine Zeichenketten,dynamischen Arrays,virtuellen Funktionen und Zeiger auf Objekte und Funktionenenthalten.

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

Eine andere Frage.

Ich habe eine Struktur.

Ich habe es ausgefüllt und möchte es in einer Datei speichern.

Der Compiler beschwert sich - 'vfann' - Strukturen oder Klassen, die Objekte enthalten, sind nicht erlaubt

Ich schätze, er mag keine Arrays. Aber wie kann ich diese Struktur speichern?
Erstellen Sie eine Struktur mit einer Struktur anstelle von Arrays. Packen Sie zunächst jedes Array in seine eigene Struktur. Dann packen Sie die resultierende Struktur in die resultierende Struktur. Packen Sie in umgekehrter Reihenfolge aus.
 
Сергей Таболин:

Ich verstehe, dass es keine Arrays mag. Wie kann man diese Struktur speichern?

in Text übersetzen und Element für Element speichern.

 
Artyom Trishkin:
Erstellen Sie eine Struktur mit einer Struktur anstelle von Arrays. Zunächst sollte jedes Array in eine eigene Struktur gepackt werden. Dann packen Sie die resultierende Struktur in die resultierende Struktur. Packen Sie in umgekehrter Reihenfolge aus.
Igor Zakharov:

in Text übersetzen, Element für Element speichern.

Ich danke Ihnen.

Wie wäre es damit:

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.

Dann können wir alles in die Struktur und die Arrays in der gleichen Reihenfolge einlesen?

Was ist, wenn es mehrere solcher Datensätze gibt?

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

Ich danke Ihnen.

Wie wäre es damit:

FILE_BIN.

Dann können Sie alles in die Struktur und die Arrays in der gleichen Reihenfolge einlesen?

Und wenn es mehrere solcher Aufzeichnungen gibt?

Ja. Ich konnte diesen Tipp auch nicht auf Anhieb herausfinden. Wenn Sie es gar nicht können, können Sie es so machen. Aber es ist immer noch besser, herauszufinden, wie man eine Struktur innerhalb einer Struktur schafft. Es genügt zu fragen, wie man es macht. Gleichzeitig werde ich aber auch etwas anderes lernen...

 
Alexey Viktorov:

Ja. Ich konnte diesen Tipp auch nicht auf Anhieb herausfinden. Wenn Sie es gar nicht können, können Sie es so machen. Aber es ist immer noch besser, herauszufinden, wie man eine Struktur innerhalb einer Struktur schafft. Es genügt zu fragen, wie man es macht. Gleichzeitig werde ich aber auch etwas anderes lernen.

Anfrage an ))))

Ich habe versucht, es "auf meine Art" zu machen.

Die erste Struktur und die 3 Arrays werden gut gelesen (vorausgesetzt, die Arrays sind nicht dynamisch, andernfalls liest das erste Array alle Daten, die nach der Struktur geschrieben werden).

Wenn es jedoch mehr Einträge gibt, ist es

   // Проверка
   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);
      }
   }

gibt er das verdammte Ding aus...

Структура
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:
Erstellen Sie eine Struktur mit einer Struktur anstelle von Arrays. Zunächst sollte jedes Array in eine eigene Struktur gepackt werden. Dann packen Sie die resultierende Struktur in die resultierende Struktur. Packen Sie in umgekehrter Reihenfolge aus.

Artyom, können Sie mir ein Beispiel nennen? Da die Größe der Arrays dynamisch ist.

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

Anfrage an ))))

Ich habe versucht, es "auf meine Art" zu machen.

Die erste Struktur und 3 Arrays lesen gut (vorausgesetzt, die Array-Empfänger sind nicht dynamisch, sonst liest das erste Array alle Daten, die nach der Struktur geschrieben werden).

Wenn es jedoch mehr Einträge gibt, dann

gibt er das verdammte Ding aus...

Sie versuchen, 4 verschiedene Dateien zu schreiben und nur eine zu öffnen. Entschuldigung.... es gibt keine angemessenen Worte.

 
Alexey Viktorov:

Sie versuchen, 4 verschiedene Dateien zu schreiben und nur eine zu öffnen. Entschuldigung.... es gibt keine angemessenen Worte.

Ich schreibe alles in eine Datei. Das Schreiben und anschließende Lesen von mehreren Strukturen in eine Datei funktioniert gut.

Grund der Beschwerde: