Comment faites-vous, et qu'est-ce qui ne fonctionne pas exactement ?
Je suis toujours en train d'apprendre la programmation MQL5. Je suis un débutant. Je suis autodidacte. J'essaie de résoudre certains problèmes. J'essaie de les résoudre. Ainsi, j'ai pensé qu'il devrait y avoir une fonction pour entrer un tableau à partir du clavier, et je n'ai pas entré le tableau par un chiffre à la fois. Eh bien, le problème vient du livre de problèmes C++.
143. Écrivez un programme qui saisit au clavier un tableau unidimensionnel de 5 entiers.
de 5 nombres entiers, puis imprime le nombre de
d'éléments non nuls. Avant la saisie de chaque élément, une invite
et affiche ensuite une infobulle avec le numéro de l'élément.
Entrez un tableau d'entiers.
Après avoir saisi chaque numéro, appuyez sur <Enter>.
Je suis toujours en train d'apprendre la programmation MQL5. Je suis un débutant. Autodidacte. J'essaie de résoudre des problèmes. Je pensais qu'il devrait y avoir une fonction permettant d'entrer un tableau par un chiffre. Eh bien, le problème vient du livre de problèmes C++.
143. Écrire un programme qui saisit au clavier un tableau unidimensionnel de 5 entiers.
de 5 nombres entiers, puis imprime le nombre de
d'éléments non nuls. Avant la saisie de chaque élément, une invite
et affiche ensuite une infobulle avec le numéro de l'élément.
Saisie d'un tableau d'entiers.
Après avoir saisi chaque numéro, appuyez sur <Enter>.
а[1] -> 12
а[2] -> 0
а[3] -> 3
а[4] -> -1
а[5] -> 0
Il y a 3 éléments non nuls dans le tableau
int a[] = {12, 0, 3, -1, 0};
Mais cela transforme le tableau en un tableau dynamique, qui ne peut donc pas être redimensionné à l'aide de la fonction ArrayResize().
Mais, cela rend le tableau dynamique, et vous ne pouvez pas changer sa taille avec ArrayResize().
Alexey, je ne suis pas si stupide. Je suis désolé, je peux remplir un tableau de cette façon aussi. Je dois juste le remplir à partir du clavier. C'est ce que j'essaie de comprendre.
En mql, vous pouvez également remplir un tableau à partir du clavier, mais ce n'est pas nécessaire))).
Andrei ! La programmation. La créativité. Le vol des pensées et des fantasmes. On ne peut pas les retenir dans les cellules de la matière grise. Je ne veux plus de ça sur le clavier. Ce n'est pas un faux-semblant. C'est juste que mon désir est le fruit de mon imagination. J'aimerais que ce soit comme ça, depuis le clavier.
vladeimirami #: Andrei ! La programmation. La créativité. Pensées et fantasmes volants. Pas en les gardant dans les cellules de la matière grise. Je ne veux plus de ça sur le clavier. Ce n'est pas un faux-semblant. C'est juste que mon désir est le fruit de mon imagination. J'aimerais que ce soit comme ça, depuis le clavier.
Je vais faire simple. Les questions sont appropriées dans les sujets/forums spécialisés.
Je vais faire simple. Les questions sont appropriées dans les fils/forums spécialisés.
Andrey, peut-être cette question a-t-elle été soulevée dans le forum comme la mienne ? S'il y a quelque chose sur le forum, veuillez me donner un lien. Ou devrions-nous ouvrir cette discussion sur le forum ?
vladeimirami #: Andrei ! La programmation. La créativité. Le vol des pensées et des fantasmes. On ne peut pas les retenir dans les cellules de la matière grise. Je ne veux plus de ça sur le clavier. Ce n'est pas un faux-semblant. C'est juste que mon désir est le fruit de mon imagination. J'aimerais que ce soit comme ça, depuis le clavier.
lire le tableau à partir du fichier. Et éditez le fichier dans n'importe quel éditeur de texte :-)
//Пример слушателя событий графика
//+------------------------------------------------------------------+//| 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);
}
Étendre la liste des constantes à celles qui sont nécessaires :
Où trouver les valeurs des constantes :. Google "C++ key codes" (comme je l'ai déjà dit). Et le traiter :
//--- нажатие кнопки на клавиатуре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("Нажата какая-то неперечисленная клавиша");
}
}
Au lieu de la chaîne de caractères avec Print, insérez une fonction qui ajoute une valeur au tableau en fonction de la touche pressée. Qu'est-ce qui est si difficile ?
Étendre la liste des constantes aux constantes requises :
Où trouver les valeurs des constantes :. Google "C++ key codes" (comme je l'ai déjà dit). Et le traiter :
Au lieu de la chaîne de caractères avec Print, insérez une fonction qui ajoute une valeur au tableau en fonction de la touche pressée. Qu'est-ce qui est si compliqué ?
Lisez au moins ce à quoi vous répondez et qui répondait à qui avant de vous précipiter sur les touches.
Comment faites-vous, et qu'est-ce qui ne fonctionne pas exactement ?
Je suis toujours en train d'apprendre la programmation MQL5. Je suis un débutant. Je suis autodidacte. J'essaie de résoudre certains problèmes. J'essaie de les résoudre. Ainsi, j'ai pensé qu'il devrait y avoir une fonction pour entrer un tableau à partir du clavier, et je n'ai pas entré le tableau par un chiffre à la fois. Eh bien, le problème vient du livre de problèmes C++.
143. Écrivez un programme qui saisit au clavier un tableau unidimensionnel de 5 entiers.
de 5 nombres entiers, puis imprime le nombre de
d'éléments non nuls. Avant la saisie de chaque élément, une invite
et affiche ensuite une infobulle avec le numéro de l'élément.
Entrez un tableau d'entiers.
Après avoir saisi chaque numéro, appuyez sur <Enter>.
а[1] -> 12
а[2] -> 0
а[3] -> 3
а[4] -> -1
а[5] -> 0
Il y a 3 éléments non nuls dans le tableau
Je suis toujours en train d'apprendre la programmation MQL5. Je suis un débutant. Autodidacte. J'essaie de résoudre des problèmes. Je pensais qu'il devrait y avoir une fonction permettant d'entrer un tableau par un chiffre. Eh bien, le problème vient du livre de problèmes C++.
143. Écrire un programme qui saisit au clavier un tableau unidimensionnel de 5 entiers.
de 5 nombres entiers, puis imprime le nombre de
d'éléments non nuls. Avant la saisie de chaque élément, une invite
et affiche ensuite une infobulle avec le numéro de l'élément.
Saisie d'un tableau d'entiers.
Après avoir saisi chaque numéro, appuyez sur <Enter>.
а[1] -> 12
а[2] -> 0
а[3] -> 3
а[4] -> -1
а[5] -> 0
Il y a 3 éléments non nuls dans le tableau
Mais cela transforme le tableau en un tableau dynamique, qui ne peut donc pas être redimensionné à l'aide de la fonction ArrayResize().
Mais, cela rend le tableau dynamique, et vous ne pouvez pas changer sa taille avec ArrayResize().
Eh bien, le problème vient du livre de problèmes C++.
Dans mql, vous pouvez également remplir le tableau à partir du clavier, mais vous n'êtes pas obligé de le faire))).
En mql, vous pouvez également remplir un tableau à partir du clavier, mais ce n'est pas nécessaire))).
Andrei ! La programmation. La créativité. Pensées et fantasmes volants. Pas en les gardant dans les cellules de la matière grise. Je ne veux plus de ça sur le clavier. Ce n'est pas un faux-semblant. C'est juste que mon désir est le fruit de mon imagination. J'aimerais que ce soit comme ça, depuis le clavier.
Je vais faire simple. Les questions sont appropriées dans les sujets/forums spécialisés.
Je vais faire simple. Les questions sont appropriées dans les fils/forums spécialisés.
Andrey, peut-être cette question a-t-elle été soulevée dans le forum comme la mienne ? S'il y a quelque chose sur le forum, veuillez me donner un lien. Ou devrions-nous ouvrir cette discussion sur le forum ?
En tout cas, merci beaucoup !
Andrei ! La programmation. La créativité. Le vol des pensées et des fantasmes. On ne peut pas les retenir dans les cellules de la matière grise. Je ne veux plus de ça sur le clavier. Ce n'est pas un faux-semblant. C'est juste que mon désir est le fruit de mon imagination. J'aimerais que ce soit comme ça, depuis le clavier.
lire le tableau à partir du fichier. Et éditez le fichier dans n'importe quel éditeur de texte :-)
"Fais ça - je ne te dirai pas comment."
Pourquoi ne l'avez-vous pas découvert vous-même ? Et dites à l'utilisateurvladeimirami comment le faire. Tout est dans la documentation :
https://www.mql5.com/ru/docs/event_handlers/onchartevent
Étendre la liste des constantes à celles qui sont nécessaires :
Où trouver les valeurs des constantes :. Google "C++ key codes" (comme je l'ai déjà dit). Et le traiter :
Au lieu de la chaîne de caractères avec Print, insérez une fonction qui ajoute une valeur au tableau en fonction de la touche pressée. Qu'est-ce qui est si difficile ?
Pourquoi ne l'avez-vous pas découvert vous-même ? Et dites à l'utilisateurvladeimirami comment le faire. Après tout, tout est dans la documentation :
https://www.mql5.com/ru/docs/event_handlers/onchartevent
Étendre la liste des constantes aux constantes requises :
Où trouver les valeurs des constantes :. Google "C++ key codes" (comme je l'ai déjà dit). Et le traiter :
Au lieu de la chaîne de caractères avec Print, insérez une fonction qui ajoute une valeur au tableau en fonction de la touche pressée. Qu'est-ce qui est si compliqué ?
Lisez au moins ce à quoi vous répondez et qui répondait à qui avant de vous précipiter sur les touches.