Perguntas de um "boneco" - página 263

 
Contender:

Tente usar StringConcatenate() para "colar" as cordas

Substituída por

StringConcatenate(nTL,"nTL_",IntegerToString(MathRand()));
não ajudou.
 
Silent:
Estarei a racionar os meus miolos por mais uma semana. Pode dar-me mais alguns detalhes? (pode ser grosseiro :))

Existe outra opção para um par de centenas de objectos com nomes únicos?

(Um grupo de objectos deve ter a mesma parte do fio no nome, para remover o grupo).

Contador
 
TheXpert:

Bem, logicamente, se a função definir o último erro, então após a conclusão bem sucedida da função deverá haver um valor de erro zero ou o valor descrito na documentação. Não há outra forma.

Ou seja, se a chamada foi bem sucedida e o erro não for zero, este caso deve ser descrito na documentação.

Era o que eu também pensava, até me convencer do contrário. Escrevi um pedido ao SD, recebi uma resposta como fiz acima :)
 
220Volt:

Está preocupado porque o Get Last Error imprime algo diferente de zero? Em caso afirmativo, só se deve pedir um erro se a função denunciar uma falha. E não se deve pedir um erro no fim do enredo, pode ser que se receba um valor de lixo. É assim que é no MT4, talvez seja diferente aqui.

Pseudocódigo:

O erro deve ser eliminado por ResetLastError(), mas se houver uma atribuição em curso, é equivalente.
 
Silent:

A minha recomendação: refazer o Get LastError de acordo com o princípio que descrevi acima. Só então é que se obterá o erro que ocorre, talvez se consiga algo mais.

 
220Volt:
Eu também pensava assim, até me convencer do contrário. Escrevi um pedido ao SD e obtive a mesma resposta que obtive acima :)
Brayed.
 

A reinicialização é feita antes da chamada ser efectuada.

Isto é o que causa o erro

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);
  };

Não há erro nesta variante

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:
Contador
Que diferença faz? Os mesmos números numa cadeia.
 
Silent:
Que diferença faz? São os mesmos números em linha.
Não há garantias de que os números não correspondam. Potencial de erro.
 
zfs:
Não há garantias de que os números não correspondam. Potencial erro.

Em primeiro lugar, não há hipótese (o código do Urain nunca falhou)

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

Em segundo lugar, tenho um erro (e nenhum objecto criado) exactamente na primeira chamada.

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