externとinputの違い - ページ 2

 
Artyom Trishkin:

入力については、すべてクリアしています。externの件ですが、そこでは、私が思うに、まずプロジェクトに添付する別のファイルで同じ型と識別子を持つ変数を宣言し、その後、そのように宣言できないことが判明します。もちろん、これは3階建ての印象派ですが...。

externの意味は、主(メイン)ファイルが何らかの変数を持ち、このファイルに別のファイルが添付されている場合です。そして、この添付ファイルでは、mainファイルで宣言された変数を使用する必要があり、次に添付ファイルではexternとして宣言しています。その結果、リンク先のファイルをコンパイルすることができ、メインファイルをコンパイルする際には、リンク先のファイルにおける変数宣言は 無視されます。

 
Alexey Viktorov:

どうだろう。私にとっては、すべてのドキュメントが自明なものなのです。どこかに困難があっても、ある程度実験してみると消えてしまう。

でも、ビット演算に慣れて いないと、どんな記事でも読めてしまうので...。一言も理解できないだろう。私が国旗や国旗セットのことを、アルテムが声で説明するまで何も理解できなかったのと同じです。

そこに価値観を求めるのであれば理解できるが、その前後でどう動くか - darkest darkness

 
Fast235:

価値を求めるならわかるが その 前後でどう動くかは不透明、暗黒の闇

彼女は誰だ?

 
Alexey Viktorov:

彼女は誰だ?

仕事の本質

 
Alena Lysenkova:

があります。
1) extern は mql4 でしか動作しません。
2) 入力後のコメントは、入力変数名ではなく、入力パラメーターに表示されます。
入力 int ma_period = 20;
- と表示され、"ma_period "と表示されます。
入力 int ma_period = 20; // MA周期
- と表示され、「MA期間」と表示されます。
をmql4と全く同じにするには、strictコンパイルモードが必要です #property strict.
この仕掛けはexternではありません。
3) 外部変数は他のグローバル変数と 同様にコード内で変更可能ですが、入力はできません。

当初はmql4とexternだけで、入力はなかった。
その後、mql5が作られ、mql5全般がまさにOOPを指向していたため、すぐに入力が搭載されたのです。
2-3年ほど前、mql4はmql5から入力を含む多くの機能を搭載してバージョンアップされました。

どの端末について書いているのですか?

MT5では、インジケータ内で外部変数をexternとして宣言すると、iCustom()でインジケータを呼び出すことができない場合があります。

 
Dmitry Fedoseev:

どの端末について書いているのですか?

MT5では、インジケータ内で外部変数をexternとして宣言すると、iCustom()からインジケータを呼び出すことができない場合が あります。

今更非難することでもないのですが、「失敗する可能性がある」と書いているのは...。ということがわかったりわかったり。というか、特別な教育を受けていない独学者の私には、そんな不安は理解しがたいのですが......。

 
Alena Lysenkova:

があります。
1) extern は mql4 でしか動作しません。
2) 入力後のコメントは、入力変数名ではなく、入力パラメーターに表示されます。
入力 int ma_period = 20;
- と表示され、"ma_period "と表示されます。
入力 int ma_period = 20; // MA周期
- と表示され、「MA期間」と表示されます。
をmql4と全く同じにするには、strictコンパイルモードが必要です #property strict.
この仕掛けはexternではありません。
3) 外部変数は他のグローバル変数と 同様にコード内で変更可能ですが、入力はできません。

当初はmql4とexternしかなく、入力は存在せず、mql4にはOOPもなかった。
その後、mql5が作られ、mql5全般がまさにOOPを指向していたため、すぐに入力が搭載されたのです。
2-3年ほど前、mql4はmql5から入力を含む多くの機能を搭載してバージョンアップされました。

externはどちらの場合も動作します。MQL5やMQL4での入力も同様です。目的が違うので、ヘルプに書いてあります。

なぜ、入力変数と外部変数の目的についての誤解をそのまま誘導するのか?

 
Dmitry Fedoseev:

externの意味は、主(メイン)ファイルが何らかの変数を持ち、このファイルに別のファイルが添付されている場合です。そして、この添付ファイルでは、mainファイルで宣言された変数を使用する必要があり、次に添付ファイルではexternとして宣言しています。その結果、リンク先のファイルはコンパイルできますが、メインファイルをコンパイルする際に、リンク先のファイルの変数宣言が 無視されます。

また、このモディファイアはC++のように動作する、つまりインクルードファイルで宣言されるものだと考えていましたhttps://www.mql5.com/ru/forum/160683/page867#comment_11927748

C++では正常に動作しないことが確認されている


tstextern ライブラリファイル

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

スクリプトファイルです。

#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);
   
  }
//+------------------------------------------------------------------+

koef 変数を操作しても、ローカルスコープ(各ファイル内)の ままなので、うまくいきません。


アルチョム・トリシキン

目的が違うので、ヘルプに書いてあります。

違いは、アクセスコントロールにあります。

input - 読み込みのみ可能で、書き込みは禁止されています。

extern - 読み書きが可能で、MQLプログラムの再初期化後にこの値は外部設定で指定された値に復元されます。

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

今さら否定的なことは言いませんが、「うまくいかないかもしれない」と書いているわけですから......。うまくいかないかもしれないが、うまくいくかもしれないというか、特別な教育を受けていない独学者の私には、そんな不安は理解しがたいのですが......。

というか、今確認してないんですけどね。それに、昔はどうだったかというと、よく変わるので危険です。一時的な不具合だったのかもしれませんね。

 
Igor Makanu:

また、このモディファイアはC++のように動作する、つまりプラグインファイルで宣言されるものだと考えていましたhttps://www.mql5.com/ru/forum/160683/page867#comment_11927748

C++で思うように動かない


tstextern ライブラリファイル

スクリプトファイルです。

koef 変数を操作しても、ローカルスコープ(各ファイルの中)にあるため、何も 起こりません。

なるほど、図書館があるんですね。もちろん、さまざまな変数があることでしょう。mqhのinclude経由の接続のことです。