Hatalar, hatalar, sorular - sayfa 1492

 
Maxim Khrolenko :
Ancak küresel (harici değil) yok ve bu iyi değil.

Neden iyi değil? Program yüklendiğinde global değişkenlerin bir kez başlatıldığı açıkça söylenir.

Farklı bir davranış istiyorsanız, OnInit'te istediğiniz gibi başlatın.

 
Yuri Evseenkov :
Bunu belgelere yansıtmak güzel olurdu.
Evet. Yansıtmak
 
zaskok3 :
MQL4++'da giriş parametrelerini programlı olarak değiştirmem gerektiğinde extern olmadan yapamam. Örneğin, normal bir göstergeyi etkileşimli bir göstergeye dönüştürürken, girdiyi extern ile değiştirmeniz gerekir. Derleyici, girdi değişkenlerini const olarak ele alır ve onları değiştirmeye çalıştığınızda yemin eder. Extern ile böyle bir sorun yok.

Giriş parametrelerinin "çiftlerini" kullanın

İlk beş MQL5\Indicators\Examples\ADX.mq5 içinde bu konuyla ilgili bir örneğimiz var.

 //--- input parameters
input int InpPeriodADX= 14 ; // Period
//---- buffers
double     ExtADXBuffer[];
double     ExtPDIBuffer[];
double     ExtNDIBuffer[];
double     ExtPDBuffer[];
double     ExtNDBuffer[];
double     ExtTmpBuffer[];
//--- global variables
int        ExtADXPeriod;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit ()
  {
//--- check for input parameters
   if (InpPeriodADX>= 100 || InpPeriodADX<= 0 )
     {
       ExtADXPeriod= 14 ;
       printf ( "Incorrect value for input variable Period_ADX=%d. Indicator will use value=%d for calculations." ,InpPeriodADX,ExtADXPeriod);
     }
   else ExtADXPeriod=InpPeriodADX;
 
Yoldaşlar, derleme yaparken düzenli olarak "Dahili derleyici hatası" alan var mı? Belirgin bir sebep olmaksızın, yeniden derleme durumunda - askıda kalın, editörün kapatılması durumunda, yeniden açma (aynı sekmelerle, aynı kodla) - derleme çoğu zaman normal şekilde ilerler. Bu durumda, kodda hiçbir şey değişmez! Ancak bazen bu hata arka arkaya birkaç kez meydana gelir ve editörün ilk yeniden yüklenmesi yardımcı olmaz. Şimdiye kadar, yeniden başlatmalar sonucunda her şey derlenebildi. Ama korkarım ki er ya da geç çalışmayı bırakacak. Hizmet masasına bunların oluşma koşullarına ilişkin verileri ortaklaşa sağlamak için benzer hatalarla karşılaşan başka birini bulmak istiyorum.
 
Slawa :

Giriş parametrelerinin "çiftlerini" kullanın

İlk beş MQL5\Indicators\Examples\ADX.mq5 içinde bu konuyla ilgili bir örneğimiz var.

Şimdi, göstergeyi etkileşimli bir sürüme dönüştürmek için kaynağa yalnızca bir satır eklemeniz gerekir. Yedekleme yaparsanız, ek olarak. yedek oluşturmak için satırlar, yine de metin boyunca bir değişiklik yapmanız gerekecektir. Neden bu hemoroid, sadece bir satırı değiştirebildiğiniz zaman.

Derleme aşamasında girdi değişkenlerinin genel algısını kaldırmayı ne engeller?

 
zaskok3 :

Şimdi, göstergeyi etkileşimli bir sürüme dönüştürmek için kaynağa yalnızca bir satır eklemeniz gerekir. Yedekleme yaparsanız, ek olarak. yedek oluşturmak için satırlar, yine de metin boyunca bir değişiklik yapmanız gerekecektir. Neden bu hemoroid, sadece bir satırı değiştirebildiğiniz zaman.

Derleme aşamasında girdi değişkenlerinin genel algısını kaldırmayı ne engeller?

Metin düzenleme. "Ctrl" + "H" - arayın ve değiştirin. Karmaşık bir şey yok. Sadece tembel olma.
 
zaskok3 :

Derleme aşamasında girdi değişkenlerinin genel algısını kaldırmayı ne engeller?

Göstergelerin MT5 geçmiş veritabanında küresel olarak depolanması. Onlar için giriş parametreleri anahtardır. Giriş parametreleri değiştirildiğinde, eski parametrelere sahip gösterge yok edilir ve değiştirilen parametrelere sahip aynı gösterge yeniden oluşturulur.

Yani, sınırlama tamamen mimaridir.

Dördünde, girdilerdeki sabitliği kaldırabiliriz, ancak yeni MQL4 ve MQL5 arasında bir uyumsuzluk var. Bu nedenle, bunu yapmayacağız. Harici kullanmaya devam et

 

Slawa :

Yani, sınırlama tamamen mimaridir.

Ne yazık ki mimari o kadar kemikleşmiş ki basit esnekliğe bile yer yok. MQL5'teki etkileşimin bir koltuk değneği ile yapılması gerektiği ortaya çıktı. Soru şu ki, o zaman avantaj nerede, eğer dil olasılıkları kısıtlıyorsa ...
 
pako :
Pencereyi terminalden ayır
gibi?
 
Joo Zepper :
gibi?
Forumda bir yerde DLLka vardı