Hatalar, hatalar, sorular - sayfa 2797

 
Roman :

2530 inşa

Üçüncü yapı yuvalamasında hiçbir zeka görünmez.

IntelliSense zekası sunmaya devam ediyor ))


onlar. tek güvenebileceğin tek ipucu

 
Nikolai Karetnikov :

IntelliSense zekası sunmaya devam ediyor ))

onlar. tek güvenebileceğin tek ipucu

Yazım iç içe yapılar hakkındaydı, üçüncü iç içe yerleştirmede intellisense seçimi görünmüyor.
Bu çok üzücü, çünkü sadece istihbaratta seçim için iç içe yapıların kullanılması planlandı.
Ve görünmediğinden, yapıya geri dönmeniz ve alanların ne olduğunu görmeniz gerekir. Fark etme.
düzeltilmesini isterim.

Örneğinize gelince, standart MQL işlevleri için, bence, araç ipuçlarında her şey açıktır.
İpucu net değilse, imleci işlevin üzerine getirin ve F1 tuşuna basın.

 
Mihail Matkovskij :

Örneğimde ilk önce ObjectDeleteAll işlevini değiştirdim:

Ardından göstergeye.

Projemde ObjectDeleteAll kullanmak çocuk oyuncağı oldu. Tüm nesneleri silmek için öneki yalnızca 3 kez değiştirmek ve buna göre ObjectDeleteAll'ı 3 kez çağırmak yeterliydi. Ve sonuç olarak, program temiz. MQL5 dilinde birçok incelik vardır. Ama aynı zamanda çok düşünceli.

Bu sorunu çözmeme yardım eden herkese teşekkürler!

Ve yine burada var:

    trend = new CChartObjectTrend();
     if (trend.Create( 0 , "trend" +( string )i, 0 , time[shift], low[shift], time[shift], high[shift]))
      listOfTrendLines.Add(trend);
     else
       delete trend;

akacağı potansiyel delik. Add() yönteminin ne döndürdüğünü görün

(Bunun bir test olduğunu anlıyorum, yine de kontrol etmenin bir sakıncası olmadığını anlıyorum, ancak oluşturma sonucunu kontrol ederseniz, neden eklemenin sonucunu kontrol etmiyorsunuz? Gelecek için disiplin)
 
Artyom Trishkin :

Ve yine burada var:

akacağı potansiyel delik. Add() yönteminin ne döndürdüğünü görün

(Bunun bir test olduğunu anlıyorum, yine de kontrol etmenin uygun olduğunu anlıyorum, ancak oluşturma sonucunu kontrol ederseniz, neden eklemenin sonucunu kontrol etmiyorsunuz? Gelecek için disiplin)

Peki bunu şöyle yapın:

    trend = new CChartObjectTrend();
     if (trend.Create( 0 , "trend" +( string )i, 0 , time[shift], low[shift], time[shift], high[shift])) {
       if (!listOfTrendLines.Add(trend))
         delete trend;
    }
     else
       delete trend;

Her şey. Şimdi delik yok mu?

Bu genellikle bir test programıdır ve göreviyle başa çıkmıştır. Ondan daha fazla bir şeye ihtiyacım yok. Ve işe yarasaydı, yaklaşım farklı olurdu ve konsept tamamen farklı olurdu. Orada, her kritik noktadan (__LINE__) satırının yanı sıra fonksiyonun adını (__FUNCTION__) belirten hata mesajları geliyor... Yani bazen hata ayıklamayı kullanmama bile gerek kalmıyor. Sadece bakıyorum, modül adı, satır numarası, fonksiyon adı...

 

Herşey gönlünce olsun! Sorun bundan sonra...

Güncellemeden sonra, hem masaüstünde hem de kök klasörde MT5 terminal kısayolu kayboldu. Yeniden monte edildi. Bilgisayarı yeniden başlattıktan sonra hikaye kendini tekrarladı. Sorun nedir? Benzer bir şey yaşayan var mı?

 
Artyom Trishkin :

Ve yine burada var:

akacağı potansiyel delik. Add() yönteminin ne döndürdüğünü görün

(Bunun bir test olduğunu anlıyorum, yine de kontrol etmenin bir sakıncası olmadığını anlıyorum, ancak oluşturma sonucunu kontrol ederseniz, neden eklemenin sonucunu kontrol etmiyorsunuz? Gelecek için disiplin)

