Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Публикуй программы в Маркете. Зарабатывай с помощью своих знаний!
Лёха
1264
Лёха 2012.07.13 15:36 

Грешным делом, думал основы MQL4 худо-бедно знаю. Однако, "и про старуху бывает порнуха" (с) народное.

Сегодня узнал следующее:

1.Нельзя использовать NULL в качестве выражения инициализации export-переменных.

2.Нельзя использовать NULL в качестве значения по умолчанию в параметрах функции.

3.Неизвестно, как проверить, что строка содержит NULL.

4.Никогда не догадаетесь, что напечатает этот простенький скрипт:

int start() {
  string a = NULL;
  Print(StringLen(a));
  return(0);
}
Vadim Zhunko
5216
Vadim Zhunko 2012.07.13 15:44  
Длина такой строки один символ.
Лёха
1264
Лёха 2012.07.13 15:49  
Zhunko:
Длина такой строки один символ.

ВНЕЗАПНО, да? :)
Рустам
3597
Рустам 2012.07.13 16:40  

https://docs.mql4.com/ru/basis/types/casting

https://docs.mql4.com/ru/constants/special

Azzx:

ВНЕЗАПНО, да? :)

Может быть для вас и внезапно, а так - коллизия.

Vadim Zhunko
5216
Vadim Zhunko 2012.07.13 16:44  

Azzx:
ВНЕЗАПНО, да? :)
Не совсем. Этот скрипт прояснит почему так:

void start()
 {
  string a = NULL;
  Alert("\"", a, "\", ", StringLen(a), ", ", StringGetChar(a, 0));
 }
Этот NULL преобразуется в строчный нуль.
Лёха
1264
Лёха 2012.07.13 16:49  
FAQ:

https://docs.mql4.com/ru/basis/types/casting

https://docs.mql4.com/ru/constants/special


Может быть для вас и внезапно, а так - коллизия.


Для меня - да: ВНЕЗАПНО.

Как я и сказал "и про старуху...". :)

Рустам
3597
Рустам 2012.07.13 16:55  
Андрей
1890
Андрей 2012.07.13 17:53  
FAQ:
RTFM
Вопрос не в том, что RTFM, а в том, что если null / NULL- это общепринятое понятие-
а кто-то переопределил семантику- то это на самом деле не проблема того, кто не rtfm.
То же самое, кстати, с short-circuite or/and || / &&.
Лёха
1264
Лёха 2012.07.13 19:18  
jartmailru:
Вопрос не в том, что RTFM, а в том, что если null / NULL- это общепринятое понятие-
а кто-то переопределил семантику- то это на самом деле не проблема того, кто не rtfm.
То же самое, кстати, с short-circuite or/and || / &&.

Да, я тоже по этому поводу в недоумении. Понятно, почему так сделали, но зачем вообще сохранили это обозначение?

Впрочем, это явно в русле общего MQL-подхода.

Рустам
3597
Рустам 2012.07.13 19:28  
Azzx: Впрочем, это явно в русле общего MQL-подхода.

Блин, ну надоело уже, вам не нравится этот язык, терминал, подход ? Что вы в этом случае здесь делаете ??? Есть куча других "прекрасных" платных и "современных" терминалов, с чудными языками и поддержкой, почему бы вам не пойти туда ?
Лёха
1264
Лёха 2012.07.13 20:01  
FAQ:

Блин, ну надоело уже, вам не нравится этот язык, терминал, подход ? Что вы в этом случае здесь делаете ??? Есть куча других "прекрасных" платных и "современных" терминалов, с чудными языками и поддержкой, почему бы вам не пойти туда ?

В процессе. Впрочем, я собственных языков изобретать не люблю.

А вот кстати, раз уж вы такой знаток RTFM-ов, а не растолкуете ли мне тогда поведение вот этого кода:

int start() {
  string a = NULL;
  Print(iMA(a, 0, 10, 0, MODE_SMA, PRICE_CLOSE, 1));
  Print(iMA(NULL, 0, 10, 0, MODE_SMA, PRICE_CLOSE, 1));
  
  return(0);
}

Я потерял сегодня кучу времени на этой штуке... :(

Переписываю, понимаете ли, код - это полезно иногда делать.

/ /12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий