Hatalar, hatalar, sorular - sayfa 2242

 
darkangel8733 :

Merhaba, sizden bir danışman aldım, "kaplumbağa", ancak çevrimdışı çalışmıyor, ???

Peki ve bu yüzden bir kelime için saf. Bir Uzman Danışman, standart olanlar da dahil olmak üzere göstergeler kullanıyorsa, bunlara erişilebilir olmalıdır. Aksi takdirde, kendi kendine çalışmayacaktır.

 
A100 :
Tek bir gereklilik vardı - yardım etmek, müdahale etmemek. Tartışmanın gereksiz olduğunu düşünüyorsanız - katılmayın ... ve karar vermek size bağlı değil (gerekli / gereksiz) - bunun için bir Yönetim ve Moderatörler var

Katılıyorum, ancak tavsiyeyi beğenmiyorsanız, o zaman cevap vermenize gerek yok, o zaman soru olmayacak, burada herkes gerekli olduğunu düşündüklerini yazıyor, tavsiye vermeyi gerekli gördüm, yani. karşılıksız yardım sağlamak için, minnettarlık yerine iddiaları okudum ... iyi şanslar

 
Konstantin :

Katılıyorum, ancak tavsiyeden hoşlanmıyorsanız, cevap vermenize gerek yok

Bu iyi bir tavsiye ... bunun için teşekkür ederim ... Kullanacağım
 

Nasıl yani?

 ArrayFree (SummArr);
ArrayResize (SummArr, 57 );
Print ( "SummArr_1=" ,SummArr[ 1 ]);
 2018.07 . 26 02 : 09 : 04.566 Pred_Ocenka_02 (Si Splice,M1)   SummArr_1=1190264832

Dizi değeri neden boş (sıfır) değil?

 
Aleksey Vyazmikin :

Nasıl yani?

Dizi değeri neden boş (sıfır) değil?

Ve önce bunun için boyutu ayarlarsanız ve ancak o zaman temizlerseniz?

 
Vitaly Muzichenko :

Ve önce bunun için boyutu ayarlarsanız ve ancak o zaman temizlerseniz?

Sonra

2018.07.26 02:20:08.482 Pred_Ocenka_02 (Si Splice,M1)   array out of range in 'Pred_Ocenka_02.mq5' (76,27)
Temizlendikten sonra boyut bilgisi yoktur.
 
Eğer bir
 ArrayFree (SummArr);

Kaldır, ardından değer de boş değil. Dizi daha önce kullanılmamıştır.

 

Bir tür saçmalık, işte kod tamamen kesildi

 int SummArr[];

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   ArrayFree (SummArr);
   ArrayResize (SummArr, 57 );
   Print ( "SummArr_1=" ,SummArr[ 1 ]);
   Print ( "SummArr_30=" ,SummArr[ 30 ]);   
   Print ( "SummArr_57=" ,SummArr[ 56 ]);   
  }
//+------------------------------------------------------------------+

çıkışta

 2018.07 . 26 02 : 37 : 58.693 Pred_Ocenka_error (Si Splice,M15)       SummArr_1= 1190264832
2018.07 . 26 02 : 37 : 58.693 Pred_Ocenka_error (Si Splice,M15)       SummArr_30= 2097181
2018.07 . 26 02 : 37 : 58.693 Pred_Ocenka_error (Si Splice,M15)       SummArr_57= 154252694

Lütfen birini kontrol edin, aksi takdirde terminalim delirmiş olabilir.

Yoksa bu norm mu ve her şey bu şekilde çöple mi doldurulmalı?

 

mql4 göstergesindeki kod çalışmayı durdurdu. nasıl düzeltilir?

 else { // Иначе стрелка создана. Задаём её свойства
  ObjectSetInteger (Open_name, OBJPROP_ARROWCODE ,OpenArrowCode); //код стрелки 232 
  ObjectSet (Open_name, OBJPROP_COLOR ,ObjColor); //цвет стрелки
}

Düzenleyici 'ObjectSetInteger' yazar - aşırı yüklemelerden hiçbiri işlev çağrısına uygulanamaz

Kaç yıl çalıştı ve aniden durdu. Yazık ama.


 
Aleksey Vyazmikin :

Bir tür saçmalık, işte kod tamamen kesildi

çıkışta

Lütfen birini kontrol edin, aksi takdirde terminalim delirmiş olabilir.

Yoksa bu norm mu ve her şey bu şekilde çöple mi doldurulmalı?

Herhangi bir dinamik dizinin arabelleğini serbest bırakır ve boş boyutun boyutunu 0 olarak ayarlar.

Komut dosyaları ve göstergeler yazarken, ArrayFree() işlevini kullanma ihtiyacı genellikle ortaya çıkmayabilir: komut dosyası sona erdiğinde, kullanılan tüm bellek hemen serbest bırakılır ve özel göstergelerde, dizilerle yapılan ana çalışma, gösterge arabelleklerine erişimdir, boyutları, yürütme terminali alt sistemi tarafından otomatik olarak kontrol edilir.

Programın karmaşık dinamik koşullarda belleği bağımsız olarak yönetmesi gerekiyorsa , ArrayFree() işlevi, zaten gereksiz olan bir dinamik dizi tarafından işgal edilen belleği açıkça ve hemen serbest bırakmanıza olanak tanır.

Anlıyor musun? Gereksiz.

Doğal olarak, bellek ondan serbest bırakıldığından ve ardından dizinin boyutunu ayarlayarak yeniden tahsis ettiğinizden, kimse size içeriğini garanti etmez.

Dizi başlatmayı kullanın: ArrayInitialize()