Hatalar, hatalar, sorular - sayfa 127

 
xeon :
Derleyici, ikinci eşittir işaretinin yokluğunu bir hata olarak işaretlemez.

Ve yapmamalı, kodunuz bir hata içermiyor.

 int a = 0 ;
if (a= 1 ){ Print ( "TEST" );}

ve bu kodla aynı

 int a = 0 ;
a= 1 ;
if (a){ Print ( "TEST" );}
 
xeon :
Derleyici, ikinci eşittir işaretinin yokluğunu bir hata olarak işaretlemez.
 for ( int i= 0 ;i<total_deal;i++)
        {
         //--- try to get deals ticket
         if (ticket= HistoryDealGetTicket (i)) // Предупреждение к этой строке
           {
            Deal.Ticket(ticket);

Ama bir uyarı veriyor, en azından benim için böyle bir kod için yazıyor:

'DealInfo.mqh' DealInfo.mqh 1 1
ifade boolean değil Shou History.mq5 60 19
0 hata(lar), 1 uyarı(lar) 1 1
 
Urain :

Ve yapmamalı, kodunuz bir hata içermiyor.

ve bu kodla aynı


Eh, tamamen boşuna, örneğin, stüdyo bu kodu bir hata olarak tanımlar.

ek olarak, o zaman bu kodun olduğu ortaya çıkıyor

 int a = 0 ;
a= 1 ;
if (a){ Print ( "TEST" );}

bununla aynıdır:

 int a = 19 ;
if (a= 14 ){ Print ( "TEST" );}

Diyelim ki 0 = yanlış, 1 = doğru, o zaman geri kalan sayılar nedir? 2,3,4, ...... :-)

IMHO, bu yaklaşım iyi bir şeye yol açmayacak, yalnızca hatayı görüntülemek için fazladan bir fırsat sunuyor.

 
xeon :

IMHO, bu yaklaşım iyi bir şeye yol açmayacak, yalnızca hatayı görüntülemek için fazladan bir fırsat sunuyor.

Kullanıcının ne yaptığını görebilmesi için Boole olmayan bir değere uyarı eklendi.

 

Seti terminale (tabloda) kaydeder ve ardından test cihazında veya terminalde açarsam, her şey yolunda demektir. Ve test cihazına kaydeder ve ardından terminalde açarsam, dize olmayan türdeki tüm değişkenlerin değerleri abrakadabra olarak görüntülenir. Tamam'a tıklarsam, seçenekler penceresini tekrar açtığımda normal görünecek, boole'ler hariç tüm seçenekler yenileriyle doğru bir şekilde değiştirilecek. Doğru olan HER ŞEY yanlış oluyor... Test cihazında, test cihazından kaydedilen set doğru açılıyor.

 

Sıkıntı için özür dilerim, daha önce yazdığım hata henüz düzeltilmedi. CopySpread fonksiyonunun açıklamasında verilen indikatörü çalıştırdığınızda, forma geçmişi bir delik ile çizilir. Delik her zaman terminalin başlatıldığı andan göstergenin başlatıldığı ana kadar geçen süreyi kapsar. Her yeni tick ile sunucudan gelen spreadler spread geçmişine kaydedilmiyor gibi görünüyor. Teşekkür ederim!

 

Derleyiciden uyarılar alıyorum:

örtük numaralandırma dönüştürme
tür dönüştürme nedeniyle olası veri kaybı

bu satırı kullanırken:

 ENUM_POSITION_TYPE posType= PositionGetInteger ( POSITION_TYPE );

Burada sorun ne?

Bulundu: uzun kullanmanız gerekiyor

 long posType= PositionGetInteger ( POSITION_TYPE );

Sonra başka bir soru. Bunun gibi bir şey düzgün çalışır mı:

 if (posType== POSITION_TYPE_BUY )

posType ne zaman uzun olarak tanımlanır?

 
ENUM_POSITION_TYPE posType=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
 
gpwr :

Derleyiciden uyarılar alıyorum:

örtük numaralandırma dönüştürme
tür dönüştürme nedeniyle olası veri kaybı

bu satırı kullanırken:

Burada sorun ne?

Bulundu: uzun kullanmanız gerekiyor

Sonra başka bir soru. Bunun gibi bir şey düzgün çalışır mı:

posType ne zaman uzun olarak tanımlanır?

işe yarayacak, bu tip döküm hakkında bir uyarıdır, görmezden gelebilirsiniz
 
AlexinSergey :

Sıkıntı için özür dilerim, daha önce yazdığım hata henüz düzeltilmedi. CopySpread fonksiyonunun açıklamasında verilen indikatörü çalıştırdığınızda, forma geçmişi bir delik ile çizilir. Delik her zaman terminalin başlatıldığı andan göstergenin başlatıldığı ana kadar geçen süreyi kapsar. Her yeni tick ile sunucudan gelen spreadler spread geçmişine kaydedilmiyor gibi görünüyor. Teşekkür ederim!

Teşekkürler, bir örneğe bakalım.
Neden: