Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1001

 
Artyom Trishkin:

ResetLastError() необходимо выполнять перед обращением к функции. Что здесь:

непонятно. Если это CCanvas, то метод Create() создает графический ресурс без привязки к объекту чарта. И возвращает он либо true, либо false:

Create

Создает графический ресурс без привязки к объекту чарта.

Параметры

name

[in]  Основание для имени графического ресурса. Имя ресурса формируется при создании путем добавления псевдослучайной строки.

width

[in]  Ширина (размер по оси X) в пикселях.

height

[in]  Высота (размер по оси Y) в пикселях.

clrfmt=COLOR_FORMAT_XRGB_NOALPHA

[in]  Способ обработки цвета. Более подробно о способах обработки цвета смотрите в описании функции ResourceCreate().

Возвращаемое значение

true - в случае удачи, иначе false


В общем, из того, что вы показали, сложно понять.

Но попробуйте так:

Если там у вас CGraphic, то нужно лезть в код Create() для понимания чего он возвращает, так как в справке про то ни слова:

Я выше уже проверил со сбросом ошибки и локализовал место, где возникает ошибка

К тому же там она возникает два раза от разных функций - после первой функции идет сброс ошибки, но потом она опять возникает.

И мой вариант создания

Create

Создает графический ресурс, привязанный к объекту чарта.

bool  Create(
   const long    chart,      // идентификатор чарта
   const string  name,       // имя
   const int     subwin,     // номер подокна
   const int     x1,         // координата x1
   const int     y1,         // координата y1
   const int     x2,         // координата x2
   const int     y2          // координата y1
   )

Параметры

chart

[in]  Идентификатор графика.

name

[in]  Имя.

subwin

[in]  Номер подокна.

x1

[in]  Координата X1.

y1

[in]  Координата Y1.

x2

[in]  Координата X2.

y2

[in]  Координата Y2.

 
Aleksey Vyazmikin:

Я выше уже проверил со сбросом ошибки и локализовал место, где возникает ошибка

Вы не сбрасываете ошибку перед обращением к функции поиска объекта.

 
Artyom Trishkin:

Вы не сбрасываете ошибку перед обращением к функции поиска объекта.

Да, в цитате кода не сбрасываю, так-как я уже проверил код выше - там ошибки нет, поэтому я стер аналогичные проверочные строки, что показаны ниже.

 
Здравствуйте, у меня функция alert считанную из файла строку выводит либо китайскими, либо японскими иероглифами, как исправить?
 
Artyom Trishkin:

Вы не сбрасываете ошибку перед обращением к функции поиска объекта.

Ещё раз решил повторить эксперимент, вот код

      //--- отключим показ ценового графика
      ChartSetInteger(0,CHART_SHOW,false);
      long chart=ChartID();

      CGraphic graphic;
         Print("0 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
      if(ObjectFind(chart,name)<0)
        {
         Print("1 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
         graphic.Create(chart,name,0,0,0,pix_X,pix_Y);//Создает графический ресурс, привязанный к объекту чарта 
         Print("2 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
        }

Вот результат

2019.02.17 08:55:19.845 Test_4G_CB (Si Splice,H1)       0 Тут ошибка 0 Операция выполнена успешно
2019.02.17 08:55:19.860 Test_4G_CB (Si Splice,H1)       1 Тут ошибка 4202 Графический объект не найден
2019.02.17 08:55:19.860 Test_4G_CB (Si Splice,H1)       2 Тут ошибка 4202 Графический объект не найден
Есть идеи о причине возникновения ошибки?
 
Denis Nikolaev:
Здравствуйте, у меня функция alert считанную из файла строку выводит либо китайскими, либо японскими иероглифами, как исправить?

Настройте шрифты в Windows. Поставьте Русский для "Язык программ, не поддерживающих Юникод".

"Региональные стандарты" - "Дополнительно".

 
Vladimir Karputov:

Настройте шрифты в Windows. Поставьте Русский для "Язык программ, не поддерживающих Юникод".

"Региональные стандарты" - "Дополнительно".

это не помогло

у меня происходит автоматический перевод на японский или китайский язык, строчки считанной из файла, почему так?

 
Aleksey Vyazmikin:

Ещё раз решил повторить эксперимент, вот код

Вот результат

Есть идеи о причине возникновения ошибки?

Ну раз вы сбросили последнюю ошибку, то смотрите в дебрях CGraphic где там возникает такой код ошибки.

 
Artyom Trishkin:

Ну раз вы сбросили последнюю ошибку, то смотрите в дебрях CGraphic где там возникает такой код ошибки.

Это уже компетенция разработчиков, или профессионалов.

 
Aleksey Vyazmikin:

Это уже компетенция разработчиков, или профессионалов.

Ответил в той ветке. Это не их компетенция, а ваш интерес:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Тестируем CGraphic - вопросы и предложения

Artyom Trishkin, 2019.02.17 07:53

Где вам сообщили, что там ошибка? Я вам сказал - ищите в библиотеке момент, где она может записаться в переменную _LastError. При этом не обязательно, что код с ошибкой отработал. Ведь там может быть поиск объекта (и если его нету, то в переменную будет вписан код ошибки) и его создание. Вот если объект не будет создан, то это да - ошибка, но он создаётся и всё отрабатывает. Но после проверки код ошибки (объект до его создания отсутствовал) будет записан в переменную, которую вы потом и считываете у себя в коде.