MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 936

 
Igor Makanu :

tekrar: derleme hatası almamış olmanız, şablon sınıfınızın dahil edildiği anlamına gelmez - CData sınıfı nesnesi nerede? - Bir şablon bildirimi görüyorum, ancak böyle bir değişken nerede? - nesne?

eğer soru sizin için "hayati" ise, o zaman tamamen tekrarlanabilir bir kod yapın - bu tamamen sizin takdirinize bağlı olarak ..... yorumsuz ve tekrar, makro ikame kullanmanın mantığını anlamıyorum

belki de hepsi "tuz", nadiren makro ikameleri kullanıyorum, en azından bir makro kullanırsam, sonunda ne vereceğini anlıyorum, örneğinde bu benim için bir gizem

Evet haklısın obje oluşturulmamış o yüzden kontrol ettim

 #property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict

#define templ(T)           template < typename T> // задача данного макроса определять int bool double и т.д


#define Vosmas(a,b,c,d,e) /*return*/ (Fun(a,b,c,d,e)) //a- массив, 
                                                     //b- номер строки если нужен
                                                     //c,d- номера измерений если нужны и массив многомерный

int Mas[ 2 ],Mas2[ 2 ][ 2 ],Mas3[ 2 ][ 2 ][ 2 ];

int OnInit ()
{ int Perem= 0 ;
 Perem=Vosmas(Mas, 0 , 0 , 0 , 3 );
 Print ( "Vosmas: " ,Perem); //результат 3
return ( INIT_SUCCEEDED );}

class CData{
public :CData(){};~CData(){};

       int Total( int &mas[]    , int y1= 0 ){ return (mas[y1]);}  
       int Total( int &mas[][]  , int y1= 0 /*,int y=0*/ ){ return (mas[y1][ 0 ]);}
       int Total( int &mas[][][], int y1= 0 /*,int y=0,int u=0*/ ){ return (mas[y1][ 0 ][ 0 ]);}};
       
         
templ(T) T Fun(T &a[], int b, int c, int d, int e){a[b]=e; return (a[b]);}

Sonuç olarak aşırı yükleme mümkün değil ki bu bir eksi ve genel olarak birikme de neden böyle bir programlama dili ve neden bu sınıflar aşırı yükleme yapılamasa bile her şey ölü ve durağan.

 
mql4 geliştiricilerine nasıl mektup yazılır, derleyici kodu nasıl görülür, bu kadar statik olmaması için ona ek özellikler eklemek mümkün müdür?
 
Seric29 :

Evet haklısın obje oluşturulmamış o yüzden kontrol ettim

Sonuç olarak aşırı yükleme mümkün değil ki bu bir eksi ve genel olarak birikme de neden böyle bir programlama dili ve neden bu sınıflar aşırı yükleme yapılamasa bile her şey ölü ve durağan.

Gerçek?

Onlar bilmiyorlardı.

O halde insanlar karmaşık şeyleri nasıl yazar? Beynim sınırsız...

 
Seric29 :

Bir makronun görevi, bir sınıftan bir fonksiyon çağırmak ve bu fonksiyona bir değer iletmektir. bir makro herhangi bir boyutta bir dizi alabilir, bu yüzden böyle bir şema çizmeye çalışıyorum. Tabii ki çok fazla taş var, ancak bir sınıftan bir işlev çağırmam gerekiyor ve bir sınıftan basit bir işlevi nasıl çağıracağımı bilmiyorum (benim durumumda, Total yönteminin açıklaması yok), bu yardımda yazmıyor, yeniden iletimle ilgili karmaşık örnekler var.

İşte herhangi bir boyutta bir dizi alan bir makro örneği, geliştiricilerin bu özellikleri karmaşık öğelerle normal çalışmadan kesmesi kötü

Şablon olmadan da mümkündür, ancak elbette bir şablonla daha iyidir.

istemedi, ancak bir terminal açtı, işte örneğiniz:

 #property strict
