mt5 ObjectDelete'de bir hata mı var? - sayfa 2

 

Bu bir hatadan ziyade anlamsal olabilir.

ObjectDelete'in amacı "belirtilen ada sahip nesneyi kaldırmaktır".

İşlevi çalıştırmanın sonunda, grafikte hala "Varolmayan Nesne" adlı bir nesne var mı? Hayır... peki bu başarı mı?

Başka bir açıdan bakıldığında, ObjectDelete "Varolmayan Nesne" adlı bir nesneyi kaldırdı mı? Hayır... peki bu başarısızlık mı?

Başarıyı sonuçla mı yoksa yapılan eylemle mi ölçüyorsunuz?

Belki de, işlev çalıştırıldıktan sonra adlandırılmış nesne grafikte kalırsa bir false beklenebilir. Aksi takdirde, bu bir başarıydı.

 
Farzin Sadeghi :
evet yazacağım. Onayınızı bekliyordum. Teşekkürler.

Servis Masası'na bildirmeye çalıştım ve "Veri kaydedilirken hata oluştu" mesajımı kabul etmiyor.

Ayrıca farklı bir konumdan, bilgisayardan ve tarayıcıdan ( VPS'imi kullanarak) denedim ve aynısı oldu.

Kendi başınıza rapor edebildiniz mi?

 
honest_knave :

Bu bir hatadan ziyade anlamsal olabilir.

ObjectDelete'in amacı "belirtilen ada sahip nesneyi kaldırmaktır".

İşlevi çalıştırmanın sonunda, grafikte hala "Varolmayan Nesne" adlı bir nesne var mı? Hayır... peki bu başarı mı?

Başka bir açıdan bakıldığında, ObjectDelete "Varolmayan Nesne" adlı bir nesneyi kaldırdı mı? Hayır... peki bu başarısızlık mı?

Başarıyı sonuçla mı yoksa yapılan eylemle mi ölçüyorsunuz?

Belki de, işlev çalıştırıldıktan sonra adlandırılmış nesne grafikte kalırsa bir false beklenebilir. Aksi takdirde, bu bir başarıydı.

Bu durumda, MQL4 ve MQL5 arasındaki işlevsellik farkı, belgelerde rapor edilmez veya açıklanmaz!
 
Fernando Carreiro :
Bu durumda, MQL4 ve MQL5 arasındaki işlevsellik farkı, belgelerde rapor edilmez veya açıklanmaz!

Kabul. Sadece "onlar"ın hangisinin doğru olduğunu merak ediyorum :-)

Şahsen, gerçeğe dönmenin daha iyi olduğunu düşünüyorum. Aksi takdirde, 4202 hata veren nesnenin var olup olmadığını kontrol etmek için fazladan kod eklemeniz gerekir.

 
honest_knave :

Kabul. Sadece "onlar"ın hangisinin doğru olduğunu merak ediyorum :-)

Şahsen, gerçeğe dönmenin daha iyi olduğunu düşünüyorum. Aksi takdirde, 4202 hata veren nesnenin var olup olmadığını kontrol etmek için fazladan kod eklemeniz gerekir.

Bence, her iki durumda da, hangi sürümün "doğru" olduğuna bakılmaksızın, silmeden önce nesnenin varlığının kontrol edilmesi gerekir.

EDIT: Bununla birlikte, MQL4 ile aynı şekilde çalışacak şekilde "düzelttiklerini" umuyorum. Aksi takdirde, her iki sürümde de derlemek için yapılan koda koşullu derleme yerleştirmemiz gereken işlevsellikte başka bir fark olacaktır.

 
Fernando Carreiro :
Bence, her iki durumda da, hangi sürümün "doğru" olduğuna bakılmaksızın, silmeden önce nesnenin varlığının kontrol edilmesi gerekir.

İlginç! Gitmesini istiyorsan neden var olduğunu kontrol etmen gerekiyor?

Var olmayan bir nesnenin var olup olmadığını kontrol etmek için geçen süre, MT4'te var olmayan bir nesneyi silmeye çalışmakla büyük ölçüde karşılaştırılabilir (ve MT5'te üstünkörü bir inceleme, bunun önemli ölçüde daha yavaş olduğunu gösterir), bu nedenle herhangi bir somut performans avantajı göremiyorum kontrolü çalıştırarak. Ancak kodunuza daha fazla satır ekleyecektir.

 
Fernando Carreiro :

EDIT: Bununla birlikte, MQL4 ile aynı şekilde çalışacak şekilde "düzelttiklerini" umuyorum. Aksi takdirde, her iki sürümde de derlemek için yapılan koda koşullu derleme yerleştirmemiz gereken işlevsellikte başka bir fark olacaktır.

Belki de bizi hayal kırıklığı yoluyla MT5'e zorlama planlarının bir parçası!
 
honest_knave :

İlginç! Gitmesini istiyorsan neden var olduğunu kontrol etmen gerekiyor?

Var olmayan bir nesnenin var olup olmadığını kontrol etmek için geçen süre, MT4'te var olmayan bir nesneyi silmeye çalışmakla büyük ölçüde karşılaştırılabilir (ve MT5'te üstünkörü bir inceleme, bunun önemli ölçüde daha yavaş olduğunu gösterir), bu nedenle herhangi bir somut performans avantajı göremiyorum kontrolü çalıştırarak. Ancak kodunuza daha fazla satır ekleyecektir.

Kullanıcının yanlışlıkla silip silmediğini ve yeniden oluşturulması gerekip gerekmediğini tespit etmek istediğinizde. Bunu genel "temizlik" olarak kastettim ve tek seferlik bir silme işlevi için değil.

Ama evet, katılıyorum, bir "OnDeinit()" işlevi için önce onu test etmeye gerek yok.

 
Fernando Carreiro :

Kullanıcının yanlışlıkla silip silmediğini ve yeniden oluşturulması gerekip gerekmediğini tespit etmek istediğinizde. Bunu genel "temizlik" olarak kastettim ve tek seferlik bir silme işlevi için değil.

Ama evet, katılıyorum, bir "OnDeinit()" işlevi için önce onu test etmeye gerek yok.

Ah, anlıyorum.

Yan not olarak:

#property strict

void OnStart ()
  {
   string name = "MysteryObject" ;
   ulong begin;

   begin = GetMicrosecondCount ();
   for ( int i= 0 ; i< 1000 ; i++) int result =  ObjectFind ( 0 ,name);
   printf ( "ObjectFind took %i μs" , GetMicrosecondCount ()-begin);

   begin = GetMicrosecondCount ();
   for ( int i= 0 ; i< 1000 ; i++) bool result =  ObjectDelete ( 0 ,name);
   printf ( "ObjectDelete took %i μs" , GetMicrosecondCount ()-begin);
  }

MT4 üzerinde çalıştırmak , içinde fazla bir şey yok.

MT5 üzerinde çalıştırıldığında , 50 kattan daha yavaştır.

Nedeniyle ilgili bilgisi olan var mı?

 
honest_knave : Ah anlıyorum.

Yan not olarak:

MT4 üzerinde çalıştırmak , içinde fazla bir şey yok.

MT5 üzerinde çalıştırıldığında , 50 kattan daha yavaştır.

Nedeniyle ilgili bilgisi olan var mı?

Hangi yapıyı kullandınız? "ObjectDelete()" işleviyle en son derlemede olası bir hata olduğu için, "ObjectFind()" ile de sorunlar olabilir!