![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В MQL нет eval оператора, это компилируемый язык программирования.
Идея превращения строки в код и его исполнение на лету - не реализуемая идея средствами MQL.
Если необходимо связать сущность с неким значением или текстовой строкой уникально идентифицирующую ее - смотрите в сторону "Ассоциативных массивов".
Благодарю но как то решал раньше
double MyBuf[];
struct Buffer
{
double buf[];
};
int OnInit()
{
//--- indicator buffers mapping
Buffer MyBuffer[];
ArrayCopy(MyBuf,MyBuffer);
for (int s = 1;s <= SymbolsTotal(false);s++)
{
SetIndexBuffer(s,MyBuf[s].buf);
}
}
//---
return(INIT_SUCCEEDED);
}
ошибка компиляции 'buf' - struct or class type expected 12 36
'Buf' - тип структуры или типа, ожидаемый
как быть?
покажите код, у вас в сообщении разные имена Buf и buf
Buf и buf это с переводчика
код вверху
int OnInit()
{
//--- indicator buffers mapping
Buffer MyBuffer[];
ArrayCopy(MyBuf,MyBuffer);
for (int s = 1;s <= SymbolsTotal(false);s++)
{
SetIndexBuffer(s,MyBuf[s].buf);
}
}
//---
return(INIT_SUCCEEDED);
}
ошибка компиляции 'buf' - struct or class type expected 12 36
'Buf' - тип структуры или типа, ожидаемый
как быть?
А-а-а-а-ааааа! Вынос мозга!
Sergey Dzyublik:
Если необходимо связать сущность с неким значением или текстовой строкой уникально идентифицирующую ее - смотрите в сторону "Ассоциативных массивов".
Не-а. Случай тяжелый. Ассоциативный массив здесь не поможет.
да, увидел...
ArrayCopy(MyBuf,MyBuffer);
массивы жеж разные, так нельзя копировать
буфер надо объявлять в глобальных переменных, а не в ините... (или он дальше онинита не пойдет?)
вот примерно так
double MyBuf[];
struct Buffer
{
double buf[];
};
int OnInit()
{
//--- indicator buffers mapping
Buffer MyBuffer[];
ArrayCopy(MyBuf,MyBuffer);
for (int s = 1;s <= SymbolsTotal(false);s++)
{
SetIndexBuffer(s,MyBuf[s].buf);
}
}
//---
return(INIT_SUCCEEDED);
}
ошибка компиляции 'buf' - struct or class type expected 12 36
'Buf' - тип структуры или типа, ожидаемый
как быть?
нашел ошибку
struct Buffer
{
double buf[];
};
Buffer MyBuf[];//ошибка исправленна
int OnInit()
{
//--- indicator buffers mapping
for (int s = 1;s <= SymbolsTotal(false);s++)
{
SetIndexBuffer(s,MyBuf[s].buf);
}
}
//---
return(INIT_SUCCEEDED);
}
и про ArraySize забыли
SetIndexBuffer(s, BIG[s].buf);
эта конструкция не работает на этом этапе
2017.03.15 14:24:26.295 Custom indicator USDCHF,H1: removed
Invalid array access (Недопустимый доступ к массиву)
MyBuf[s].buf[] -Expression could not be evaluated (Выражение не может быть оценено)размер массива указан? (перед циклом)