Fragen von einem "Dummy" - Seite 34

 

Über StringSplit: Warum kann ich nicht ein statisches Array verwenden?

Beispiel aus der Hilfe

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]);
        }
     }
Es funktioniert, aber es wird der Fehler 4007 erzeugt. Es sieht so aus, als ob genug Speicher vorhanden sein sollte und die Größe nicht geändert werden muss... Ich verstehe das nicht.
 
Silent:

Über StringSplit: Warum kann ich nicht ein statisches Array verwenden?

Beispiel aus der Hilfedatei

Es funktioniert, aber es wird der Fehler 4007 erzeugt. Es scheint genug Speicher zu sein und die Größe muss nicht geändert werden... Ich verstehe das nicht.
case 4007: error_string="Недостаточно памяти для перераспределения массива либо попытка изменения размера статического массива!";
Sagt die Helferin auch "Mutter hat den Rahmen gewaschen"? Wenn Sie sich auf ein Beispiel aus der Hilfe beziehen, geben Sie uns auch einen Link zu diesem Beispiel.
 
tol64:
Steht in der Hilfe auch "Mama hat den Rahmen gewaschen"? Wenn Sie sich auf ein Beispiel aus der Hilfe beziehen, geben Sie uns auch einen Link zu diesem Beispiel.

Du wirst es nicht glauben...

 
Silent:

Du wirst es nicht glauben...

Es gibt keine als Array deklarierte Zeichenkette result[3]; Es gibt einen Fehler in der Verknüpfung, denn:

"Nicht genügend Speicher für die Neuverteilung des Arrays oder ein Versuch, die Größe des statischen Arrays zu ändern!"

 
tol64:
Es gibt keinen als Array deklarierten String result[3]; Hier liegt ein Fehler vor.
Ich habe gefragt, warum, und hervorgehoben, wo (geändert).
 
Silent:
Ich habe gefragt, warum, und hervorgehoben, wo (geändert).
Weil Sie das Array als statisch deklariert haben - 3. Und die resultierende Teilzeichenkette hat mehr als 3 Zeichen.
Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
Silent:
Ich habe gefragt, warum, und hervorgehoben, wo (geändert).
Bei statischen Arrays ist im Allgemeinen nicht klar, wann und wie sie anzuwenden sind. Es scheint, dass ich den Compiler nicht seiner Gnade überlassen möchte, und ich möchte nicht auf solche Probleme stoßen - es scheint zu funktionieren, aber es gibt Fehler.
 
tol64:
Weil Sie das Array als statisch deklariert haben - 3. Und die resultierende Teilzeichenkette hat mehr als 3 Zeichen.
Static [3] sind 3 (Unter-)Zeichenfolgen, nicht 3 Zeichen, dachte ich.
 
Silent:
Statisch [3] sind 3 (Unter-)Zeilen, nicht 3 Zeichen, dachte ich.

Ja, wenn Sie bis zu 3 Buchstaben entfernen

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
Das ist nicht der Punkt.
 
Silent:
Bei statischen Arrays ist es im Allgemeinen nicht klar, wann und wie sie zu verwenden sind. Es scheint, dass ich den Compiler nicht seiner Gnade überlassen möchte, und ich möchte nicht auf solche Probleme stoßen - es scheint zu funktionieren, aber es gibt Fehler.
Und man versucht, dieses oder jenes Fach zu lernen, wenn man es braucht. Sobald Sie den Punkt in Ihrem System erreicht haben, an dem Sie diese oder jene "Hebel" (Funktionen) benötigen, sollten Sie damit experimentieren. Ich habe festgestellt, dass diese Methode des Lernens (in meinem Fall) recht gut funktioniert.))
Grund der Beschwerde: