Hatalar, hatalar, sorular - sayfa 439

 
Yardım plz, MEditor5'te sihirbaz olarak bir danışman yapıyorum, onu derliyorum, çizelgeye koyuyorum ve (danışman) çöküyor, yani. simgesi belirir ve kaybolur
 
cokfx :
Yardım plz, MEditor5'te sihirbaz olarak bir danışman yapıyorum, onu derliyorum, çizelgeye koyuyorum ve (danışman) çöküyor, yani. simgesi belirir ve kaybolur

Baykuşu hangi sembol ve TF'ye koyarız? Günlüğe ne yazıyor?
 
Renat :

Yani test cihazı veya MQL5 runtime hatası yok ama programcının bariz hatası var.

Um. Programcı, programın kendisi için beklenmedik davranışını keşfetti , bu davranışın özünü ortaya çıkardı, açıkça yeniden üretti, saçmalık noktasına getirerek en basit açıklayıcı örneği verdi ( Negatif değerlerle uyu ) ve onun için bu bir programcının hatasıdır :) Bir "programcının hatası", örneğin, test cihazındaki Uyku işlevinin çalışmadığının açık bir ifadesi olsa da.

Yukarıdaki açıklamalardan, geliştiricilerin Sleep() işlevi için negatif değerler kullanmanın kabul edilebilir olduğunu düşündükleri anlaşılmaktadır. Ancak, işlevin açıklamasından ("...mevcut Expert Advisor'ın veya komut dosyasının yürütülmesini belirli bir aralık için geciktirir"), gecikme aralığının negatif sayılar olarak hesaplanabileceğini varsaymak zordur. ..Ve hatalardan bahsettiğimiz için, terminalin Sleep() işlevinde negatif değerleri kullanmayı bırakması gerektiğine dair ifademi bu şekilde düşünebilirsiniz.

 
Yedelkin :

Um. Programcı, programın kendisi için beklenmedik davranışını keşfetti , bu davranışın özünü ortaya çıkardı, açıkça yeniden üretti, saçmalık noktasına getirerek en basit açıklayıcı örneği verdi ( Negatif değerlerle uyu ) ve onun için bu bir programcının hatasıdır :) Bir "programcının hatası", örneğin, test cihazındaki Uyku işlevinin çalışmadığının açık bir ifadesi olsa da.

Yukarıdaki açıklamalardan, geliştiricilerin Sleep() işlevi için negatif değerler kullanmanın kabul edilebilir olduğunu düşündükleri anlaşılmaktadır. Ancak, işlevin açıklamasından ("...mevcut Expert Advisor'ın veya komut dosyasının yürütülmesini belirli bir aralık için geciktirir"), gecikme aralığının negatif sayılar olarak hesaplanabileceğini varsaymak zordur. ..Ve hatalardan bahsettiğimiz için, terminalin Sleep() işlevinde negatif değerleri kullanmayı bırakması gerektiğine dair ifademi bu şekilde düşünebilirsiniz.

Ve muhtemelen, negatif bir gecikme değeriyle, girmeden önce Uyku'dan çıkacağınızı mı bekliyordunuz?
 

Yedelkin, fonksiyon parametrelerinin derleyici tarafından kontrol edilmesini nasıl hayal ediyorsunuz? Ancak parametre değerlerini kontrol etmesi gereken bir düzineden fazla fonksiyon vardır.

Burada ikisinden biri - ya derleme hızı ya da toplam paranoyak kontrol.

İlk yolu tuttuk. Aynı zamanda, yürütme alt sistemi, yürütme aşamasında geçersiz parametreleri atlamaz ve GetLastError işlevi kullanılarak alınabilecek bir hata kodu oluşturur.

Документация по MQL5: Проверка состояния / GetLastError
Документация по MQL5: Проверка состояния / GetLastError
  • www.mql5.com
Проверка состояния / GetLastError - Документация по MQL5
 
Lütfen, negatif değerinizin sonucunu hesaplayın, bunu 32 bit int ile ilişkilendirin, ardından aritmetik taşma hakkında okuyun ve 17 gününüzü bulun.