#property show_inputs
//+------------------------------------------------------------------+
//#define templ(T)          template<typename T>// задача данного макроса определять int bool double и т.д

#define Vosmas(a,b,c,d,e)   5
int Mas[ 2 ],Mas2[ 2 ][ 2 ],Mas3[ 2 ][ 2 ][ 2 ]; //объявил массивы которые будут хранить информацию// обработка с помощью классов должна быть любого типа templ(T)
//+------------------------------------------------------------------+
void OnStart ()
  {
   int Perem= 0 ;
   Perem=Vosmas(Mas, 0 , 0 , 0 , 0 );
   Print ( "Vosmas: " ,Perem);
   Perem=Vosmas(Mas2, 0 , 0 , 0 , 0 );
   Print ( "Vosmas: " ,Perem);
   Perem=Vosmas(Mas3, 0 , 0 , 0 , 0 );
   Print ( "Vosmas: " ,Perem); //во всех случаях результат 5
  }
//+------------------------------------------------------------------+

Makro değişimini yorumladım, kod derleniyor, bu yüzden çalışmıyor mu? Neden kullanılmayan bir şablonun ve neden bir dil anahtar sözcüğünü çoğaltan bir makro değişikliğinin neden olduğunu üç kez sordum.

sadece neyin gerekli olduğunu anlamakla kalmıyorum, aynı zamanda kodun hangi bölümünün derlenmeyeceğini de kodla ne yapacağımı anlamıyorum.

Not: Bu şablonu veya makro ikamesini kullanarak çok boyutlu diziler yapmaya çalışıyorsanız - IMHO, işe yaramaz, forumda arama yaparak hazır bir çözüm bulun ve kullanın

Not: Kesinlikle vazgeçiyorum bu soru bana göre değil

 
Seric29 :
mql4 geliştiricilerine nasıl mektup yazılır, derleyici kodu nasıl görülür, bu kadar statik olmaması için ona ek özellikler eklemek mümkün müdür?

Başına pantolon giyersen olmaz :)

 
Artyom Trishkin :

Gerçek?

Onlar bilmiyorlardı.

O halde insanlar nasıl karmaşık şeyler yazar? Beynim sınırsız...

Peki, belleğe erişim kapalıysa yazması en zor olan şey nedir, dinamik fonksiyonlarla çalışmak imkansız, hatta aşırı yükleme yapmak bile imkansız, teo programınızı tamamlamak için fazladan 1000 satır kod yazmak zorunda kalacak, gereksiz döngüleri başlatmak zorunda kalacak. ve değişkenler, dolayısıyla program performansı 0'dır.

 
Seric29 :

Peki, belleğe erişim kapalıysa yazması en zor olan şey nedir, dinamik fonksiyonlarla çalışmak imkansız, hatta aşırı yükleme yapmak bile imkansız, teo programınızı tamamlamak için fazladan 1000 satır kod yazmak zorunda kalacak, gereksiz döngüleri başlatmak zorunda kalacak. ve değişkenler, dolayısıyla program performansı 0'dır.

Eh, programın yapısı başlangıçta ölüyse, evet, olamaz.

Program en sonunda yazılmıştır. İlk - programın yapısına düşünceli bir yaklaşım.

Dürüst olmak gerekirse, beş dakika içinde farklı yapılanlarla neden bir aydır mücadele ettiğinizi anlamıyorum. gerçekten anlamıyorum...

 
Igor Makanu :

istemedi, ancak bir terminal açtı, işte örneğiniz:

Makro değişikliğini yorumladım, kod derleniyor, bu yüzden çalışmıyor mu? Neden kullanılmayan bir şablonun ve neden bir dil anahtar sözcüğünü çoğaltan bir makro değişikliğinin neden olduğunu üç kez sordum.

sadece neyin gerekli olduğunu anlamakla kalmıyorum, aynı zamanda kodun hangi bölümünün derlenmeyeceğini de kodla ne yapacağımı anlamıyorum.

