Domande da un "manichino" - pagina 34

 

A proposito di StringSplit: perché non posso usare un array statico?

Esempio dalla guida

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]);
        }
     }
Funziona, ma genera l'errore 4007. Sembra che ci dovrebbe essere abbastanza memoria e non c'è bisogno di cambiare la dimensione... Non capisco.
 
Silent:

A proposito di StringSplit: perché non posso usare un array statico?

Esempio dal file di aiuto

Funziona, ma genera l'errore 4007. Sembra che la memoria sia sufficiente e non ha bisogno di essere ridimensionata... Non capisco.
case 4007: error_string="Недостаточно памяти для перераспределения массива либо попытка изменения размера статического массива!";
L'aiutante dice anche "la mamma ha lavato la cornice"? Se ti riferisci a un esempio della guida, dacci anche un link all'esempio.
 
tol64:
La guida dice anche "la mamma ha lavato la cornice"? Se ti riferisci a un esempio della guida, dacci anche un link all'esempio.

Non ci crederete...

 
Silent:

Non ci crederete...

Non esiste un array dichiarato risultato[3]; C'è un errore nel collegamento, perché:

"Non c'è abbastanza memoria per ridistribuire l'array o un tentativo di ridimensionare l'array statico!"

 
tol64:
Non esiste un array dichiarato risultato[3]; C'è un errore in questo.
Ho chiesto perché e ho evidenziato dove (cambiato).
 
Silent:
Ho chiesto - perché, ed evidenziato - dove (cambiato).
Perché avete dichiarato che l'array è statico - 3. E la sottostringa risultante ha più di 3 caratteri.
Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
Silent:
Ho chiesto perché e ho evidenziato dove (cambiato).
Non è chiaro con gli array statici in generale, quando e come applicarli. Sembra che io non voglia lasciare il compilatore alla sua mercé, e non voglio incontrare questi problemi - sembra funzionare, ma ci sono errori.
 
tol64:
Perché avete dichiarato che l'array è statico - 3. E la sottostringa risultante ha più di 3 caratteri.
Static [3] è 3 (sotto)stringhe, non 3 caratteri, pensavo.
 
Silent:
Static [3] è 3 (sotto)linee, non 3 caratteri, pensavo.

Sì, se si rimuovono fino a 3 lettere

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
Non è questo il punto.
 
Silent:
Non è chiaro con gli array statici in generale, quando e come applicarli. Sembra che io non voglia lasciare il compilatore alla sua mercé, e non voglio incontrare questi problemi - sembra funzionare, ma ci sono errori.
E cerchi di studiare questa o quella materia quando ne hai bisogno. Non appena raggiungete il punto del vostro sistema in cui avete bisogno di queste o quelle "leve" (funzioni), allora iniziate a sperimentarle. Ho scoperto che questo metodo di apprendimento (nel mio caso) funziona abbastanza bene)).