変数の動作に関する混乱 - ページ 4

 
wlad:
に注目してほしいです。

開発者はどうするんだ?サーバーに変数を保存させたいですか?停電でパソコンがハングアップしたり、再起動したりする中?
 
wlad:

を自分でテストしてください。

を見れば、それがどんなものかわかるはずです。


同情します(((;゚Д゚)))))))
 

何を言ってるんだ?

まだまともな回答は得られていない。

問題点

 
マジでジョイント
 
Vinin:
マジでジョイント
なぜそうなっているのか、説明してください。
 
説明されているのに、他人の意見を聞きたくないだけなのでは?
 
Vinin:
説明されてるのに、他人の意見を聞きたくないだけだろ。

なぜ

外部変数が変更されると、グローバル変数がその値を引き継ぐという立ち位置

 

と、Tバックでしか起こりません。

他のタイプでは、正常に動作します。

間違っているところを教えてください。

 

以下は、文字列とintの動作を比較する例です。

extern string ValueString = "DDD";
extern int    ValueInt    = 10;  
     
string tempString="";
int    tempInt=0;

bool   firsttime=true;
       
int start() {
   string txt=StringConcatenate( "  ValueString: ",ValueString," < >","  tempString: ",tempString,"\n",
                                 "  ValueInt: ",   ValueInt,   " < >","  tempInt: ",tempInt,"\n",
                                 "  firsttime: ",firsttime);    
   if(firsttime) {     // значение присваевается тольо ОДИН раз   
      tempString=ValueString; 
      tempInt=ValueInt; 
      firsttime=false; 
   }

   Print(txt);
   Comment(txt);                              
}

とログに出力する。

1. EAのロードとグローバル変数の 開始

2. 外部変数からグローバル変数への転送。bool firsttime による一回限りの転送。

3. 外部変数の変化

4.その差は、ここにも表れています。

tempStringはValueStringの値を取る - 誤り

ValueInt が変わっても tempInt は値を保持する -正しい

5、6 は 3、4 と同様


文字列の挙動が異なる理由を教えてください。

Intが正しい間

具体的な回答をお願いします。

 
wlad:

なぜ文字列の挙動が異なるのか説明してください。

事実でありながら。

具体的な回答を求めているのです。

具体的に説明できない リンクが見つからない

コンパイラは同じ値を持つ文字列変数を検出すると、同じ実メモリに入れ、それを参照する必要がある人に参照させると、どこかの掲示板で見たことがあります。

理論的には、オプティマイザのバグかもしれません。サービスデスクに連絡して、コードとサンプルを送ってください。

こちらも重複しています: 新しいコンパイラを搭載したMetaTrader 4 Build 529のベータ版がリリースされました

--

// しかし、私の経験では、解決できない問題に出会ったことはない。