Not: Bu şablonu veya makro ikamesini kullanarak çok boyutlu diziler yapmaya çalışıyorsanız - IMHO, işe yaramaz, forumda arama yaparak hazır bir çözüm bulun ve kullanın

Not: Kesinlikle vazgeçiyorum bu soru bana göre değil

Burada Vosmas makrosunun herhangi bir diziyi kabul ettiği gerçeğine bir örnek verdim. Diziler için tek çözüm, aynı boyutta dizilerin kullanılmasıdır, her türlü işaretçi ve referanslar ve c ++ ile çalışan dinamik işlevler hakkında sessizim, aynı zamanda c ++'da bir işlev türetme sorunu da türü belirtir ve diğer saçmalık kısaca çok statik bir dil ve bu kadar, Burada gerçekten harika şeyler yazamazsınız.

 
Seric29 :

Burada Vosmas makrosunun herhangi bir diziyi kabul ettiği gerçeğine bir örnek verdim. Diziler için tek çözüm, aynı boyutta dizilerin kullanılmasıdır, her türlü işaretçi ve referanslar ve c ++ ile çalışan dinamik işlevler hakkında sessizim, aynı zamanda c ++'da bir işlev türetme sorunu da türü belirtir ve diğer saçmalık kısaca çok statik bir dil ve bu kadar, Burada gerçekten harika şeyler yazamazsınız.

C++'ın temellerini okumaya başlayın, MQL'nin minimum farklılıkları var!

Not: tebrikler, her şeyi yapabilen evrensel bir makro yazdınız, diziler "işleyebileceği" en kolay şeydir, çoğaltmaya bir örnek:

 #property strict
#define Vosmas(a,b,c,d,e)   5
int Mas[ 2 ],Mas2[ 2 ][ 2 ],Mas3[ 2 ][ 2 ][ 2 ]; //объявил массивы которые будут хранить информацию// обработка с помощью классов должна быть любого типа templ(T)
//+------------------------------------------------------------------+
void OnStart ()
  {
   int Perem= 0 ;
   Perem=Vosmas(Mas, 0 , 0 , 0 , 0 );
   Print ( "Vosmas: " ,Perem);
   Perem=Vosmas(Mas2, 0 , 0 , 0 , 0 );
   Print ( "Vosmas: " ,Perem);
   Perem=Vosmas(Mas3, 0 , 0 , 0 , 0 );
   Print ( "Vosmas: " ,Perem); //во всех случаях результат 5
   
   class CA{ public : int a;} A;
   class CB{ public : int b;} B;
   class CC{ public : int c;} C;
   class CD{ public : int d;} D;
   class CE{ public : int e;} E;
   Perem=Vosmas(A,B,C,D,E);     Print ( "Vosmas: " ,Perem); //во всех случаях результат 5
   Perem=Vosmas( "УРА" , "Я" , "УЧУ" , "MQL" , "4" );     Print ( "Vosmas: " ,Perem); //во всех случаях результат 5
  }
//+------------------------------------------------------------------+
 
Igor Makanu :

C++'ın temellerini okumaya başlayın, MQL'nin minimum farklılıkları var!

Not: tebrikler, her şeyi yapabilen evrensel bir makro yazdınız, diziler "işleyebileceği" en kolay şeydir, çoğaltmaya bir örnek:

Peki, diziyi makroya geçirmek ve makroda aşırı yüklenen işlevi çağırmak ve sonucu döndürmek için yakalamak istedim, ilkel bir görev gibi görünüyor, ancak makroda aşırı yüklenmiş işlevi çağırdığınızda, bir nakavt oluyor. 3 fonksiyon olduğu uyarısında, makroda aşırı yüklenen çağrı fonksiyonlarından hangisini belirleyecek bir kriter yazmanız gerektiği ve burada yine bu kontrolün nasıl yapılacağını sormanız gerektiği ortaya çıkıyor, genel olarak fikir başarısız oldu .