다른 기간으로 전환할 때 표시기의 전역 변수, 구조를 전송하는 방법은 무엇입니까? - 페이지 6

 
Nikolai Semko :

아무도 자신의 조정을 도입하는 것을 귀찮게하지 않습니다.

캐스팅에 대한 것이 아닌 예시일 뿐입니다.

 
fxsaber :

캐스팅에 대한 것이 아닌 예시일 뿐입니다.

좋아요, 모든 것이 명확합니다.
우리는 운전했다
 
fxsaber :

이 버전에서 오류가 발생했습니다.

아니요, 당신에게는 다른 것이 있습니다. 144행에서 위치 55는 인덱스가 아닙니다.

 
Nikolai Semko :
좋아요, 모든 것이 명확합니다.
우리는 운전했다

그래도 둘 다 시간을 보냈다.

 #include "Convert.mqh" // https://c.mql5.com/3/360/Convert.mqh

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
template < typename T>
CStructArr::CStructArr( const string name,T &var[]) {
   //ulong tt=GetMicrosecondCount();
   
   int sizeT = sizeof (T)/ 4 ;
   size = ArraySize (var);
   w= 1 +size*sizeT;
   ArrayResize (Var,w);
   h= 1 ;
   
   Name= "::" +name+ IntegerToString ( ChartGetInteger ( 0 , CHART_WINDOW_HANDLE ));
   if ( ResourceReadImage (Name,Var,w,h)) {
      uint_to_t = GetMicrosecondCount ();
       CONVERT::ArrayToArray(Var, var);
      uint_to_t = GetMicrosecondCount ()-uint_to_t;
   } else {
       for ( int j= 0 ; j<size; j++) {
         su.st=var[j];
         //for(int i=0; i<sizeof(T)/4; i++) Var[j*sizeof(T)/4+i]=su.u[i];
         ArrayCopy (Var, su.u,j*sizeT, 0 ,sizeT);
         value[j]=var[j];
      }
       if (! ResourceCreate (Name,Var,w, 1 , 0 , 0 , 0 , COLOR_FORMAT_XRGB_NOALPHA )) printf ( "Error create Resource: " + DoubleToString ( GetLastError (), 0 ));
   }
}

template < typename T>
bool CStructArr::Set(T &var[]) {
   t_to_uint = GetMicrosecondCount ();
   CONVERT::ArrayToArray(var, Var);   
   t_to_uint = GetMicrosecondCount () - t_to_uint;
   if (! ResourceCreate (Name,Var,w, 1 , 0 , 0 , 0 , COLOR_FORMAT_XRGB_NOALPHA )) {
       printf ( "Error create Resource: " + DoubleToString ( GetLastError (), 0 ));
       return ( false );
   } else return ( true );
}
 
Nikolai Semko :
아니요, 당신에게는 다른 것이 있습니다. 라인 144 에서 위치 55는 인덱스가 아닙니다.

114행 .


 
fxsaber :

그래도 둘 다 시간을 보냈다.

초기(크기 = 1000).

        Сохранение данных - 71 микросекунд
        Время T[] -> uint [] - 49 микросекунд
        Востановление данных - 252 микросекунд
        Время uint [] -> T[] - 52 микросекунд
        Востановление данных - 258 микросекунд
        Время uint [] -> T[] - 51 микросекунд
        Востановление данных - 262 микросекунд
        Время uint [] -> T[] - 52 микросекунд

수정됨.

        Сохранение данных - 55 микросекунд
        Время T[] -> uint [] - 47 микросекунд
        Сохранение данных - 30 микросекунд
        Время T[] -> uint [] - 25 микросекунд
        Сохранение данных - 54 микросекунд
        Время T[] -> uint [] - 45 микросекунд
        Сохранение данных - 31 микросекунд
        Время T[] -> uint [] - 25 микросекунд
데이터 복구가 작동하지 않습니다. 이해할 시간이 없습니다. 대부분의 경우 TF를 전환할 때 이전 사본이 새 사본보다 늦게 잘립니다.
 
fxsaber :

114행 .



네, 144로 실수했는데 114로 봤습니다.
아니, 기적은 없습니다. 이러한 위치에서는 오버플로 오류가 있을 수 없습니다.
포함 경로와 파일 위치를 확인하십시오.
따라서 두 개의 iCanvas 폴더가 있고 이전 버전을 실행하고 있습니다.

 
fxsaber :

초기(크기 = 1000).

수정됨.

데이터 복구가 작동하지 않습니다. 이해할 시간이 없습니다. 대부분의 경우 TF를 전환할 때 이전 사본이 새 사본보다 늦게 잘립니다.

예, 또한 귀하의 버전을 실행할 수 없습니다. 녹음이 되지 않습니다.

 
Nikolai Semko :

포함 경로와 파일 위치를 확인하십시오.

따라서 두 개의 iCanvas 폴더가 있고 이전 버전을 실행하고 있습니다.

전체 MQL5 폴더에는 iCanvas가 하나만 있습니다. ALT + G로 전환합니다. 오류가 제외되었습니다.

 
fxsaber :

캐스팅에 대한 것이 아닌 예시일 뿐입니다.

그런 게이지.

 #include "Convert.mqh"                      // https://c.mql5.com/3/360/Convert.mqh
#include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279

void OnStart ()
{
   int Array[];
   MqlTick Ticks1[];
  
   ArrayResize (Ticks1, 10000 );
  
  _B(CONVERT::ArrayToArray(Ticks1, Array), 1 );
  
   MqlTick Ticks2[];
  
  _B(CONVERT::ArrayToArray(Array, Ticks2), 1 );
  
   Print ( ArrayCompare (Ticks1, Ticks2)); // Должен быть ноль.
}