Errori, bug, domande - pagina 1554

 
-Aleks-:

Dato che non ho ottenuto una risposta nell'altro thread, ripeterò la domanda qui, forse questo aiuterà

"

Potete per favore dirmi qual è il mio errore.

for(int i=0;i<N_Sell;i++) printf("OpenSellTime[%d] = %G",i,TimeToString(OpenSellTime[i],TIME_DATE|TIME_MINUTES)," PriceOpenSell[%d] = %G",i,PriceOpenSell[i]);

La data dall'array OpenSellTime non viene stampata e non la seconda parte dell'espressione - PriceOpenSell.

E non riesco a trovare i comandiprintf come%G e%d.

"

Anche se qualsiasi tutorial C andrebbe bene anche per te.
 
Alexey Kozitsyn:
Anche se qualsiasi tutorial C funzionerebbe anche per te.

Grazie per la risposta, ma il link è confuso... Non riesco a capirlo subito - ho visto questo testo nell'aiuto prima di iniziare a scrivere sul forum.

Se ho capito bene, %d è per ignorare gli zeri, se ce ne sono, mentre %G è per emettere un valore senza tagliare gli zeri? Non sono un idiota, ma non riesco a capire l'aiuto e senza capire non posso capire perché la mia stringa non funziona correttamente...

 
-Aleks-:

Grazie per la risposta, ma il link è confuso... Non riesco a capirlo subito - ho visto questo testo nell'aiuto prima di iniziare a scrivere sul forum.

Se ho capito bene, %d è per ignorare gli zeri, se ce ne sono, mentre %G è per emettere il valore senza tagliare gli zeri? Non sono stupido, ma non riesco a capire l'aiuto, e se non lo capisco non posso capire perché la mia stringa non funziona correttamente...

Non uso questa funzione nel mio lavoro, ma non credo che sia difficile eseguire semplici esperimenti da soli.
 
-Aleks-:

Grazie per la risposta, ma il link è confuso... Non riesco a capirlo subito - ho visto questo testo nell'aiuto prima di iniziare a scrivere sul forum.

Se ho capito bene, %d è per ignorare gli zeri, se ce ne sono, mentre %G è per emettere il valore senza tagliare gli zeri? Non sono stupido, ma non riesco a capire l'aiuto, e se non lo capisco, non riesco a capire perché la mia stringa non funziona correttamente...

Leggi qui.
 
Alexey Kozitsyn:
Non uso questa funzione nel mio lavoro, ma penso che possiate facilmente eseguire voi stessi dei semplici esperimenti.

Ma lo faccio - l'ho cercato e lo uso, ma non riesco a capire la sintassi esatta, perché non si adatta alla specifica

%[flags][larghezza][.precisione][{h | l | ll | I32 | I64}]tipo

Non è menzionato nel file di aiuto che non tutti i parametri possono essere utilizzati. E, soprattutto, non è chiaro dove ho un errore di sintassi, forse se me lo facessero notare, capirei meglio la questione.

 
Artyom Trishkin:
Leggete qui.

Grazie. L'ho letto sommariamente, cercando le informazioni giuste - si scopre che la prima parte è un modello e ho sbagliato... giusto?

Tipo, dovete specificare i posti dove saranno le variabili, nel mio caso è un indice dell'array, tempo e numero di tipo doppio, e poi le variabili stesse. Dalla logica dell'articolo, dovrebbe essere così

for(int i=0;i<N_Sell;i++) printf("OpenSellTime[%d] = %G, PriceOpenSell[%d] = %G",i,TimeToString(OpenSellTime[i],TIME_DATE|TIME_MINUTES),i,PriceOpenSell[i]);

O è di nuovo sbagliato?

 
-Aleks-:

Grazie. L'ho letto sommariamente, cercando le informazioni giuste - si scopre che la prima parte è un modello e l'ho inventato male... giusto?

Tipo, dovete specificare i posti dove saranno le variabili, nel mio caso è un indice dell'array, tempo e numero di tipo doppio, e poi le variabili stesse. Dalla logica dell'articolo, dovrebbe essere così

for(int i=0;i<N_Sell;i++) printf("OpenSellTime[%d] = %G, PriceOpenSell[%d] = %G",i,TimeToString(OpenSellTime[i],TIME_DATE|TIME_MINUTES),i,PriceOpenSell[i]);

O è di nuovo sbagliato?

Beh, è scritto molto chiaramente lì sul template - i posti dove le variabili sono inserite sono segnati con un segno % nel template. L'intero modello è racchiuso tra virgolette. Poi, dopo il modello stesso, sono elencate le variabili separate da virgola che sono specificate nel modello. In ordine da sinistra a destra nell'ordine in cui sono scritti nel modello.

Ci sono anche tutte le specifiche per i diversi tipi di variabili e la loro formattazione. Basta non dare un'occhiata, a partire dal titolo"Formattazione delle stringhe sul modello".

 
Artyom Trishkin:

Beh, è molto chiaro sul template - i posti dove le variabili sono inserite sono indicati da un segno % nel template. L'intero modello è racchiuso tra virgolette. Poi, dopo il modello stesso, sono elencate le variabili nel modello, separate da virgole. In ordine da sinistra a destra nell'ordine in cui sono scritti nel modello.

Ci sono anche tutte le specifiche per i diversi tipi di variabili e la loro formattazione. Basta leggere senza guardare, a partire dal titolo"Formattazione delle stringhe per modello".

È così che ho scritto - tra virgolette il template e poi in ordine le variabili, cosa c'è di sbagliato?
 
-Aleks-:
È così che ho scritto - tra virgolette il template e poi le variabili in ordine, cosa c'è di sbagliato?

"OpenSellTime[%index deve essere inserito qui] = %time, PriceOpenSell[%index] = %price" - è questo il modello?

Se è così, dovrebbe essere così:

"OpenSellTime[%i] = %I64u, PriceOpenSell[%i] = %.5f"

I valori stessi dovrebbero essere elencati dopo, separati da virgole:

 ,i,OpenSellTime[i],i,PriceOpenSell[i]

totale:

printf("OpenSellTime[%i] = %I64u, PriceOpenSell[%i] = %.5f",i,OpenSellTime[i],i,PriceOpenSell[i]);

... bene ... se non ho tralasciato nulla...

 

MQL4, DoubleToStr() e DoubleToString(). In DoubleToStr() per il 2° argomento aggiungere "Default 8".

Codice:

#property strict
void OnStart()
  {
   Print("1) DoubleToStr(0.123456789) = ",DoubleToStr(0.123456789));
   Print("2) DoubleToString(0.123456789) = ",DoubleToString(0.123456789));
  }

Nei log, il risultato per loro sarà = 0,12345679, cioè la funzione arrotonda il valore; non è scritto nell'aiuto. Penso che valga la pena scrivere di più su questo, o almeno mettere esempi del tipo:

string value1=DoubleToStr(1.28473418, 5);
// содержимое строки value1 - "1.28473"

string value2=DoubleToStr(1.28473418, 3);
// содержимое строки value2 - "1.285"

, dove l'arrotondamento sarà visibile.