Библиотеки и пользовательские функции

 
подскажите, плз..
Можно ли в ф-ции задавать необязательный параметр? Т.е. чтоб при её вызове можно было его не указывать (или указывать "0"). И в этом случае вместо "0" ставить значение по умалчанию.
 
Компостер, Вы смешали два разных понятия - необязательный параметр можно не указывать. А указать 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"
Посмотрите, плз, в чём проблема..
 
komposter, происходит что-то странное. по Вашему совету я попытался воспроизвести предыдущий баг - так и не смог. поэтому ещё раз просьба, попробуйте урезать Ваш код до такого размера, пока баг проявляется, и выслать мне на адрес stringo@metaquotes.ru
 
Slawa 24.01.05 18:58

выслать мне на адрес stringo@metaquotes.ru

отправил. Скажете, когда что-то прояснится?

Renat 22.01.05 14:54

Параметры по умолчанию у нас есть и работают.

Попробовал. Компилятор говорит
')' - wrong parameters count

Может, дело в том, что я пытаюсь вызвать ф-цию из другой библиотеки?

Причина обращения: