Perguntas de um "boneco" - página 34

 

Sobre StringSplit: porque não posso usar uma matriz estática?

Exemplo da ajuda

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]);
        }
     }
Funciona, mas gera erro 4007. Parece que deve haver memória suficiente e não há necessidade de mudar o tamanho... Não compreendo.
 
Silent:

Sobre StringSplit: porque não posso usar uma matriz estática?

Exemplo do ficheiro de ajuda

Funciona, mas gera erro 4007. Parece ser memória suficiente e não precisa de ser redimensionada... Não compreendo.
case 4007: error_string="Недостаточно памяти для перераспределения массива либо попытка изменения размера статического массива!";
A ajudante também diz "a mãe lavou a moldura"? Se estiver a referir-se a um exemplo da ajuda, dê-nos também uma ligação para o exemplo.
 
tol64:
Será que a ajuda também diz "a mãe lavou a moldura"? Se estiver a referir-se a um exemplo da ajuda, dê-nos também uma ligação para o exemplo.

Não vai acreditar...

 
Silent:

Não vai acreditar...

Não existe um resultado de cordel declarado[3]; existe um erro na ligação, porque:

"Não há memória suficiente para redistribuir a matriz ou uma tentativa de redimensionar a matriz estática!"

 
tol64:
Não existe tal coisa como um resultado de cordel declarado[3]; Existe um erro nisto.
Perguntei porquê, e sublinhei onde (alterado).
 
Silent:
Perguntei - porquê, e sublinhei - onde (alterado).
Porque declarou que a matriz é estática - 3. E o substrato resultante tem mais de 3 caracteres.
Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
Silent:
Perguntei porquê, e sublinhei onde (alterado).
Não é claro com as matrizes estáticas em geral, quando e como aplicá-las. Parece que não quero deixar o compilador à sua mercê, e não quero encontrar tais problemas - parece funcionar, mas há erros.
 
tol64:
Porque declarou que a matriz é estática - 3. E o substrato resultante tem mais de 3 caracteres.
Estático [3] é 3 (sub)cordas, não 3 caracteres, pensei eu.
 
Silent:
Estático [3] é 3 (sub)linhas, não 3 caracteres, pensei eu.

Sim, se remover até 3 letras

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
não é essa a questão.
 
Silent:
Não é claro com as arrays estáticas em geral, quando e como utilizá-las. Parece que não quero deixar o compilador à sua mercê, e não quero encontrar tais problemas - parece funcionar, mas há erros.
E tenta-se estudar este ou aquele assunto quando se precisa dele. Assim que chegar ao ponto no seu sistema em que precisa destas ou daquelas "alavancas" (funções), então comece a experimentá-las. Descobri que este método de aprendizagem (no meu caso) funciona bastante bem)).
Razão: