초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1200

 

질문 하나 더.

구조가 있다

 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;

작성하고 파일로 저장하고 싶습니다.

 FileWriteStruct (filehandle,vfann);

컴파일러 불평 - 'vfann' - 객체를 포함하는 구조 또는 클래스는 허용되지 않습니다.

나는 그가 배열을 좋아하지 않는다고 생각합니다. 이 구조를 어떻게 보존할 수 있습니까?
 
Сергей Таболин :

질문 하나 더.

구조가 있다

작성하고 파일로 저장하고 싶습니다.

컴파일러 불평 - 'vfann' - 객체를 포함하는 구조 또는 클래스는 허용되지 않습니다.

나는 그가 배열을 좋아하지 않는다고 생각합니다. 이 구조를 어떻게 유지할 수 있습니까?

예, 배열이 없어야 합니다. 파일 쓰기 구조

... 구조에는 문자열, 동적 배열 , 가상 함수 또는 개체 및 함수에 대한 포인터가 포함되어서는 안 됩니다.

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

질문 하나 더.

구조가 있다

작성하고 파일로 저장하고 싶습니다.

컴파일러 불평 - 'vfann' - 객체를 포함하는 구조 또는 클래스는 허용되지 않습니다.

나는 그가 배열을 좋아하지 않는다고 생각합니다. 이 구조를 어떻게 유지할 수 있습니까?
배열 대신 구조를 가질 구조를 만듭니다. 먼저 각 배열을 자체 구조로 묶습니다. 그런 다음 결과 구조가 결과 구조에 패킹됩니다. 역순으로 포장을 풉니다.
 
Сергей Таболин :

나는 그가 배열을 좋아하지 않는다고 생각합니다. 이 구조를 어떻게 보존할 수 있습니까?

텍스트로 변환하고 요소별로 저장합니다.

 
Artyom Trishkin :
배열 대신 구조를 가질 구조를 만듭니다. 먼저 각 배열을 자체 구조로 묶습니다. 그런 다음 결과 구조가 결과 구조에 패킹됩니다. 역순으로 포장을 풉니다.
이고르 자카로프 :

텍스트로 변환하고 요소별로 저장합니다.

고맙습니다.

그리고 다음과 같이 하면:

 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

그러면 같은 순서로 모두 구조체와 배열로 간주할 수 있습니까?

항목이 여러 개인 경우에는 어떻게 합니까?

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

고맙습니다.

그리고 다음과 같이 하면:

FILE_BIN

그러면 같은 순서로 모두 구조체와 배열로 간주할 수 있습니까?

항목이 여러 개인 경우에는 어떻게 합니까?

네, 그렇습니다. 그 평의회에서도 나는 그것을 알 수 없었다. 전혀 그렇지 않다면 할 수 있습니다. 그러나 구조 내에서 구조를 만드는 방법을 알아내는 것이 더 좋습니다. 어떻게 해야 하는지 물어보면 충분합니다. 그와 동시에 다른 것도 알게 되는데...

 
Alexey Viktorov :

네. 그 평의회에서도 나는 그것을 알 수 없었다. 전혀 그렇지 않다면 할 수 있습니다. 그러나 구조 내에서 구조를 만드는 방법을 알아내는 것이 더 좋습니다. 어떻게 해야 하는지 물어보면 충분합니다. 그와 동시에 다른 것도 알게 되는데...

나는 묻는다))))

나는 내 방식대로 하려고 노력했다.

첫 번째 구조와 3개의 배열은 정상적으로 읽힙니다(수신기 배열이 동적이지 않은 경우, 그렇지 않으면 구조 이후에 기록된 모든 데이터가 첫 번째 배열로 읽혀짐).

그러나 더 많은 기록이 있는 경우에는

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

도대체 무엇을 제공합니다 ...

Структура
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 :
배열 대신 구조가 있는 구조를 만듭니다. 먼저 각 배열을 자체 구조로 묶습니다. 그런 다음 결과 구조가 결과 구조에 패킹됩니다. 역순으로 포장을 풉니다.

Artyom, 예를 들어 줄 수 있습니까? 배열의 크기 가 동적이라는 점을 고려합니다.

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

나는 묻는다))))

나는 내 방식대로 하려고 노력했다.

첫 번째 구조와 3개의 배열은 정상적으로 읽힙니다(수신기 배열이 동적이지 않은 경우, 그렇지 않으면 구조 이후에 기록된 모든 데이터가 첫 번째 배열로 읽혀짐).

그러나 더 많은 기록이 있는 경우

도대체 무엇을 제공합니다 ...

4개의 다른 파일을 작성하고 하나만 열려고 합니다. 죄송합니다.... 제대로 된 단어가 없습니다.

 
Alexey Viktorov :

4개의 다른 파일을 작성하고 하나만 열려고 합니다. 죄송합니다.... 제대로 된 단어가 없습니다.

나는 모든 것을 하나의 파일에 씁니다. 하나의 파일에 여러 구조를 쓴 다음 읽는 것이 좋습니다.