Ve hangi durumlarda listOfTrendLines.Add çalışmayabilir? Sadece onları tanımıyorum. "Gereksiz kontrollerin olmadığı" ilkesine bağlı kalmama rağmen (c). Ama tahmin edilebilir   paranoya noktasına ulaşabileceğini söylüyor. Peki, grafik nesne sınıfının Create yöntemi çalışmayabilir. Ancak kodun doğru yazılması ve programın nesnelere normal adlar vermesi her zaman net bir şekilde çalışır. Ama diyelim ki kullanımında söveler olabilir... Ama Add yöntemi normal şartlarda nasıl yanlışlık döndürebilir. Veya ArrayResize işlevi (bu arada, bu yöntemde kullanılır), new_size'den farklı bir sonucu nasıl döndürebilir. Yeterince hafıza yoksa... :) Ama bu kadar büyük hafıza açığı olan modern cihazları nerede gördünüz?!... :)

 
Mihail Matkovskij :

Ve hangi durumlarda listOfTrendLines.Add çalışmayabilir? Sadece onları tanımıyorum. "Gereksiz kontrollerin olmadığı" ilkesine bağlı kalmama rağmen (c). Ama tahmin edilebilir   paranoya noktasına ulaşabileceğini. Peki, grafik nesne sınıfının Create yöntemi çalışmayabilir. Ancak kodun doğru yazılması ve programın nesnelere normal adlar vermesi her zaman net bir şekilde çalışır. Ama diyelim ki kullanımında söveler olabilir... Ama Add yöntemi normal şartlarda nasıl yanlışlık döndürebilir. Veya ArrayResize işlevi (bu arada, bu yöntemde kullanılır), new_size'den farklı bir sonucu nasıl döndürebilir. Yeterince hafıza yoksa... :) Ama hafıza açığı olan modern bir sistemi nerede gördünüz?!... :)

genellikle VPS'dir.
Ps bana öyle geliyor ki, Alexei'ye adil davranmadın, sonuçta, ilk ve doğru tavsiyeyi veren oydu ve ne olursa olsun, sana yardım eden oydu.
 
Mihail Matkovskij :

Örneğimde ilk önce ObjectDeleteAll işlevini değiştirdim:

Ardından göstergeye.

Projemde ObjectDeleteAll kullanmak çocuk oyuncağı oldu. Tüm nesneleri silmek için öneki yalnızca 3 kez değiştirmek ve buna göre ObjectDeleteAll'ı 3 kez çağırmak yeterliydi. Ve sonuç olarak, program temiz. MQL5 dilinde birçok incelik vardır. Ama aynı zamanda çok düşünceli.

Bu sorunu çözmeme yardım eden herkese teşekkürler!

Merak ediyorum, belgelere baktınız mı yoksa işlevin açıklamasını yazımdan mı aldınız?

Grafik nesnelerinizin yalnızca trend olanlardan olduğundan şüpheleniyorum. Eğer öyleyse, neden bir ön eke ihtiyacınız var? Sonuçta, nesne türüne göre bir silme de var

 int    ObjectsDeleteAll (
   long   chart_id,             // идентификатор графика
   int    sub_window=- 1 ,       // индекс окна
   int    type=- 1                // тип объекта для удаления
   );

buna göre, projede hiçbir şeyin değiştirilmesi gerekmedi, sadece yazın

 ObjectsDeleteAll ( 0 , 0 , OBJ_TREND );
))))))))))))))
 
Aleksei Beliakov :
genellikle VPS'dir.
Ps bana öyle geliyor ki, Alexei'ye adil davranmadın, sonuçta, ilk ve doğru tavsiyeyi veren oydu ve ne olursa olsun, sana yardım eden oydu.

Ve sormaya utandığım adaletsizlik nedir? ... Bence Alexei'ye karşı normal bir tavrım var. onun akrabası mısın

 
Alexey Viktorov :

Merak ediyorum, belgelere baktınız mı yoksa işlevin açıklamasını yazımdan mı aldınız?

Grafik nesnelerinizin yalnızca trend olan nesneler olduğundan şüpheleniyorum. Eğer öyleyse, neden bir ön eke ihtiyacınız var? Sonuçta, nesne türüne göre bir silme de var

buna göre, projede hiçbir şeyin değiştirilmesi gerekmedi, sadece yazın

))))))))))))))

Bu sadece özel bir durum. Önek genel ve evrenseldir. Tüm eğilim çizgilerinin kaldırılmasının programa ait olmayan nesneleri de etkileyeceği göz önüne alındığında.