Init() ve DeInit() yürütme sırası - sayfa 3

 
Aleksei Radchenko :


Terminali 1065 sürümüne güncellemeyi deneyin. Önceki sürümlerde, tam zaman çerçevesi değiştirilirken yeniden başlatma hatası oluştu. Yardımcı olabilir :)

https://www.mql5.com/ru/forum/187690


5.00 b1571 terminalim var
 
Değişkenlerin değerlerini bir yerde, örneğin globallerde saklayabilirsiniz. yeniden okuduktan sonra değişkenleri okuyun ve geri yükleyin.
 
Andrey Dik :
Değişkenlerin değerlerini bir yerde, örneğin globallerde saklayabilirsiniz. yeniden okuduktan sonra değişkenleri okuyun ve geri yükleyin.


Ve sonra Deinit işini tamamlayacak ve her şeyi mahvedecek. Normal Init ve Deinit'te kendi özel girişlerinizi ve tanımlarınızı yapmanın bir anlamı yoktur.

Ayrıca bu sorunla karşı karşıya kaldı. (

 
Sergey Chalyshev :


Ve sonra Deinit işini tamamlayacak ve her şeyi mahvedecek. Normal Init ve Deinit'te kendi özel girişlerinizi ve tanımlarınızı yapmanın bir anlamı yoktur.

Ayrıca bu sorunla karşı karşıya kaldı. (


Tamamen katılıyorum (Normal Init ve Deinit'te hiçbir anlam ifade etmiyor)
 
Vasiliy Pushkaryov :


Belki grafik nesnelere adlarının önekinin bir bileşeni olarak TF dönemini atamaya çalışın,

ve sonra şöyle bir şey uygulayın:


Cevap için teşekkürler

Evet, böyle bir şey yapmam gerekiyordu ama bu kısmi bir çözüm.

Değişkenlerle, bir kaynak veya dosyalar aracılığıyla da mümkündür, ancak bunlar MT5'i düzelterek önlenebilecek ayrı ek kaynaklardır.

Kodu gereksiz yan işlevler, kontroller vb. (F....)

 

TF'yi değiştirirken, önce eski TF'yi, sonra da Init'i yenisiyle tanımladığını düşündüm (boşuna çıkıyor). Bu mantıklı bir olay akışıdır ve Uzman Danışmanlar ve göstergeler yaparken bu mantığa güvendim. Ve sonra olaylar dizisinin ihlali ile böyle bir saçmalık ortaya çıkıyor ...
Çalışırken bazen grafiklerde ve grafikte bir sorun olduğunu fark ettim. nesneler ve her şeyin normal şekilde görüntülenmesi için TF'yi birkaç kez değiştirmek zorunda kaldı.


Şimdi kodları anlamak gerekiyor, burada deinitlerde bir şeylerin değiştiği ve daha sonra initlerde de geri döndüğü yer ... ama görünüşe göre sıra tam tersi !!! Tin, mantık değil. Bunu kim buldu?

Aklıma gelen ilk şey, benim alanımda küre içinde bir ezber olduğudur. önceki durumun değişkenleri (basılan / bırakılan düğmeler) ve ardından init'te düğmeler kaydedilen değerlere göre ayarlanır. Ve tam olarak, her zaman doğru şekilde yeniden yüklemediğim düğmeler. İlk hatırladığım bu, belki başka bir şey bulurum ... yarın kazacağım.


Geliştiriciler sayesinde, işi attı ...

 

Deinit'te, globallerdeki tüm verilerin kaydını kaydedin. Aynı zamanda, GlobalVariableSetOnCondition aracılığıyla bir globali semafor olarak ayarlayın.

Init'te semafor "veri sıfırlama" durumundaysa semaforu "tümünü oku" durumuna ayarlayarak okuyup çalıştığımızı yazın.

Eğer semafor "net değil" durumundaysa, semaforu bekleriz (ya döngülü bir Uyku ya da OnTimer aracılığıyla).


Ve elbette, semafor tamamen yoksa, o zaman bu, ilk kez başlattığımız ve gelecekteki TF değişikliklerini değil, aynı anda bir semafor oluşturmuş olarak her şeyi dikkate aldığımız anlamına gelir.


Böyle bir uygulamada zor olan nedir? Bir zamanlar reçete yazılacak bir kitaplık ve hepsi bu.

 
fxsaber :

Deinit'te, globallerdeki tüm verilerin kaydını kaydedin. Aynı zamanda, GlobalVariableSetOnCondition aracılığıyla bir globali semafor olarak ayarlayın.

Init'te semafor "veri sıfırlama" durumundaysa semaforu "tümünü oku" durumuna ayarlayarak okuyup çalıştığımızı yazın.

Eğer semafor "net değil" durumundaysa, semaforu bekleriz (ya döngülü bir Uyku ya da OnTimer aracılığıyla).


Böyle bir uygulamada zor olan nedir? Bir zamanlar reçete edilecek bir kitaplık ve bu kadar.

Böyle bir sorun olduğunu bile bilmiyordum. Bir dizi deinit-init olmasını umuyordum ve tam tersi değil. Sorunları bildiğinizde onları çözebilirsiniz. Ama bana öyle geliyor ki, buna şimdi her programa değiştirilmesi gereken koltuk değnekleri değil, terminal mantık düzeyinde karar verilmeli ...
 
elibrarius :
Böyle bir sorun olduğunu bile bilmiyordum. Bir dizi deinit-init olmasını umuyordum ve tam tersi değil. Sorunları bildiğinizde onları çözebilirsiniz. Ama bana öyle geliyor ki, buna şimdi her programa değiştirilmesi gereken koltuk değnekleri değil, terminal mantık düzeyinde karar verilmeli ...
Bu bir koltuk değneği değil, basit bir çözüm. Tek soru, onu kimin uyguladığıdır - geliştiriciler veya kullanıcılar. Ve orada ve orada zaman harcamalı ve bir kez yazmalısınız. Kullanıcılar yapabilirse, yazdılar ve artık sorun hakkında endişelenmeyin. Konuyu yeni okudum ve hemen bir çözüm buldum. O zaman neyi ertelemeli? Bir şeyi uzun süre talep edebilir veya hızlıca kendiniz yazabilirsiniz.
 
fxsaber :
Bu bir koltuk değneği değil, basit bir çözüm. Tek soru, onu kimin uyguladığı - geliştiriciler veya kullanıcılar. Ve orada ve orada zaman harcamalı ve bir kez yazmalısınız. Kullanıcılar yapabilirse, yazdılar ve artık sorun hakkında endişelenmeyin. Konuyu yeni okudum ve hemen bir çözüm buldum. O zaman neyi ertelemeli? Bir şeyi uzun süre talep edebilir veya hızlıca kendiniz yazabilirsiniz.
Her biri kendi başına, tekrar tekrar ortak bir sorunu çözecek küçük insanların sayısını çarparsanız, harcanan adam-saatler birçok kez (sınırda sonsuz sayıda ;-)) aşacaktır. terminalin kendisinde herhangi bir düzenleme seçeneği için gereken süre. Varsayımsal bir kütüphanenin varlığı bile, herkesin onun varlığından ve onu kullanma ihtiyacından haberdar olacağını garanti etmez. Genel olarak, neden böyle bir "tırmık" yapıp bırakılacağı açık değil mi?