오류, 버그, 질문 - 페이지 1837

 
fxsaber :
이것은 0입니다.

네 이해했습니다. 실제로 TRADE_TRANSACTION_DEAL_ADD로 주문할 수 있는 곳은 어디입니까...

고맙습니다.

 
버그 크기
 void f( uchar &Array[] )
{
   Print ( sizeof (Array));
}

void OnStart ( void )
{
   uchar Bytes[ 1 ];
  
   Print ( sizeof (Bytes));
  
  f(Bytes);
}

결과
 1
52
 

테스트하는 동안 로그에는 주문이 만료되는 시간이 표시되지 않습니다.

2017.03.30 22:12:30.271 코어 1 2017.01.18 16:55:00 매수 제한 0.01 EURUSD at 1.06789 (1.06879 / 1.06889 / 1.06889)
2017.03.30 22:12:30.271 코어 1 주문 만료 [#4 구매 제한 0.01 EURUSD at 1.06789]

나는 그것이 다음과 같기를 원한다:

2017.03.30 22:12:30.271 코어 1 2017.01.18 17:25:00 주문 만료 [#4 구매 제한 0.01 EURUSD at 1.06789]

 
fxsaber :
버그 크기
결과

1바이트의 로컬 배열이 매개변수로 전달되면 일반 배열 객체로 바뀝니다. 개체의 버퍼 포인터는 실제로 로컬 배열에 연결되어 있습니다. 그러나 재배포할 수 없습니다.

함수 f의 입력은 동적 배열을 포함한 모든 배열이 될 수 있습니다.

 
Slawa :

1바이트의 로컬 배열이 매개변수로 전달되면 일반 배열 객체로 바뀝니다. 버퍼 포인터는 실제로 로컬 배열에 연결되어 있습니다. 그러나 재배포할 수 없습니다.

함수 f의 입력은 동적 배열을 포함한 모든 배열이 될 수 있습니다.

이것은 내부 아키텍처에 대한 매우 흥미로운 설명입니다. 그러나 이 때문에 sizeof는 코딩할 때 생각하는 것과 완전히 다른 것을 생성합니다.

저것들. 문서에 일부 불일치가 있으며 매번 확인하지 않고 코딩하는 방법이 명확하지 않습니다.


또한 함수를 종료한 후 sizeof를 호출하면 이러한 뉘앙스의 영향 없이 크기가 결정됩니다.

 

경고 없이 위치를 동기화하는 옵션이 작동하지 않고 스프레드 내에서 실행도 작동하지 않습니다.
모든 터미널에서 어떻게 규제하지 않고 최악의 가격으로 열립니다. 모든 포지션은 무엇인가요?

공급자가 모든 긍정적인 거래를 마감할 때 기다려야 하는 것!

 
fxsaber :

이것은 내부 아키텍처에 대한 매우 흥미로운 설명입니다. 그러나 이 때문에 sizeof는 코딩할 때 생각하는 것과 완전히 다른 것을 생성합니다.

저것들. 문서에 일부 불일치가 있으며 매번 확인하지 않고 코딩하는 방법이 명확하지 않습니다.


또한 함수를 종료한 후 sizeof를 호출하면 이러한 뉘앙스의 영향 없이 크기가 결정됩니다.

sizeof 에 대한 문서 를 주의 깊게 읽었습니까?

데이터 유형의 크기 또는 모든 데이터 유형의 개체 크기( sizeof )를 취하는 작업

sizeof 연산자사용하여 식별자 또는 유형에 해당하는 메모리 크기를 결정할 수 있습니다. sizeof 연산자의 형식은 다음과 같습니다.

예시:

sizeof (표현식)

괄호로 묶인 식별자 또는 유형 이름은 표현식으로 사용할 수 있습니다. void 유형 이름은 사용할 수 없으며 식별자는 비트 필드를 참조하거나 함수 이름이 될 수 없습니다.

표현식이 정적 배열의 이름인 경우(즉, 첫 번째 차원이 제공됨) 결과는 전체 배열의 크기입니다(즉, 요소 수와 유형 길이의 곱). 표현식이 동적 배열의 이름인 경우(첫 번째 차원이 지정되지 않음) 결과는 동적 배열 객체의 크기가 됩니다.

sizeof가 구조체 또는 클래스 유형 이름에 적용되거나 구조체 또는 클래스 유형이 있는 식별자에 적용되는 경우 결과는 구조체 또는 클래스의 실제 크기입니다.

PS 어레이의 크기를 찾는 더 직접적인 방법이 있습니다.

 
Slawa :

표현식이 정적 배열의 이름인 경우(즉, 첫 번째 차원이 제공됨) 결과는 전체 배열의 크기입니다(즉, 요소 수와 유형 길이의 곱).

인용문에서 위의 코드와 관련된 부분만 남겼습니다. 거기에는 정적 배열 이 있으며 언급한 두 숫자의 곱은 1과 같아야 합니다.

전송 후 정적에서 배열이 동적이 되고 반환 시 정적으로 다시 돌아간다면 배열을 정적 형태로 전송하는 방법은 무엇입니까?

PS 어레이의 크기를 찾는 더 직접적인 방법이 있습니다.

sizeof는 범용성 때문에 좋습니다. 일반 유형과 배열 모두에 적용할 수 있습니다. 그리고 ArraySize는 배열에만 적용됩니다.
 
fxsaber :

인용문에서 위의 코드와 관련된 부분만 남겼습니다. 거기에는 정적 배열 이 있으며 언급한 두 숫자의 곱은 1과 같아야 합니다.


다시. 정적 배열이 있는 경우 그곳에 단위가 표시됩니다.

함수 매개변수는 결코 정적 배열이 아닙니다. 거기 - 객체가 어떤 배열인지 미리 알 수 없습니다. 동적, 정적, 시계열, 표시기 버퍼

"sizeof의 보편성"이 어떻게 도움이 됩니까? 이것은 직접 메모리 액세스를 사용하는 C 또는 C++가 아닙니다. 그런 다음 sizeof의 결과를 해석할 때 주의해야 합니다. 동적 배열을 1000개 요소에 할당하고 sizeof를 요청합니다. 나는 C++에 대해 이야기하고 있습니다 - 당신은 결과에 놀란 것 같습니다

_countof에 대해 들어본 적이 있습니까?

 
Slawa :

다시. 정적 배열이 있는 경우 그곳에 단위가 표시됩니다.

함수 매개변수는 결코 정적 배열이 아닙니다. 거기 - 객체가 어떤 배열인지 미리 알 수 없습니다. 동적, 정적, 시계열, 표시기 버퍼

"sizeof의 보편성"이 어떻게 도움이 됩니까? 이것은 직접 메모리 액세스를 사용하는 C 또는 C++가 아닙니다. 그런 다음 sizeof의 결과를 해석할 때 주의해야 합니다. 동적 배열을 1000개 요소에 할당하고 sizeof를 요청합니다. 나는 C++에 대해 이야기하고 있습니다 - 당신은 결과에 놀란 것 같습니다

_countof에 대해 들어본 적이 있습니까?

나는 MQL에 대해 조금밖에 모른다. SI - 몰라서 못 들어봤어.

 void OnStart ( void )
{
   uchar Bytes[];
  
   ArrayResize (Bytes, 100 );
  
   Print ( sizeof (Bytes));
}

결과는 52입니다. 정상입니까? 내부 아키텍처에 대한 불만은 없습니다. 코딩하면서 제 아이디어가 틀리지 않기를 바랄 뿐입니다. 보기는 모호한 경우 문서 및 테스트 스크립트를 주의 깊게 읽은 것을 기반으로 형성됩니다.


이 경우 큰 코드에 부딪히는 것은 이해할 수 없는 행동이 아닙니다. 그리고 오랜 연구 끝에 포럼의 누구에게도 거의 명확하지 않은 당신이 설명한 뉘앙스를 알게 되었습니다. 그리고 위의 예에서는 일반적으로 sizeof 동적 배열 을 수행할 수 없다는 것이 밝혀졌습니다(결과는 항상 52).