エラー、バグ、質問 - ページ 2502

 
fxsaber:

まだよく分かっていないのです。

フィールドの順序からではなく、pack()の 最大値と設定値に加え、フィールドの順序に依存 します。

今、私は次のような変種を作りました。

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

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

pack() で指定された16ではなく、最大doubleで8まで アライメントされます。

 
Alexey Viktorov:

さらに、フィールドの順序に依存します。

をチェックした。

struct A pack(16)
{
  double  x;
  short   j;
  int     b;
};
//+------------------------------------------------------------------+
void OnStart()
  {
   Print(sizeof(A)); // 16
  }
//+------------------------------------------------------------------+
この例ではsizeof(A) = 24となって います。
 
fxsaber:

というのが、この議論の発端 です。 全くそんなことはないことがわかりました。

そうですね、アライメントアルゴリズムの説明を間違えてしまい、さらに混乱を招いてしまったかもしれません。

だから

packは、外部DLLとの互換性メカニズムであり、特にc++の#pragma packと類似しているため、同じように動作するはずです。

その他の寸法例(パック4用)

char -> 1

ショート→2

int -> 4

ロング -> 8

char, short -> 4

char, int -> 8

char, long -> 12 (pack(8) では16)

short, char -> 4

long, char -> 12

long, char, short -> 12

long, char, char, char -> 12

long, char, int -> 16

long, char, int, char -> 20

スタジオのデフォルトは pack(8) です。
 
TheXpert:

ありがとうございます、そうですか。

 
Alexey Viktorov:

私の中では、すべてがうまくいっています。この例では、構造体が1種類しかないので、整列の意味がありません。

勘違いしている、正しく動作しない。それはそれで意味があるのですが。バグです。https://www.mql5.com/ru/forum/1111/page2498#comment_12349659

 

こんにちは。MT5で取引するためのホットキーがあるかどうか教えてください。マニュアルには載っていない。そうでない場合、何か実装する方法はありますか? 例えば、キーを押したら注文が開きましたが、似たようなことはありますか?

 
Vict:

間違っている、正しく動作していない。理にかなっている。バグです。https://www.mql5.com/ru/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で取引するためのホットキーがあるかどうか教えてください。マニュアルには載っていない。そうでない場合、何か実装する方法はありますか?例えば、キーを押したら注文が開きましたが、似たようなことはありますか?

ターミナルヘルプ:ホットキー - 上級者向け - 入門


もし、「一回クリックするだけでポジションが開く」というアクションが必要な場合、キーの組み合わせをターミナル内のスクリプトまたはExpert Advisorに割り当てる必要があります(スクリプトまたはExpert Advisorは、ダウンロード、書き込み、注文のいずれかを行う必要があります)。

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

猫がキーボードを踏んでトレードをしてくれたのでしょうか?

自分でやる - 難しいことではありません。

どうすればいいのか、まったくわからない。そういうスクリプトが見つからなかったんです。