Nedense, göstergem grafik nesneleri kaybetmeye başladı ve onları silmiyor. Sınıf yıkıcıda otomatik silme kullanıyorum. Ararım:
Sonuç olarak, yanlış alıyorum. GetLastError()'u çağırıyorum ve 4101 hatası alıyorum ("Yanlış grafik kimliği "). Diyelim ki... Kaldırılan grafik nesnesinin chartID'sini ChartID() işlevinin sonucuyla karşılaştırıyorum ve bunlar tamamen aynı. Nesnenin grafikten silinmemesinin nedeni ne olabilir ve nasıl atlanabilir?
Farklı bir şey denemeye karar verdi. Oluşturma sırasında tüm grafik nesnelerini listeye ekliyorum ve göstergeyi silerken bir döngü kullanarak tüm nesneleri siliyorum. Şimdi GetLastError() işlevi, ObjectDelete işlevini çağırdıktan sonra 4001 hatası veriyor ve bazı grafik nesneleri hala grafikte kalıyor.
Nedense, göstergem grafik nesneleri kaybetmeye başladı ve onları silmiyor. Sınıf yıkıcıda otomatik silme kullanıyorum. Ararım:
Sonuç olarak, yanlış alıyorum. GetLastError()'u çağırıyorum ve 4101 hatası alıyorum ("Yanlış grafik kimliği "). Diyelim ki... Kaldırılan grafik nesnesinin chartID'sini ChartID() işlevinin sonucuyla karşılaştırıyorum ve bunlar tamamen aynı. Nesnenin grafikten silinmemesinin nedeni ne olabilir ve nasıl atlanabilir?
При вызове ObjectDelete() всегда используется асинхронный вызов, поэтому функция возвращает только результат постановки команды в очередь графика. В этом случае true означает только то, что команда успешно поставлена в очередь, сам результат её выполнения неизвестен. Для проверки результата выполнения можно использовать функцию ObjectFind() или...
nBars giriş parametresinin değerini düşürürseniz, hata görünmez.
Döngünün OnDeinit uygulaması için ayrılan süreden daha uzun sürmesi mümkün değil mi?
Sonuçta, örneğinizde tüm nesneler "trend" önekine sahiptir, neden bundan yararlanıp döngüden vazgeçmiyorsunuz?
intObjectsDeleteAll (
long chart_id, // идентификатор графикаconststring prefix, // префикс имени объектаint sub_window=- 1 , // индекс окнаint object_type=- 1// тип объекта для удаления
);
Grafik nesnesini silmek için grafiklere bir komut var mı? ObjectDelete ile ilgili nota bakın
Bu notu kesinlikle daha önce düşünmüştüm. Ama sonra nedense bunun bir terminal hatası olduğuna karar verdim. Bunun için özür dilerim. Benim hatam olduğu ortaya çıktı.
Ama bu durumda ne yapacağımı bilmiyorum. ObjectDelete'i ve ardından ObjectFind'i çağırın ve nesnenin gerçekten silinip silinmediğini öğrenmek için tamamlanmasını bekleyin. Aynı nota göre, bu çok zaman alıcıdır. Ve tekrarlanan silmenin işe yarayıp yaramayacağını bilmiyorum (göstergemde, arka arkaya iki kez ObjectDelete'i aramaya çalıştım ve boşuna). Ve göstergelerdeki Uyku işlevi, çizelgeye her bir nesneyi kaldırması için biraz zaman vermek için çalışmaz. Belki bir yerlerde bunun nasıl aşılacağına dair örnekler vardır?
Bu notu kesinlikle daha önce düşünmüştüm. Ama sonra nedense bunun bir terminal hatası olduğuna karar verdim. Bunun için özür dilerim. Benim hatam olduğu ortaya çıktı.
Ama bu durumda ne yapacağımı bilmiyorum. ObjectDelete'i ve ardından ObjectFind'i çağırın ve nesnenin gerçekten silinip silinmediğini öğrenmek için tamamlanmasını bekleyin. Aynı nota göre, bu çok zaman alıcıdır. Ve tekrarlanan silmenin işe yarayıp yaramayacağını bilmiyorum (göstergemde, arka arkaya iki kez ObjectDelete'i aramaya çalıştım ve boşuna). Ve göstergelerdeki Uyku işlevi, çizelgeye her bir nesneyi kaldırması için biraz zaman vermek için çalışmaz. Belki bir yerlerde bunun nasıl aşılacağına dair örnekler vardır?
Bence listedeki tüm işaretçileri ekleyin. Terminal alt sisteminin kendisi, CArrayObj listesinde bulunan işaretçiler gibi nesneleri siler.
trend = new CChartObjectTrend();
if (trend.Create( 0 , "trend" +( string )i, 0 , time[shift], low[shift], time[shift], high[shift]))
listOfTrendLines.Add(trend);
Burada potansiyel bir bellek sızıntısı var. Ve geçersiz bir nesneye olası bir çağrı.
Artyom Trishkin : Bence listedeki tüm işaretçileri ekleyin. Terminal alt sisteminin kendisi, CArrayObj listesinde bulunan işaretçiler gibi nesneleri siler.
Terminal tamamlandıktan sonra, grafikteki nesneler göstergeden sonra kalır. Ve terminali tekrar başlattığımda bu nesneler görünüyor ve tüm görünümü bozuyor.
Terminal tamamlandıktan sonra, grafikteki nesneler göstergeden sonra kalır. Ve terminali tekrar başlattığımda bu nesneler görünüyor ve tüm görünümü bozuyor.
Örneğinizi test etmek için bilgisayarımda değilim. Yukarıdaki yazımı yanlışlıkla gördüklerime ekledim.
Nedense, göstergem grafik nesneleri kaybetmeye başladı ve onları silmiyor. Sınıf yıkıcıda otomatik silme kullanıyorum. Ararım:
Sonuç olarak, yanlış alıyorum. GetLastError()'u çağırıyorum ve 4101 hatası alıyorum ("Yanlış grafik kimliği "). Diyelim ki... Kaldırılan grafik nesnesinin chartID'sini ChartID() işlevinin sonucuyla karşılaştırıyorum ve bunlar tamamen aynı. Nesnenin grafikten silinmemesinin nedeni ne olabilir ve nasıl atlanabilir?
Farklı bir şey denemeye karar verdi. Oluşturma sırasında tüm grafik nesnelerini listeye ekliyorum ve göstergeyi silerken bir döngü kullanarak tüm nesneleri siliyorum. Şimdi GetLastError() işlevi, ObjectDelete işlevini çağırdıktan sonra 4001 hatası veriyor ve bazı grafik nesneleri hala grafikte kalıyor.
Nedense, göstergem grafik nesneleri kaybetmeye başladı ve onları silmiyor. Sınıf yıkıcıda otomatik silme kullanıyorum. Ararım:
Sonuç olarak, yanlış alıyorum. GetLastError()'u çağırıyorum ve 4101 hatası alıyorum ("Yanlış grafik kimliği "). Diyelim ki... Kaldırılan grafik nesnesinin chartID'sini ChartID() işlevinin sonucuyla karşılaştırıyorum ve bunlar tamamen aynı. Nesnenin grafikten silinmemesinin nedeni ne olabilir ve nasıl atlanabilir?
Hatayı göstermek için eylemler.
1. Göstergeyi tablonun üzerine bırakın.
2. Göstergeyi tablodan çıkarın.
3. Ctrl+B'ye basın, ardından penceredeki "Tümünü listele" düğmesine basın ve silinmemiş nesneleri görün.
100.000'den 294'üm kaldı.
nBars giriş parametresinin değerini düşürürseniz, hata görünmez.
Güzel gün.
Uzun bir süre Windows 7'den 10'a geçişle lastik çektim, ancak bir hafta içinde yeniden yükledim.
Şimdi bir sorunum var, kendimin ve başkalarının göstergelerinin Expert Advisors demo sürümünü indiremiyorum,
İndirme düğmesine tıklıyorum ve hiçbir şey olmuyor, terminal açık ve kapalıyken denedim!?
MT4 terminali için indirmeye çalışıyorum, henüz MT5'i ziyaret etmedim.
Ne oluyor be?
Bu hatanın oluştuğu kaynağı yaptım:
Bir işaretçi silindiğinde ne olur?
Grafik nesnesini silmek için grafiklere bir komut var mı? ObjectDelete ile ilgili nota bakın
Elimde 100.000'den 294'ü kaldı.
nBars giriş parametresinin değerini düşürürseniz, hata görünmez.
Döngünün OnDeinit uygulaması için ayrılan süreden daha uzun sürmesi mümkün değil mi?
Sonuçta, örneğinizde tüm nesneler "trend" önekine sahiptir, neden bundan yararlanıp döngüden vazgeçmiyorsunuz?
Bir işaretçi silindiğinde ne olur?
Grafik nesnesini silmek için grafiklere bir komut var mı? ObjectDelete ile ilgili nota bakın
Bu notu kesinlikle daha önce düşünmüştüm. Ama sonra nedense bunun bir terminal hatası olduğuna karar verdim. Bunun için özür dilerim. Benim hatam olduğu ortaya çıktı.
Ama bu durumda ne yapacağımı bilmiyorum. ObjectDelete'i ve ardından ObjectFind'i çağırın ve nesnenin gerçekten silinip silinmediğini öğrenmek için tamamlanmasını bekleyin. Aynı nota göre, bu çok zaman alıcıdır. Ve tekrarlanan silmenin işe yarayıp yaramayacağını bilmiyorum (göstergemde, arka arkaya iki kez ObjectDelete'i aramaya çalıştım ve boşuna). Ve göstergelerdeki Uyku işlevi, çizelgeye her bir nesneyi kaldırması için biraz zaman vermek için çalışmaz. Belki bir yerlerde bunun nasıl aşılacağına dair örnekler vardır?
Döngünün OnDeinit uygulaması için ayrılan süreden daha uzun sürmesi mümkün değil mi?
Sonuçta, örneğinizde, tüm nesneler "trend" önekine sahiptir, neden bundan yararlanıp döngüden vazgeçmiyorsunuz?
Bu sadece bir örnek. Üzerinde çalıştığım göstergede isimler oldukça karmaşık. Ve sadece gösteri için bir örnek yaptım.
Bu notu kesinlikle daha önce düşünmüştüm. Ama sonra nedense bunun bir terminal hatası olduğuna karar verdim. Bunun için özür dilerim. Benim hatam olduğu ortaya çıktı.
Ama bu durumda ne yapacağımı bilmiyorum. ObjectDelete'i ve ardından ObjectFind'i çağırın ve nesnenin gerçekten silinip silinmediğini öğrenmek için tamamlanmasını bekleyin. Aynı nota göre, bu çok zaman alıcıdır. Ve tekrarlanan silmenin işe yarayıp yaramayacağını bilmiyorum (göstergemde, arka arkaya iki kez ObjectDelete'i aramaya çalıştım ve boşuna). Ve göstergelerdeki Uyku işlevi, çizelgeye her bir nesneyi kaldırması için biraz zaman vermek için çalışmaz. Belki bir yerlerde bunun nasıl aşılacağına dair örnekler vardır?
Bence listedeki tüm işaretçileri ekleyin. Terminal alt sisteminin kendisi, CArrayObj listesinde bulunan işaretçiler gibi nesneleri siler.
Terminal tamamlandıktan sonra, grafikteki nesneler göstergeden sonra kalır. Ve terminali tekrar başlattığımda bu nesneler görünüyor ve tüm görünümü bozuyor.
Terminal tamamlandıktan sonra, grafikteki nesneler göstergeden sonra kalır. Ve terminali tekrar başlattığımda bu nesneler görünüyor ve tüm görünümü bozuyor.