işte ikinci varyant
ilk atamadan sonra değişkenlerin bellekte aynı yeri gösterdiği ortaya çıktı.
if (firsttime) { backup = StringVal;
Bu kinoanın hangi yapıdan uzandığını bilmek istiyorum
işte bir örnek
extern string StringVal = "string" ; string backup = "" ; bool firsttime = true ; int init() { Print ( "=========================" ); Print ( "StringVal=" ,StringVal, " backup=" ,backup); if (StringVal != backup){ if (firsttime) { backup = StringVal; Print ( " First Call ===> backup = StringVal" ); } Print ( "StringVal=" ,StringVal, "< > backup=" ,backup); } firsttime = false ; } int start() { }
bir uzman gibi derlersem
sonra StringVal değiştiğinde, yedekleme hemen değişir
son Baskı çağrılmadan
köpek nerede gömülü?
Pekala, StringVal'i manuel olarak değiştiriyorsunuz ve init hemen çalışıyor, bu doğru...
init() işlevinin çalıştığı açık
sorun şu ki 2. değişken, diğer koşullardan bağımsız olarak güncellenir
güncelleme için bir koşul yok - ancak güncelleme oluyor!
evet her şey açık
sorun şu ki 2. değişken, diğer koşullardan bağımsız olarak güncellenir
ve her zaman
CİDDİ VURUŞ
benzer bir örnek ver
ilk değişkenin değeri ikinci değişkene yalnızca bir kez iletilir ve ikinci değişkenin değeri programın daha sonraki yürütülmesi sırasında değişmemelidir .
ancak, birinci değişkendeki her değişiklikle, ikincisi de değişir ki bu değişmemelidir.
extern string Value = "O" ; string temp_= "" ; bool firsttime= true ; int start() { string txt= StringConcatenate ( " Value: " ,Value, "\n" , " temp_: " ,temp_, "\n" , " firsttime: " ,firsttime); if (firsttime) { temp_=Value; firsttime= false ; } // значение присваевается тольо ОДИН раз Print (txt); Comment (txt); }
benzer bir örnek ver
ilk değişkenin değeri ikinci değişkene yalnızca bir kez iletilir ve ikinci değişkenin değeri programın daha sonraki yürütülmesi sırasında değişmemelidir .
ancak, birinci değişkendeki her değişiklikle, ikincisi de değişir ki bu değişmemelidir.
Dış değişken değiştirildiğinde, EA yeniden başlatılır, bu da küresel düzeyde bildirilen değişkenlerin başlatılmasına yol açar. Her şey doğru. Bundan kaçınmak istiyorsanız - Global Değişkenleri kullanın.
yanlış - başlatma yapılmadı
işte referanstan kanıt
Genel değişkenler, program istemci terminalinin belleğine yüklendikten hemen sonra başlatılır.
ve genel olarak, bu başlatmayla ilgili değil, bir değişkeni değiştirmekle ilgili
lütfen kodu dikkatlice okuyun
ve sorun yalnızca string türündeki değişkenlerde ortaya çıkar
diğer türlerde sorun yok!
işte ikinci varyant
ilk atamadan sonra değişkenlerin bellekte aynı yeri gösterdiği ortaya çıktı.
Bu kinoanın hangi yapıdan uzandığını bilmek istiyorum
işte bir örnek
her zaman StringVal != backup koşuluna sahipsiniz ve ilk kez her zaman true olacaktır , çünkü (init) yalnızca bir kez başlatılır, ancak danışmanın HER yeniden başlatılmasında ve tf penceresi değiştirildiğinde, küme değiştirildiğinde yeni bir başlatma gerçekleşir. terminal başladığında değişti. Yani, StringVal'i değiştirdiğinizde init'i yeniden çalıştırırsınız.
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
bir uzman gibi derlersem
sonra StringVal değiştiğinde, yedekleme hemen değişir
son Baskı çağrılmadan
köpek nerede gömülü?