Компостер, Вы смешали два разных понятия - необязательный параметр можно не указывать. А указать 0 и вместо него подставить свое значение по умолчанию Вам и сейчас ничто не мешает. Но указать 0 Вам все равно придется, т.е. число параметров в функции будет неизменным. Просто сами с собой договоритесь, что если стоит 0, то это значение по дефолту.
Я тоже был бы не против параметров по дефолту. А также хотелось бы еще пользовательские типы данных, например, структуры. И еще запуск скриптов по горячим клавишам.
С уважением и т.д.
Я тоже был бы не против параметров по дефолту. А также хотелось бы еще пользовательские типы данных, например, структуры. И еще запуск скриптов по горячим клавишам.
С уважением и т.д.
falkov, я имел в виду, что-то на подобие
bool OrderSelect(int index,int select,int pool)
, где int pool можно вообще не указывать, и по умолчанию подставится MODE_TRADES. С нулями я сам догадался, просто вопрос криво сформулировал :)
Параметры по умолчанию у нас есть и работают. Естественно, такими параметрами могут быть только последними в списке. Пример:
//+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- Print("Period: ",testfunc(1)); Print("Period: ",testfunc(1,PERIOD_M30)); //---- return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int testfunc(int type,int period=PERIOD_M1) { return(period); }
Вывод:
2005.01.22 11:52:56 test EURUSD,Monthly: loaded successfully 2005.01.22 11:52:56 test EURUSD,Monthly: Period: 1 2005.01.22 11:52:56 test EURUSD,Monthly: Period: 30 2005.01.22 11:52:56 test EURUSD,Monthly: removed
В програмировании на MQL4 можно и нужно пробовать использовать стандартные возможности языка С. Если что-то стандартное сишное не работает, то спросите у нас - возможно, это будет добавлено. Ну а если что-то работает, но с ошибкой, то желательно сразу об этом написать нам - будем исправлять.
Renat, а параметр по умолчанию только один может быть, или можно несколько в конец вставить?
а параметр по умолчанию только один может быть, или можно несколько в конец вставить?
В програмировании на MQL4 можно и нужно пробовать использовать стандартные возможности языка С.
Когда вставляем в программу какую-либо функцию, выводится "жёлтенький хелпик". Для простого использования умолчальных значений, эту жёлтую штуку надо дорабатывать. Например, при использовании той же самой OrderSelect выводится подсказка вида bool OrderSelect(int index,int select,int pool). А хорошо бы, если бы подсказка была вида bool OrderSelect(int index,int select=SELECT_BY_POS,int pool=MODE_TRADES). Тогда было бы всё абсолютно понятно с умолчальными параметрами (и жить было бы гораздо легче:)
А хорошо бы, если бы подсказка была вида bool OrderSelect(int index,int select=SELECT_BY_POS,int pool=MODE_TRADES)
Да, так оно лучше было бы.
ув. Разработчики!
Столкнулся ещё с одной проблемой:
эксперт передаёт цвет в ф-цию. Там он отображается нормально.
ф-ция передаёт этот же цвет в другую ф-цию. Но туда он уже не доходит, а заменяется 0 (цветом по умолчанию).
Тут явно какая-то ошибка. Потому что:
- другие данные передаются "через ф-цию" нормально
- перед самой передачей (вызовом ф-ции) алертим цвет - всё хорошо. В начале вызываемой ф-ции делаем то же самое - "0"
Посмотрите, плз, в чём проблема..
Столкнулся ещё с одной проблемой:
эксперт передаёт цвет в ф-цию. Там он отображается нормально.
ф-ция передаёт этот же цвет в другую ф-цию. Но туда он уже не доходит, а заменяется 0 (цветом по умолчанию).
Тут явно какая-то ошибка. Потому что:
- другие данные передаются "через ф-цию" нормально
- перед самой передачей (вызовом ф-ции) алертим цвет - всё хорошо. В начале вызываемой ф-ции делаем то же самое - "0"
Посмотрите, плз, в чём проблема..
komposter, происходит что-то странное. по Вашему совету я попытался воспроизвести предыдущий баг - так и не смог. поэтому ещё раз просьба, попробуйте урезать Ваш код до такого размера, пока баг проявляется, и выслать мне на адрес stringo@metaquotes.ru
Slawa 24.01.05 18:58
выслать мне на адрес stringo@metaquotes.ru
выслать мне на адрес stringo@metaquotes.ru
отправил. Скажете, когда что-то прояснится?
Renat 22.01.05 14:54
Параметры по умолчанию у нас есть и работают.
Параметры по умолчанию у нас есть и работают.
Попробовал. Компилятор говорит
')' - wrong parameters count
Может, дело в том, что я пытаюсь вызвать ф-цию из другой библиотеки?
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Можно ли в ф-ции задавать необязательный параметр? Т.е. чтоб при её вызове можно было его не указывать (или указывать "0"). И в этом случае вместо "0" ставить значение по умалчанию.