Preguntas de un "tonto" - página 34

 

Acerca de StringSplit: ¿por qué no puedo utilizar una matriz estática?

Ejemplo de la ayuda

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, pero genera el error 4007. Parece que debería haber suficiente memoria y no es necesario cambiar el tamaño... No entiendo.
 
Silent:

Sobre StringSplit: ¿por qué no puedo usar un array estático?

Ejemplo del archivo de ayuda

Funciona, pero genera el error 4007. Parece que hay suficiente memoria y no es necesario cambiar el tamaño... No lo entiendo.
case 4007: error_string="Недостаточно памяти для перераспределения массива либо попытка изменения размера статического массива!";
¿El ayudante también dice "madre lavó el marco"? Si te refieres a un ejemplo de la ayuda, danos también un enlace al ejemplo.
 
tol64:
¿La ayuda dice también "mamá lavó el marco"? Si te refieres a un ejemplo de la ayuda, danos también un enlace al ejemplo.

No te lo vas a creer...

 
Silent:

No te lo vas a creer...

No existe una cadena declarada como array resultado[3]; Hay un error en el enlace, porque:

"¡No hay suficiente memoria para redistribuir el array o un intento de redimensionar el array estático!"

 
tol64:
No existe una cadena declarada como array resultado[3]; Hay un error en esto.
He preguntado por qué, y he subrayado dónde (cambiado).
 
Silent:
Pregunté - por qué, y subrayé - dónde (cambiado).
Porque has declarado que el array es estático - 3. Y la subcadena resultante tiene más de 3 caracteres.
Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
Silent:
He preguntado por qué, y he subrayado dónde (cambiado).
No está claro con las matrices estáticas en general, cuándo y cómo aplicarlas. Parece que no quiero dejar el compilador a su merced, y no quiero encontrarme con estos problemas - parece que funciona, pero hay errores.
 
tol64:
Porque has declarado que el array es estático - 3. Y la subcadena resultante tiene más de 3 caracteres.
Static [3] es 3 (sub)cadenas, no 3 caracteres, pensé.
 
Silent:
Static [3] es 3 (sub)líneas, no 3 caracteres, pensé.

Sí, si elimina hasta 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
ese no es el punto.
 
Silent:
No está claro con las matrices estáticas en general, cuándo y cómo utilizarlas. Parece que no quiero dejar el compilador a su merced, y no quiero encontrarme con estos problemas - parece que funciona, pero hay errores.
Y tratas de estudiar tal o cual tema cuando lo necesitas. En cuanto llegues al punto de tu sistema en el que necesites estas o aquellas "palancas" (funciones), entonces empieza a experimentar con ellas. He descubierto que este método de aprendizaje (en mi caso) funciona bastante bien)).
Razón de la queja: