mql4'te yığın taşması hatasına neden olan nedir?

 

Derleme sırasında mql4'te yığın taşması hatasına neden olan nedir? Nesneleri oluşturmak için bir işlev kullanmaktan şüpheleniyorum. Aşağıda, nesneler oluşturmak için yüzlerce kez çağrılan fonksiyon yer almaktadır.

 int ObCreate( string ObName, double Xdist, double Ydist, double Zoom)
 {
 
   ObjectCreate (ObName, OBJ_LABEL , 0 , 0 , 0 );   // Creating obj.
   ObjectSet(ObName, OBJPROP_CORNER , 0 );     // Reference corner
   ObjectSet(ObName, OBJPROP_XDISTANCE , Xdist*ZoomTimes); // X coordinate   
   ObjectSet(ObName, OBJPROP_YDISTANCE , ZoomTimes*Ydist); // Y coordinate
 return ( 0 );
 }

Aşağıda bir kullanım örneği verilmiştir

   ObCreate( "EURUSD" ,Column1x, 15 ,ZoomTimes);

Bu hatayı almadan normal şekilde aynı sayıda nesne yarattım, ancak kalan nesneleri oluşturmak için bu işlevi tanıtıp kullandığımda hata ortaya çıktı. Nesne sayısı için daha fazla emek yoğun olmasına rağmen hatayı ortaya çıkarmayan aşağıdaki örneğe bakın.

   ObjectCreate ( "EURUSD" , OBJ_LABEL , 0 , 0 , 0 );   // Creating obj.
   ObjectSet( "EURUSD" , OBJPROP_CORNER , 0 );     // Reference corner
   ObjectSet( "EURUSD" , OBJPROP_XDISTANCE , Column1x*ZoomTimes); // X coordinate   
   ObjectSet( "EURUSD" , OBJPROP_YDISTANCE , ZoomTimes* 15 ); // Y coordinate
 
tonny :

mql4'te yığın taşması hatasına neden olan nedir? Nesneleri oluşturmak için bir işlev kullanmaktan şüpheleniyorum. Aşağıda, nesneler oluşturmak için yüzlerce kez çağrılan fonksiyon yer almaktadır.

Aşağıda bir kullanım örneği verilmiştir

Bu hatayı almadan normal şekilde aynı sayıda nesne yarattım, ancak kalan nesneleri oluşturmak için bu işlevi tanıtıp kullandığımda hata ortaya çıktı. Nesne sayısı için daha fazla emek yoğun olmasına rağmen hatayı ortaya çıkarmayan aşağıdaki örneğe bakın.

Hiç bir yığın taşması yaşamadım, okuduklarımdan genellikle özyinelemeden kaynaklanıyorlar, ancak gönderdiğiniz kodda bunu görmüyorum. . . işlev türünüz neden int ? kullanmadığınız zaman değişken çift yakınlaştırmayı geçmenin anlamı nedir?

Bir şey daha, OBJPROP_XDISTANCE ve OBJPROP_YDISTANCE değerlerinin int double olmaması gerekiyor.
 
RaptorUK :
Hiç bir yığın taşması yaşamadım, okuduklarımdan genellikle özyinelemeden kaynaklanıyorlar, ancak gönderdiğiniz kodda bunu görmüyorum . . . işlev türünüz neden int ? kullanmadığınız zaman değişken çift yakınlaştırmayı geçmenin anlamı nedir?

Bir şey daha, OBJPROP_XDISTANCE ve OBJPROP_YDISTANCE değerlerinin int double olmaması gerekiyor.


Beni şaşırtan da bu.

Raptorİngiltere :
Hiç bir yığın taşması yaşamadım, okuduklarımdan genellikle özyinelemeden kaynaklanıyorlar, ancak gönderdiğiniz kodda bunu görmüyorum. . . işlev türünüz neden int ? kullanmadığınız zaman değişken çift yakınlaştırmayı geçmenin anlamı nedir?

Bir şey daha, OBJPROP_XDISTANCE ve OBJPROP_YDISTANCE değerlerinin int double olmaması gerekiyor.

Biraz bulup değiştirdim ve göstergenin alt kısmını henüz düzeltemedim.

Raptorİngiltere :
Hiç bir yığın taşması yaşamadım, okuduklarımdan genellikle özyinelemeden kaynaklanıyorlar, ancak gönderdiğiniz kodda bunu görmüyorum. . . işlev türünüz neden int ? kullanmadığınız zaman değişken çift yakınlaştırmayı geçmenin anlamı nedir?

