Taşmanın nedeni, dizilerin kademeli olarak farklı fonksiyonlarda değerlerle doldurulması ve bu süreçte bir hücreye diğer hücre üzerinden ulaşılmasıdır. Bazı işlevler iki kez çağrılır ve diziyi sırayla doldurur . Ancak hücrelerde çöp varsa, ilk dolumda bir taşma olur.
Muhtemelen diziler önceden temizlenerek sorun çözülebilir ama tabii bu da ek bir baş ağrısıdır. Çok yazık.
Alışmak.
Her zaman bir dizi bildiririm , beklenen boyutu belirlerim, değerlerle doldururum (başlat). Başlatma genellikle sıfırdan daha iyidir - bu şekilde bir hata bulmak daha kolaydır.
MT5 ile hiç ciddi bir şekilde çalışmadım ve şimdi ona bir kerede büyük bir proje aktarıyorum. Doğal olarak, biri dizinin sürekli taşması olan zorluklar ortaya çıkar. MT4'te, dizilerin bildirimden sonra özel olarak temizlenmesi gerekmediği için ortaya çıktığı gibi, böyle bir sorun yoktu. Ve MT5'te gereklidir. Benim teknolojim, çekirdeğin yeniden boyutlandırılmasıyla birlikte kademeli olarak doldurulmasını gerektiriyor. Bazı dizilerin tam boyutu önceden bilinmemektedir. Aynı zamanda, doldurma sürecinde diziler arasında çok sayıda döngü olması nedeniyle, bir taşma söz konusudur. Hücrelerde çöp olmasaydı, her şey uzun zaman önce çalışırdı.
Yani bir yanda dizilerdeki çöp, diğer yanda sınırların dışına çıkarken kritik bir hata. Düz, acımasız koşullar ...
MT4'te olduğu gibi, bildirilen değişkenleri sıfıra getirmenin yanı sıra dizilerin otomatik temizliğini kaldırmanın neden gerekli olduğunu anlamak istiyorum?
Değişkenlere hala katlanabiliyorsanız, o zaman büyük dizilerde sürekli olarak çöp sorunlarıyla karşılaşırsınız ve bağımsız olarak yalnızca bildirirken değil, aynı zamanda yeniden boyutlandırırken de temizliklerini halledersiniz ... Neden?
Ben de ilk başta aynı sorunla karşılaştım.
Bence diziler belirli bir şekilde dolduruluyor, döngülerde frekansta bu dikkate alınmalıdır.
Peter, ne demek istediğini anlamıyorum?
hepsi aynı https://www.mql5.com/ru/forum/293630/page179#comment_10802823
şimdi suçlu MQL5... ;)
- 2019.02.28
- www.mql5.com
hepsi aynı https://www.mql5.com/ru/forum/293630/page179#comment_10802823
şimdi suçlu MQL5... ;)
İyi evet. Bir şekilde MQL4'e alıştım.
Nikolay, MQL4 için endişelenme, orada her şey yolunda. Topikstarter dizileri rastgele doldurur . Herşey.
İyi evet. Bir şekilde MQL4'e alıştım.
Tabii ki gerekli.
Kendine ve programlarına saygı duyan herhangi bir programcı, her şeyin yoluna girmesine izin vermez. MQL4'te #property strict kullanmazsanız, o zaman dizin 20'de 10 boyutunda bir diziye başvurabilirsiniz. Ve hiçbir şey olmayacak - program çalışmaya devam edecek, ancak programcı orada NE alacak ve kullanacak - yatıyor omuzlarında. Akıllıysa, kesinlikle dizi dışında değerler almamak için her şeyi kontrol edecek ve kontrol edecektir, ancak eğer bir "gaf" ise, o zaman böyle bir kontrolle uğraşmaz ve "ana şey" işe yarıyor mu, ama nasıl - peki, nasıl - bir iş parçacığı...".
Çoğunlukla, uluyanlar - hiçbir şeyle uğraşmayan ve şimdi "kötü, kötü ve karmaşık MQL5" i suçlayanlar sadece bu tür kullanıcılardı, çünkü eskisi gibi el sanatlarıyla uğraşmalarına izin vermiyor. Ancak başlangıçta alınan verilerin kontrolleri ve kontrolü ile kodu düşünen ve yapanlar, dillerin karmaşıklığında herhangi bir fark görmediler ve şimdi kafaları karıştı - "karmaşıklık nerede - her şey aynı ..."
MT5 ile hiç ciddi bir şekilde çalışmadım ve şimdi ona bir kerede büyük bir proje aktarıyorum.
Yeniden yazarken dizilerde ciddi fark
Çok boyutlu diziler için ArrayResize'ın özellikleri
void OnStart () { int Array[][ 2 ]; Print ( ArrayResize (Array, 7 )); // MQL5 - 7, MQL4 - 14 Print ( ArraySize (Array)); // 14 }
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
MT5 ile hiç ciddi bir şekilde çalışmadım ve şimdi ona bir kerede büyük bir proje aktarıyorum. Doğal olarak, biri dizinin sürekli taşması olan zorluklar ortaya çıkar. MT4'te, dizilerin bildirimden sonra özel olarak temizlenmesi gerekmediği için ortaya çıktığı gibi, böyle bir sorun yoktu. Ve MT5'te gereklidir. Benim teknolojim, çekirdeğin yeniden boyutlandırılmasıyla birlikte kademeli olarak doldurulmasını gerektiriyor. Bazı dizilerin tam boyutu önceden bilinmemektedir. Aynı zamanda, doldurma sürecinde diziler arasında çok sayıda döngü olması nedeniyle, bir taşma söz konusudur. Hücrelerde çöp olmasaydı, her şey uzun zaman önce çalışırdı.
Yani bir yanda dizilerdeki çöp, diğer yanda sınırların dışına çıkarken kritik bir hata. Düz, acımasız koşullar ...
MT4'te olduğu gibi, bildirilen değişkenleri sıfıra getirmenin yanı sıra dizilerin otomatik temizliğini kaldırmanın neden gerekli olduğunu anlamak istiyorum?
Değişkenlere hala katlanabiliyorsanız, o zaman büyük dizilerde sürekli olarak çöp sorunlarıyla karşılaşırsınız ve bağımsız olarak yalnızca bildirirken değil, aynı zamanda yeniden boyutlandırırken de temizliklerini halledersiniz ... Neden?