Скачать MetaTrader 5

Объявление строкового массива, нужна помошь, однако..

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Не поставляешь сигналы и не продаешь приложения? Не проблема, заработать могут все!
Александр
8468
Александр 2008.10.21 19:25 

Объявлялся в советнике строковый массив такого типа:

string ma[]={"a","b","c"};
и в общем-то вопросов к нему не было до тех пор, пока не захотелось вынести эти
"a","b","c"

во внешние переменные эксперта, чтобы удобнее было без перекомпиляции менять эти параметры, на лету.


Создал внешние bool-переменные,

extern bool    a = false;  // Флаг запуска
extern bool    b = false;  // Флаг запуска
extern bool    c = false;  // Флаг запуска

отталкиваясь от флага каждой переменной -

if (a) {abc="\"a\""+Separator;}
if (b) {abc=abc+"\"b\""+Separator;}
if (c) {abc=abc+"\"c\""+Separator;}

она учитывается иль не учитывается при формировании

string abc

, которую намеревался потом впихнуть в массив (такая мысль была шальная). Однако компилятор сказал, что так делать нельзя.

---

как бы решить задачку?

Vadim Zhunko
5226
Vadim Zhunko 2008.10.21 22:36  

Вот так может быть:

string Array[];
ArrayResize (Array, 5);
Array[0]= abc1;
Array[1]= abc2;
Array[2]= abc3;
....
Александр
8468
Александр 2008.10.22 11:37  
да, рановато я пожалуй полез в массивы, дебри это для меня еще (пока)..
Александр
8468
Александр 2008.10.22 15:28  
Zhunko >>:

Вот так может быть:

Вадим, если не затруднит, прокомментируйте свой код, что-то я не совсем понимаю о чем там речь

Vadim Zhunko
5226
Vadim Zhunko 2008.10.22 17:07  

Это образно...

Понял, что переменную "abc" надо поместить в массив.

Александр
8468
Александр 2008.10.22 17:15  

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

А вот с ресайзом проблемка, нужно задавать размерность, а это ж её еще нужно знать/посчитать..

В самом первом варианте, который сейчас и работает, размерность вычисляется компилятором при инициализации

---

в общем голова уже опухла от всего этого

Александр
8468
Александр 2008.10.22 18:54  
нет, ну реально, неужто нельзя как-то переменную впихнуть в массив?
Rustamzhan Salidzhanov
7684
Rustamzhan Salidzhanov 2008.10.22 19:52  
почему нельзя, можно
Сергей Ковалев
2607
Сергей Ковалев 2008.10.22 21:20  

Лично я не понял проблемы.

Значение любой стринговой переменной можно явно присвоить элементу стрингового массива.

Если есть переменная per, её значение = asdfgh_111_hgfdsa, то для записи в элемент массива с индексом 17 нужно написать:

string Mas[100];

Mas[17] = per;

Количество символов в строке ограничено и не должно превышать 62 штуки.

Ну, и.. нет проблем сделать исходную per экстерновой. И задавать её прямо на панели эксперта.

--

Или я не понял вопрос?

Александр
8468
Александр 2008.10.22 21:36  
SK. >>:

--

Или я не понял вопрос?

Вопрос заключается в следующем:

имеем в советнике следующий объявленный массив данных

string ma[]={"a","b","c"};

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


Что хотелось бы: иметь возможность в настройках советника менять входные данные.

Я же попытался, судя по всему, сделать всё это через одно место..

Ihor Herasko
9064
Ihor Herasko 2008.10.22 21:44  

А что мешает сделать так?

extern string a = "a";
extern string b = "b";
extern string c = "c";

string ma[3];

int init()
{
 ma[0] = a;
 ma[1] = b;
 ma[2] = c;
}
12345
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий