Hatalar, hatalar, sorular - sayfa 2502

 
fxsaber :

Tamamen anlayana kadar.

Alanların sırasına göre değil, pack() plus'ın maksimum ve verilen değerine, alanların sırasına bağlıdır.

Şimdi başka bir seçenek yaptım

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

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

hizalama, pack()'te belirtildiği gibi 16'ya değil, maksimum çift ile 8'e çıktı.

 
Alexey Viktorov :

artı alanların sırasına bağlıdır.

kontrol edildi, gerçekten bağlıdır:

 struct A pack( 16 )
{
   double   x;
   short    j;
   int      b;
};
//+------------------------------------------------------------------+
void OnStart ()
  {
   Print ( sizeof (A)); // 16
  }
//+------------------------------------------------------------------+
Örneğiniz sizeof (A) = 24 üretti
 
fxsaber :

Ve böylece bu tartışma başladı . Her şeyin hiç de öyle olmadığı ortaya çıktı.

Evet, hizalama algoritmasının tanımında bir hata yaptım ve bu yüzden belki de daha fazla kafa karışıklığı yarattım.

Böyle

pack, harici dll'lerle uyumluluk için bir mekanizmadır. özellikle c++ #pragma paketinin analogu. ve bu nedenle de aynı şekilde çalışmalıdır.

boyutları olan diğer örnekler (4. paket için)

karakter -> 1

kısa -> 2

int -> 4

uzun -> 8

karakter, kısa -> 4

karakter, int -> 8

karakter, uzun -> 12 (paket(8) için 16)

kısa, karakter -> 4

uzun, karakter -> 12

uzun, karakter, kısa -> 12

uzun, karakter, karakter, karakter -> 12

uzun, karakter, int -> 16

uzun, karakter, int, karakter -> 20

varsayılan olarak stüdyoda (ve muhtemelen her yerde) paket(8) vardır
 
TheXpert :

Teşekkürler, anladım.

 
Alexey Viktorov :

Bana göre her şey çalışıyor. Örneğinizde yapıda tek tip olduğu için hizalamanın bir anlamı yok.

Yanlış, yanlış çalışıyor. Bir anlamı var. Bu bir hata. https://www.mql5.com/ru/forum/1111/page2498#comment_12349659

 

Merhaba. MT5'te işlem yapmak için kısayol tuşları olup olmadığını söyleyebilir misiniz? Talimatlarda bulamadım. Değilse, bunu uygulamanın bir yolu var mı? Onlar. Tuşa bastım ve bir sipariş açıldı, benzer bir şey var mı?

 
Vict :

Yanlış, yanlış çalışıyor. Bir anlamı var. Bu bir hata. https://www.mql5.com/en/forum/1111/page2498#comment_12349659

Peki, bug nedir?

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

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

her biri iki bayt olan iki öğeden oluşan bir dizi bildirirsiniz ve olması gerektiği gibi 4 bayt alırsınız. Hata nerede? Neyin içinde?

Ama bu

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

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

4 hizalıdır ve 2 eleman 2*8 bayt alacaktır.

 
astronom55 :

Merhaba. MT5'te işlem yapmak için kısayol tuşları olup olmadığını söyleyebilir misiniz? Talimatlarda bulamadım. Değilse, bunu uygulamanın bir yolu var mı? Onlar. Tuşa bastım ve bir sipariş açıldı, benzer bir şey var mı?

Kedi klavyeye bastı ve senin için takas mı yaptı?

Kendin yap - zor değil.

 
astronom55 :

Merhaba. MT5'te işlem yapmak için kısayol tuşları olup olmadığını söyleyebilir misiniz? Talimatlarda bulamadım. Değilse, bunu uygulamanın bir yolu var mı? Onlar. Tuşa bastım ve bir sipariş açıldı, benzer bir şey var mı?

Terminal Yardımı: Kısayol Tuşları - İleri Düzey Kullanıcılar İçin - Başlarken


Bir eyleme ihtiyacınız varsa: "Doğrudan bir kez tıklandı ve bir pozisyon açıldı" - o zaman komut dosyası veya danışman için terminalde bir klavye kısayolu atamanız gerekir (komut dosyası veya danışman indirilmeli veya yazılmalı veya sipariş edilmelidir).

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

Bir kedi klavyeye bastı ve sizin için takas mı yaptı?

Kendin yap - zor değil.

Nasıl yapacağım hakkında hiçbir fikrim yok. Böyle bir script bulamadım.