[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 1087

 
itum:

HO UN PROBLEMA ....

Quando configuro la posta nelle impostazioni del terminale, in SMTP - uso smtp.gmail.com:25

Ottengo l'errore - Mail: 530 5.7.0 Must issue a STARTTLS command first. l3sm2329679fan.0

Il server SMTP sul server mail.com richiede l'autenticazione RFS-2554. Che cos'è non lo so - ma nel pipistrello ho dovuto duplicare la password e la casella di accesso su mail.ru, che konnekt ha rotolato. Senza ha smesso di funzionare - qualche anno fa funzionava, e poi hanno cambiato qualcosa lì. Prova smtp.rambler.ru con la stessa porta 25 - forse funzionerà.
 

Amico, sono confuso dai termini. Quello che volevo dire è che se l'aiuto ci lega strettamente a un posto nella struttura del programma, dove la variabile statica deve essere dichiarata e inizializzata, e solo una volta, allora tutti gli altri tentativi di assegnare qualsiasi altro valore a questa variabile, o assegnarle qualsiasi valore, dovrebbero essere trattati dal compilatore come un errore di sintassi. In altre parole, in base alle definizioni date nell'aiuto, le variabili statiche servono come contenitori di costanti e non possono essere cambiate mentre il programma è in esecuzione. Fermata completa. Ma ahimè, ci siamo appena imbattuti in 2 violazioni di questa regola. Si scopre che si può dichiarare una variabile statica ovunque e reinizializzarla in qualsiasi momento. Beh, avrebbero dovuto scriverlo nella guida.

Abbiamo anche scoperto che questa variabile è globale a livello di programma principale anche se è dichiarata in un sottoprogramma.

Questa è la prima volta che ho incontrato la follia di dichiarare una variabile globale all'interno di una subroutine - confonde la comprensione del codice del programma. Le variabili dichiarate all'interno delle subroutine hanno una durata uguale o inferiore a quella della subroutine. È un classico. Perché le meta-citazioni hanno avuto bisogno della perversione di dichiarare una variabile globale all'interno delle subroutine, ci si può solo chiedere.

 
khorosh:

Nel tutorial c'è anche un esempio di utilizzo di una variabile statica, dal quale è chiaro che viene inizializzata una volta, altrimenti il contatore di tick non funzionerebbe.


L'autore del tutorial ha infranto la regola dell'aiuto - una variabile statica viene inizializzata prima della funzione init(). La domanda è: come possiamo inizializzare una variabile che non è stata ancora dichiarata? È vero - non si può. Di conseguenza, la variabile statica deve essere dichiarata prima del blocco init(). È un semplice sillogismo categorico. Se A, allora B. A, dunque B è il modus assertorio del sillogismo categorico. Se c'è un divieto di inizializzare una variabile non inizializzata (A), allora deve essere dichiarata prima (B), il divieto esiste (A), quindi è necessaria una dichiarazione preliminare della variabile (B).

Si scopre che l'autore non solo ha inizializzato una variabile statica non prima del blocco init(), ma l'ha anche dichiarata nel posto sbagliato del programma dove è richiesto l'aiuto!

 

Merda, è lì che è sepolto. Trovato! https://docs.mql4.com/ru/basis/variables/initialization

Любая переменная при определении может быть инициализирована. Любая переменная инициализируется нулем (0), если явно не задано другое начальное значение. Глобальные и статические переменные могут быть проинициализированы только константой соответствующего типа. Локальные переменные могут быть проинициализированы любым выражением, а не только константой.

Инициализация глобальных и статических переменных производится однократно. Инициализация локальных переменных производится каждый раз при вызове соответствующих функций.

Gli autori dell'aiuto sono confusi sul termine inizializzazione. Il primo paragrafo è corretto - il termine "inizializzazione" è applicato nel senso di un'operazione di assegnazione - cioè, inizializzare una variabile con un valore è assegnarle un valore. Nel secondo paragrafo, invece di "dichiarare una variabile" ("definire una variabile"), l'autore della guida ha usato erroneamente il termine inizializzazione. Pertanto, il giudizio "L'inizializzazione delle variabili globali e statiche viene fatta una volta" dovrebbe essere letto come "La dichiarazione delle variabili globali e statiche viene fatta una volta". Altrimenti otterremo un'assurdità. Se l'inizializzazione è possibile solo una volta, i valori di queste variabili non possono essere cambiati a run-time. Sviluppatori, per favore correggete questi e gli errori mostrati in diversi post sopra!

P.S.

Ho confuso "inizializzazione di variabile" con "dichiarazione di variabile". Ho messo molti termini sbagliati nei post precedenti. :(

 
drknn:

Merda, è lì che è sepolto. Trovato! https://docs.mql4.com/ru/basis/variables/initialization

Gli autori dell'aiuto sono confusi sul termine inizializzazione. Il primo paragrafo è corretto - il termine "inizializzazione" è applicato nel senso di un'operazione di assegnazione - cioè, inizializzare una variabile con un valore è assegnarle un valore. Nel secondo paragrafo, invece di "dichiarare una variabile" ("definire una variabile"), l'autore della guida ha usato erroneamente il termine inizializzazione. Pertanto, il giudizio "L'inizializzazione delle variabili globali e statiche viene fatta una volta" dovrebbe essere letto come "La dichiarazione delle variabili globali e statiche viene fatta una volta". Altrimenti otterremo un'assurdità. Se l'inizializzazione è possibile solo una volta, i valori di queste variabili non possono essere cambiati a run-time. Sviluppatori, per favore correggete questi e gli errori mostrati in diversi post sopra!

P.S.

Ho confuso "inizializzazione di variabile" con "dichiarazione di variabile". Ho messo molti termini sbagliati nei post precedenti. :(

Il fatto che l'inizializzazione venga eseguita solo una volta non significa che un'operazione di assegnazione, che può cambiare il valore di una variabile statica, non possa essere eseguita durante l'esecuzione del programma. La differenza tra queste operazioni è che durante l'inizializzazione, la dichiarazione del tipo di variabile è combinata con l'assegnazione del suo valore iniziale in modo esplicito o implicito. Per quanto riguarda la dichiarazione di una variabile statica prima di init() o all'interno di qualsiasi funzione, questo influisce sulla possibilità di chiamare questa variabile solo dalla funzione in cui è dichiarata, o da qualsiasi altra funzione.
 

Buone vacanze a tutti. Aiuta un manichino! Per favore consigliatemi un EA decente. Conto centesimi Depo per ora 60$

 
khorosh:
Poiché l'inizializzazione è un'operazione una tantum, non ne consegue che l'assegnazione, che può modificare il valore di una variabile statica, non possa essere eseguita nel mezzo dell'esecuzione del programma. La differenza tra queste operazioni è che durante l'inizializzazione, la dichiarazione di un tipo di variabile è combinata con l'assegnazione del suo valore originale, esplicitamente o implicitamente. Per quanto riguarda la dichiarazione di una variabile statica prima di init() o all'interno di qualsiasi funzione, questo influisce sulla possibilità di chiamare questa variabile solo dalla funzione in cui è dichiarata o da qualsiasi altra funzione.


Comprendete che mentre i concetti di attribuzione e identificazione sono equivalenti, i loro volumi sono gli stessi! Questo significa che i due termini sono sinonimi!!!

Approfondiamo la questione fino alla sua fonte originale. Apriamo un dizionario inglese online. Cercando di tradurre il termine identificazione non si ottiene nulla - si traduce come identificazione. La parola non è nativa, quindi non possiamo capire cosa significa dal dizionario online. Andiamo su Google e scarichiamo il libro di Borovsky "English-Russian Dictionary of Programming". A pagina 128 troviamo quanto segue: http://s2.ipicture.ru/uploads/20101230/XwOJxmkn.jpg Non resta che scoprire cos'è un'identità. Aprire il dizionario di Ozhegov. Trova la voce del dizionario:

Identità, -a e Identità. -a, cfr. 1. La somiglianza completa, la coincidenza. D. opinioni. 2. (identità). In matematica: uguaglianza, vera per qualsiasi valore numerico delle quantità che la compongono. II aggettivo identico, -a, -a, e identico, -a, -a (al 1° senso). Espressioni algebriche identiche.

Questo è quello che serve per provare! Ebbene, poiché dopo un'operazione di assegnazione, il valore della variabile sarà esattamente lo stesso di quello appena assegnato, concludiamo che l'identificazione di una variabile e l'identificazione di una variabile sono una stessa operazione, che è esattamente uguale all'operazione di assegnazione. Quindi, siamo costretti a concludere: se una regola assegna una e una sola identificazione a una variabile, e in un posto strettamente specificato nella struttura del programma, allora non abbiamo il diritto di assegnare un altro valore a quella variabile (dopo la sua identificazione), perché il concetto di identificazione e il concetto di assegnazione sono sinonimi! Fermata completa.

 
drknn:


Basta rendersi conto che mentre i concetti di attribuzione e identificazione sono equivalenti, i loro scopi sono gli stessi! Questo significa che i 2 termini sono sinonimi!!!

Andiamo in profondità nella questione fino alla sua fonte originale. Apri il dizionario inglese online. Cercando di tradurre il termine identificazione non si ottiene nulla - è tradotto come identificazione. La parola non è nativa, quindi non possiamo capire cosa significa dal dizionario online. Vai su Google e scarica il libro di Borovsky "English-Russian Dictionary of Programming". A pagina 128 troviamo quanto segue: http://s2.ipicture.ru/uploads/20101230/XwOJxmkn.jpg Non resta che scoprire cos'è un'identità. Aprire il dizionario di Ozhegov. Trova la voce del dizionario:

Cosa bisognava dimostrare! Ebbene, poiché dopo l'operazione di assegnazione, il valore della variabile sarà esattamente lo stesso del valore appena assegnato, concludiamo che l'identificazione di una variabile e l'identificazione di una variabile sono una sola e stessa operazione, che è completamente equivalente all'operazione di assegnazione. Quindi, concludiamo: se una regola assegna una e una sola identificazione a una variabile, e in un posto strettamente specificato nella struttura del programma, allora non possiamo assegnare un altro valore a quella variabile (dopo l'identificazione), perché il concetto di identificazione e il concetto di assegnazione sono sinonimi! Fermata completa.

Sta suggerendo che l'inizializzazione e l'identificazione sono la stessa cosa?
 
khorosh:
Sta suggerendo che l'inizializzazione e l'identificazione sono la stessa cosa?

No, basta - non confondermi. Aspetta un attimo.
 
drknn:

No, basta - non confondermi. Aspetta un attimo.
Inizialmente parlavi di inizializzazione, ma per qualche motivo sei passato all'identificazione.