La differenza tra esterno e ingresso - pagina 2

 
Artyom Trishkin:

Tutto è chiaro sull'input. La cosa di extern - lì, come mi sembra, puoi prima dichiarare variabili con lo stesso tipo e identificatore in diversi file da allegare al progetto, e poi si scopre che non puoi dichiararle in quel modo. Certo, questo è un impressionismo a tre piani...

Il significato di extern è che se il file principale (main) ha qualche variabile e un altro file è collegato a questo file. E in questo file allegato abbiamo bisogno di usare la variabile dichiarata nel file principale, quindi nel file allegato la dichiariamo come extern. Di conseguenza, il file collegato può essere compilato e quando il file principale viene compilato, ladichiarazione della variabile nel file collegato viene ignorata.

 
Alexey Viktorov:

Non lo so. Per me, tutta la documentazione è autoesplicativa. Se ci sono difficoltà da qualche parte, scompaiono dopo qualche esperimento.

Ma se non ho familiarità con le operazioni bitwise, posso leggere qualsiasi articolo... Non capirò una parola. Proprio come io non potevo capire nulla delle bandiere e degli insiemi di bandiere finché Artem non me li ha spiegati a voce.

È comprensibile se si richiedono valori da esso, ma come funziona tutto prima e dopo - oscurità più nera

 
Fast235:

è comprensibile se se ne chiede il valore, ma come funziona tutto prima e dopo è torbido, il torbido più oscuro

Chi è?

 
Alexey Viktorov:

Chi è?

l'essenza del lavoro

 
Alena Lysenkova:

c'è:
1) extern funziona solo in mql4.
2) i commenti dopo l'input saranno visualizzati nei parametri di input invece del nome della variabile di input
ingresso int ma_periodo = 20;
- ci sarà scritto "ma_periodo".
input int ma_period = 20; // periodo MA
- sarà scritto "periodo MA".
per essere esattamente come in mql4, è necessaria la modalità di compilazione strict #property strict.
Questo trucco è assente con extern.
3) Le variabili esterne possono essere cambiate nel codice come qualsiasi variabile globale, l'input no.

Inizialmente, c'erano solo mql4 ed extern, non c'era nessun input, né OOP in mql4.
Poi fu sviluppato mql5 che includeva immediatamente l'input perché mql5 in generale era orientato all'OOP.
Circa 2-3 anni fa, mql4 è stato aggiornato con molte caratteristiche di mql5, incluso l'input.

Di quale terminale stai scrivendo?

In MT5, se si dichiara una variabile esterna come extern nell'indicatore, l'indicatore potrebbe non essere in grado di essere chiamato tramite iCustom().

 
Dmitry Fedoseev:

Di quale terminale stai scrivendo?

In MT5, se si dichiara una variabile esterna come extern in un indicatore, l'indicatore potrebbe non essere in grado di essere chiamato attraverso iCustom().

Non sto rimproverando ora, ma lei scrive "può fallire"... si scopre che può funzionare o meno! Voglio dire, è difficile per me, come autodidatta senza educazione speciale, capire una tale incertezza...

 
Alena Lysenkova:

ci sono:
1) extern funziona solo in mql4.
2) i commenti dopo l'input appariranno nei parametri di input al posto del nome della variabile di input
ingresso int ma_periodo = 20;
- ci sarà scritto "ma_periodo".
input int ma_period = 20; // periodo MA
- sarà scritto "periodo MA".
per essere esattamente come in mql4, è necessaria la modalità di compilazione strict #property strict.
Questo trucco è assente con extern.
3) Le variabili esterne possono essere cambiate nel codice come qualsiasi variabile globale, l'input no.

Inizialmente, c'erano solo mql4 ed extern, non c'era nessun input, né OOP in mql4.
Poi fu sviluppato mql5 che includeva immediatamente l'input perché mql5 in generale era orientato all'OOP.
Circa 2-3 anni fa, mql4 è stato aggiornato con molte caratteristiche di mql5, incluso l'input.

extern funziona in entrambi i casi. Così come l'input in MQL5 e MQL4. Il loro scopo è diverso, ed è scritto nella guida.

Perché indirizzare subito una persona verso un'idea sbagliata sullo scopo delle variabili di input ed extern?

 
Dmitry Fedoseev:

Il significato di extern è che se il file principale (main) ha qualche variabile e un altro file è collegato a questo file. E in questo file allegato abbiamo bisogno di usare la variabile dichiarata nel file principale, quindi nel file allegato la dichiariamo come extern. Di conseguenza, il file collegato può essere compilato, ma quando si compila il file principale, la dichiarazione della variabile nel file collegato viene ignorata.

Ho anche pensato che questo modificatore funziona come in C++, cioè è dichiarato nel file includehttps://www.mql5.com/ru/forum/160683/page867#comment_11927748

Controllato non funziona come dovrebbe in C++


file di libreria tstextern

//+------------------------------------------------------------------+
//| My function                                                      |
//+------------------------------------------------------------------+
extern int koef=1 ;
 int MyCalculator(int value,int value2) export
   {
    return((value+value2)*koef);
   }
//+------------------------------------------------------------------+

file di script:

#import "tstextern.ex5"
int MyCalculator(int value,int value2);
#import

extern int koef;

void OnStart()
  {
      koef = 666;
      int res = MyCalculator(100,200);
      Print("result = ",res);
   
  }
//+------------------------------------------------------------------+

qualsiasi manipolazione della variabilekoef non funziona, è ancora nell'ambito locale (dentro ogni file)


Artyom Trishkin:

Il loro scopo è diverso ed è scritto nella guida.

La differenza è nel controllo dell'accesso:

input - può essere solo letto, la scrittura è proibita.

extern - può essere letto e scritto, e dopo la reinizializzazione del programma MQL questo valore sarà ripristinato al valore specificato nelle impostazioni esterne

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2019.06.02
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Maksim Neimerik:

Ora non sono negativo, ma tu scrivi "potrebbe non funzionare"... potrebbe non funzionare, ma potrebbe funzionare! Voglio dire, è difficile per me, come autodidatta senza educazione speciale, capire una tale incertezza...

Cioè, non ho controllato in questo momento. Ed è pericoloso dire cosa c'era una volta, perché le cose cambiano così spesso. Forse è stato un guasto temporaneo.

 
Igor Makanu:

Ho anche pensato che questo modificatore funziona come in C++, cioè è dichiarato nel file del pluginhttps://www.mql5.com/ru/forum/160683/page867#comment_11927748

non funziona come dovrebbe in C++


file di libreria tstextern

file di script:

qualsiasi manipolazione della variabilekoef non fa nulla, è ancora nell'ambito locale (dentro ogni file)

Beh, avete una biblioteca. Naturalmente, ci saranno diverse variabili. Ciò che si intende è la connessione di mqh tramite include.

Motivazione: