Domande da un "manichino" - pagina 263

 
Contender:

Provate a usare StringConcatenate() per "incollare" insieme le stringhe

Sostituito da

StringConcatenate(nTL,"nTL_",IntegerToString(MathRand()));
non ha aiutato.
 
Silent:
Mi scervellerò per un'altra settimana. Puoi darmi qualche dettaglio in più? (può essere ruvido :))

C'è un'altra opzione per un paio di centinaia di oggetti con nomi unici?

(Un gruppo di oggetti deve avere la stessa parte della stringa nel nome, per rimuovere il gruppo).

Contatore
 
TheXpert:

Beh, logicamente, se la funzione imposta l'ultimo errore, allora al completamento con successo della funzione ci dovrebbe essere un valore di errore zero o il valore descritto nella documentazione. Non c'è altro modo.

Cioè se la chiamata ha avuto successo e l'errore è non-zero, questo caso dovrebbe essere descritto nella documentazione.

È quello che pensavo anch'io, finché non mi hanno convinto del contrario. Ho scritto una richiesta alla SD, ho avuto una risposta come ho fatto sopra :)
 
220Volt:

Sei preoccupato perché Get Last Errors stampa qualcosa di diverso da zero? Se è così, dovreste chiedere un errore solo se la funzione riporta un fallimento. E non dovreste chiedere un errore alla fine della trama, potreste ottenere un valore spazzatura. Questo è come è in MT4, forse qui è diverso.

Pseudocodice:

L'errore dovrebbe essere cancellato da ResetLastError(), ma se c'è un'assegnazione in corso, è equivalente.
 
Silent:

La mia raccomandazione: rifate il Get LastError secondo il principio che ho descritto sopra. Solo allora otterrete l'errore che si verifica, forse otterrete qualcos'altro.

 
220Volt:
Lo pensavo anch'io, finché non mi hanno convinto del contrario. Ho scritto una richiesta alla SD e ho avuto la stessa risposta di cui sopra :)
Brayed.
 

Il reset viene azzerato prima della chiamata.

Questo è ciò che causa l'errore

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

Non c'è nessun errore in questa 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:
Contatore
Che differenza fa? Gli stessi numeri in una stringa.
 
Silent:
Che differenza fa? Sono gli stessi numeri sulla linea.
Non c'è garanzia che i numeri non corrispondano. Potenziale di errore.
 
zfs:
Non c'è garanzia che i numeri non corrispondano. Potenziale errore.

Prima di tutto, non c'è alcuna possibilità (il codice di Urain non ha mai fallito)

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

In secondo luogo, ho un errore (e nessun oggetto creato) esattamente alla prima chiamata.

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