Ошибки, баги, вопросы - страница 1687

 
Вопрос. Размер пустого класса в MQL равен 16 байт (в 64-битной системе). За счёт чего? 8 байт, видимо, занимает указатель на виртуальную таблицу (согласно документации, в МКЛ она есть у всех классов). А остальные 8 чем заняты?
 
Коллеги, никто не столкнулся с такой проблемой? Сегодня утром терминал обновился до biuld 1430. И так совпало, что вчера переписал свой советник на работу с файлами через стандартную библиотеку (до этого была не совсем удачная реализация через стандартные файловые операции), но не протестировал - отложил на утро. И вот результат: советник при тестировании не находит файл - функция FileIsExist всё время возвращает false. Не понятно, где косяк - то ли у меня при переделке, то ли из-за обновления. Фишка в том, что документация гласит, что при тестировании файл должен располагаться в папке MQL5/Tester/Files. Однако, в реальности путь иной: ...\Roaming\MetaQuotes\Tester\...какая-то шестнадцатеричная хрень...\Agent-127.0.0.1-3000\MQL5\Files. Т.е, как минимум, в документации есть ошибка. Но главное, что при начале тестирования файл, помещённый туда вручную, из указанной папки стирается, хотя функция FileIsExist у меня прописана в OnInit и она является первой, которая обращается к файлам. Так возникает вопрос: где всё-таки должен располагаться файл при тестировании? И что вообще происходит?
 
BlackTomcat:
Коллеги, никто не столкнулся с такой проблемой? Сегодня утром терминал обновился до biuld 1430. И так совпало, что вчера переписал свой советник на работу с файлами через стандартную библиотеку (до этого была не совсем удачная реализация через стандартные файловые операции), но не протестировал - отложил на утро. И вот результат: советник при тестировании не находит файл - функция FileIsExist всё время возвращает false. Не понятно, где косяк - то ли у меня при переделке, то ли из-за обновления. Фишка в том, что документация гласит, что при тестировании файл должен располагаться в папке MQL5/Tester/Files. Однако, в реальности путь иной: ...\Roaming\MetaQuotes\Tester\...какая-то шестнадцатеричная хрень...\Agent-127.0.0.1-3000\MQL5\Files. Т.е, как минимум, в документации есть ошибка. Но главное, что при начале тестирования файл, помещённый туда вручную, из указанной папки стирается, хотя функция FileIsExist у меня прописана в OnInit и она является первой, которая обращается к файлам. Так возникает вопрос: где всё-таки должен располагаться файл при тестировании? И что вообще происходит?
В общем, проблему удалось обойти с помощью использования флага FILE_COMMON.
Файл при этом будет находиться в папке ...\Roaming\MetaQuotes\Terminal\Common\Files. При тестировании он оттуда не удаляется и нормально читается.
 

Вопрос: Как найти свои сообщения на форуме MQL4? Примерно года два назад была создана тема с приложенным кодом и этот код теперь стал интересен, а поиск по форуму молчит. Если я захожу в свои публикации, то этой темы там нет. (удалена?)

 

Как узнать, был ли макрос хоть раз использован или нет? 

 
fxsaber:

Как узнать, был ли макрос хоть раз использован или нет? 

примерно так:

#ifndef __MY_MACROS__   // если макрос не использован
   #define __MY_MACROS__
//----------------------------------------
// тут ваш код использующий макрос
//----------------------------------------
#endif // __MY_MACROS__
 
coderex:

примерно так:

Имел в виду другое
#define MACROS(A) A

void Func()
{
  MACROS(A) // Если закомментировать, то макрос ни разу не использовался
}

// Вот здесь хотелось бы понять, использовался ли хоть раз макрос или нет.
 
Помогите придумать, как сделать проверку в исходнике, определена OnInit или нет?
 
fxsaber:
Имел в виду другое
Самое простое - счётчик вызовов макроса в глобальной переменной, перезаписывающийся из самого макроса.
 
Sergei Vladimirov:
Самое простое - счётчик вызовов макроса в глобальной переменной, перезаписывающийся из самого макроса.
Есть такое вариант, но он не для всех макросов подходит, к сожалению.