MetaTrader 4 Build 529 Beta, Yeni Derleyici ile Yayınlandı - sayfa 17

 
Barbarian :

Her şey daha önce işe yaradı mı? i değişkenini nerede bildirdiğinizi anlayamıyorum:


Global değişkenlerde , i'yi bir kez başlatırım ve ardından tüm döngülerde kullanırım, daha uygun ve daha kolay ...
 
ALXIMIKS :

Bu nedenle, halihazırda çalışan ve çalışan bir göstergenin parametrelerini çift tıklatarak değiştirirken ,

statik değişkenlerin güncellemesi yok , buna göre piç göstergesi yeniden çizilmez ???


Statik değişkenler , program yeniden başlatıldığında değerlerini korur. Değerler yalnızca program tablodan kaldırılıp yeniden eklendiğinde kaydedilmez. Statik değişkenlerin yeniden başlatma sonrasında sıfırlanması için aşağıdaki yapıyı kullanıyorum:

 bool g_init;

void OnInit ()
{
   g_init = true ;
}

void MyFunction()
{
   static int myStatic;
   if (g_init)
   {
      myStatic = 0 ;
      g_init = false ;
   }
}
 
VOLDEMAR :
Bu böyle çalışır...

böyle çalışmıyor


İkinci durumda, bir fonksiyonda bildirilen bir dizinin kapsamı fonksiyondur.

kodda

 for (i=Coment- 1 ; i>= 1 ; i--){info[i]=info[i- 1 ]; cv  [i]=cv  [i- 1 ];}info[ 0 ]=txt;cv[ 0 ]=et;


tüm dizi öğelerini txt ve et değerleriyle başlattığınızdan emin misiniz? Muhtemelen son 2 atama döngüden önce gelmeli ve döngü farklı şekilde oluşturulmalıdır. Yoksa bu bir fikir mi?

 
Scriptong :


Statik değişkenler, program yeniden başlatıldığında değerlerini korur. Değerler yalnızca program tablodan kaldırılıp yeniden eklendiğinde kaydedilmez. Statik değişkenlerin yeniden başlatma sonrasında sıfırlanması için aşağıdaki yapıyı kullanıyorum:


ve şimdi kütüphanede dolaşıp her şeyi yeniden yazmak için ne var? bir şekilde çılgınca, çünkü 509'da her şey yolundaydı, ama burada ......
 
alexvd :


İkinci durumda, bir fonksiyonda bildirilen bir dizinin kapsamı fonksiyondur.

kodda


tüm dizi öğelerini txt ve et değerleriyle başlattığınızdan emin misiniz? Muhtemelen son 2 atama döngüden önce gelmelidir. Yoksa bu bir fikir mi?


İlk olarak, metin döngüde bir seviye kaydırılır, ardından yeni metin sıfır değerlerine atanır...

Bu diziler sadece yukarıda sunduğum fonksiyonlarda kullanılıyor...

Daha önce, 509 ve önceki yapılarda, her iki durumda da her şey çalışıyordu ... Şimdi sadece ilkinde ...

 
ALXIMIKS :

ve şimdi kütüphanede dolaşıp her şeyi yeniden yazmak için ne var? bir şekilde çılgınca, çünkü 509'da her şey yolundaydı, ama burada ......


Kodda kullanılması planlanan tüm değişkenleri kodun en başında başlatmak daha iyidir ...

Bu, işi basitleştirir ve programın başlangıcında ve sonraki kullanımında değişkenleri görmeyi ve doğru şekilde sıfırlamayı mümkün kılar ...

 
ALXIMIKS :

Bu nedenle, halihazırda çalışan ve çalışan bir göstergenin parametrelerini çift tıklatarak değiştirirken ,

statik değişkenlerin güncellemesi yok , buna göre piç göstergesi yeniden çizilmez ???

Hatırladığım kadarıyla, bu her zaman böyle olmuştur (kesinlikle derleme 509'da). Bu bir özelliktir.

VOLDEMAR :

Biri XP, diğeri W 7 olan farklı bilgisayarlarda garip bir şey fark ettim.

Bir fonksiyon içindeki bir diziyi başlatırken, dizinin tamamı doldurulmaz, sadece 0 değeri ...

Bir diziyi tüm fonksiyonların dışında global düzeyde başlatırken, diziler tam olması gerektiği gibi doldurulur...

Bu da binlerce kez konuşuldu - dizileri ve değişkenleri açıkça başlatın, "göksel nimetleri" beklemeyin.

Yerel bir reklam söz konusu olduğunda, sadece şanslısınız ve onlara çöp girmez. Ama buna güvenmezdim.

 
Lütfen yeni derleyicinin ve yeni çalışma zamanının kodun kalitesi üzerinde çok daha sıkı kontrole sahip olduğunu unutmayın. Çok sayıda MQL4 kodu üçüncü taraf geliştiriciler tarafından dikkatsizce yazılmıştır ve şimdi bu kusurlar hemen görünür olacaktır.
 

Yanlış anladıysam düzeltin.

Göstergede bir kitaplık işlevi kullanıyorum, bu işlevde gösterge dizisinin hesaplanmasında yer alan bazı statik değişkenler bildiriliyor.

Gösterge parametrelerini değiştirmek istersem, göstergenin doğru hesaplanması için (statik değişkenlere bağımlılık açısından),

kütüphane işlevine yeniden başlatmadan sorumlu bir bayrak iletmelidir (statik değişkenleri olan her işlevin giriş parametrelerini genişletmeniz gerekir),

gövdede, statik değişkenlerin değerlerini sıfırlayın ve tüm hesaplamayı tamamlamadan önce bayrağı kaldırmayı unutmayın.

Statik değişkenler bildirildiğinde, bu değişkenlerin değerinin yeniden başlatma sırasında sıfırlanıp sıfırlanmamasından sorumlu olan bazı parametre setlerine sahip olsaydı çok daha kolay olurdu.

 
Renat :
Lütfen yeni derleyicinin ve yeni çalışma zamanının kodun kalitesi üzerinde çok daha sıkı kontrole sahip olduğunu unutmayın. Çok sayıda MQL4 kodu üçüncü taraf geliştiriciler tarafından dikkatsizce yazılmıştır ve şimdi bu kusurlar hemen görünür olacaktır.
ve (editörde olan) MQL4 referansı da buna göre güncellendi mi?