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

 
Vitaly Muzichenko:

Попробуйте добавить строку, может поможет

попробую

 
Aleksey Vyazmikin:

Спасибо Вам за труд! Теперь мы знаем, что хорошо бы сбрасывать там эту ошибку после создания объекта.

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

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

Artyom Trishkin, 2019.02.17 09:41

Нужно чётко осознавать, что ошибкой является не наличие в _LastError кода, отличного от нуля, а возврат функцией результата, указывающего на ошибочное исполнение этой функции. А в _LastError вписывается код, который вам точно укажет на ту ошибку, возникновение которой привело к ошибочному исполнению функции. Поэтому очень сомнительно закладываться в своей логике на описание кода ошибки, хранящейся в сервисной переменной, вместо прямого использования кода возврата функции. Если функция вернула -1 или false или 0 (для каждой функции описан в справке её код ошибочного выполнения), так вот - только анализ результата, возвращаемого функцией должен вами отрабатываться, а не код в _LastError, который не указывает на наличие ошибки, а используется для указания на причину возврата функцией некоего результата.

Функция поиска объекта возвращает значение меньше нуля в случае, если объекта с заданным именем не существует. Ошибка ли это? Нет. Это штатный ответ функции, на основании которого вы и принимаете решение о создании объекта с заданным именем. При этом код, содержащийся в _LastError прямо говорит о том, что "Объекта с запрошенным именем не существует" - можно его создавать.

В общем, устал я вам объяснять. Кто хочет - тот поймёт.


 
Vitaly Muzichenko:

Попробуйте добавить строку, может поможет

Попробовал, не помогло, думаю с компом проблемы, на другом компе попробую

 
Denis Nikolaev:

Попробовал, не помогло, думаю с компом проблемы, на другом компе попробую

На другом компьюторе такая же ситуация ( , куда копать дальше?

код, если чем-то поможет

int OnInit(){

   MQLSetInteger(MQL_CODEPAGE,CP_ACP);
   string File_Name;
   int file_handle;
   string line;
   File_Name="format.txt";
   file_handle=FileOpen(File_Name,FILE_READ|FILE_TXT);
   if(file_handle!=INVALID_HANDLE){
      while(!FileIsEnding(file_handle)){
         line=FileReadString(file_handle);
         Alert(line);
      }
   }else
      Alert("Не удалось открыть файл format.txt");
   FileClose(file_handle);
   return(INIT_SUCCEEDED);
}

 
Denis Nikolaev:

На другом компьюторе такая же ситуация ( , куда копать дальше?

Тогда нужен код чтения файла

 
Artyom Trishkin:
В общем, устал я вам объяснять. Кто хочет - тот поймёт.

Он не поймёт. Ему говорят сбрасывать ПЕРЕД... он понимает как ПОСЛЕ...


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

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

Aleksey Vyazmikin, 2019.02.17 09:33

Спасибо Вам за труд! Теперь мы знаем, что хорошо бы сбрасывать там эту ошибку после создания объекта.


 
Denis Nikolaev:

На другом компьюторе такая же ситуация ( , куда копать дальше?

код, если чем-то поможет

int OnInit(){

   MQLSetInteger(MQL_CODEPAGE,CP_ACP);
   string File_Name;
   int file_handle;
   string line;
   File_Name="format.txt";
   file_handle=FileOpen(File_Name,FILE_READ|FILE_TXT);
   if(file_handle!=INVALID_HANDLE){
      while(!FileIsEnding(file_handle)){
         line=FileReadString(file_handle);
         Alert(line);
      }
   }else
      Alert("Не удалось открыть файл format.txt");
   FileClose(file_handle);
   return(INIT_SUCCEEDED);

}

содержимое format.txt любое, при отсутствии файла "Не удалось открыть файл "format.txt" выводиться правильно



Файлы:
alert.png  83 kb
 
Alexey Viktorov:

Он не поймёт. Ему говорят сбрасывать ПЕРЕД... он понимает как ПОСЛЕ...



Вы вообще внимательный, или только проснулись???

 
Alexey Viktorov:

Он не поймёт. Ему говорят сбрасывать ПЕРЕД... он понимает как ПОСЛЕ...

Там иное: он видит результат работы потрохов СБ. Там есть запрос при создании канваса о существовании объекта с таким именем. Поэтому возвращается ответ, что его нету, и естественно объект сознаётся и всё отрабатывает. А он в своём коде читает GetLastError() и видит результат работы класса CGraphic - там был запрос и был ответ. Но человек, думая, что раз в функции есть слово Error, то значит именно она говорит о том, что где-то в дебрях есть ошибка. Упуская из виду, что это лишь сервисная функция, в которую записываются уточняющие данные. Впрочем, я уже ему разъяснил, что строить логику закладываясь на содержание _LastError по меньшей мере не очень... Понял ли - это уже другой вопрос.

 
Artyom Trishkin:

Там иное: он видит результат работы потрохов СБ. Там есть запрос при создании канваса о существовании объекта с таким именем. Поэтому возвращается ответ, что его нету, и естественно объект сознаётся и всё отрабатывает. А он в своём коде читает GetLastError() и видит результат работы класса CGraphic - там был запрос и был ответ. Но человек, думая, что раз в функции есть слово Error, то значит именно она говорит о том, что где-то в дебрях есть ошибка. Упуская из виду, что это лишь сервисная функция, в которую записываются уточняющие данные. Впрочем, я уже ему разъяснил, что строить логику закладываясь на содержание _LastError по меньшей мере не очень... Понял ли - это уже другой вопрос.

Да понял я всё. Сегодня ты меня удивляешь своим терпением.