Erros, bugs, perguntas - página 2502

 
fxsaber:

Ainda não se conseguia perceber bem.

Não da ordem dos campos, mas do valor máximo e fixo do pacote() mais depende da ordem dos campos.

Agora fiz a seguinte variante

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

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

Alinha-se não a 16 como especificado no pacote(), mas a 8 pelo duplo máximo.

 
Alexey Viktorov:

mais depende da sequência dos campos.

verificado, depende:

struct A pack(16)
{
  double  x;
  short   j;
  int     b;
};
//+------------------------------------------------------------------+
void OnStart()
  {
   Print(sizeof(A)); // 16
  }
//+------------------------------------------------------------------+
O seu exemplo deutamanho de(A) = 24
 
fxsaber:

Foi assim que esta discussão começou. Acontece que não é nada disso.

Sim, cometi um erro ao descrever o algoritmo de alinhamento e, portanto, posso ter causado ainda mais confusão.

Por isso,

O pacote é um mecanismo de compatibilidade com dlls externos. Em particular, é análogo ao pacote c++ #pragma e, portanto, deve funcionar da mesma forma.

outros exemplos com dimensões (para o pacote 4)

char -> 1

curto -> 2

int -> 4

longo -> 8

char, abreviatura -> 4

char, int -> 8

char, longo -> 12 (16 para embalagem(8))

curto, char -> 4

longo, char -> 12

longo, char, curto -> 12

longo, char, char, char -> 12

longo, char, int -> 16

longo, char, int, char -> 20

estúdio (e provavelmente em todos os outros lugares) não tem o padrão de embalagem(8)
 
TheXpert:

Obrigado, estou a ver.

 
Alexey Viktorov:

Tudo funciona, na minha opinião. Uma vez que no seu exemplo existe apenas um tipo na estrutura, não faz sentido o alinhamento.

Está enganado, não funciona correctamente. Faz sentido. É um insecto. https://www.mql5.com/ru/forum/1111/page2498#comment_12349659

 

Olá. Pode dizer-me se existem teclas de atalho para negociar no MT5? Não os encontrei no manual. Se não, há alguma forma de a implementar? Isto é, carreguei numa tecla e abri uma ordem, existe algo semelhante?

 
Vict:

Errado, não funciona bem. Faz sentido. É um insecto. https://www.mql5.com/ru/forum/1111/page2498#comment_12349659

Então o que é o insecto?

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

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

Declara um conjunto de dois elementos com dois bytes cada um e recebe 4 bytes como deve ser. Onde está o insecto? O quê?

Isto.

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

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

O conjunto está alinhado a 4 e 2 elementos ocuparão 2*8 bytes.

 
astronom55:

Olá. Pode dizer-me se existem teclas de atalho para negociar no MT5? Não os encontrei no manual. Se não, há alguma forma de a implementar? Ou seja, carreguei numa tecla e abri uma ordem, existe algo semelhante?

O gato pisou no teclado e trocou por si?

Faça-o você mesmo - não é difícil.

 
astronom55:

Olá. Pode dizer-me se existem teclas de atalho para negociar no MT5? Não os encontrei no manual. Se não, há alguma forma de a implementar? Isto é, carreguei numa tecla e abri uma ordem, existe algo semelhante?

Ajuda Terminal:Hotkeys - Utilizadores Avançados - Começar


Se precisar de tomar medidas "Basta clicar uma vez e uma posição é aberta" - então uma combinação de teclas deve ser atribuída a um guião ou a um Expert Advisor no terminal (guião ou Expert Advisor deve ser descarregado, escrito ou encomendado).

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

O gato pisou no teclado e fez uma troca para si?

Faça-o você mesmo - não é difícil.

Não tenho ideia de como o fazer. Não consegui encontrar um guião como esse.