Hatalar, hatalar, sorular - sayfa 3020

 
A100 :

Başlatılırsa, neden o zaman yürütülürken

4009 hatası oluşuyor

ERR_NOTINITIALIZED_STRING

4009

başlatılmamış dize

Bu bir terminoloji meselesidir.

 
mktr8591 :

Sorun burada değil, bu kodun 4 döndürmesi, ancak 0 döndürmesi gerektiği gerçeğinde.

Bu sadece -1 ve 0'ın aynı sonuca sahip olduğu anlamına gelir. Aynı sonuç muhtemelen INT_MAX ve başka bir şey verecektir.

Düzenli fonksiyonların bazı özelliklerini bilmek/öğrenmek normaldir.
 
fxsaber :


Düzenli fonksiyonların bazı özelliklerini bilmek/öğrenmek normaldir.

Kesinlikle. Özellikle özellik bir hata olduğunda))

Pekala, açık bir şekilde " mql5 dilinin özellikleri..." dalına ekleyin.

 
fxsaber :

Bu sadece -1 ve 0'ın aynı sonuca sahip olduğu anlamına gelir.

sizce mantıklı ve doğruysa, bu benim için mantığınızın mantığını düşünmek için bir fırsattır.

 
const string text[] = { "ABC", "", "ABC" };    
uchar array[];
    
int start = 0;
int n     = 0;
    
for(int i=0; i < ArraySize(text); i++)
{
   const int count = StringLen(text[i])+1;
   Print(count);
        
   n += StringToCharArray(text[i], array, start, count);
   start += count;
}
    
Print(ArraySize(array), ":", n );
2021.05.24 22:56:35.959 Test (AUDUSD,M5) 4
2021.05.24 22:56:35.959 Test (AUDUSD,M5) 1
2021.05.24 22:56:35.959 Test (AUDUSD,M5) 4
2021.05.24 22:56:35.959 Test (AUDUSD,M5) 9:9
 
mktr8591 :

Kesinlikle. Özellikle özellik bir hata olduğunda))

Pekala, açık bir şekilde " mql5 dilinin özellikleri..." dalına ekleyin.

Belgeleri biraz düzenleyin ve artık bir hata değil.

Andrey Trukhanoviç :

sizce mantıklı ve doğruysa, bu benim için mantığınızın mantığını düşünmek için bir fırsattır.

Felsefe pratikten uzaktır.

 
Roman :

Temiz bir kopya (sondaki boş karakter yok) gerektiğinden +1 gerekli değildir. Bunun bir hata olmadığını kanıtlamak istiyorsanız, argümanlara ihtiyacınız var.

 
A100 :

temiz kopya gerekli (sondaki boş karakter yok)

 if ( StringLen (text[i]))
  start += StringToCharArray (text[i], array, start, StringLen (text[i]));

Bu çok sakallı bir tasarım.


not

 #include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280

const string text[] = { "ABC" , "" , "ABC" }; 

void OnStart ()
{
   ArrayPrint (_R(text).Bytes); // Побайтовое представление массива.
  
   string Str;  
  _W(Str) = text;
  
   ArrayPrint (_R(Str).Bytes); // Побайтовое представление объединенной строки.
}
 
fxsaber :

Belgeleri biraz düzenleyin ve artık bir hata değil.

Felsefe pratikten uzaktır.

Ve bir uygulayıcı, teorisyenlere böyle çelişkili bir sonucu nasıl açıklar:

 void OnStart ()
{
     string text = "ABC" ;
     const int start = 0 , count = 0 ;
     uchar array1[]; int n1 = StringToCharArray (  text, array1, start, count );
     short array2[]; int n2 = StringToShortArray ( text, array2, start, count );
     Print ( n1, ":" , n2 );
}

Sonuç: 4:0

Beklenen: 0:0

veya ayrıca - belgeleri biraz düzeltin mi? Eh, sonuçta hataları düzeltmeyin!

Açıklamam basit: Bu normal işlevlerden birinde bir hata var - ve hatta hangisi olduğunu biliyorum

 
A100 :

Ve bir uygulayıcı, teorisyenlere böyle bir sonucu nasıl açıklar:

Açıklamam basit: Bu işlevlerden birinde bir hata var - hatta hangisi olduğunu biliyorum

Hata, sonuçları değil, bu iki işlev arasındaki tutarsızlıktır, çünkü bu sadece sayım = 0 olduğunda neyin çıktısının alınacağı bir dokümantasyon meselesidir.