Fehler, Irrtümer, Fragen - Seite 2633

 

2310
Seltsames Verhalten.
Wenn Sie ein Array setzen, das mit dem vierten Parameter oder dem fünften, sechsten usw. beginnt.

void Func(int arg1, int arg2, int arg3=0, double & array[])
{
 
}

erzeugt der Compiler einen Fehler

'array' - missing default value for parameter

Ich ordne das Array mit dem ersten oder zweiten oder dritten Parameter neu an, kein Fehler.

void Func(int arg1, int arg2, double & array[] int arg3=0)
{
 
}


Zweites seltsames Verhalten.
Im Editor auf F5, nach dem Kompilieren löst oft Skript-Laufzeit aus.

 
Roman:

2310
Das ist ein seltsames Verhalten.
Wenn Sie das Array ab dem vierten Parameter oder dem fünften, sechsten usw.

erzeugt der Compiler einen Fehler

Ich ordne das Array mit dem ersten oder zweiten oder dritten Parameter neu an, kein Fehler.


Zweites seltsames Verhalten.
Im Editor mit F5, nach der Kompilierung, löst es oft einen Programmlauf aus.

Wenn es für einen der Parameter einen Standardwert gibt, sollten auch alle nachfolgenden Parameter Standardwerte haben.

void Func(int arg1, int arg2, int arg3=0, double & array[]  )
{
 
}

Das war das Verhalten von Anfang an.

Und es geht nicht um das Array, sondern um den Standardwert, den das letzte Argument hat. Auch alle nachfolgenden müssen sie haben:

void Func(int arg1, int arg2, double & array[] int arg3=0)
{
 
}
 
Artyom Trishkin:

Wenn es für einen der Parameter einen Standardwert gibt, sollten auch alle nachfolgenden Parameter Standardwerte haben.

Das war das Verhalten von Anfang an.

Und es geht nicht um das Array, sondern um den Standardwert des letzten Arguments. Auch alle folgenden müssen ihn haben:

Danke für die Klarstellung, aber das Verhalten ist seltsam ))

 
Artyom Trishkin:

Ihr Ranking ist also noch nicht gut genug für Blogs.

Wo kann ich darüber lesen? Welche Art von Bewertung benötigen Sie? Was müssen Sie tun?
 
Roman:

Danke für die Klarstellung, aber das Verhalten ist seltsam ))

Es ist seltsam, dass Sie solche Fragen stellen. Im Handbuch heißt es eindeutig


Документация по MQL5: Основы языка / Функции
Документация по MQL5: Основы языка / Функции
  • www.mql5.com
Всякая задача может быть разбита на подзадачи, каждую из которых можно либо непосредственно представить в виде кода, либо разбить на еще более мелкие подзадачи. Данный метод называется определения функции. Заголовок функции включает в себя описание типа возвращаемого значения, имени (идентификатора) и формальных параметров.  Количество...
 
Petros Shatakhtsyan:

Wenn es auch auf dem Testgerät funktioniert, ist das gut. Ich werde nachsehen.

Nein, das tut es nicht.

Die Serverzeit bleibt übrigens nicht am Samstag stehen. Im Gegenteil: Im Terminal wird die Serverzeit mit dem Eintreffen eines neuen Kurses aktualisiert. Sie haben z.B. nur ein Symbol in der Marktübersicht geöffnet (nicht nur im Tester, sondern auch in der Realität). und es gibt fünf Sekunden lang keine Ticks - die ganze Zeit über bewegt sich der Timer der Serverzeit nicht. das gilt für den Samstag: die Serverzeit läuft, aber das Terminal weiß nichts davon, weil es keine Ticks gibt. der Tester verpasst diesen Zeitraum einfach.

 
Petros Shatakhtsyan:

Aber hier weiß ich nicht, wie ich feststellen kann, ob es ein Samstag ist oder nicht. Denn nach Börsenschluss wird die Serverzeit gestoppt.

Zu welchem Zweck? Auto-Optimierung am Wochenende durchführen? Dann würde es funktionieren, einen Timer von OnTick in einem Abstand von einigen Minuten zu setzen. Wenn es funktioniert, haben die Ticks aufgehört und Sie können optimieren.

Wenn für andere Zwecke, formulieren Sie sie.

 
Alexey Viktorov:

Es ist seltsam, dass Sie solche Fragen stellen. Im Handbuch heißt es eindeutig


Danke Alexey, ich habe nicht in den Leitfaden zu diesem Thema geschaut )).
Denn ich verwende selten Standardparameter, aber hier brauchte ich sie, und so bin ich auf sie gestoßen.
Aus irgendeinem Grund dachte ich immer, dass die Parameter keine Priorität haben, aber das haben sie.

 

Können Sie mir sagen, wie ich die Größe einer Matrix anhand der übergebenen Argumente festlegen kann?
Etwa so

void MxResize(int row, int col)
{
   int A[][];      

   ArrayResizeRow(A, row);    
   ArrayResizeCol(A, col);      
}

Der folgende Eintrag schlägt fehl, - ungültiger Indexwert

void MxResize(int row=1, int col=1)
{
   int A[row][col];    
      
}
 
Roman:

Können Sie mir sagen, wie man die Größe für eine Matrix anhand der übergebenen Argumente festlegt?

https://www.mql5.com/ru/forum/328008/page2#comment_14166682

Размерность многомерных динамических массивов через ArrayResize
Размерность многомерных динамических массивов через ArrayResize
  • 2019.12.09
  • www.mql5.com
Добрый день. Такой вопрос волнует: как использовать ArrayResize для двумерных динамических массивов...