MQL4/5 belgeleriyle çalışmak ve bunları derlemek için SlickEdit'i ayarlama. - sayfa 10

 
CArrayObj *CSelect::ByOrderProperty(
CArrayObj *list_source ,ENUM_ORDER_PROP_INTEGER property, long value,ENUM_COMPARER_TYPE mode)
  {
   if (list_source== NULL ) return NULL ;
   CArrayObj *list = new CArrayObj();
   if (list== NULL ) return NULL ;
   list. FreeMode ( false );
   ListStorage. Add (list);
   int total=list_source. Total ();
   for ( int i= 0 ; i<total; i++)
     {
       COrder *obj =list_source. At (i);
       if (!obj. SupportProperty (property)) continue ;
       long obj_prop=obj. GetProperty (property);
       if (CompareValues(obj_prop,value,mode)) list. Add (obj);
     }
   return list;
  }

İşte Artyom Trishkin kütüphanesinden bir örnek, her şey yolunda ama bir şey var: Yazarın daha sonra kullanılacağını iddia ettiği için çok fazla kullanılmayan sarmalayıcı var ve şimdi bu notlar, hatırlatmalar için.
Onun kitaplığını kullanmak istiyorum, ancak kodu katlamanıza izin veren ek editörler olmadan içinde gezinmek, kodu yönlendirmeden bu mümkün değil. MetaEditor'da tüm kodu baştan sona kaydırırken zaten ne istediğinizi unutuyorsunuz. Standart düzenleyiciye Ctrl + g gibi tüm olası eklemeleri ve her şeyi, ayrıca bir kalem ve bir kağıt parçasını kullanmaktan zaten bıktım!

Soru:

list. FreeMode ( false );
list_source. At (i);

Bir işaretçi ile bir metoda parametre ilettiğimizde veya başka bir şekilde bir sınıfa işaretçi oluşturduğumuzda, MQL (veya this ) mümkün değildir. SlickEdit, katı bir MQL tanımı olan işaretçi tarafından geçirilen sınıf yöntemlerini tanımlamayı reddeder.
Ancak, işaretçi operatörünü (*) referans operatörü (&) olarak değiştirirseniz, her şey görünür hale gelir ve hatta sınıf üyelerinin otomatik tespiti bile çalışır. Ancak MQL için buna izin verilmez!

Bu nedenle, işleç (*) işaretçisinin, SlickEdit'te (&) işlecine eşdeğer olarak kabul edilmesi için nasıl ve nerede ayarlanacağı sorusu ortaya çıktı.  

 
BmC :

İşte Artyom Trishkin kütüphanesinden bir örnek, her şey yolunda ama bir şey var: Yazarın daha sonra kullanılacağını iddia ettiği için çok fazla kullanılmayan sarmalayıcı var ve şimdi bu notlar, hatırlatmalar için.
Onun kitaplığını kullanmak istiyorum, ancak kodu katlamanıza izin veren ek editörler olmadan içinde gezinmek, kodu yönlendirmeden bu mümkün değil. MetaEditor'da tüm kodu baştan sona kaydırırken zaten ne istediğinizi unutuyorsunuz. Standart düzenleyiciye Ctrl + g gibi tüm olası eklemeleri ve her şeyi, ayrıca bir kalem ve bir kağıt parçasını kullanmaktan zaten bıktım!

Soru:

Bir işaretçi ile bir metoda parametre ilettiğimizde veya başka bir şekilde bir sınıfa işaretçi oluşturduğumuzda, MQL (veya this ) mümkün değildir. SlickEdit, katı bir MQL tanımı olan işaretçi tarafından geçirilen sınıf yöntemlerini tanımlamayı reddeder.
Ancak, işaretçi operatörünü (*) referans operatörü (&) olarak değiştirirseniz, her şey görünür hale gelir ve hatta sınıf üyelerinin otomatik tespiti bile çalışır. Ancak MQL için buna izin verilmez!

Bu nedenle, işleç (*) işaretçisinin, SlickEdit'te (&) işlecine eşdeğer olarak kabul edilmesi için nasıl ve nerede ayarlanacağı sorusu ortaya çıktı.  