Gerçek programlama dünyasına hoş geldiniz.
 
uncleVic :
Ve görünüşe göre, negatif bir gecikme değeriyle, girmeden önce Uyku'dan çıkacağınızı mı bekliyordunuz?

Beklenti varsayımı yanlıştır.

Negatif değerlerle çalışmak hiç de beklenmiyordu. Yukarıdaki mesajıma bakın: " İşlevin açıklamasından ("...mevcut Expert Advisor'ın veya komut dosyasının yürütülmesini belirli bir aralık için geciktirir") gecikme aralığının negatif sayılar olarak hesaplanabileceğini varsaymak zordur ". Ve bu "bekleyebileceğim" şeyle ilgili değil, aslında SLeep işlevinin negatif değerlerle çalışmanıza izin vermesiyle ilgili. Öğrenildiğinde - mesajı gönderdi. Sleep() işlevinin bu tür çalışmasını kabul edilebilir buluyorsanız, öyle kalacaktır.

 
Yedelkin :

ama aslında SLeep işlevi negatif değerlerle çalışmanıza izin verir.

Teklifin nedir? Programı çökertmek mi?
 
Yedelkin :

Beklenti varsayımı yanlıştır.

Negatif değerlerle çalışmak hiç de beklenmiyordu. Yukarıdaki mesajıma bakın: " İşlevin açıklamasından ("...mevcut Expert Advisor'ın veya komut dosyasının yürütülmesini belirli bir aralık için geciktirir") gecikme aralığının negatif sayılar olarak hesaplanabileceğini varsaymak zordur ". Ve bu "bekleyebileceğim" şeyle ilgili değil, aslında SLeep işlevinin negatif değerlerle çalışmanıza izin vermesiyle ilgili. Öğrenildiğinde - mesajı gönderdi. Sleep() işlevinin bu tür çalışmasını kabul edilebilir buluyorsanız, öyle kalacaktır.

Tabii ki, iç temsil imzasız.

Parametre tipinin uint olarak değiştirilmesini talep edebilirsiniz.

 
stringo :

Yedelkin, fonksiyon parametrelerinin derleyici tarafından kontrol edilmesini nasıl hayal ediyorsunuz? Ancak parametre değerlerini kontrol etmesi gereken bir düzineden fazla fonksiyon vardır.

Burada ikisinden biri - ya derleme hızı ya da toplam paranoyak kontrol.

İlk yolu tuttuk. Aynı zamanda, yürütme alt sistemi, yürütme aşamasında geçersiz parametreleri atlamazve GetLastError işlevi kullanılarak alınabilecek bir hata kodu oluşturur.

Evet beyler, her zaman yanınızdayım! :) Ve programlamada bildiklerinizin sadece küçük bir kısmını biliyorum (sadece MQL5 Referansını kullanıyorum). Ama kişisel olarak benim için net olmayan bazı anlar görürsem, bunun hakkında yazarım. Mümkünse "anlaşılmaz an"ın net bir örneğini vermeye çalışıyorum. Yol boyunca, bu anın neden benim için anlaşılmaz olduğunu açıklıyorum. Buna göre, "alarmın yanlış" olduğunu düşünüyorsanız, o zaman referans materyallerini yanlış anladığım veya referans materyallerin anı anlamak için gerekli tüm bilgileri yansıtmadığı ortaya çıkıyor. Bu durumda "Uyku işlevi" bölümünde (1) "derleyicinin işlev parametresinin değerini kontrol etmediği ve bu nedenle işlevin negatif değerlerle çalışabileceğine dair bir gösterge (uyarı) olması benim için yeterli olacaktır. " ve (2) "Uyku İşlevi ( ) test cihazı tarafından tam olarak desteklenir".

..Derleyici nasıl çalışır - Hiçbir fikrim yok. Derleyicinin çalışmasının açıklanan paradigmasına dayanarak, bir dilek ortaya çıkar: notlarında, parametrelerinin değerlerinin terminal tarafından kontrol edilmediğini düzinelerce fonksiyona yansıtmak.

Neden: