Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1416

 
ANDREY:

Grazie per il chiarimento.

A proposito, ho rimosso i plus gialli e il compilatore ha dato un errore. Quindi giocano un certo ruolo in tutta questa costruzione. Ma cosa.... non riesco ancora a capire. Perché sono necessari quando l'addizione di stringhe viene eseguita solo attraverso l'uso di plus blu. A giudicare dalle vostre spiegazioni, non c'è altro in questa costruzione ..... se non mi sbaglio.

E riguardo alla stringa(i)... Sulla conversione del tipo .... è più o meno chiaro per me. Quello che non è chiaro è che..... stringa è il nome di un tipo di variabile. i è una variabile contatore che denota l'indice di un elemento dell'array. E perchéi è tra parentesi ()? Finora ho pensato che le parentesi sono una caratteristica della funzione. Per esempio, Print( ). E diversi dati sono messi dentro le parentesi in alcune funzioni, ma cosa significano le parentesi o quale funzione svolgono le parentesi rispetto a i e a tutto questo costrutto - string(i)? A prima vista, sembra che prima la variabile i avesse un tipo int (integer), e poi hai cambiato il tipo della variabile i da int a string (string) . Ma le parentesi tonde che contengono non mi lasciano pensare così.

Grazie per la spiegazione.

Questa non è una conversione di tipo, ma una conversione di un valore nella variabile i

Spesso si può vedere in questo modo

eStr+=(string)i+": "+DoubleToString(eArray[i],4)+", ";
 
Alekseu Fedotov:

Questa non è una conversione di tipo, ma una trasformazione del valore trovato nella variabile i

può essere visto più spesso come


Grazie per il suggerimento. Conversione del valore della variabile i. Cosa intendi nel mio codice?
1.
Il valore di i era 0, dopo(stringa)i+ è diventato 1, poi 2 e così via fino a 30. Perché ho bisogno di (stringa) invece che solo di i++?
2. Il tipo della variabile i era int, e dopo (string)i+ è diventato string? Beh, questa non è una conversione di valore, ma una conversione del tipo di variabile.


E anche .... Forse puoi spiegarmi a cosa si aggiungono i plus gialli. O a cosa servono?

 eStr+=string(i)+": "+DoubleToString(eArray[i],4)+", ";

Grazie per la spiegazione.

 
ANDREY:

Grazie per il suggerimento. Convertire il valore della variabile i. Cosa significa il mio codice?
1.
Il valore di i era 0, dopo(stringa)i+ è diventato 1, poi 2 e così via fino a 30. Perché ho bisogno di (stringa) invece che solo di i++?
2. Il tipo della variabile i era int, e dopo (string)i+ è diventato string? Beh, questa non è una conversione di valore, ma una conversione del tipo di variabile.


E anche .... Forse puoi spiegarmi a cosa si aggiungono i plus gialli. O a cosa servono?

Grazie per la spiegazione.

La conversione del tipo o la conversione esplicita del tipo sono uguali. La documentazione usa entrambe le espressioni. Hai notato correttamente il caveat di Alexey, è la conversione del tipo che...

Inoltre: abbiamo diverse stringhe

  1. i di tipo int che è stato esplicitamente convertito al tipo stringa (che sia 0)
  2. ": "
  3. eArray[i] convertito al tipo stringa tramite la funzione DoubleToString (che sia 1,6251)
  4. ", "

Il valore di i è incrementato nel ciclo ad ogni iterazione e da lì entra in questa stringa...

Si noti che i più sono messi tra queste stringhe. Questi plus sommano queste linee in una sola linea. Il risultato è la stringa "0: 1.6251," e poi questa stringa viene aggiunta alla stringa nella variabile eStr dall'operatore +=


 
ANDREY:

Grazie per il suggerimento. Convertire il valore della variabile i. Cosa significa il mio codice?
1.
Il valore di i era 0, dopo(stringa)i+ è diventato 1, poi 2 e così via fino a 30. Perché ho bisogno di (stringa) invece che solo di i++?
2. Il tipo della variabile i era int, e dopo (string)i+ è diventato string? Beh, questa non è una conversione di valore, ma una conversione del tipo di variabile.


E anche .... Forse puoi spiegarmi a cosa si aggiungono i plus gialli. O a cosa servono?

Grazie per la spiegazione.

Con i plus gialli si forma una stringa (testo) che si emette conPrint();

Potete fare lo stesso con StringConcatenate()

eStr+=StringConcatenate((string)i,": ",DoubleToString(eArray[i],4),", ");
 
Alekseu Fedotov:

Si usa il segno più giallo per formare una stringa (testo), che si emette conPrint();

Potete fare lo stesso con StringConcatenate()

Non consiglio di usare questa funzione perché funziona in modo diverso in MQL5 rispetto a MQL4. Di conseguenza, può essere difficile capirlo quando si passa a MQL5.


Ma forse mi sbaglio...

mql4

string  StringConcatenate( 
   void argument1,         // первый параметр любого простого типа  
   void argument2,         // второй параметр любого простого типа 
   ...                     // следующий параметр любого простого типа 
   );

mql5

int  StringConcatenate( 
   string&  string_var,   // строка для формирования 
   void argument1         // первый параметр любого простого типа  
   void argument2         // второй параметр любого простого типа 
   ...                    // следующий параметр любого простого типа 
   );

Come potete vedere, in mql5, è molto simile alla semplice addizione di stringhe.

 eStr+=string(i)+": "+DoubleToString(eArray[i],4)+", ";
 StringConcatenate(eStr, i, ": ", eArray[i], ", ");
E la conversione di tipo avviene in questa funzione senza alcuna preoccupazione aggiuntiva.
 
Alexey Viktorov:

Non consiglio di usare questa funzione perché funziona diversamente in MQL5 che in MQL4. Di conseguenza, può essere difficile da capire quando si passa a MQL5

Grazie per le preziose informazioni

 
Alekseu Fedotov:

Si usa il segno più giallo per formare una stringa (testo), che si emette conPrint();

Potete fare lo stesso con StringConcatenate()

Grazie per le nuove informazioni per me

 
ANDREY:

Grazie per le preziose informazioni

Ho aggiunto al mio messaggio scritto in fretta.

È già chiaro a tutti quanto tu sia grato a chiunque ti spieghi qualcosa. Non allungare l'argomento con messaggi separati...

 
Alexey Viktorov:

Successivo: Abbiamo diverse stringhe

  1. i di tipo int che è esplicitamente di tipo stringa (che sia 0)
  2. ": "
  3. eArray[i] convertito al tipo stringatramiteDoubleToString (che sia 1.6251)
  4. ", "




Perché 1.6251 non può essere lanciato al tipo di stringa esplicitamente come i? È più breve e risparmia risorse computazionali..... mi sembra.

Grazie per la spiegazione

 
Alexey Viktorov:

Ho aggiunto al mio post scritto frettolosamente.

Ed è già chiaro a tutti quanto tu sia grato a chiunque ti spieghi qualcosa. Non allungare l'argomento con messaggi separati...

Ok. Allora un grazie per ogni vostra risposta sarà implicito per default (sarà memorizzato in una variabile :):):) ).... se non ti dispiace.

Motivazione: