Hatalar, hatalar, sorular - sayfa 2748

 
Sergey Dzyublik :

Çok fazla metin var, hepsini okumadım.
Ancak, hata ayıklama sürümünde sizin için bir şey çalışıyorsa ve yayın sürümünde çalışmıyorsa veya bunun tersi olursa, özellikle sınıf/yapıdaki tüm değişkenlerin ve alanların başlatılıp başlatılmadığını kontrol edin.

Başlatılması gereken verileri başlattım. Ve aniden bir yerde rastgele veriler belirirse, bu programın kendisinde bir hataya neden olur (örneğin, Array out of range veya Invalid pointer ). En azından hata ayıklayıcıyı etkilemez. Ve sadece bu tür hataları bulmaya yardımcı olur.

 
Mihail Matkovskij :

Belki de bu kusura sahipsiniz:

( ME5(build 2390) tarafından düzeltilmedi ) ** (yeni) Hata Ayıklayıcı, StepInto (F11) çalışmıyor ve kesme noktaları ayarlandı.

 
TheXpert :
belki de hata ayıklayıcının bir kesme noktası ilişkilendiremeyeceği kadar karmaşık bir dosya yapınız var, o zaman bu bir hata ayıklayıcı sorunudur.

Projemde kullandığım standart UI öğelerinin dosya yapısının geliştirmelerimden bile daha karmaşık olduğunu düşünüyorum. Böyle bir şey yapabilmek için çok çalışmam gerekirdi. Ve böylece, dedikleri gibi alın ve kullanın. Benim durumumda olduğu gibi her şeyi bir araya getirirseniz. Bu, gerçekten de, karmaşık bir şey olduğu ortaya çıkıyor. Ancak programları çalıştırmak için bu oldukça normaldir.

 
fxsaber :

Başlangıçta buna yol açtı.


Belli bir aşamada, işgal edilen zamanın sadece göreli kısmı değil, mutlak kısmı da önem kazanır.

Biraz C'ye yazın ve değişkenleri tahsis etme alışkanlığını kazanacaksınız.

İlk kullanıcı işlevinde, gelen MqlTick yapısı, bellek ayırmadan hemen MQL işlevine geçirilir.
Böyle bir kayda kötü kodlama denir.

 bool GetCurrentTick1( MqlTick &Tick )
{
   return ( SymbolInfoTick ( _Symbol , Tick));
}

İkinci örnekte CurrentTick değişkeni oluşturulur; hangi bellek için ayrılmış.
Ve böyle bir kayıt daha doğru kabul edilir.
Bellek zaten tahsis edildiğinden, giriş verileri ekstra maliyet olmadan daha hızlı işlenir.

 bool GetCurrentTick2( MqlTick &Tick, const bool NewTick = false )
{
   static MqlTick CurrentTick ;
  
   if (NewTick)
     SymbolInfoTick ( _Symbol , CurrentTick);
  
  Tick = CurrentTick;
  
   return ( true );
}
 
Roman :

Biraz C'ye yazın ve değişkenleri tahsis etme alışkanlığını kazanacaksınız.

tavsiyenize uyun, belki tahsis hakkında en azından en ufak bir fikriniz olur.
 
Roman :

...

Ve böyle bir kayıt daha doğru kabul edilir.

Kim sayılır? En azından yeni başlayanlar için hız chtol ledini ölçmüş olursunuz.

 
Alexey Navoykov :

Kim sayılır? En azından yeni başlayanlar için hız chtol ledini ölçmüş olursunuz.

Bir trol için çok fazla dikkat.

 
TheXpert :
tavsiyenize uyun, belki tahsis hakkında en azından en ufak bir fikriniz olur.

Tahsis, bellek tahsisi anlamına geliyordu.
Ve sınıf olarak bu doğrudan anlamda değil.
Özel bir işlevin kendi kapsamı vardır.

 
Alexey Navoykov :

Kim sayılır? En azından yeni başlayanlar için hız chtol ledini ölçmüş olursunuz.

Bir önceki sayfada fxsaber ölçüler vermişti.
Bunun neden olduğunu açıkladım.
Her zaman statik veya dinamik olarak bellek ayırın.

 
Sergey Dzyublik :

Belki de bu kusura sahipsiniz:

( ME5(build 2390) tarafından düzeltilmedi ) ** (yeni) Hata Ayıklayıcı, StepInto (F11) çalışmıyor ve kesme noktaları ayarlandı.

Belki... Yukarıda anlattığım int CCheckGroup::itemCheckState(const string item) metoduna girmeye çalıştım. Ve başlangıçta, hata ayıklayıcı oraya gider. Ama çıkar çıkmaz, işte bu kadar, hata ayıklayıcı onu artık görmez ve kesme noktası veya "Adım adım" çalışmaz. Pekala, geçici olarak Print() ve Alert() işlevleriyle uğraşmamız gerekecek.

Neden: