Hatalar, hatalar, sorular - sayfa 167

 

dinamik diziler hakkında soru

double open_main_array[] - sınıf değişkeni

başlatma

ArraySetAsSeries(open_main_array,true);

Bu koda sahip 1. işlev çağrısı

CopyOpen(Symbol(), PERIOD_M15, 0, Sayı, open_main_array);

2. işlev çağrısı

CopyOpen(Symbol(), PERIOD_M15, 0, Sayı, open_main_array);

open_main_array dizisi 2. çağrıda kopyalanan verileri içerecek mi, yoksa dizi büyüyecek ve 1. ve 2. çağrıların verilerini içerecek mi?

ve böylece şunları kullanabilirsiniz:

ArrayFree(open_main_array)

CopyOpen(Symbol(), PERIOD_M15, 0, Sayı, open_main_array);

Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 
Renat :

uninialized değişken - başlatılmadığında değişkenin bir geçiş dalına sahip olmasının garanti edildiği anlamına gelir. örneğin, MainPrice'ın açıkça başlatılması (veya bildirilirken açıkça sıfırlanması) gereken anahtarda varsayılan açıkça atlanmıştır.

"Garantili geçiş" hakkında. İşte bir kod parçası:

            (1)         double local_low ;
            (2)         uint index_interior=i-k;
            (3)         bool interrupcion= false ;
            (4)         for ( uint n= 1 ;n<Ac-k;n++)
            (5)           {
            (6)             if (low[index_interior-n]<low[index_interior-n- 1 ])
            (7)              {
            (8)               local_low=low[index_interior-n];
            (9)               interrupcion= true ;
            (10)              break ;
            (11)              }
            (12)          }  
            (13)        if (interrupcion)
            (14)          {
            (15)            if (EspacioFalladoPlus0<high[index_interior]-local_low)
                       ...

Son satır için (satır 15) "başlatılmamış değişken 'local_low' olası kullanımı" diyor.

Ancak, satır 8'de local_low değişkeninin başlatılmasından hemen sonra, satır 9'da kesinti bool değişkeninin kullanılması nedeniyle, satır 15'teki local_low değişkeninin başlatılması garanti edilir. Bu nedenle, şu anda, "başlatılmamış değişken 'local_low' olası kullanımı" uyarısı, "garantili" anlamına gelmez, yalnızca değişkenin başlatılmadığı bir geçiş dalının olası varlığı anlamına gelir.

 
Yedelkin :

"Garantili geçiş" hakkında. İşte bir kod parçası:

Son satır için (satır 15) "başlatılmamış değişken 'local_low' olası kullanımı" diyor.

Ancak, satır 8'de local_low değişkeninin başlatılmasından hemen sonra, satır 9'da kesinti bool değişkeninin kullanılması nedeniyle, satır 15'teki local_low değişkeninin başlatılması garanti edilir. Bu nedenle, şu anda, "başlatılmamış değişken 'local_low' olası kullanımı" uyarısı, "garantili" anlamına gelmez, yalnızca değişkenin başlatılmadığı bir geçiş dalının olası varlığı anlamına gelir.

Kesinlikle doğru bir uyarı veriyor.

Kendinize olan güveninizi gerçekle karıştırmayın. Gerçek, birçok projeden sonra ortaya çıkıyor ve "mantık bu şekilde ilerlediği için bu olamaz" anlayışı her gün oluyor.

 
Renat :

Kendinize olan güveninizi gerçekle karıştırmayın. Gerçek, birçok projeden sonra ortaya çıkıyor ve "mantık bu şekilde ilerlediği için bu olamaz" anlayışı her gün oluyor.

Yeterli bir açıklama almak mümkün mü? Kod verilmiş, "kendinden emin" ifadesi belirtilmiş, hata nedir? Ezoterizmi anlamıyorum.

..." başlatılmamış değişkenin olası kullanımı" ifadesinin çevirisini dikkate alırsak, uyarı gerçekten "kesinlikle doğru" olarak verilir. Ancak "garantili" değil, yalnızca değişkenin başlatılmadığı bir geçiş dalının olası varlığı hakkında. İşte tam da bunu "kendinden emin bir şekilde" söylüyorum.

 
Yedelkin :

Yeterli bir açıklama almak mümkün mü? Kod verilmiş, "kendinden emin" ifadesi belirtilmiş, hata nedir? Ezoterizmi anlamıyorum.

Ve eğer senin yerine

interrupcion=true;

oldu (örneğin)

interrupcion = (someFunction1(input) > someFunction2(input2)) && (someFunction3() < 1) || (someFunction1(input3) * someFunction3() > 10);
Siz de şikayet etmek ister misiniz? Özellikle someFunctionN yüzlerce kod satırından oluşuyorsa?

Kod parçanıza göre - evet, 15. satır yürütülürse değişken başlatılır. Ama verdiğim örnekte derleyiciye ne yapmasını söylerdiniz? Görev zor. Evet ve çözmeye gerek yok.

Ve hataya "başlatılmamış değişkenin olası (muhtemelen) kullanımı" denir (zaten biliyor olsanız da)

Ve local_low değişkeninin değerine açıkça bir iş parçacığı atamak daha iyidir. İnanın bu sizi gelecekte olası hatalardan kurtarabilir (kod düzeltilir, bir şey silinir, bir şey taşınır, bir şey değiştirilir ve 13. satır bu süreçten düşebilir)

 
Yedelkin :

Yeterli bir açıklama almak mümkün mü? Kod verilmiş, "kendinden emin" ifadesi belirtilmiş, hata nedir? Ezoterizmi anlamıyorum.

Gerçek koşullarda, herhangi bir dilde programcıların büyük çoğunluğu kesinlikle güvensiz ve hatalı kod yazdığında, derleyicilerin mümkün olduğunca katı hale getirilmesi gerekir. Programcıların özgüveni “mantık açık, sorun olmamalı, her şey olması gerektiği gibi başlatılıyor” çok sayıda hatayı getirdi, getirdi ve getirecek.

Bu nedenle, katı önlemlerin eleştirisine ilişkin sorular burada uygun değildir.

 
Renat :

... Programcıların özgüveni “mantık açık, sorun olmamalı, her şey olması gerektiği gibi başlatılıyor” çok sayıda hatayı getirdi, getirdi ve getirecek.

Bu nedenle, katı tedbirlerin eleştirilmesiyle ilgili sorular burada uygun değildir.

Eleştirmeden gidelim. Üstelik bunu sözlerime de dökmedim. Ve benim tarafımdan eleştirinin varlığı hakkında, derinden yanılıyorsunuz.

Yani ne yanlış? Ezoterizmi koda ekleyemeyeceğiniz için lütfen mantık dilinde cevap verin. Onlar. herhangi bir programcının anlayabileceği bir dilde.

 
notused :

Siz de şikayet etmek ister misiniz? Özellikle someFunctionN yüzlerce kod satırından oluşuyorsa?

Ve sen oradasın. Hiç şikayetim yok. Her şeyin Renat'ın iddia ettiği kadar kategorik olmadığına dair bir açıklama var.

Kod hakkında. Sıradan bir mantık kullanarak Renat'ın ifadesinin kategorikliğini çürüten belirli bir kod örneği verdim. Tavsiyen için teşekkürler, her zaman geliştirmeye çalışıyorum.

 
Yedelkin :

Eleştirmeden gidelim. Üstelik bunu sözlerime de dökmedim. Ve benim tarafımdan eleştirinin varlığı hakkında, derinden yanılıyorsunuz.

Yani ne yanlış? Ezoterizmi koda ekleyemeyeceğiniz için lütfen mantık dilinde cevap verin. Onlar. herhangi bir programcının anlayabileceği bir dilde.

" başlatılmamış "local_low" değişkeninin olası kullanımına sahipsiniz "

Ne verilirse

( 1 )         double local_low= 1.1 ; // или что-то другое
 
Yedelkin :

Yani ne yanlış? Ezoterizmi koda ekleyemeyeceğiniz için lütfen mantık dilinde cevap verin. Onlar. herhangi bir programcının anlayabileceği bir dilde.

Birçok yazılım projesini pazara sunmuş bir yazılım şirketi yöneticisinin bakış açısından cevaplarımı tekrar okuyun.

Aksi takdirde, "herhangi bir programcı" düzeyinde kalarak, hatanın ne olduğunu anlamayacaksınız.