Как загрузить ресурсы в CodeBase? При отправке кода в CodeBase не удается подгрузить ресурсы , тестер конечно ругается.

 

Тест CodeBase ругается


MQL5\Indicators\YZ_Book_All_PriceCH.mq5(22,11) : error 310: resource file 'SpinDec.png' not found

MQL5\Indicators\YZ_Book_All_PriceCH.mq5(23,11) : error 310: resource file 'SpinInc.png' not found


при этом

#resource "SpinDec.png"; // исходные файлы реально BMP , но загрузчик в CodeBase не поддерживает BMP
#resource "SpinInc.png";
//#resource "SpinDec.bmp";  
//#resource "SpinInc.bmp";

само обращение выглядит так

      if(rb1[i]<rs1[i])
         BitmapLabelSetImage(0,sSymbol[i]+"prcsbDirect",0,"YZ_Book_All_PriceCH.ex5::SpinDec.png");
      if(rb1[i]>=rs1[i])
         BitmapLabelSetImage(0,sSymbol[i]+"prcsbDirect",0,"YZ_Book_All_PriceCH.ex5::SpinInc.png");


//+------------------------------------------------------------------+
//| Устанавливает новую картинку для объекта "Графическая метка"     |
//+------------------------------------------------------------------+
bool BitmapLabelSetImage(const long   chart_ID=0,      // ID графика
                         const string name="BmpLabel", // имя метки
                         const int    on_off=0,        // модификатор (On или Off)
                         const string file="")         // путь к файлу
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- установим путь к файлу с картинкой
   if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,on_off,file))
     {
      Print(__FUNCTION__,
            ": не удалось загрузить картинку! Код ошибки = ",GetLastError());
      return(false);
     }
//--- успешное выполнение
   return(true);
  }


На моей машине эти файлы находятся там же где и индикатор, и конечно у меня индикатор работает.

Подскажите пожалуйста, как загрузить ресурсы в CodeBase ?

 

И потом можно будет этот файл сохранить программно на компе пользователя.

 
Alexey Viktorov:

И потом можно будет этот файл сохранить программно на компе пользователя.

Этот пункт меню создает  действие результатом которого в исходник вставляется эта строка.

#resource "SpinInc.png";

ну я и так вставил ее.


Как загрузить эти файлы в CodeBase ?

 
Yuriy Zaytsev:

Этот пункт меню создает  действие результатом которого в исходник вставляется эта строка.

ну я и так вставил ее.


Как загрузить эти файлы в CodeBase ?

Ну да, чукча мало мало ошибка давала, вместо ура караул кричала…

Вставить файл в виде бинарного массива. Потом в ините проверить существование файла и если нету, то сохранить его в папку филес. После чего его можно будет подключить в виде ресурса программно.

ps; Вот нашёл свою попытку это сделать, но сначала что-то не получалось, потом я сделал файл для сообщения о баге… оказалось что нет никакого бага… а файл так и остался.

Этот скрипт создаёт картинку Российского флага и помещает его в левый верхний угол графика.

Документация по MQL5: Файловые операции / FileIsExist
Документация по MQL5: Файловые операции / FileIsExist
  • www.mql5.com
[in] Флаг, определяющий местоположение файла. Если common_flag=FILE_COMMON, то файл находится в общей папке всех клиентских терминалов \Terminal\Common\Files. В противном случае файл находится в локальной папке. Проверяемый файл может оказаться поддиректорией. В этом случае функция FileIsExist() возвратит false, а в переменную _LastError будет...
Файлы:
Test_bag.mq5  18 kb
 
Alexey Viktorov:

Ну да, чукча мало мало ошибка давала, вместо ура караул кричала…

Вставить файл в виде бинарного массива. Потом в ините проверить существование файла и если нету, то сохранить его в папку филес. После чего его можно будет подключить в виде ресурса программно.

ps; Вот нашёл свою попытку это сделать, но сначала что-то не получалось, потом я сделал файл для сообщения о баге… оказалось что нет никакого бага… а файл так и остался.

Этот скрипт создаёт картинку Российского флага и помещает его в левый верхний угол графика.

Спасибо дружище, получилось!

 
Yuriy Zaytsev:

Спасибо дружище, получилось!

Я рад что всё получилось. Только один вопрос: Что такое «не отрывать чарты»? )))
 
Alexey Viktorov:
Я рад что всё получилось. Только один вопрос: Что такое «не отрывать чарты»? )))

Да, чудесный способ обхода тестера в CodeBase, еще раз большое спасибо.

Странно , что BMP категорически не желают принимать. Впрочем после переименования в PNG, тоже не желают загружать.

И если Ваш проект содержит пару десятков BMP картинок, будет немного утомительно их перегонять в unsigned char

Опечатка, буква "К" очень часто не ставится в слове "открывать" , видимо динамика набора символов такая, именно у меня :-)))

 
Alexey Viktorov:
Я рад что всё получилось. Только один вопрос: Что такое «не отрывать чарты»? )))

Если поставить в положение Открыть , то посадив индикатор на первый символ остальные откроются сами, если не открыты.

Правда , увы , нужно доработать немного, при переходе на другой таймфрейм, чарты будут снова отрываться.

Индикатор кстати работает ? он правда не для валютного рынка.

 
Yuriy Zaytsev:

Да, чудесный способ обхода тестера в CodeBase. Странно , что BMP категорически не желают принимать. Впрочем после переименования в PNG, тоже не желают загружать.

Опечатка, буква "К" очень часто не ставится в слове "открывать" , видимо динамика набора символов такая, именно у меня :-)))

Это не способ обхода, а стандартный описанный, кажется в документации, метод работы с файлами. Так-же можно передать любой файл для оптимизации в облаке. А про букву К я догадался. Просто пошутил с вопросом.
 
Alexey Viktorov:
Это не способ обхода, а стандартный описанный, кажется в документации, метод работы с файлами. Так-же можно передать любой файл для оптимизации в облаке. А про букву К я догадался. Просто пошутил с вопросом.
да я понимаю что шутил :-)))
 
Alexey Viktorov:
Это не способ обхода, а стандартный описанный, кажется в документации, метод работы с файлами. Так-же можно передать любой файл для оптимизации в облаке. А про букву К я догадался. Просто пошутил с вопросом.

Мне бы еще сделать что бы скрипт , который читает с сайта доход ру  данные по дивидендам, вызывался при старте. К сожалению из индикатора ,  нельзя вызывать что то вроде.

int res=WebRequest("GET",url,cookie,NULL,500,post,0,result,headers);

Можно наверно вызывать из эксперта запрос WebRequest , затем вызывать сам индикатор и просто выгружать эксперт.

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