Проверить наличие файла библиотеки - страница 4

 

Если нет библиотеки, то эксперт работает без нее, а если есть, то используются ее функции. А почему бы функции, которые используются в том случае, когда нет библиотеки не вынести в библиотеку? Библиотека всегда используется, но она или простая, или какая-то продвинутая.

Наверно есть план закинуть такое в маркет, а в маркет только один файл можно? Короче, нет вариантов.

---

А почему бы не использовать индикатор? Конечно, слегка тормозисто будет, но все же вариант. Есть индикатор или нет - можно проверить, просто вызывать его, посмотреть значение в каком-то буфере по какому-то индексу. 

Сложности возникают если необходимо вызывать функцию с разными значениями параметров, если передавать их как стандартные параметры индикатора.  А можно как-нибудь через ресурсы, события, глобальные переменные.

В результате открывается что-то наподобие возможности заражать эксперта вирусом. Значит надо подумать о способе идентификации "правильного" индикатора.

 
Dmitry Fedoseev:

А почему бы не использовать индикатор? Конечно, слегка тормозисто будет, но все же вариант. Есть индикатор или нет - можно проверить, просто вызывать его, посмотреть значение в каком-то буфере по какому-то индексу.

Да, сейчас пробую вариант с индикатором. Данные попробую передавать через ResourceData от fxsaber

 

Случайно вспомнил об этой теме пока разбирался с #define

в библиотеке делаем

#define MACRO

в роботе/индикаторе:

bool CheckLib()
{
 bool have;
 #ifdef MACRO have=true;
 #else        have=false;
 #endif
 return have;
}

не тестил, но верю, что сработает :)

 
Igor Zakharov:

Случайно вспомнил об этой теме пока разбирался с #define

в библиотеке делаем

в роботе/индикаторе:

не тестил, но верю, что сработает :)

не должно сработать, библиотеки только с скомпилированном виде подключаются, там нет уже макроподстановок

я давно - давно так обжегся в МТ4, когда еще не было property strict , объявил в библиотеке в глобальной видимости переменную, а потом при подключении к эксперту  объявил переменную с таким же именем - долго искал почему у меня код в разных местах работал по разному

ЗЫ: глобальную переменную в библиотеке можно попробовать объявить - она должна быть доступна в основном коде

ЗЫ: можно property strict попробовать отключить

 

Всем спасибо за советы! Было принято решение советником стартовать индикатор, который импортирует библиотеку. Обмен данными через ресурсы.


Возник другой вопрос: MQLInfoInteger( MQL_LICENSE_TYPE ) работает в библиотеке или только в советниках?

 
Oleksii Chepurnyi:

Возник другой вопрос: MQLInfoInteger( MQL_LICENSE_TYPE ) работает в библиотеке или только в советниках?

Работает (с поправкой, что LICENSE_TIME не реализовано нигде).

 

видимо можно проверить только через "псевдоиндикатор" который сам использует библиотеку.

если библиотеки нет, то индикатор не запустится, зато ошибка iCustom не вызывает выгрузку эксперта в отличии от обращения к несуществующей функции или переменной.

 
Stanislav Korotky:

Работает (с поправкой, что LICENSE_TIME не реализовано нигде).

Спасибо!
Maxim Kuznetsov:

видимо можно проверить только через "псевдоиндикатор" который сам использует библиотеку.

если библиотеки нет, то индикатор не запустится, зато ошибка iCustom не вызывает выгрузку эксперта в отличии от обращения к несуществующей функции или переменной.

Да, сейчас именно так уже реализовано :)

Причина обращения: