Hatalar, hatalar, sorular - sayfa 2163

 
Комбинатор :


Optimizasyonları çok daha iyi anladığınıza inanıyorum, ancak basit bir kullanıcı açısından her şey biraz garip görünüyor - MQL derleyicisinin C ++ hızıyla karşılaştırılabilir kod ürettiğini iddia ediyorsunuz, ancak aniden diziler ortaya çıkıyor. MQL'de hiç hızlı değil.

Yönetilen bir dil açıkça dizilerin sıkı bir şekilde kontrol edilmesi gerektiği anlamına gelir. Bu olmadan, dil güvenli olamaz.

Statik diziler daha basit kontrole sahiptir ve kod iyileştirici aşamasında kısmen basitleştirilebilir. Dinamik kontroller için daha büyüktür ve basitleştirilmesi zordur.

Kod, C++ kalite düzeyinde oluşturulur, ancak elbette yönetilen şeylerde bir ek yük vardır. Matematik, döngüler ve diğer her şey C++ seviyesinde.

 
Комбинатор :

en iyi ihtimalle bir dizi dizini , doğrudan tek bir montajcı talimatına da indirgenir, bu nedenle soru hala geçerli

Yönetilen dilde, yalnızca sabit indekslemeli statik bir dizide. Diğer bir deyişle, optimize edici, bir tamponun sınırlarını ve varlığını kontrol etmenin gerekli olmadığından %100 eminse.

Koşullar ihlal edilirse, arabellek ve sınır [s] varlığının kontrolü görünür.

Programlama yaparken sahip olmanız gereken temel bilgi budur.

 
Vladimir Pastushak :
Aşırı yüklenmiş işlevde bir numaralandırma varsa, o zaman bir dize, o zaman onu bir integral için çağırırken bir sorun ortaya çıkar ...

Buna dikkat ettim https://www.mql5.com/en/forum/1111/page1297#comment_1382986

Ancak hiçbir şeyi değiştirmediler, bu nedenle şablonlardaki ::EnumToString çoğu durumda işe yaramaz

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2015.02.16
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

Projeleri keşfetmeye ve bir araya gelmeye devam ediyoruz.

#resource "\\Experts\\[Project 2018]\\Expert Name\\Resources\\img\\open_buy.bmp"

resource name is too long '\Experts\[Project 2018]\Expert Name\Resources\img\open_buy.bmp' CPanel.mqh 6 1

Sınırlıysak neden projelere ihtiyacımız var?

Bir proje bir PROJEDİR!!!!! 1000 resim, ses, yardım dosyası olabilir ve her şeyi tek bir klasöre mi atmalıyız?

Kataloglarda salata sosu hayranı değilim, çok kaliteli yazabilmek için sadece kafamda değil her yerde düzen olmalı...



 
A100 :

Buna dikkat ettim https://www.mql5.com/en/forum/1111/page1297#comment_1382986

Ancak hiçbir şeyi değiştirmediler, bu nedenle şablonlardaki ::EnumToString çoğu durumda işe yaramaz

fxsaber'dan merhaba:

 // Для enum-ов
template < typename T>
string EnumToString2( T Value ) { return ( EnumToString (Value)); }
 
// Для кастомных типов
template < typename T>
string EnumToString2( const T& ) { return ( NULL ); }
 
 
// Для стандартных типов
#define ENUMTOSTRING(A) string EnumToString2( A ) { return ( NULL ); }
  ENUMTOSTRING( int )
  ENUMTOSTRING( string )
// .....
#undef ENUMTOSTRING
 
#define EnumToString EnumToString2
 
template < typename T>
string ETS( T t ) { return ( typename ( t ) == "int" ? "OK" : :: EnumToString ( t ) ); }
enum ENUM {     ENUM__ };
 
void OnStart ()
{
        ENUM i1 = ENUM__;       Print ( ETS( i1 )); //нормально
         int   i2 = 0 ;             Print ( ETS( i2 )); //"ошибка компиляции"
         string i3 = NULL ;       Print ( ETS( i3 )); //"ошибка компиляции"
}
 
Комбинатор :

bu yüzden basit bir diziden dizine göre eleman almak çok hızlı bir işlem olmalı, değil mi?

Ama almamak daha da hızlı. Her nasılsa, tamsayılar yerine kayan noktalı sayılar kullanırsam programımın bir buçuk kat daha hızlı çalıştığını fark ettim. Kendi adıma bunu FPU yardımcı işlemcisinin benim için çoğunlukla boşta kalmasıyla açıkladım. Çoğunlukla tam sayılar kullanılır. İncelenen durumda, bu da dikkate alınabilir: SQRT, FPU'da yürütülür, ALU için zaman serbest bırakılır, büyük ölçüde paralel çalışmaya başlarlar.
 
Vladimir Pastushak :

Projeleri keşfetmeye ve bir araya gelmeye devam ediyoruz.

#resource "\\Experts\\[Project 2018]\\Expert Name\\Resources\\img\\open_buy.bmp"

resource name is too long '\Experts\[Project 2018]\Expert Name\Resources\img\open_buy.bmp' CPanel.mqh 6 1

Sınırlıysak neden projelere ihtiyacımız var?

Bir proje bir PROJEDİR!!!!! 1000 resim, ses, yardım dosyası olabilir ve her şeyi tek bir klasöre mi atmalıyız?

Kataloglarda salata sosu hayranı değilim, çok kaliteli yazabilmek için sadece kafamda değil her yerde düzen olmalı...

Derleme aşamasında dahil edilen ve koda adlandırılmış bir nesne olarak girmeyen nesneler için kısmen doğru.

Gerçek şu ki, EX dosyasının içinde 64 karakterlik adlandırılmış kaynaklar için fiziksel bir sınır vardır.
 
Artyom Trishkin :

fxsaber'dan merhaba:

Yukarıdaki kod bir derleyici kusuruna dayanmaktadır.

 void f(       int   ) { Print ( 1 ); } //(1)
void f( const int & ) { Print ( 2 ); } //(2)
void OnStart ()
{
     int i = 0 ;
    f( i ); //нормально ???
}

Sonuç: 1... neden 2 olmasın?

C++'ın derleme sırasında bir hata bildirmesine rağmen, her iki işlev de açıkça uygun olduğundan ve ayrıca, MQL'de şu anda mevcut olan sıra,işlevin açıkça çağrılmasına izin vermiyor (2)

Bu hata düzeltilirse, yukarıdaki kod çoğunlukla çalışmaz hale gelecektir.

 

Derleme hatası: ağaç optimizasyon hatası

 class A {
public :
    void f() {}
};
typedef A* (*fn)();
#import "Test.ex5"
    fn g();
#import
void OnStart () { g()().f(); }
 
Renat Fatkhullin :
Derleme aşamasında dahil edilen ve koda adlandırılmış bir nesne olarak girmeyen nesneler için kısmen doğru.

Gerçek şu ki, EX dosyasının içinde 64 karakterlik adlandırılmış kaynaklar için fiziksel bir sınır vardır.

Ürün açıklamalarında çok az yer var.

3600 karakter, büyük ve ciddi programlar için son derece küçüktür.

Sanırım birçoğu benimle aynı fikirde olacak.

Programları tanımlamak için en az 5000 - 10000 karaktere ihtiyacınız var. Peki veya program ayarlarının adıyla son sekmede

Moderatör her zaman suyun çıkarılmasını isteyebilir.

Şu anda programın bir açıklamasını yazıyorum, 3600 karakterin hepsini sadece ayarları açıklamak için kullandım ve olasılıkların yarısını bile açıklamadım ...