Hatalar, hatalar, sorular - sayfa 2012

 
A100 :

O zaman hata, 32-bit sürümler için (sadece buna sahibim) hatasız yürütme gerçeğinde de yatmaktadır. geçersiz işaretçi - yalnızca sınıfa bir üye eklerseniz, örneğin int i

Görünüşe göre, MT4'te test ettiniz, ancak yapı orada daha düşük.

 
Kirill Belousov :

Böcek.

NOT CURRENT üzerinde yinelenen bir nesne oluştururken 4200 hatası atılmıyor (ki bu hala geçerli olanı veriyor - [günlükte "GEÇERLİ ŞEKİL"e bakın]),

ve aynı zamanda, GÜNCEL OLMAYAN bir çizelgede bir nesneyi aramanın, mevcut bir çizelgede arama yapmaktan 500 kat daha fazla zaman aldığı tespit edildi.

a :), çünkü buna sahip olan tek kişi ben değilim.

Bir işlev çağrısı üzerine hemen bir nesne oluşturulmaz. Grafiğe eşzamansız bir komut gönderilir. Programımız için bir ön kontrol yapma fırsatımız var. Başka birinin programı için böyle bir olasılık yoktur - daha doğrusu vardır, ancak çok pahalıdır.

Bu nedenle, "hata yok" dönüş kodu, bu yabancı grafiğin bulunduğunu ve nesne oluşturma komutunun yürütme için kuyruğuna başarıyla yerleştirildiğini gösterir.

 
fxsaber :

Görünüşe göre, MT4'te test ettiniz, ancak yapı orada daha düşük.

MT5\1653\32\Win10 - Satıra geliyorum //Sonuç: false

Ayrıca 32 bit'iniz varsa ve geçersiz bir işaretçi oluşursa - o zaman genel olarak bir tür rastgele hata

ServiceDesk şunu yazar: f işlevi boştur ve çağrı, kopyalama operatörüne yapılan çağrı gibi optimize edici tarafından kesilir.

Ama eğer

         void f() { Print ( __FUNCTION__ ); }

sonra Sonuç:

2017.09.26 14:03:55.853 Demo (GBPUSD,M15) A::f
2017.09.26 14:03:55.853 Demo (GBPUSD,M15) yanlış
esasen değişmez

 
A100 :

Ayrıca 32-bit'iniz varsa - o zaman genel olarak bir tür rastgele hata

Hayır, Win7x64'ü çalıştırdım.

ServiceDesk şunu yazar: f işlevi boştur ve çağrı, 1. adımdaki kopyalama operatörüne yapılan çağrıda olduğu gibi optimize edici tarafından kesilir.

Ama eğer

o zaman hiçbir şey değişmez

SD, kontroller olmadan hızlı bir şekilde yanıt verdiğinde ortaya çıktı. Ve uygulamaların %90'ı için bu muhtemelen doğrudur, çünkü büyük olasılıkla çoğu uygulama hatalardan değil, bilgisizlikten kaynaklanmaktadır. Lütfen daha yakından bakın - işe yarıyor.

 

Bağlantıları olan site hatası.

Bir forum mesajı bir moderatör tarafından başka bir konuya taşınmışsa, "Tüm mesajlar" profil aramasında bu mesaj eski yeri gösterir. Buna göre, ona geçiş yapmayın.

 
A100 :

MT5\1653\32\Win10 - Satıra geliyorum //Sonuç: false

Ayrıca 32 bit'iniz varsa ve geçersiz bir işaretçi oluşursa - o zaman genel olarak bir tür rastgele hata

ServiceDesk şunu yazar: f işlevi boştur ve çağrı, kopyalama operatörüne yapılan çağrı gibi optimize edici tarafından kesilir.

Ama eğer

sonra Sonuç:

2017.09.26 14:03:55.853 Demo (GBPUSD,M15) A::f
2017.09.26 14:03:55.853 Demo (GBPUSD,M15) yanlış
esasen değişmez

Ekleyeceğim, f fonksiyonu nesnenin alanlarına adresleme içermiyor, bu nedenle, f fonksiyonu için nesnenin işaretçisine (buna) gerek yok.
Optimize edici, tanıtıcının gereksiz başvurudan kaldırılmasını (unutmayın, MQL'de bir işaretçi bir tutamaçtır) bir nesne işaretçisine kaldırır, çünkü o (işaretçi) f içinde kullanılmaz

 
Ilyas :

Ekleyeceğim, f fonksiyonu nesnenin alanlarına adresleme içermiyor, bu nedenle, f fonksiyonu için nesneye işaretçi (bu) gerekli değil.
Optimize edici, tanıtıcının gereksiz başvurudan kaldırılmasını (unutmayın, MQL'de bir işaretçi bir tutamaçtır) bir nesne işaretçisine kaldırır, çünkü o (işaretçi) f içinde kullanılmaz

Açıkça, statik ile olduğu gibi f ile çalışın. Ama birinin çalışıp diğerinin kesintiye uğraması nasıl açıklanır?

 
Aslında en azından uygun olur
 input string Value = _MarketWatch; // Выпадающий список (а-ля enum) символов из Обзора рынка 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

GİRİŞ olarak ENUM Sembol listesi

Martin Nohejl , 2017.09.26 13:01

Merhaba, aşağıdakileri yapacağım:

Bir giriş parametresi olarak sembole sahip olmak istiyorum, bu yüzden doğru sembolü seçeceğim bir giriş değişkeni (enum) istiyorum, bunun gibi:

Bunu bu kodla yaptım:

 enum ENUM_SYMBOL
   { 
    EURUSD= 0 , 
    GPBUSD= 1 , 
    USDCHF= 2
   };

Bu benim için mükemmel çalışıyor. Ancak enum'u tüm sembol listesiyle dinamik olarak doldurmak istiyorum (SymbolsTotal(0);).

Her nasılsa muhtemelen kodla:

 int a = SymbolsTotal ( 0 );
for ( int i= 0 ; i!=a;i++){
....
}
 
fxsaber :

Açıkça, statik ile olduğu gibi f ile çalışın. Ama birinin çalışıp diğerinin kesintiye uğraması nasıl açıklanır?

Büyük olasılıkla hata ayıklamaya başlarsınız (F5) ve A100 önce derler (F7) ve ardından grafiğe koyar.

Hata ayıklama için derlerken, optimize edici yalnızca açıkça kullanılmayan kodu kaldırır, diğer tüm optimizasyonlar gerçekleştirilmez.
 
Ilyas :
Büyük olasılıkla hata ayıklamaya başlarsınız (F5) ve A100 önce derler (F7) ve ardından grafiğe koyar.

Hata ayıklama için derlerken, optimize edici yalnızca açıkça kullanılmayan kodu kaldırır, diğer tüm optimizasyonlar gerçekleştirilmez .

Bu özellik hemen dikkate alındı. Şimdi kendimi tekrar kontrol ettim.

Serbest bırakma seçeneği :

Test (EURUSD,H1)        invalid pointer access in 'Test.mq5' (9,11)