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

 
fxsaber :

지금까지는 완전히 이해하지 못했습니다.

필드의 순서가 아니라 pack() plus의 최대값과 주어진 값에 따라 플러스가 필드의 순서에 따라 달라집니다.

이제 다른 옵션을 만들었습니다

 struct A pack( 16 )
{
   short    j;
   double   x;
   int      b;
};

void OnStart ()
{
   Print ( sizeof (A)); // 24
}

정렬은 pack()에 지정된 대로 16이 아니라 최대 두 배에 의해 8로 밝혀졌습니다.

 
Alexey Viktorov :

플러스는 필드의 순서에 따라 다릅니다.

확인하면 실제로 다음과 같이 달라집니다.

 struct A pack( 16 )
{
   double   x;
   short    j;
   int      b;
};
//+------------------------------------------------------------------+
void OnStart ()
  {
   Print ( sizeof (A)); // 16
  }
//+------------------------------------------------------------------+
귀하의 예는 sizeof (A) = 24 를 생성했습니다.
 
fxsaber :

그래서 이 토론이 시작되었습니다 . 모든 것이 전혀 그렇지 않은 것으로 나타났습니다.

네, 제가 얼라인먼트 알고리즘에 대한 설명을 잘못해서 더 혼동을 드린 것 같습니다.

그래서

팩은 외부 dll과의 호환성을 위한 메커니즘입니다. 특히 C++ #pragma pack과 유사합니다. 따라서 동일한 방식으로 작동해야 합니다.

치수가 있는 추가 예(팩 4용)

문자 -> 1

짧은 -> 2

정수 -> 4

긴 -> 8

문자, 짧은 -> 4

문자, 정수 -> 8

char, long -> 12 (pack(8)의 경우 16)

짧은 문자 -> 4

긴, 문자 -> 12

긴, 문자, 짧은 -> 12

long, char, char, char -> 12

long, char, int -> 16

long, char, int, char -> 20

기본적으로 스튜디오(그리고 아마도 모든 곳)에는 pack(8)이 있습니다.
 
TheXpert :

감사합니다.

 
Alexey Viktorov :

제 생각에는 모든 것이 작동합니다. 귀하의 예에서는 구조에 하나의 유형만 있기 때문에 정렬에 의미가 없습니다.

잘못, 잘못 작동합니다. 의미가 있습니다. 이것은 버그입니다. https://www.mql5.com/en/forum/1111/page2498#comment_12349659

 

안녕하세요. MT5에서 거래할 수 있는 단축키가 있는지 알려주실 수 있습니까? 지침에서 찾지 못했습니다. 그렇지 않다면 이것을 구현할 방법이 있습니까? 저것들. 키를 눌렀는데 주문이 열렸는데 비슷한게 있나요?

 
Vict :

잘못, 잘못 작동합니다. 의미가 있습니다. 이것은 버그입니다. https://www.mql5.com/en/forum/1111/page2498#comment_12349659

글쎄, 버그는 무엇입니까?

 struct A pack( 4 )
{
   short j;
};

void OnStart ()
{
   A q[ 2 ];
   Print ( sizeof (q)); // 4
   return ;
}

각각 2바이트씩 2개의 요소로 구성된 배열을 선언하면 당연히 4바이트를 얻게 됩니다. 버그는 어디에 있습니까? 무엇에서?

하지만 이것은

 struct A pack( 4 )
{
   short j;
   int    b;
};

void OnStart ()
{
   A q[ 2 ];
   Print ( sizeof (q)); // 16
   return ;
}

4-정렬되고 2개의 요소는 2*8 바이트를 차지합니다.

 
astronom55 :

안녕하세요. MT5에서 거래할 수 있는 단축키가 있는지 알려주실 수 있습니까? 지침에서 찾지 못했습니다. 그렇지 않다면 이것을 구현할 방법이 있습니까? 저것들. 키를 눌렀는데 주문이 열렸는데 비슷한게 있나요?

고양이가 키보드를 밟고 당신을 위해 거래?

스스로하십시오 - 어렵지 않습니다.

 
astronom55 :

안녕하세요. MT5에서 거래할 수 있는 단축키가 있는지 알려주실 수 있습니까? 지침에서 찾지 못했습니다. 그렇지 않다면 이것을 구현할 방법이 있습니까? 저것들. 키를 눌렀는데 주문이 열렸는데 비슷한게 있나요?

터미널 도움말: 단축키 - 고급 사용자용 - 시작하기


작업이 필요한 경우: "직접 한 번 클릭하고 위치를 열었습니다." - 터미널에서 스크립트 또는 어드바이저에 대한 키보드 단축키를 할당해야 합니다(스크립트 또는 어드바이저는 다운로드하거나 작성하거나 주문해야 함).

Горячие клавиши - Для продвинутых пользователей - MetaTrader 5
Горячие клавиши - Для продвинутых пользователей - MetaTrader 5
  • www.metatrader5.com
Горячие клавиши — это клавиши и их комбинации, которые позволяют быстро выполнять различные команды без обращения к меню и панелям управления. Существует возможность назначать горячие клавиши для вызова любого элемента окна "Навигатор", за исключением элементов группы "Счета". Чтобы назначить сочетание клавиш элементу, выполните команду...
 
Artyom Trishkin :

고양이가 키보드를 밟고 당신을 위해 거래?

스스로하십시오 - 어렵지 않습니다.

나는 그것을하는 방법을 모른다. 그런 스크립트는 찾지 못했습니다.