Yeni MQL4 sözdizimi

 

Beta yayınlandığından bu yana bir süre geçti ve bir yerde, normal sürümün Ocak ayının ortasında görünebileceğine dair bir not gördüm. Bunun olacağından şüpheli olsam da, belki birkaç kodlayıcı Beta ile öğrendikleri fikirleri ve sorunları paylaşmaya ilgi duyabilir.

Yeni MQL4 kaynak sözdizimi, düzenleyici, derleyici, kalıplar, OOP veya ilgili herhangi bir şey hakkında bir tartışma başlatmak zaten anlamlı mı?

Lütfen hata raporu yok, ağlama yok, bu konuda sadece yapıcı tartışma.

 

#include direktifinin tekrarlanırsa yok sayıldığını açıkladım, yani

int OnStart() {
#include < dummy.mqh >
#include < dummy.mqh >
#include < dummy.mqh >
#include < dummy.mqh >
}

aynı şekilde çalışır

 int OnStart () {
#include <dummy.mqh>
}

Ayrı dosyalarda sınıf bildirimleriniz varsa bu çok hoş bir davranış olsa da, yardım dosyasında bahsedilmez.

 

Yeni sürüm biraz daha hızlı görünüyor.

Seri olarak ayarlanmış dinamik diziler otomatik olarak kayıyor gibi görünüyor.

İşlev Aşırı Yükleme, Anahtarlardan daha iyi arabirim sağlar.

 
"Sızan bellek" nedenini nasıl bulacağınıza dair bir ipucunu takdir ediyorum. İyi bir uygulama var mı?
 
Ovo : "Sızan bellek" nedenini nasıl bulacağınıza dair bir ipucunu takdir ediyorum. İyi bir uygulama var mı?
"Dinamik olarak ayrılmış belleği sil" gibi genel bir programlama sorusu mu soruyorsunuz || "özyinelemeli işlevlerin kullanımını sınırlayın". Yoksa beta içindeki bir bellek sızıntısı hatasından mı bahsediyorsunuz?
 
ubzen :
"Dinamik olarak ayrılmış belleği sil" gibi genel bir programlama sorusu mu soruyorsunuz || "özyinelemeli işlevlerin kullanımını sınırlayın". Yoksa beta içindeki bir bellek sızıntısı hatasından mı bahsediyorsunuz?


Kesinlikle eskisi. Arka planım JAVA'dan geldiği için kullanılmayan nesne referanslarıyla ilgilenme konusunda herhangi bir deneyimim yok. Demek istediğim, genel uyarı mesajını aldıktan sonra (eğer böyle bir ipucu varsa) sızdırılmış nesneleri bulma konusunda bir ipucunu takdir ediyorum. Şu anda, uyarının yazdırdığı bayt sayısından sızdırılan nesnenin sınıfını belirlemeye çalışıyorum.

 
Ovo : Kesinlikle birincisi. Arka planım JAVA'dan geldiği için kullanılmayan nesne referanslarıyla ilgilenme konusunda herhangi bir deneyimim yok. Demek istediğim, genel uyarı mesajını aldıktan sonra (eğer böyle bir ipucu varsa) sızdırılmış nesneleri bulma konusunda bir ipucunu takdir ediyorum. Şu anda, uyarının yazdırdığı bayt sayısından sızdırılan nesnenin sınıfını belirlemeye çalışıyorum.

Mt5'e kıyasla eksik. Sınıf adını söyleyen başka bir satır olmalıdır. Umarım yakında bunu da eklerler.

 

Şey, sızıntı avı gerçekten sinir bozucu olmaya başladı... beklediğimden daha fazla.

Bir araç yaratmak için biraz uğraştım ama hiç başarılı olamadım. Yeni/sil ifadelerini yeniden tanımlayabileceğimi öğrenmeme rağmen, onları değiştirecek hiçbir şeyim olmadığını fark ettim. Parantezli fonksiyonlar olsaydı çok basit olurdu ama ne yazık ki ifadeler. Bunları kaydetmek için yeni/sil ifadeleri etrafında bir sarmalayıcı oluşturabilirim, ancak geleceği olmayan çok acı verici bir çözüm olurdu.

Sızıntının kaynağının nasıl tespit edileceği konusunda tecrübesi olan varsa lütfen not bırakın.

 
Ovo:

Şey, sızıntı avı gerçekten sinir bozucu olmaya başladı... beklediğimden daha fazla.

Bir araç yaratmak için biraz uğraştım ama hiç başarılı olamadım. Yeni/sil ifadelerini yeniden tanımlayabileceğimi öğrenmeme rağmen, onları değiştirecek hiçbir şeyim olmadığını fark ettim. Parantezli fonksiyonlar olsaydı çok basit olurdu ama ne yazık ki ifadeler. Bunları kaydetmek için yeni/sil ifadeleri etrafında bir sarmalayıcı oluşturabilirim, ancak geleceği olmayan çok acı verici bir çözüm olurdu.

Sızıntının kaynağının nasıl tespit edileceği konusunda tecrübesi olan varsa lütfen not bırakın.

Belki bu makaleler (mql5 için ama aynısı yeni mql4 için de geçerlidir) bir çözüm bulmanıza yardımcı olabilir:

MQL5'te Nesne Oluşturma ve İmha Sırası

MQL5'te Nesne İşaretçilerini Kullanma
 
angevoyageur :

Belki bu makaleler (mql5 için ama aynısı yeni mql4 için de geçerlidir) bir çözüm bulmanıza yardımcı olabilir:

MQL5'te Nesne Yaratma ve İmha Sırası

MQL5'te Nesne İşaretçilerini Kullanma



notun için teşekkür ederim.

Ne yazık ki, sızıntıların tedavisine yardımcı olmuyor gibi görünüyor, sadece neden olduklarını açıklıyor.

Şimdiye kadar kullandığım tek çözüm, oluşturduğum her kod parçası için bir birim testi kodlamak ve geliştirme sırasında sık sık Birim testleri çalıştırmak. Yani sızıntı ortaya çıkarsa, buna neden olan test çantasını izole etmeye çalışabilirim. Ancak bazı testler oldukça karmaşıktır, bu nedenle amaç için kolay bir çözüm değildir. Ve editör gerçek bir acıdır.

 

Yeni sözdizimi nasıl ayırt edilir?

"Yaklaşan" sözdizimine ve "orijinal" sözdizimine atıfta bulunmak için farklı bir kelimeye ihtiyacım olduğunu hissediyorum. Görünüşe göre MQ resmi isimleri umursamıyor ve uyumluymuş gibi davranmaya devam ediyor.

Bu yüzden uygun isimleri kendimiz bulmamız gerekiyor gibi görünüyor. Baska öneri? MQL4 V2, OMQL4 (ieObject-), MQL4.1 ...?