Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1333
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Grazie per la risposta, non sei affatto cattivo)
Ora tutto ha senso)
UPD
Anche questa costruzione funziona
Fate attenzione a cosa restituisce il metodo At(). Se restituisce NULL, andrete in crash per un errore critico. Prima di accedere a un puntatore a un oggetto, controllare che non sia NULL
Già notato)
Quindi la soluzione è dichiarare oggetti globalmente vuoti....
E se non si sa in anticipo quanti ce ne saranno? Basta dichiarare "con riserva"? :)
P.S. Non ho trovato questo modo di dichiarare oggetti nell'aiuto integrato
Una volta Artyom mi ha scritto questa lezione. Non posso spiegare in dettaglio come funziona. Ma Artem si ricorderà e sarà in grado di spiegare. Ecco la classe stessa
Ed ecco il ciclo di creazione dei puntatori in OnInit()
e in OnTimer()
ArraySize(Rates) è la dimensione dell'array di strutture in cui sono elencati i caratteri da lavorare.
Artyom una volta mi ha scritto questa lezione. Non posso spiegare in dettaglio come funziona. Ma Artyom si ricorderà e sarà in grado di spiegare. Bene, ecco la classe stessa
Ed ecco il ciclo di creazione dei puntatori in OnInit()
e in OnTimer()
ArraySize(Rates) è la dimensione dell'array di strutture in cui sono elencati i caratteri da lavorare.
Qui:
Io farei prima del totale - semplicemente per la ragione che stai leggendo i caratteri dall'array Rates (giusto?), creando istanze della nuova classe bar e aggiungendole alla lista.
In qualsiasi errore di aggiunta, la dimensione dell'elenco di puntatori alle istanze della nuova classe bar non corrisponderà alla dimensione dell'array Rates.
In generale, deve essere qualcosa del genere:
Ed è qui che bisogna controllare anche l'aggiunta di successo alla lista:
qualcosa del genere:
per evitare perdite di memoria quando un puntatore a un nuovo oggetto viene aggiunto per errore alla listaQui:
Io farei prima del totale - semplicemente per il motivo che si leggono i caratteri dall'array Rates (giusto?), si creano istanze della nuova classe bar e si aggiungono alla lista.
In qualsiasi errore di aggiunta, la dimensione dell'elenco di puntatori alle istanze della nuova classe bar non corrisponderà alla dimensione dell'array Rates.
In generale, deve essere qualcosa del genere:
Ed è qui che bisogna controllare anche l'aggiunta di successo alla lista:
qualcosa del genere:
per evitare perdite di memoria quando un puntatore a un nuovo oggetto viene aggiunto per errore alla listaGrazie. Ho capito, lo correggo in questo modo:)))
Odio il continue; operator e cerco di non usarlo. Esclusivamente nei casi senza speranza.
come si differenzia da
Un'altra cosa è se all'errore il puntatore fallito viene cancellato... Ma anche qui possiamo fare a meno dell'odiato continue; semplicemente cancellando Print(). Era necessario durante il debug e cercando di capire cosa sta succedendo, e se durante il lavoro succede qualche errore, non capirò comunque cosa c'è di sbagliato... È più facile reinstallare il sistema operativo che capire i log.Visto che siamo in tema, per favore diteci, senza entrare nei dettagli, qual è la differenza tra un puntatore e una variabile di classe, e quale è preferibile. Posso leggere su Internet con dettagli difficili da capire. Una comprensione superficiale mi basta, per così dire...
Fate attenzione a cosa restituisce il metodo At(). Se restituisce NULL, andrete in crash per un errore critico. Prima di accedere a un puntatore a un oggetto, controllate che non sia NULL.
Artem, grazie per il prezioso commento)
Grazie. Ho capito, lo sistemerò così... :)))
Odio l'operatore continue; e cerco di non usarlo. Esclusivamente nei casi senza speranza.
Come si differenzia da
L'iterazione del ciclo non finirà e non ne inizierà una nuova, ma passerà alla prossima iterazione. La logica cambierà.
Artyom una volta mi ha scritto questa lezione. Non posso spiegare in dettaglio come funziona. Ma Artyom si ricorderà e sarà in grado di spiegare. Comunque, ecco la classe stessa
Alexey, grazie per una risposta così dettagliata.
Lo scopo della variabile ret nel frammento di codice citato non è chiaro...
Per quale motivo viene calcolato, se in ogni caso il metodo restituisce array[0]?
P.S.
E perché usare questo in un metodo di classe? Stiamo lavorando con i membri di questa particolare classe...
Grazie. Ho capito, lo sistemerò così... :)))
Odio l'operatore continue; e cerco di non usarlo. Esclusivamente nei casi senza speranza.
come si differenzia da
Un'altra cosa è se, quando si verifica un errore, si cancella il puntatore fallito... Ma anche qui si può fare a meno dell'odiato continue; basta cancellare Print(). Era necessario durante il debug e cercando di capire cosa sta succedendo, e se durante il lavoro si verifica qualche errore, non capirò comunque cosa c'è di sbagliato... Preferisco reinstallare il sistema operativo che capire i log.Visto che siamo in tema, per favore diteci, senza entrare nei dettagli, qual è la differenza tra un puntatore e una variabile di classe, e quale è preferibile. Posso leggere su Internet con dettagli difficili da capire. Una comprensione superficiale è sufficiente per me, per così dire.
L'iterazione del ciclo non finirà e non ne inizierà una nuova, ma passerà al prossimo Se. La logica cambierà.
Alexey, grazie per una risposta così dettagliata.
Lo scopo della variabile ret nel frammento di codice dato non è chiaro...
Perché viene calcolato se il metodo restituisce comunque array[0]?