Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Статьи помогут закрепить твои знания. Заходи и читай!
Tango_X
133
Tango_X 2016.12.01 06:39 

Здравствуйте! Как узнать код объекта программно

Обьект создается вот так

ObjectCreate("s", OBJ_TEXT, 0, TimeCurrent(), Ask);//создаем её.
ObjectSetString(0, "s", OBJPROP_TEXT, CharToStr(168)); 

а пытаюсь узнать вот так

kak_yznat_kod=ObjectGetString(0,"s",OBJPROP_TEXT);


В каком месте я не прав? Спасибо!

//+------------------------------------------------------------------+
//|                                                            1.mq4 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+

void deinit() {
  ObjectDelete("s");
  Comment("");
}


int OnInit()
  {
  string kak_yznat_kod;

   ObjectCreate("s", OBJ_TEXT, 0, TimeCurrent(), Ask);//создаем её.
   ObjectSetString(0, "s", OBJPROP_TEXT, CharToStr(168));  
   ObjectSetString(0, "s", OBJPROP_FONT, "Wingdings");  
   ObjectSet("s", OBJPROP_COLOR, Red);
   ObjectSet("s", OBJPROP_FONTSIZE, 18);
  
   kak_yznat_kod=ObjectGetString(0,"s",OBJPROP_TEXT);
   Print(kak_yznat_kod);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
  
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
STARIJ
146
STARIJ 2016.12.01 06:54  
Tango_X:

Здравствуйте! Как узнать код объекта программно

   ObjectSetString(0, "s", OBJPROP_TEXT, CharToStr(168));  
  ...............
   kak_yznat_kod=ObjectGetString(0,"s",OBJPROP_TEXT);

   Print(kak_yznat_kod);

А что Вас смущает? 168 = код символа "Ё" - он и получается.  Попробуйте написать:   ObjectSetString(0, "s", OBJPROP_TEXT, "Ё");  - результат будет тот же

Alert(kak_yznat_kod);  - дает результат сразу на экран, и стало быть быстрее

Tango_X
133
Tango_X 2016.12.01 07:09  
STARIJ:

А что Вас смущает? 168 = код символа "Ё" - он и получается.  Попробуйте написать:   ObjectSetString(0, "s", OBJPROP_TEXT, "Ё");  - результат будет тот же

Alert(kak_yznat_kod);  - дает результат сразу на экран, и стало быть быстрее

Вы не поняли! я хочу видеть код 168, именно это число. Т.е. как мне перевести "Ё" в 168 ? т.е я не понимаю что такое "Ё". )) Есть таблица кодов - куда я и смотрю. 168 - для меня это значение, а "Ё" - извините.... или где посмотреть тогда таблицу кодов по Вашим обозначениям??
STARIJ
146
STARIJ 2016.12.01 07:45  
Tango_X:
Вы не поняли! я хочу видеть код 168, именно это число. Т.е. как мне перевести "Ё" в 168 ? т.е я не понимаю что такое "Ё". )) Есть таблица кодов - куда я и смотрю. 168 - для меня это значение, а "Ё" - извините.... или где посмотреть тогда таблицу кодов по Вашим обозначениям??
#property strict
void OnStart()
{
  string Строка = CharToString(168);
  int Число=0;
  for(int Номер=0; Номер<255; Номер++)
  {
    Число++;
    if(CharToString(Число)==Строка) break;
  }
  Alert(Строка, "  ==========    ",Число);
}
Файлы:
fonts.mq4 21 kb
FontsMT4.png 174 kb
Tango_X
133
Tango_X 2016.12.01 07:56  
STARIJ:
#property strict
void OnStart()
{
  string Строка = CharToString(168);
  int Число=0;
  for(int Номер=0; Номер<255; Номер++)
  {
    Число++;
    if(CharToString(Число)==Строка) break;
  }
  Alert(Строка, "  ==========    ",Число);
}

Спасибо большое!

Vitalie Postolache
11595
Vitalie Postolache 2016.12.01 08:15  
STARIJ:
#property strict
void OnStart()
{
  string Строка = CharToString(168);
  int Число=0;
  for(int Номер=0; Номер<255; Номер++)
  {
    Число++;
    if(CharToString(Число)==Строка) break;
  }
  Alert(Строка, "  ==========    ",Число);
}
А StringGetChar уже не модно?
STARIJ
146
STARIJ 2016.12.01 13:29  
Vitalie Postolache:      А StringGetChar уже не модно?

StringGetChar дает какую-то малоприемлемую (юникодную ???) хрень. Подскажите, в чем дело? Приведите пример, если знаете... Как использовать?

#property strict
void OnStart()
{
  string Строка = CharToString(168);
  uchar Число=0;
  for(int Номер=0; Номер<255; Номер++)
  {
    Число++;
    if(CharToString(Число)==Строка) break;
  }

  int Номер=StringGetChar(Строка,0);
  Alert(Строка, "  ==========    ",Число, "  ==========    ",Номер);
}
Ihor Herasko
8639
Ihor Herasko 2016.12.01 14:49  
STARIJ:

StringGetChar дает какую-то малоприемлемую (юникодную ???) хрень. Подскажите, в чем дело? Приведите пример, если знаете... Как использовать?

Нужно для начала в ASCII конвертнуть:

   string str = "Ёпрст";
   uchar strChar[];
   StringToCharArray(str, strChar);
   Alert("Code = ", strChar[0], ", code 2 = ", strChar[1]);

Получим:

 

STARIJ
146
STARIJ 2016.12.01 15:27  
Ihor HeraskoНужно для начала в ASCII конвертнуть:
   string str = "Ёпрст";
   uchar strChar[];
   StringToCharArray(str, strChar);
   Alert("Code = ", strChar[0], ", code 2 = ", strChar[1]);

Так короче...

#property strict
void OnStart()
{
  string Строка = CharToString(168);

  // Есть строка, нужно получить ASCII-код первого символа

  // Пробуем без цикла, короче и быстрее
  uchar Массив[];
  StringToCharArray(Строка, Массив);  // Можно преобразовать в число int Число=Массив[0];

  Alert(Строка, "  ==========    ",Массив[0]);
}
Ihor Herasko
8639
Ihor Herasko 2016.12.01 18:17  
STARIJ:

Так короче...

Не понял, что именно короче. Тот же самый код, но с другими значениями )))
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий