배열 참조 - 페이지 3

 

와우 -- 그런 구조의 크기는 --

 struct ArrayStore
{
   long reserved;
   double x[];
};

60바이트) 그러나 주석. 이것은 52 바이트를 선택하고 있습니다 ...

관심있는 분들을 위해 발굴 초기 코드입니다.

 #import "msvcrt.dll"
   long memcpy( long &dst, long &src, int cnt);
   long memcpy( uchar &dst[], long &src, int cnt);
#import

struct ArrayStore
{
   long reserved;
   double x[];
};

#define N 60
// sizeof(ArrayStore) == 60

void OnStart ()
{
   ArrayStore store;
   ArrayResize (store.x, 0x11 , 0x22 );
   store.reserved = 0xFF ;
   
   uchar array[N];
   ArrayInitialize (array, 0 );
   
   memcpy(array, store.reserved, N);
   
   string s;
   for ( int i = 0 ; i < N; i++)
   {
      s = s + " " + StringFormat ( "%.2X" , array[i]);
   }
   Print (s);
}
 
ArrayStore:: double x[];
이 설정의 요점을 이해하지 못했습니다 ...
 
sergeev :
이 설정의 요점을 이해하지 못했습니다 ...

배열의 첫 번째 요소의 주소를 가져오는 것은 어떻습니까?

long ArrPtr = memcpy(Arr[0], Arr[0], 1);


작동하지 않습니까?

 
MetaDriver :

배열의 첫 번째 요소의 주소를 가져오는 것은 어떻습니까?

long ArrPtr = memcpy(Arr[0], Arr[0], 1);


작동하지 않습니까?

에스노 작동합니다.

그러나 여전히 붙지 마십시오 - 왜

ArrayStore:: double x[];
 
sergeev :

에스노 작동합니다.

그러나 여전히 붙지 마십시오 - 왜

저도 붙이지 않습니다. :)
 
MetaDriver :
저도 붙이지 않습니다. :)

그래 알았어.

작업을 반복하겠습니다. 시간이 지남에 따라 시계열 크기에 상대적인 O(1)에 대한 링크를 만듭니다. 저것들. 배열 복사는 사전에 금지되어 있습니다.

유일한 방법은 배열 구조를 가로채는 것입니다. 저것들. 구조가 모든 것이 괜찮다고 생각하도록 적절한 매개변수와 함께 배열 포인터 대신 시계열 포인터를 슬립합니다.

배열 구조의 크기 는 52바이트이며 그 중 8개는 (아마도) 포인터 자체이고 나머지는 설정, 크기 유형, 예약, AsSeries 속성 등입니다. (Win7x64)

이제 작업은 구조를 구문 분석하고 적절한 데이터를 구조에 넣는 방법을 배우는 것입니다.

Документация по MQL5: Основы языка / Операции и выражения / Другие операции
Документация по MQL5: Основы языка / Операции и выражения / Другие операции
  • www.mql5.com
Основы языка / Операции и выражения / Другие операции - Документация по MQL5
 
sergeev :

에스노 작동합니다.

essno는 작동하지만 이것이 우리가 데이터에 대한 포인터를 얻는 방법입니다. 포인터를 대체하는 것은 작동하지 않고 데이터를 대체하기 위해서만 작동합니다. 따라서 ... 더 깊이 들어가야 합니다(c)
 

주변에서 또는 필요한 것이 무엇인지 이해하지 못합니다.

첫 번째 게시물에서 작업을 설정합니다.

다음과 같은 일종의 배열 참조:

나는 memcpy가 성공적으로 배열에 대한 포인터를 얻는다는 것을 보여주었다.

동일한 memcpy를 사용하고 데이터를 가져옵니다.


그래서 당신은 어쨌든 무엇을 필요로합니까? 왜 여기에 어떤 종류의 구조를 조각하고 있습니까? 당신은 또한 그것을 구문 분석 할 것입니다. 배열에 대한 포인터와 어떤 관련이 있습니까?

 
sergeev :

동일한 memcpy를 사용하고 데이터를 가져옵니다.

느리게. 모든 dll 함수는 래퍼를 통해 호출됩니다.

복사하지 않고 일반 배열이 필요합니다.

첫 번째 게시물을보십시오. 코드에서 내가 원하는 것을 정확히 말합니다.

 
TheXpert :

느리게. 모든 dll 함수는 래퍼를 통해 호출됩니다.

복사하지 않고 일반 배열이 필요합니다.

첫 번째 게시물을보십시오. 코드에서 내가 원하는 것을 정확히 말합니다.

간단합니다 :) 본격적인 시계열 배열을 네 개(자신의 것 - 아홉 번째 것)로 만들고 황금 열쇠를 주머니에 넣어두세요 :)

그들이 당신에게 도움을 줄 것입니다, imhenko. 신성한 소를 해킹할 수는 없습니다.