Ошибки, баги, вопросы - страница 2868

 
Vladimir Simakov:
Не, сама логика разработчиков вполне понятна, но, как по мне, то я лучше сам, явно укажу u'щ', когда и если мне это понадобится

Просто тогда не понятно, а как тип char задефайнить.

 
Ошибка при компиляции:
void OnStart()
{
        Print(typename( char(0))); //Error: '0' - some operator expected
}

а так:

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

А какая разница?

 
A100:
Ошибка при компиляции:

а так:

А какая разница?

у мкл вроде только "(тип) значение" - является приведением к типу. а вот "тип (значение)" - уже что-то типа инициализации, которое в вашем случае не может ничего вернуть. с классами также по поводу приведения. Хотя давно мкл не открывал )) 

 
Alexandr Andreev:

у мкл вроде только "(тип) значение" - является приведением к типу. а вот "тип (значение)" - уже что-то типа инициализации, которое в вашем случае не может ничего вернуть. с классами также по поводу приведения. Хотя давно мкл не открывал )) 

Ну так откройте https://www.mql5.com/ru/docs/basis/types/casting

Блок: Приведение числовых типов: ... "Явное преобразование типов записывается следующим образом"... далее по тексту

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

Ну так откройте https://www.mql5.com/ru/docs/basis/types/casting

Ага тоже проверил, я помню кода то давно на это напоролся по поводу что выше написал. Прошу извинить за не верную информацию)).

 
A100:
Ошибка при компиляции:

а так:

А какая разница?

Да, так тоже ошибка компиляции

#define J '+'          // char

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

void OnStart()
{
    Print((typename)(J));
}
 
Vladimir Simakov:
Не, сама логика разработчиков вполне понятна, но, как по мне, то я лучше сам, явно укажу u'щ', когда и если мне это понадобится

А мне не понятна эта логика. Когда ведётся везде и вся, тотальная оптимизация, и уменьшение ресурсов приоритет,
зачем символьный по сути основной тип, делать в юникоде увеличивая до 2 байт.
Отсюда и mql тип string получается затратный.
Действительно, лучше доп спецификатор иметь  u'щ'

char привидением типа только подставляется

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

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

А так, какое то разногласие типов получается.

#define J '+'              

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

Замута ещё та, с этим юникодом. 

 
Roman:

Да, так тоже ошибка компиляции

У Вас - синтаксически обоснованная ошибка - приведите пример рабочего кода с (typename) в скобках. С таким же успехом можно и (OnStart) в скобках написать было

 

Еще пример сомнительного сообщения MQL компилятора:

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

а причем здесь #endif - и как догадаться где на самом деле ошибка?

в то время С++ информативно сообщает об ошибке

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

Надеюсь эту страницу читают разработчики mql. 

Когда же вы ребята сделаете нормальный валидатор то???

Баг для мт4 в валидаторе. Не возможно получить данные о цене открытия/ закрытия, Hi/Low свечей с других таймфреймов.