Hatalar, hatalar, sorular - sayfa 2868

 
Vladimir Simakov :
Hayır, geliştiricilerin mantığının kendisi oldukça anlaşılabilir, ancak bana gelince, kendimi, ne zaman ve ne zaman ihtiyacım olursa açıkça belirtmeyi tercih ederim.

Sadece o zaman char tipinin nasıl tanımlanacağı net değil.

 
Derleme sırasında hata:
 void OnStart ()
{
         Print ( typename ( char ( 0 ))); // Error: '0' - some operator expected
}

ve bunun gibi:

        Print ( typename (( char ) 0 ) ); // нормально

Fark ne?

 
A100 :
Derleme sırasında hata:

ve bunun gibi:

Fark ne?

µl'de sadece "(tip) değer" gibi görünüyor - tipe dönüştürülür. ancak "tür (değer)" zaten başlatma türünden bir şeydir, sizin durumunuzda hiçbir şey döndüremez. ayrıca döküm hakkında sınıflar ile. ML'yi uzun zamandır açmamış olmama rağmen))

 
Alexandr Andreev :

µl'de sadece "(tip) değer" gibi görünüyor - tipe dönüştürülür. ancak "tür (değer)" zaten başlatma türünden bir şeydir, sizin durumunuzda hiçbir şey döndüremez. ayrıca döküm hakkında sınıflar ile. ML'yi uzun zamandır açmamış olmama rağmen))

Peki, https://www.mql5.com/ru/docs/basis/types/casting adresini açın

Blok: Sayısal tip döküm: ... " Açık tip dönüştürme aşağıdaki gibi yazılır"... metnin devamı

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Часто возникает необходимость преобразовать один числовой тип в другой. Не каждый числовой тип допустимо преобразовать в другой, допустимые преобразования в MQL5 показаны на схеме: Сплошные линии со стрелками обозначают преобразования, которые выполняются без потери информации. Вместо типа char может выступать тип bool (оба занимают в памяти 1...
 

Evet, ben de kontrol ettim, yukarıda yazdıklarımla ilgili olarak uzun zamandır buna rastladığım kodu hatırlıyorum. Yanlış bilgi için özür dilerim))).

 
A100 :
Derleme sırasında hata:

ve bunun gibi:

Fark ne?

Evet, bu da bir derleme hatasıdır .

 #define J '+'            // char

void OnStart ()
{
     Print (( typename )J);
}
 #define J '+'            // char

void OnStart ()
{
     Print (( typename )(J));
}
 
Vladimir Simakov :
Hayır, geliştiricilerin mantığının kendisi oldukça anlaşılabilir, ancak bana gelince, kendimi, ne zaman ve ne zaman ihtiyacım olursa açıkça belirtmeyi tercih ederim.

Bu mantığı anlamıyorum. Her şey ve her yerde yürütülürken, toplam optimizasyon ve kaynak azaltma bir önceliktir,
Karakter türü neden esas olarak ana türdür, bunu Unicode'da yapın ve 2 bayta çıkarın.
Bu nedenle, mql tipi dizgenin pahalı olduğu ortaya çıkıyor.
Gerçekten de, fazladan bir u'u' belirtecine sahip olmak daha iyidir.

char tipi hayalet sadece değiştirilir

 #define J ( char ) '+'       // char

void OnStart ()
{
     Print (J);           // 43
     Print ( typename (J)); // char
}

Ve böylece, bu tür anlaşmazlıkları ortaya çıkıyor.

 #define J '+'               

void OnStart ()
{
   Print (J);                // 43
   Print ( typename (J));      // ushort
   Print ( typename ( char ));   // char
}

Zamuta hala bu unicode'a sahip.

 
Roman :

Evet, bu da bir derleme hatasıdır .

Sözdizimsel olarak doğrulanmış bir hatanız var - parantez içinde (typename) ile çalışan bir kod örneği verin. Aynı başarı ile parantez içinde (OnStart) yazmak mümkün oldu

 

Şüpheli bir MQL derleyici mesajının başka bir örneği:

 #ifdef __MQL__
void OnStart () {
{
}
#endif //Error: '#endif' - unexpected end of program

ve #endif nerede - ve hatanın gerçekte nerede olduğu nasıl tahmin edilir?

C++ bilgilendirici bir şekilde hatayı bildirirken

 #ifdef __cplusplus
void OnStart () {
{
} //Error: expected '}' at end of input
#endif
 

Umarım mql geliştiricileri bu sayfayı okur.

O zaman ne zaman normal bir doğrulayıcı yapacaksınız???

Doğrulayıcıda MT4 için hata. Diğer zaman dilimlerinden mumların açılış/kapanış fiyatı , Hi/Düşük fiyatları hakkında bilgi almak mümkün değildir.