Как получить имя файла из текущего класса в MQL4 (.mq4)?

Чтобы предотвратить некоторый шаблонный код, я хочу прочитать имя файла файла, в котором выполняется класс.

Функция MQL4 по умолчанию недоступна, но это должно быть возможно с помощью встроенной функции Windows ( GetModuleFileName() из kernel32.dll )

Источник — https://msdn.microsoft.com/nl-nl/library/windows/desktop/ms683197(v=vs.85).aspx

Я читал о #import Kernel32.dll и украл оттуда некоторые функции, но, похоже, это не работает.

#import "kernel32.dll"
  int  GetModuleFileName();
#import

Это дает мне следующую ошибку ->

2015.01.05 00:15 Cannot find 'GetModuleFileName' in 'kernel32.dll'

Это само собой объяснимо, getModuleFileName не в kernel32.dll

Кто-нибудь знает, как получить текущее имя файла?


person DutchKevv    schedule 10.01.2016    source источник
comment
Возможно, вы обнаружили, что DLL-интерфейс MSDN указывает несколько параметров для GetModuleFilename( ... ), а ваш MQL4 #import — нет. Для DLL-проектов вы можете использовать DependecyWalker для проверки содержимого/зависимостей DLL.   -  person user3666197    schedule 11.01.2016


Ответы (2)


Текущее имя файла доступно для чтения с помощью макроса __FILE__.

New-MQL4 имеет встроенную поддержку отображения текущего имени файла.

С поддержкой __FILE__, __LINE__, __PATH__ и др. можно реализовать любое средство создания отчетов о коде in-vivo/post-mortem, соответствующее вашим потребностям.

Документация MetaEditor показывает другие дополнительные макросы __FUNCSIG__, __MQL4BUILD__ и многие другие.

person user3666197    schedule 11.01.2016

Я нашел обходной путь..

Со следующей функцией

typename(this);

Дано ClassName.. Этого достаточно для работы..

Функция, которая выводит реальное «имя файла», по-прежнему приветствуется.

person DutchKevv    schedule 10.01.2016