Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 156
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
1) perché non inizializzare immediatamente quando si dichiara int err=0 ?
2) non ho controllato, ma secondo la documentazione err è memorizzato in qualche variabile, che è auto-zero quando si usa la funzione GetLastError(),
e inoltre cambia sempre quando si usano alcune funzioni (soprattutto quelle terminali)
3) Questo è il motivo per cui GetLastError() ha dato un valore di 0 dopo aver fatto riferimento a un numero di biglietto inesistente in OrderSelect:
"Le altre funzioni non cambiano il valore della variabile last_error in nessuna condizione. ................., OrderSelect, ...................."
Spesso dichiaravo una variabile come questa all'interno delle funzioni:
Più all'interno, a qualche condizione lo chiamo già per vedere se c'è un errore. Beh, non sono solo io, ma molti altri posti nel codice che ho incontrato. Quindi, per dire, è una situazione tipica. Oggi ho pensato che non è logico dichiarare ogni volta la stessa variabile in ogni funzione in cui si vogliono controllare gli errori. Ci ho pensato e sono arrivato alla conclusione che sarebbe stato più facile dichiarare globalmente una volta e inizializzarlo nell'init. Funziona così:
E inoltre, quando avete bisogno di chiamare la variabile err nelle funzioni utente, sapendo che ha già un valore. In effetti, GetLastError() emette il codice dell'ultimo errore, quindi se questa variabile err viene chiamata in ogni funzione alla fine di tutti i calcoli, che è responsabile di emettere il codice di errore, e chiama GetLastError(), allora tutto sarà corretto, giusto?
Ma se non chiamate questa variabile alla fine di qualche funzione (seguendo la catena di esecuzione del codice), non si resetterà, e causerà un'esecuzione sbagliata nel caso in cui ci sia stato un errore nell'esecuzione precedente, ma non in quella attuale, ma il codice di errore viene restituito per ultimo... E per resettarlo, dovete chiamare questa funzione GetLastError(). Cioè qui tutto dipende dal fatto che sia stato chiamato o meno. Se non si è sicuri che sarà ovunque, è più facile riassicurarsi e azzerare ogni volta, giusto?
Possiamo dichiarare err globalmente, poi azzerarlo in start() prima di chiamare GetLastError(), ad esempio
1) perché non inizializzare immediatamente quando si dichiara int err=0 ?
2) non ho controllato, ma secondo la documentazione err è memorizzato in qualche variabile, che è auto-zero quando si usa la funzione GetLastError(),
e inoltre cambia sempre quando si usano alcune funzioni (soprattutto quelle terminali)
3) Questo è il motivo per cui GetLastError() ha dato un valore di 0 dopo aver fatto riferimento a un numero di biglietto inesistente in OrderSelect:
"Le altre funzioni non cambiano il valore della variabile last_error in nessuna condizione. ................., OrderSelect, ...................."
Potete dichiarare err globalmente, poi azzerarlo in start() prima di chiamare GetLastError(), ad esempio
allora c'è già un problema logico. A meno che GetLastError() sia chiamato costantemente(teoricamente alla fine di ogni funzione utente).
A volte bisogna chiamarlo più spesso
Victor (hoz), non capisco la tua confusione con l'ultimo errore.
Dichiarare la funzione per la gestione degli errori e chiamarla dove necessario. Tutto sarà locale e potrà essere usato ovunque.
Victor (hoz), non capisco la tua confusione con l'ultimo errore.
Dichiarare la funzione per la gestione degli errori e chiamarla dove necessario. Tutto sarà locale e potrà essere usato ovunque.
È comprensibile. Ma questa funzione sarà chiamata quando ne ho bisogno, cioè quando voglio controllare se c'è un errore. Ma se c'era un errore da qualche parte prima e non c'è nessun errore in questo momento, restituirà l'errore precedente... Perché nella tua funzione Vadim, la variabile LastError non è azzerata , chiamando GetLastError(). Ecco il punto...
È comprensibile. Ma questa funzione sarà chiamata quando ne ho bisogno, cioè quando voglio controllare se c'è un errore. Ma se c'era un errore da qualche parte prima, e in questo momento non c'è nessun errore, restituirà l'errore precedente... Perché nella tua funzione Vadim, la variabile LastError non è azzerata , chiamando GetLastError(). Questo è il punto...
Non dovrebbe essere azzerato. Ci dovrebbe essere l'abitudine di controllare gli errori ovunque dopo le funzioni. Si dovrebbe anche rendere la chiamata disabilitata. In modo che non rallenti in modalità di combattimento. Cioè è un tale debugger.
L'eccezione, naturalmente, è per gli errori che devono essere analizzati, per prendere una decisione.
Questo è comprensibile. Ma questa funzione sarà chiamata quando ne ho bisogno, cioè quando voglio controllare se c'è un errore. Ma se c'era un errore da qualche parte prima e non c'è nessun errore in questo momento, restituirà l'errore precedente... Perché nella tua funzione Vadim, la variabile LastError non è azzerata , chiamando GetLastError(). Ecco il punto...