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
[Eliminato]  
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.
[Eliminato]  
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