Korkarım (&) ve (*) operatörleri geçersiz kılınamaz (SE'nin hatası değil).

Belki de SE'de C++ ile olduğu gibi MQL5 ile çalışıyorsunuz? Ne tavsiye edeceğimi bilmiyorum.... C# ile çalışmayı deneyin.

 
Andrey Dik :

Korkarım (&) ve (*) operatörleri geçersiz kılınamaz (SE'nin hatası değil).

Belki de SE'de C++ ile olduğu gibi MQL5 ile çalışıyorsunuz? Ne tavsiye edeceğimi bilmiyorum.... C# ile çalışmayı deneyin.

C# ve C++ değil bir kullanıcı dili olarak çalışıyorum çünkü makroların farklı durumlarda operatörlere (* ve &) farklı davranacağını düşünüyorum.

 
BmC :

C# ve C++ değil bir kullanıcı dili olarak çalışıyorum çünkü makroların farklı durumlarda operatörlere (* ve &) farklı davranacağını düşünüyorum.

SE'de özel bir dil oluşturmak ve onunla çalışmak mümkün müdür? Bunu bilmiyordum.

Aşağıdakileri kastetmiştim:


 

Yalnızca profesyonel sürümde dilinizi ayarlamak mümkündür. SlickEdit referansında listelenmeyen kendi dilinizi oluştururken yardımda belirtildiği gibi, daha derinlemesine bir makro kurulumu ile karşı karşıyasınız, bu yüzden geçen bir sınıfta iç içe yöntemleri aramak için yapılandırılmış bu makroyu arıyorum. Işaretçi.
C++ dilinde, işaretçi (*) tarafından geçirilen bir nesnenin, MQL'de (.) yerine (->) operatörünün kullanılması anlamına geldiğini anladım. Sonuç olarak, bir makroda koşullu derleme komutları yardımıyla değiştirirseniz veya uygularsanız, bir kullanıcı dili tanımlarken bu operatörler kendileri tarafından değiştirilir. Buradan bu durumda önerilen C# veya C++ dillerinin ayarlarını kullanmanın imkansız olduğu sonucu çıkıyor, bu yüzden aslında operatörlere yapılan çağrının yapısını değiştirmek istiyorum.

Sürüm 25'i indirdim, kurdum, forumlarda kullanıcı dillerini bağlama ayarlarının orada daha esnek hale geldiğini okudum. Hem özel bir dil hem de C # ve C ++ şablonunu oluşturmaya çalışacağım ve hangisinin en iyi seçenek olduğunu göreceğim, sonra belki 25. sürümü kurmak için talimatlar gönderirim.

 
BmC :

Yalnızca profesyonel sürümde dilinizi ayarlamak mümkündür. SlickEdit referansında listelenmeyen kendi dilinizi oluştururken yardımda belirtildiği gibi, daha derinlemesine bir makro kurulumu ile karşı karşıyasınız, bu yüzden geçen bir sınıfta iç içe yöntemleri aramak için yapılandırılmış bu makroyu arıyorum. Işaretçi.
C++ dilinde, işaretçi (*) tarafından geçirilen bir nesnenin, MQL'de (.) yerine (->) operatörünün kullanılması anlamına geldiğini anladım. Sonuç olarak, bir makroda koşullu derleme komutları yardımıyla değiştirirseniz veya uygularsanız, bir kullanıcı dili tanımlarken bu operatörler kendileri tarafından değiştirilir. Buradan bu durumda önerilen C# veya C++ dillerinin ayarlarını kullanmanın imkansız olduğu sonucu çıkıyor, bu yüzden aslında operatörlere yapılan çağrının yapısını değiştirmek istiyorum.

Sürüm 25'i indirdim, kurdum, forumlarda kullanıcı dillerini bağlama ayarlarının orada daha esnek hale geldiğini okudum. Hem özel bir dil hem de C # ve C ++ şablonunu oluşturmaya çalışacağım ve hangisinin en iyi seçenek olduğunu göreceğim, sonra belki 25. sürümü kurmak için talimatlar gönderirim.

evet, sadece şunu söylemek istedim, eğer özel bir dil oluşturmak mümkünse, bunu yapmayı deneyebilirsiniz: özel bir dil oluşturun, ayarları ilgili CPP veya C# dil dosyasından hazır dillerden aktarın ve yalnızca ardından ilgili operatörlerin davranışını değiştirmeye çalışın.

 
Andrey Dik :

evet, sadece şunu söylemek istedim, eğer özel bir dil oluşturmak mümkünse, bunu yapmayı deneyebilirsiniz: özel bir dil oluşturun, ayarları ilgili CPP veya C# dil dosyasından hazır dillerden aktarın ve yalnızca ardından ilgili operatörlerin davranışını değiştirmeye çalışın.

yani her şeyi yaptım, ayarların SADECE C#'dan (CSharp) aktarılması gerekiyor çünkü nesneleri referans olarak geçirmek için daha uygun. C++'da (cpp), bir nesnenin yöntemlerine erişmek için işleç (.) yerine işleci (->) eklemeniz gerekir.

İkinci sorun, özel bir dil oluştururken, sürüm 25'te renklendirmenin kopyalama ayarları aracılığıyla aktarılmaması veya yalnızca bir SlickEdit v25.0.2.0 64-bit deposu olmasıdır. (Eminim bu bir geliştiricinin boyama hatasıdır, önceki sürümde her şey çalıştı, bunda durdu.)