Не присваиваются значения элементам массива

 

Бредовая проблема:


....

double Buffer[];

....

int start() {

...

for(i = 0; i < limit; i++)
{
Buffer[i] = Volume[i];
Print (Volume[i]);
Print (Buffer[i]);
}

...


На выходе получаем пары типа

1678

0


Это я с похмелья накосячил где-то, или глюк платформы?

 
Buffer инициализирован?
 

ArrayResize(Buffer,limit) - не пробовал?

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

 
DrShumiloff >>:

Бредовая проблема:


....

double Buffer[];

....

int start() {

...

for(i = 0; i < limit; i++)
{
Buffer[i] = Volume[i];
Print (Volume[i]);
Print (Buffer[i]);
}

...


На выходе получаем пары типа

1678

0


Это я с похмелья накосячил где-то, или глюк платформы?

Не выделена память под массив Buffer[] ( такое описание - Buffer[]  - это только лишь сигнал компилятору, что за переменной Buffer будет скрываться массив - в терминах С это указатель на область памяти, в терминах С++ эта область памяти (пока не известного размера и которую нужно выделять динамически) будет трактоваться как массив чисел типа дабл.

ArrayResize(Buffer,limit) выделит память, но не уверен, что проинициализирует массив нужными значениями - то есть, в значениях может оказаться все, что угодно. Потому для инициализации нужно еще и ArrayInitialize( Buffer, value);

Успехов.

 

Да, точно. Так и есть.

Добавил в init строки:

ArrayResize(Buffer, Bars);

ArrayInitialize(Buffer, 0);

и заработало.

Всем спасибо.

 
//+------------------------------------------------------------------+ 
int init() { SetIndexBuffer(0,Buffer); return(0); }
//+------------------------------------------------------------------+ 
Причина обращения: