Wie machen Sie das, und was genau funktioniert nicht?
Ich bin noch dabei, die MQL5-Programmierung zu lernen. Ich bin eine Anfängerin. Ich bin Autodidakt. Ich versuche, einige Probleme zu lösen. Ich habe mir gedacht, dass es eine Funktion geben sollte, mit der man eine Reihe von Ziffern über die Tastatur eingeben kann, und ich habe die Reihe nicht mit einer Ziffer nach der anderen eingegeben. Nun, das Problem stammt aus dem Problembuch C++.
143. Ein Programm schreiben, das über die Tastatur ein eindimensionales Feld mit 5 ganzen Zahlen eingibt.
Array mit 5 Ganzzahlen und gibt dann die Anzahl der
von Nicht-Null-Elementen. Vor der Eingabe jedes Elements wird eine Aufforderung
und zeigt dann einen Tooltip mit der Nummer des Elements an.
Eingabe eines Arrays von Ganzzahlen.
Nachdem Sie jede Nummer eingegeben haben, drücken Sie <Eingabe>.
Ich bin noch dabei, die MQL5-Programmierung zu lernen. Ich bin eine Anfängerin. Autodidaktisch. Ich versuche, Probleme zu lösen. Ich dachte, es sollte eine Funktion geben, mit der man ein Feld um eine Ziffer erweitern kann. Nun, das Problem stammt aus dem Problembuch C++.
143. Ein Programm schreiben, das über die Tastatur ein eindimensionales Feld mit 5 ganzen Zahlen eingibt.
Array mit 5 Ganzzahlen und gibt dann die Anzahl der
von Nicht-Null-Elementen. Vor der Eingabe jedes Elements wird eine Aufforderung
und zeigt dann einen Tooltip mit der Nummer des Elements an.
Geben Sie eine Reihe von Ganzzahlen ein.
Nachdem Sie jede Nummer eingegeben haben, drücken Sie <Eingabe>.
а[1] -> 12
а[2] -> 0
а[3] -> 3
а[4] -> -1
а[5] -> 0
Das Array enthält 3 Elemente, die nicht Null sind
int a[] = {12, 0, 3, -1, 0};
Dadurch wird das Array jedoch zu einem dynamischen Array, so dass Sie seine Größe nicht mit ArrayResize() ändern können.
Dadurch wird das Array jedoch dynamisch, und Sie können seine Größe nicht mit ArrayResize() ändern.
Alexey, ich bin nicht so dumm. Tut mir leid, ich kann auch auf diese Weise ein Feld füllen. Ich muss sie nur über die Tastatur ausfüllen. Das ist es, was ich herauszufinden versuche.
In mql kann man ein Array auch über die Tastatur füllen, aber das ist nicht nötig)))
Andrei! Programmierung. Kreativität. Die Flucht der Gedanken und Phantasien. Sie können sie nicht in den Zellen der grauen Zellen festhalten. Ich will es von der Tastatur weg haben. Das ist keine Täuschung. Es ist nur so, dass mein Wunsch ein Hirngespinst ist. Ich würde es gerne so machen, von der Tastatur aus.
vladeimirami #: Andrei! Programmierung. Kreativität. Fliegende Gedanken und Fantasien. Sie bleiben nicht in den Zellen der grauen Zellen. Ich will es von der Tastatur weg haben. Das ist keine Täuschung. Es ist nur so, dass mein Wunsch ein Hirngespinst ist. Ich würde es gerne so machen, von der Tastatur aus.
Ich werde es einfach machen. Fragen sind in speziellen Themen/Foren angebracht.
Ich werde es einfach machen. Fragen sind in speziellen Themen/Foren angebracht.
Andrey, vielleicht wurde diese Frage im Forum gestellt, wie meine? Wenn es etwas im Forum gibt, geben Sie mir bitte einen Link. Oder sollten wir diese Diskussion im Forum eröffnen?
vladeimirami #: Andrei! Programmierung. Kreativität. Die Flucht der Gedanken und Phantasien. Sie können sie nicht in den Zellen der grauen Substanz halten. Ich will es von der Tastatur weg haben. Das ist keine Täuschung. Es ist nur so, dass mein Wunsch ein Hirngespinst ist. Ich würde es gerne so machen, von der Tastatur aus.
das Array aus der Datei lesen. Und bearbeiten Sie die Datei in einem beliebigen Texteditor :-)
//Пример слушателя событий графика
//+------------------------------------------------------------------+//| OnChartEvent_Sample.mq5 |//| Copyright 2018, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2018, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#property description"Пример слушателя событий графика и генератора пользовательских событий"//--- идентификаторы служебных клавиш#define KEY_NUMPAD_5 12#define KEY_LEFT 37#define KEY_UP 38#define KEY_RIGHT 39#define KEY_DOWN 40#define KEY_NUMLOCK_DOWN 98#define KEY_NUMLOCK_LEFT 100#define KEY_NUMLOCK_5 101#define KEY_NUMLOCK_RIGHT 102#define KEY_NUMLOCK_UP 104//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- выведем значение константы CHARTEVENT_CUSTOMPrint("CHARTEVENT_CUSTOM=",CHARTEVENT_CUSTOM);
//---Print("Запущен эксперт с именем ",MQLInfoString(MQL5_PROGRAM_NAME));
//--- установка флага получения событий создания объектов графикаChartSetInteger(ChartID(),CHART_EVENT_OBJECT_CREATE,true);
//--- установка флага получения событий удаления объектов графикаChartSetInteger(ChartID(),CHART_EVENT_OBJECT_DELETE,true);
//--- включение сообщений о прокрутке колесика мышкиChartSetInteger(0,CHART_EVENT_MOUSE_WHEEL,1);
//--- принудительное обновление свойств графика гарантирует готовность к обработке событийChartRedraw();
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
//--- счетчик тиков для генерации пользовательского события staticint tick_counter=0;
//--- будем делить накопленные тики на это числоint simple_number=113;
//---
tick_counter++;
//--- отправляем пользовательское событие, если счетчик тиков кратен simple_numberif(tick_counter%simple_number==0)
{
//--- сформируем идентификатор пользовательского события в диапазоне от 0 до 65535ushort custom_event_id=ushort(tick_counter%65535);
//--- отправим пользовательское событие с заполнением параметровEventChartCustom(ChartID(),custom_event_id,tick_counter,SymbolInfoDouble(Symbol(),SYMBOL_BID),__FUNCTION__);
//--- сделаем вывод в лог для изучения и анализа результатов примераPrint(__FUNCTION__,": Отправлено пользовательcкое событие ID=",custom_event_id);
}
//---
}
//+------------------------------------------------------------------+//| ChartEvent function |//+------------------------------------------------------------------+voidOnChartEvent(constint id,
constlong &lparam,
constdouble &dparam,
conststring &sparam)
{
//--- нажатие кнопки на клавиатуреif(id==CHARTEVENT_KEYDOWN)
{
switch((int)lparam)
{
case KEY_NUMLOCK_LEFT: Print("Нажата KEY_NUMLOCK_LEFT"); break;
case KEY_LEFT: Print("Нажата KEY_LEFT"); break;
case KEY_NUMLOCK_UP: Print("Нажата KEY_NUMLOCK_UP"); break;
case KEY_UP: Print("Нажата KEY_UP"); break;
case KEY_NUMLOCK_RIGHT: Print("Нажата KEY_NUMLOCK_RIGHT"); break;
case KEY_RIGHT: Print("Нажата KEY_RIGHT"); break;
case KEY_NUMLOCK_DOWN: Print("Нажата KEY_NUMLOCK_DOWN"); break;
case KEY_DOWN: Print("Нажата KEY_DOWN"); break;
case KEY_NUMPAD_5: Print("Нажата KEY_NUMPAD_5"); break;
case KEY_NUMLOCK_5: Print("Нажата KEY_NUMLOCK_5"); break;
default: Print("Нажата какая-то неперечисленная клавиша");
}
}
//--- нажатие левой кнопкой мышки на графикеif(id==CHARTEVENT_CLICK)
Print("Координаты щелчка мышки на графике: x = ",lparam," y = ",dparam);
//--- нажатие мышкой на графическом объектеif(id==CHARTEVENT_OBJECT_CLICK)
Print("Нажатие кнопки мышки на объекте с именем '"+sparam+"'");
//--- удален объектif(id==CHARTEVENT_OBJECT_DELETE)
Print("Удален объект с именем ",sparam);
//--- создан объектif(id==CHARTEVENT_OBJECT_CREATE)
Print("Создан объект с именем ",sparam);
//--- изменен объектif(id==CHARTEVENT_OBJECT_CHANGE)
Print("Изменен объект с именем ",sparam);
//--- перемещен объект или изменены координаты точек привязкиif(id==CHARTEVENT_OBJECT_DRAG)
Print("Изменение точек привязки объекта с именем ",sparam);
//--- изменен текст в поле ввода графического объекта Editif(id==CHARTEVENT_OBJECT_ENDEDIT)
Print("Изменен текст в объекте Edit ",sparam," id=",id);
//--- события перемещения мышкиif(id==CHARTEVENT_MOUSE_MOVE)
Comment("POINT: ",(int)lparam,",",(int)dparam,"\n",MouseState((uint)sparam));
if(id==CHARTEVENT_MOUSE_WHEEL)
{
//--- разберем состояние кнопок и колесика мышки для этого события int flg_keys = (int)(lparam>>32); // флаг состояний клавиш Ctrl, Shift и кнопок мышкиint x_cursor = (int)(short)lparam; // X-координата, в которой произошло событие колесика мышкиint y_cursor = (int)(short)(lparam>>16); // Y-координата, в которой произошло событие колесика мышкиint delta = (int)dparam; // суммарное значение прокрутки колесика, срабатывает при достижении +120 или -120//--- обработаем флаг string str_keys="";
if((flg_keys&0x0001)!=0)
str_keys+="LMOUSE ";
if((flg_keys&0x0002)!=0)
str_keys+="RMOUSE ";
if((flg_keys&0x0004)!=0)
str_keys+="SHIFT ";
if((flg_keys&0x0008)!=0)
str_keys+="CTRL ";
if((flg_keys&0x0010)!=0)
str_keys+="MMOUSE ";
if((flg_keys&0x0020)!=0)
str_keys+="X1MOUSE ";
if((flg_keys&0x0040)!=0)
str_keys+="X2MOUSE ";
if(str_keys!="")
str_keys=", keys='"+StringSubstr(str_keys,0,StringLen(str_keys)-1)+"'";
PrintFormat("%s: X=%d, Y=%d, delta=%d%s",EnumToString(CHARTEVENT_MOUSE_WHEEL),x_cursor,y_cursor,delta,str_keys);
}
//--- изменение размеров графика или изменение свойств графика через диалог свойствif(id==CHARTEVENT_CHART_CHANGE)
Print("Изменение размеров или свойств графика");
//--- пользовательское событиеif(id>CHARTEVENT_CUSTOM)
PrintFormat("Пользовательское событие ID=%d, lparam=%d, dparam=%G, sparam=%s",id,lparam,dparam,sparam);
}
//+------------------------------------------------------------------+//| MouseState |//+------------------------------------------------------------------+string MouseState(uint state)
{
string res;
res+="\nML: " +(((state& 1)== 1)?"DN":"UP"); // mouse left
res+="\nMR: " +(((state& 2)== 2)?"DN":"UP"); // mouse right
res+="\nMM: " +(((state&16)==16)?"DN":"UP"); // mouse middle
res+="\nMX: " +(((state&32)==32)?"DN":"UP"); // mouse first X key
res+="\nMY: " +(((state&64)==64)?"DN":"UP"); // mouse second X key
res+="\nSHIFT: "+(((state& 4)== 4)?"DN":"UP"); // shift key
res+="\nCTRL: " +(((state& 8)== 8)?"DN":"UP"); // control keyreturn(res);
}
Erweitern Sie die Liste der Konstanten um die erforderlichen Konstanten:
Wie machen Sie das, und was genau funktioniert nicht?
Ich bin noch dabei, die MQL5-Programmierung zu lernen. Ich bin eine Anfängerin. Ich bin Autodidakt. Ich versuche, einige Probleme zu lösen. Ich habe mir gedacht, dass es eine Funktion geben sollte, mit der man eine Reihe von Ziffern über die Tastatur eingeben kann, und ich habe die Reihe nicht mit einer Ziffer nach der anderen eingegeben. Nun, das Problem stammt aus dem Problembuch C++.
143. Ein Programm schreiben, das über die Tastatur ein eindimensionales Feld mit 5 ganzen Zahlen eingibt.
Array mit 5 Ganzzahlen und gibt dann die Anzahl der
von Nicht-Null-Elementen. Vor der Eingabe jedes Elements wird eine Aufforderung
und zeigt dann einen Tooltip mit der Nummer des Elements an.
Eingabe eines Arrays von Ganzzahlen.
Nachdem Sie jede Nummer eingegeben haben, drücken Sie <Eingabe>.
а[1] -> 12
а[2] -> 0
а[3] -> 3
а[4] -> -1
а[5] -> 0
Das Array enthält 3 Elemente, die nicht Null sind
Ich bin noch dabei, die MQL5-Programmierung zu lernen. Ich bin eine Anfängerin. Autodidaktisch. Ich versuche, Probleme zu lösen. Ich dachte, es sollte eine Funktion geben, mit der man ein Feld um eine Ziffer erweitern kann. Nun, das Problem stammt aus dem Problembuch C++.
143. Ein Programm schreiben, das über die Tastatur ein eindimensionales Feld mit 5 ganzen Zahlen eingibt.
Array mit 5 Ganzzahlen und gibt dann die Anzahl der
von Nicht-Null-Elementen. Vor der Eingabe jedes Elements wird eine Aufforderung
und zeigt dann einen Tooltip mit der Nummer des Elements an.
Geben Sie eine Reihe von Ganzzahlen ein.
Nachdem Sie jede Nummer eingegeben haben, drücken Sie <Eingabe>.
а[1] -> 12
а[2] -> 0
а[3] -> 3
а[4] -> -1
а[5] -> 0
Das Array enthält 3 Elemente, die nicht Null sind
Dadurch wird das Array jedoch zu einem dynamischen Array, so dass Sie seine Größe nicht mit ArrayResize() ändern können.
Dadurch wird das Array jedoch dynamisch, und Sie können seine Größe nicht mit ArrayResize() ändern.
Nun, das Problem stammt aus dem C++-Problembuch.
In mql kann man das Array auch über die Tastatur füllen, muss es aber nicht)))
In mql kann man ein Array auch über die Tastatur füllen, aber das ist nicht nötig)))
Andrei! Programmierung. Kreativität. Fliegende Gedanken und Fantasien. Sie bleiben nicht in den Zellen der grauen Zellen. Ich will es von der Tastatur weg haben. Das ist keine Täuschung. Es ist nur so, dass mein Wunsch ein Hirngespinst ist. Ich würde es gerne so machen, von der Tastatur aus.
Ich werde es einfach machen. Fragen sind in speziellen Themen/Foren angebracht.
Ich werde es einfach machen. Fragen sind in speziellen Themen/Foren angebracht.
Andrey, vielleicht wurde diese Frage im Forum gestellt, wie meine? Wenn es etwas im Forum gibt, geben Sie mir bitte einen Link. Oder sollten wir diese Diskussion im Forum eröffnen?
Auf jeden Fall vielen Dank!
Andrei! Programmierung. Kreativität. Die Flucht der Gedanken und Phantasien. Sie können sie nicht in den Zellen der grauen Substanz halten. Ich will es von der Tastatur weg haben. Das ist keine Täuschung. Es ist nur so, dass mein Wunsch ein Hirngespinst ist. Ich würde es gerne so machen, von der Tastatur aus.
das Array aus der Datei lesen. Und bearbeiten Sie die Datei in einem beliebigen Texteditor :-)
"Tu das - ich sage dir nicht, wie."
Warum haben Sie das nicht selbst herausgefunden? Und sagen Sie dem Benutzervladeimirami , wie er es machen soll. Das steht alles in der Dokumentation:
https://www.mql5.com/ru/docs/event_handlers/onchartevent
Erweitern Sie die Liste der Konstanten um die erforderlichen Konstanten:
Wo man Werte für die Konstanten erhält:. Googeln Sie "C++-Schlüsselcodes" (wie ich bereits sagte). Und verarbeiten Sie es:
Anstelle einer Zeichenkette mit Print eine Funktion einfügen, die dem Array je nach gedrückter Taste einen Wert hinzufügt. Was ist so schwer?
Warum haben Sie das nicht selbst herausgefunden? Und sagen Sie dem Benutzervladeimirami , wie er es machen soll. Das steht alles in der Dokumentation:
https://www.mql5.com/ru/docs/event_handlers/onchartevent
Erweitern Sie die Liste der Konstanten um die erforderlichen Konstanten:
Wo man Werte für die Konstanten erhält:. Googeln Sie "C++-Schlüsselcodes" (wie ich bereits sagte). Und verarbeiten Sie es:
Anstelle einer Zeichenkette mit Print eine Funktion einfügen, die dem Array je nach gedrückter Taste einen Wert hinzufügt. Was ist so kompliziert?
Lesen Sie wenigstens, worauf Sie antworten und wer wem was geantwortet hat, bevor Sie in die Tasten hauen