Hatalar, hatalar, sorular - sayfa 2047

 
Alexey Navoykov :

Ne istediğini anlamıyorum. Bunun bir "değişkenlerin başlatılması" meselesi olduğunu söyledim. Ve bu bağlamda, statik ve global değişkenler aynı şekilde davranır. Hatta size belgelere bir bağlantı verdim: değişken başlatma

Statik ve global değişkenlerin her yerde birleştirildiğini unutmayın.

Ve başlatma sırasını mahkum etmiyoruz, çünkü bu, incelenen sorunla ilgili değil. Sorunun derleyicinin olması gereken yere bir hata atmaması olduğunu hatırlatmama izin verin. Statik bir değişken henüz başlatılmamışsa, erişilemez.

Peki, kafanızı çok karıştırıyorsa, global değişkenin adını değiştirin. Sonucu hiçbir şekilde etkilemeyecektir.

Merhaba biz geldik... Bu linki kendin okudun mu ???

Mql'ye ek olarak, çok iyi değil, sadece VBA'yı biliyorum ve sadece orada değişkenlerin zorunlu başlatılması direktifiyle tanıştım. Bunun tamamen programcının takdirinde olduğunu unutmayın. MQ'nun kesinlikle tüm değişkenleri başlatmaya zorlanmasını istiyor musunuz ??? Ve bu tür kullanıcılardan gelen her talep için başlatma sırası değiştirilmelidir? NE yaptığınızı anlayarak kurallardan sapma fırsatı verildi ve böyle bir olasılığı dışlamak istiyorsunuz ???

Görünüşe göre sadece şikayet edecek ve mql dilini lanetleyecek bir şey arıyorsunuz. Bir sınıftaki bir değişkenden statiği kaldırın, mutlu olacaksınız.

 

GetTickCount() tarafından elde edilen sistem değişkeninin taşması anında ne olur?

Terminalden herhangi bir standart tepki var mı?

Bu anı programlı olarak takip etmeye ve bir tepki vermeye gerek var mı?

 
Alexey Viktorov :

Merhaba biz geldik... Bu linki kendin okudun mu ???

Mql'ye ek olarak, çok iyi değil, sadece VBA'yı biliyorum ve sadece orada değişkenlerin zorunlu başlatılması direktifiyle tanıştım. Bunun tamamen programcının takdirinde olduğunu unutmayın. MQ'nun kesinlikle tüm değişkenleri başlatmaya zorlanmasını istiyor musunuz ???

Peki, nedeni bu. Sadece çok iyi bilmiyorsunuz (ve kendiniz bunun hakkında birkaç kez konuştunuz), aynı zamanda bu dille çok az ortak noktası olan VBA'yı da bilmiyorsunuz. Ve C++'ı oldukça iyi biliyorum. Bu çok açık ve katı bir dildir, burada hayal ettiğiniz gibi orada hiçbir özgürlüğe izin verilmez. Ve MQL, C++'ın görüntüsü ve benzerliğinde yaratıldı. Öyleyse buna bir son verelim. Başlamak için kendinizi C++ ile tanıyın, o zaman bir şey hakkında tartışmak zaten mantıklı olacaktır.

ps Bu arada, sohbeti başlangıçta yanlış yöne yönlendirdiğini şimdi fark ettim, tk. Her şeyin nasıl başladığını çoktan unuttum ve şimdi orijinal kodumu tekrar gördüm ve buradaki ilk isabetinizin tamamen konu dışı olduğunu fark ettim. Ve nasıl fark etmedim! Kodumda, statik bir değişken, belgelerde açıklandığı gibi tam olarak sabit olarak başlatılır. Ve böylece bir yaban turpu başlatılmamış olması bir sorun. Ve bunun bir sabitle başlatılması gerektiğini söyleyerek beni yüklemeye başladınız. Ve yola çıkıyoruz...

 

Neden bir diziyi değişkenlerle başlatamıyorum ?

 void ( double a, double b, double c )

{

double inp[ 3 ]={a,b,c};   // компилятор ругается 'а' - constant expression required      

}

 
Çünkü MQL'de sadece sabitler başlatılabilir.
 
Alexey Navoykov :

Peki, nedeni bu. Sadece çok iyi bilmiyorsunuz (ve bir süredir bunun hakkında konuşuyorsunuz), aynı zamanda bu dille çok az ortak noktası olan VBA'yı da bilmiyorsunuz. Ve C++'ı oldukça iyi biliyorum. Bu çok açık ve katı bir dildir, burada hayal ettiğiniz gibi orada hiçbir özgürlüğe izin verilmez. Ve MQL, C++'ın görüntüsü ve benzerliğinde yaratıldı. Öyleyse buna bir son verelim. Başlamak için kendinizi C++ ile tanıyın, o zaman bir şey hakkında tartışmak zaten mantıklı olacaktır.

ps Bu arada, sohbeti başlangıçta yanlış yöne yönlendirdiğini şimdi fark ettim, tk. Her şeyin nasıl başladığını çoktan unuttum ve şimdi orijinal kodumu tekrar gördüm ve buradaki ilk isabetinizin tamamen konu dışı olduğunu fark ettim. Nasıl fark etmedim! Kodumda, statik bir değişken, belgelerde açıklandığı gibi tam olarak sabit olarak başlatılır. Ve böylece bir yaban turpu başlatılmamış bir sorun. Ve bunun bir sabitle başlatılması gerektiğini söyleyerek beni yüklemeye başladınız. Ve yola çıkıyoruz...