Bir şey daha, OBJPROP_XDISTANCE ve OBJPROP_YDISTANCE değerlerinin int double olmaması gerekiyor.

Adamım lütfen ObjectSet() hakkında daha fazla kitap okuyun. Dur yardım edeyim. Aşağıda bir alıntı var.

 bool ObjectSet( string name, int index, double value )
 
tonny :


Adamım lütfen ObjectSet() hakkında daha fazla kitap okuyun. Dur yardım edeyim. Aşağıda bir alıntı var.

Alıntını göreceğim ve seni bununla büyüteceğim. . .

OBJPROP_XDISTANCE 102 int X mesafesi nesne özelliğini piksel olarak ayarlamak/almak için tamsayı değeri .
OBJPROP_YDISTANCE 103 int Tamsayı değeri , piksel cinsinden çapa Y mesafesi nesne özelliğini ayarlamak/almak içindir.

Bunlar için bir çift kullanır mısın?

OBJPROP_BACK 9 bool Nesne için arka plan çizim bayrağını ayarlamak/almak için Boole değeri.
OBJPROP_RAY 10 bool Nesnenin ışın bayrağını ayarlamak/almak için Boole değeri.
OBJPROP_ELLIPSE 11 bool Fibo yayları için elips bayrağını ayarlamak/almak için Boole değeri.


 
tonny: Gerçekten beklediğin şeyde kayboldum. Derleme sırasında da hiçbir zaman " yığın taşması" hatası almadım. Sorunu nasıl yeniden oluşturmamız gerektiği konusunda bize kesin yönergeler verebilir misiniz?
 
Ovo :
tonny: Gerçekten beklediğin şeyde kayboldum. Derleme sırasında da "yığın taşması" hatası almadım. Sorunu nasıl yeniden oluşturmamız gerektiği konusunda bize kesin yönergeler verebilir misiniz?
Nasıl çoğaltmaya çalışıyordun? Yukarıdakiler, açıkça söylediğim kodun bir parçası, işlevi yüzlerce kez çağırdım, bu yüzden onu yeniden oluşturmak istiyorsanız, işlevin 108 çağrısını simüle edebilirsiniz.
 
RaptorUK :

Alıntını göreceğim ve seni bununla büyüteceğim. . .

bunlar için bir çift kullanır mısın?

Ne yaptığım önemli değil, burada yayınlanan küçük mesajdan daha fazlası var.
 
tonny :
Ne yaptığım önemli değil, burada yayınlanan küçük mesajdan daha fazlası var.
Hatanın yeniden oluşturulabilmesi için tüm kodu göndermek istemiyorsanız, lütfen tam olarak gönderebileceğiniz ve aynı hatayı yeniden oluşturacak bir şey kodlayın.
 
RaptorUK :
Hatanın yeniden oluşturulabilmesi için tüm kodu göndermek istemiyorsanız, lütfen tam olarak gönderebileceğiniz ve aynı hatayı yeniden oluşturacak bir şey kodlayın.

Peki.
 

Bir deney yaptım ve bu tür nesnelerin bazılarını değiştirdim.

 ObjectCreate ( "EURUSD" , OBJ_LABEL , 0 , 0 , 0 );   // Creating obj.
   ObjectSet( "EURUSD" , OBJPROP_CORNER , 0 );     // Reference corner
   ObjectSet( "EURUSD" , OBJPROP_XDISTANCE , Column1x*ZoomTimes); // X coordinate   
   ObjectSet( "EURUSD" , OBJPROP_YDISTANCE , ZoomTimes* 15 ); // Y coordinate

Ve aşağıdaki gibi işlev stili kullanıldı ve hata ortadan kalktı. IDE gibi, yukarıdakilerden aşağıdakilerden daha azını alabilir. Yukarıdaki stili aşağıdaki stille değiştirmeyi deneyeceğim ve başka bir şeyin ortaya çıkıp çıkmayacağını göreceğim.

ObCreate( "EURUSD" ,Column1x, 15 ,ZoomTimes);
 
Hatayı üreten betiği ve yapmayan nötrleştirilmiş sürümü buraya ekledim. Belki birileri farklı bir çözüm bulabilir. Adamım bu büyük böcek.
Dosyalar: