Verwirrung über das Verhalten der Variablen - Seite 4

 
wlad:
Im Allgemeinen möchte ich, dass die Entwickler folgende Punkte beachten

Was haben die Entwickler damit zu tun? Möchten Sie, dass sie Ihre Variable auf ihrem Server speichern? Während Ihr Computer wegen eines Stromausfalls hängen bleibt und neu startet?
 
wlad:

Testen Sie es selbst.

und Sie werden sehen, was es damit auf sich hat


Ich fühle mit Ihnen (((.
 

Was soll das heißen?

Ich habe noch keine wirklichen Antworten erhalten.

Tatsache ist, dass es ein Problem gibt.

 
Ein echter Joint (im Kopf von jemandem)
 
Vinin:
Ein echter Joint (im Kopf von jemandem)
Erklären Sie mir, warum das so ist.
 
Man hat es Ihnen erklärt, Sie wollen nur nicht die Meinung anderer hören.
 
Vinin:
Man hat es Ihnen erklärt, Sie wollen nur nicht die Meinung anderer hören.

warum

wenn eine externe Variable geändert wird, nimmt die globale Variable ihren Wert an

 

und nur mit Tangas passiert.

Bei anderen Typen funktioniert es korrekt.

Sagen Sie mir, wo ich falsch liege.

 

Hier ist ein Beispiel für den Vergleich des Verhaltens von Strings und Ints

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);                              
}

und in das Protokoll ausgegeben:

1. Laden von EA und Initiieren von globalen Variablen

2. Übertragung von externen Variablen auf globale Variablen. einmalige Übertragung durch bool firsttime

3. Änderung der externen Variablen

4. Der Unterschied ist hier zu sehen.

tempString nimmt den Wert von ValueString an - falsch

tempInt behält seinen Wert, obwohl sich ValueInt geändert hat - korrekt

5 und 6 ähnlich wie 3 und 4


erklären Sie bitte, warum sich die Zeichenfolge anders verhält

während die Int korrekt ist

Bitte geben Sie mir konkrete Antworten.

 
wlad:

erklären Sie bitte, warum sich die Zeichenfolge anders verhält

Es ist zwar wahr.

Ich bitte um konkrete Antworten.

Ich kann es nicht genau sagen, ich kann die Links nicht finden.

Ich habe irgendwo im Forum gesehen, dass der Compiler, wenn er String-Variablen mit denselben Werten erkennt, sie in denselben Speicher legt und auf sie verweist, wenn jemand auf sie zugreifen muss.

Also, du hast wahrscheinlich Recht, sie müssen in eine Variable geschrieben werden. in der Theorie, kann es ein Optimierer Bug sein. schreiben Sie an servicedesk, senden Sie Ihr Beispiel mit dem Code.

Duplizieren Sie auch hier: MetaTrader 4 Build 529 Beta-Version mit neuem Compiler wurde veröffentlicht

--

// Aber in meiner Erfahrung habe ich noch nie ein Problem gesehen, das nicht gelöst werden konnte.