Son kez başlatma sırasına alışmanızı rica ediyorum. Bana öyle geliyor ki mantıklı düşünme yeteneği bilgiden daha önemli. En azından tüm programlama dillerini ezbere bilebilirsiniz, ancak başlatma sırasını gerçekten anlamanız gerekir.

Statik bir değişken, global olandan önce başlatılamaz. Ve bu kadar.

 
Grafik Gezinme hatası
 const bool Init = ChartSetInteger ( 0 , CHART_AUTOSCROLL , false ) && EventSetTimer ( 1 );  

void OnTimer ()
{  
   Print ( "----------" )  ;
   Print ( ChartGetInteger ( 0 , CHART_FIRST_VISIBLE_BAR ));  

   ChartNavigate ( 0 , CHART_BEGIN , 100 );
  
   Print ( ChartGetInteger ( 0 , CHART_FIRST_VISIBLE_BAR ));
}

ICMarkets-Demo EURCHF M1'deki sonuç (maks. çubuklar = 5000 ):

 2017.10 . 18 21 : 16 : 00.800 ----------
2017.10 . 18 21 : 16 : 00.800 4899
2017.10 . 18 21 : 16 : 00.801 199930
2017.10 . 18 21 : 16 : 01.821 ----------
2017.10 . 18 21 : 16 : 01.821 199930
2017.10 . 18 21 : 16 : 01.821 4899
2017.10 . 18 21 : 16 : 02.836 ----------
2017.10 . 18 21 : 16 : 02.836 4899
2017.10 . 18 21 : 16 : 02.836 199930
2017.10 . 18 21 : 16 : 03.845 ----------
2017.10 . 18 21 : 16 : 03.845 199930
2017.10 . 18 21 : 16 : 03.855 4899
2017.10 . 18 21 : 16 : 04.864 ----------
2017.10 . 18 21 : 16 : 04.864 4899
2017.10 . 18 21 : 16 : 04.864 199930
2017.10 . 18 21 : 16 : 05.876 ----------
2017.10 . 18 21 : 16 : 05.876 4999
2017.10 . 18 21 : 16 : 05.886 199930

Hiçbir şey anlamıyorum. Aynı sayılar olmalı. Ve sonuç olarak, program sürekli atlar.

Kimse çoğalır mı?

 
Alexey Viktorov :

Son kez başlatma sırasına alışmanızı rica ediyorum. Bana öyle geliyor ki mantıklı düşünme yeteneği bilgiden daha önemli. En azından tüm programlama dillerini ezbere bilebilirsiniz, ancak başlatma sırasını gerçekten anlamanız gerekir.

Statik bir değişken, global olandan önce başlatılamaz. Ve bu kadar.

Kusura bakmayın ama artık anlamsız kışkırtmalarınıza ve hatta böyle bir tonda dikkat etmeyeceğim. Bir amatörle anlamsız bir tartışmayla zaman kaybettiğim için şimdiden özür dilerim. İlk başta, burada benim durumumu hiç ilgilendirmeyen sabitler hakkında ve şimdi olduğu gibi aynı agresif hırsla sundunuz. Şimdi konuyu bile bilmeden, programlama dilinin nasıl çalıştığını anlamadan bazı asılsız ifadeleri parmağınızdan emiyorsunuz. "Mantıklı düşüncelerinizi", varsayımlarınızı ve fantezilerinizi kendinize saklayabilirsiniz. Beni pek ilgilendirmiyorlar.

 
Kirill Belousov :

GetTickCount() tarafından elde edilen sistem değişkeninin taşması anında ne olur?

Terminalden herhangi bir standart tepki var mı?

Bu anı programlı olarak takip etmeye ve bir tepki vermeye gerek var mı?

Yanıt beklenmiyor

GetTickCount'tan dönüş değerini uint türünde bir değişkene alırsanız, farkı güvenle alabilirsiniz.

 uint prev_count= GetTickCount ();
...
...
uint diff= GetTickCount ()-prev_count;

taşma ile bile doğru farkı alacaksınız. Bunlar, işaretsiz tamsayılarla yapılan işlemlerin özellikleridir. Ancak bu, yalnızca önceki değerin aynı şekilde tam olarak daha erken elde edildiği (GetTickCount) ve önceki değerin 49 günden daha erken alınmadığı durumlar için uygundur.

Daha azını kontrol ederseniz, basit bir çıkarma işleminden daha fazla işleme ihtiyacınız olacaktır.

 
fxsaber :
Grafik Gezinme hatası

ICMarkets-Demo EURCHF M1'deki sonuç (maks. çubuklar = 5000 ):

Hiçbir şey anlamıyorum. Aynı sayılar olmalıdır. Ve sonuç olarak, program sürekli atlar.

Kimse çoğalır mı?

Bu neden bir hata?

Haritada gezinme hemen gerçekleştirilmez. Bu asenkron bir komuttur. Ve uygulamasının sonucu garanti edilmez.

PageUp düğmesine basmak gibi ve grafik duruyor. Ve aniden seğirdi.