Вопросы от "чайника" - страница 263

 
Contender:

Попробуйте строки через StringConcatenate() "склеивать"

Заменил

StringConcatenate(nTL,"nTL_",IntegerToString(MathRand()));
не помогло.
 
Silent:
Эдак я ещё неделю голову ломать буду. Можно немного подробней? (можно грубо :))

Другой вариант на пару сотен объектов с уникальными именами есть?

(Группа объектов должна быть с одинаковой частью строки в имени, для удаления группы.)

Счетчик
 
TheXpert:

Ну вообще по логике если функция вообще выставляет last error, то при успешном завершении функции должно быть нулевое значение ошибки или значение, описанное в документации. И никак по-другому.

Т.е. если вызов был успешным и ошибка ненулевая, то этот случай должен быть описан в документации.

Я тоже так думал, пока не убедился в обратном. Написал заявку в СД, мне ответили примерно так как я выше :)
 
220Volt:

Вы волнуетесь из-за того что Гет ласт эррор принтует чего-то отличное от нуля? Если так, то запрашивать ошибку стоит только если функция отчиталась о провале. А запрашивать в конце участка ошибку не стоит, можно получить мусорное значение. Так в МТ4, может здесь как-то иначе.

Псевдокод:

Ошибку надо зачистить ResetLastError(), но если идёт присваивание, то это равноценно.
 
Silent:

Моя рекомендация: переделайте Гет ласт эррор по принципу который описал выше. Только в таком случаи вы получите ту ошибку которая происходит, возможно вы получаете что-то другое.

 
220Volt:
Я тоже так думал, пока не убедился в обратном. Написал заявку в СД, мне ответили примерно так как я выше :)
Брееед.
 

Reset сбрасывается перед вызовом.

Ошибку вызывает именно такая запись

void  CreateTL(string name,datetime time1,double price1,datetime time2,double price2,bool ray_left,bool ray_right,color color_TL)
  {
//------------ nTL,nTLh,nTLl,nTLe
   nTL="nTL_"+IntegerToString(MathRand());
   nTLh="nTLh_"+IntegerToString(MathRand());
   nTLl="nTLl_"+IntegerToString(MathRand());
   nTLe="nTLe_"+IntegerToString(MathRand());
//------------
   ObjectCreate(0,name,OBJ_TREND,0,time1,price1,time2,price2);
  };

В таком варианте ошибки нет

void  CreateTL(string name,datetime time1,double price1,datetime time2,double price2,bool ray_left,bool ray_right,color color_TL)
  {
//------------ nTL,nTLh,nTLl,nTLe
   //nTL="nTL_"+IntegerToString(MathRand());
   //nTLh="nTLh_"+IntegerToString(MathRand());
   //nTLl="nTLl_"+IntegerToString(MathRand());
   //nTLe="nTLe_"+IntegerToString(MathRand());
//------------
   ObjectCreate(0,nTL="nTL_"+IntegerToString(MathRand());,OBJ_TREND,0,time1,price1,time2,price2);
  };
 
zfs:
Счетчик
А какая разница? те-же циферки в строку собирать.
 
Silent:
А какая разница? те-же циферки в строку собирать.
Нет гарантии, что цифры не совпадут. Потенциальная ошибка.
 
zfs:
Нет гарантии, что цифры не совпадут. Потенциальная ошибка.

Во первых, шансы никакие (код от Urain, ещё ни разу не подводил)

x=0;  MathSrand(x);
   for(i=0;i<MathRand();i++)MathRand();
   MathSrand((int)TimeLocal()*MathRand());

во вторых, у меня ошибка (и не созданный объект) именно при первом вызове.

Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
  • www.mql5.com
Основы языка / Операторы / Оператор создания объекта new - Документация по MQL5
Причина обращения: