Çaydanlıktan gelen sorular - sayfa 34

 

StringSplit hakkında: neden statik bir dizi kullanamıyorsunuz?

Yardım örneği

 string to_split= "мама_мыла_раму" ; // строка для разбивки на подстроки
   string sep= "_" ;                 // раздедитель в виде символа
   ushort u_sep;                   // код символа разделителя
   string result[ 3 ];               // массив для получения строк
   //--- получим код разделителя
   u_sep= StringGetCharacter (sep, 0 );
   //--- разобьем строку на подстроки
   int k=StringSplit(to_split,u_sep,result);
   //--- выведем комментарий 
   PrintFormat ( "Получено строк: %d. Использован разделитель '%s' с кодом %d" ,k,sep,u_sep);
   //--- теперь выведем все полученные строки
   if (k> 0 )
     {
       for ( int i= 0 ;i<k;i++)
        {
         PrintFormat ( "result[%d]=%s" ,i,result[i]);
        }
     }
çalışıyor, ancak 4007'ye yemin ediyor. Yeterli bellek olması gerekiyor ve boyutun değiştirilmemesi gerekiyor .. net değil.
 
Silent :

StringSplit hakkında: neden statik bir dizi kullanamıyorsunuz?

Yardım örneği

çalışıyor, ama yemin ediyor 4007. Yeterli bellek olması gerekiyor ve boyutu değiştirmenize gerek yok .. net değil.
 case 4007 : error_string= "Недостаточно памяти для перераспределения массива либо попытка изменения размера статического массива!" ;
Ve yardımda da "anne çerçeveyi yıkadı" mı yazıyor? Yardımdaki bir örneğe atıfta bulunuyorsanız, örneğe bir bağlantı verin.
 
tol64 :
Ve yardımda da "anne çerçeveyi yıkadı" mı yazıyor? Yardımdaki bir örneğe atıfta bulunuyorsanız, örneğe bir bağlantı verin.

İnanmayacaksın...

 
Silent :

İnanmayacaksın...

Referans olarak, dizinin bildirilmesi gibi bir şey yoktur string result[ 3 ]; Bu bir hatadır çünkü:

"Bir diziyi yeniden tahsis etmek için yetersiz bellek veya statik bir diziyi yeniden boyutlandırma girişiminde bulunuldu!"

 
tol64 :
Referans olarak, dizinin bildirilmesi gibi bir şey yoktur string result[ 3 ]; Bu bir hata.
Sordum - neden ve vurgulandı - nerede (değişti).
 
Silent :
Sordum - neden ve vurgulandı - nerede (değişti).
Çünkü diziyi static - 3 olarak ilan ettiniz. Ve ortaya çıkan alt diziler 3'ten fazla karaktere sahiptir.
Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
Silent :
Sordum - neden ve vurgulandı - nerede (değişti).
Genel olarak statik dizilerde, bunların ne zaman nerede kullanılacağı net değildir. Derleyiciyi ele vermek istemiyorsunuz ve bu tür sorunlarla karşılaşıyorsunuz - işe yarıyor gibi görünüyor, ancak hatalar var.
 
tol64 :
Çünkü diziyi static - 3 olarak ilan ettiniz. Ve ortaya çıkan alt diziler 3'ten fazla karaktere sahiptir.
Statik [3] 3 karakter değil, 3 (alt) satırdır, öyle düşündüm.
 
Silent :
Statik [3] 3 (alt) satırdır, 3 karakter değil, öyle düşündüm.

evet, 3 harfe kadar kaldırırsanız

 2011.07 . 28 00 : 43 : 55      StringSplit (EURUSD,H1) _LastError 1 4007
2011.07 . 28 00 : 43 : 55      StringSplit (EURUSD,H1) result[ 2 ]=рам
2011.07 . 28 00 : 43 : 55      StringSplit (EURUSD,H1) result[ 1 ]=мыл
2011.07 . 28 00 : 43 : 55      StringSplit (EURUSD,H1) result[ 0 ]=мам
2011.07 . 28 00 : 43 : 55      StringSplit (EURUSD,H1) Получено строк: 3 . Использован разделитель '_' с кодом 95
konu o değil.
 
Silent :
Genel olarak statik dizilerde, bunların ne zaman nerede kullanılacağı net değildir. Derleyiciyi ele vermek istemiyorsunuz ve bu tür sorunlarla karşılaşıyorsunuz - işe yarıyor gibi görünüyor, ancak hatalar var.
Ve gerektiği gibi şu veya bu konuyu incelemeye çalışırsınız. Sisteminizde belirli "kaldıraçlara" (fonksiyonlara) ihtiyaç duyduğunuz ana ulaşır ulaşmaz, onlarla denemeye başlayın. Bu öğrenme yönteminin (benim durumumda) oldukça iyi çalıştığını buldum.)))