Ошибки, баги, вопросы - страница 726

 

Что означает подпись на переменной (элемент строкового массива)

Expression cannot be evaluated ?

Массив в классе.  Массив динамический.

 
sergeev:

Что означает подпись на переменной (элемент строкового массива)

Expression cannot be evaluated ?

Массив в классе.  Массив динамический.

Выражение не может быть разобрано.

Приведите кусок кода, пожалуйста.

 
Renat:

Выражение не может быть разобрано.

Приведите кусок кода, пожалуйста.


#define CHART_LPROP     43
#define CHART_DPROP     6
#define CHART_SPROP     1

//------------------------------------------------------------------ class CTmpChart
class CTmpChart
{
public:
        // свойства
        long lprm[CHART_LPROP+3];
        double dprm[CHART_DPROP];
        string sprm[CHART_SPROP+1];

......
}

//------------------------------------------------------------------ Reset
void CTmpChart::Reset() // сброс всех значений
{
	// сбрасываем свойства
	string nul=NULL; 
	for (int i=0; i<CHART_LPROP+3; i++) lprm[i]=-1;
	for (int i=0; i<CHART_DPROP; i++) dprm[i]=-1;
	for (int i=0; i<CHART_SPROP+1; i++) sprm[i]=nul; // пришлось сделать так, иначе код слетает на присвоении sprm[i]=NULL 
}

//------------------------------------------------------------------ Copy
void CTmpChart::Copy(CTmpChart &a)
{
        for (int i=0; i<CHART_LPROP+3; i++) lprm[i]=a.lprm[i];
        for (int i=0; i<CHART_DPROP; i++)   // на этом цикле через раз (поймать стабильный глюк не получилось) терминал закрывается как процесс
          dprm[i]=a.dprm[i];
        for (int i=0; i<CHART_SPROP+1; i++) // на этом цикле бывает два варианта, 1) при подходе на эту строку цикла будет креш, 
          sprm[i]=a.sprm[i]; // 2) если цикл доживает к этой строке , то на ячейке sprm[i] (не из а.) - будет "Expression cannot be evaluated" и тоже креш
}

все массивы предварительно Reset.

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

Этот баг только на 630/64

 

MQL5: Добавлен асинхронный метод посылки торговых запросов OrderSendAsync.

Новая функция будет дополнять прежнюю OrderSend, или полностью её заменит?
 
Yedelkin:
Новая функция будет дополнять прежнюю OrderSend, или полностью её заменит?

Дополнять. На текущий момент она имеет такое определение


 
Rosh:

Дополнять.

Отлично. В Справочнике временно информации пока нет.
 
Rosh:

 На текущий момент она имеет такое определение

В описании надо бы сразу поправить: вместо "Функция OrderSend() предназначена для..." надо "Функция OrderSendAsync() предназначена для...". И далее ещё в кодовом описании.

 
Новая функция не повлияет на правила соревнования.
 
Rosh:

Дополнять. На текущий момент она имеет такое определение...

Помню Ренат дал отказ, и всё же отнеситесь к моему вопросу посерьёзней:

будет ли в будущем упрощена схема определения, какой ордер вызвал срабатывание OnTrade ?

особенно вопрос актуален в свете введения асинхронности новой функции OrderSendAsync().

 
Renat:

Тут поднялся вопрос по FileReadArray, и в объяснениях я указал что у неё есть фича считывать не тот тип данных что был сохранён.

отсюда вопрос: как эта фича стыкуется с безопасностью языка?

если нормально, то почему бы не сделать стандартную функцию перевода битного поля  в нужный тип?

В общем или наведите порядок и уберите эту фичу или дайте людям реализовывать длинную арифметику.

Вот пример этой фичи через файл с протиранием винта:

double arr[]; ulong arr1[]; 
//+------------------------------------------------------------------+
void OnStart()
  {   
   ArrayResize(arr,1); arr[0]=123.2564;
   WriteArrayFile();
   ReadArrayFile();
   Print(arr1[0]);
  }
//+------------------------------------------------------------------+
void WriteArrayFile(string folder="Calculator")
  {
   int han=FileOpen(folder+".dat",FILE_WRITE|FILE_BIN);
   if(han!=INVALID_HANDLE)
     {      
      FileWriteArray(han,arr);              
      FileClose(han);
     }
  }
//+------------------------------------------------------------------+
void ReadArrayFile(string folder="Calculator")
  {
   int han=FileOpen(folder+".dat",FILE_READ|FILE_BIN);
   if(han!=INVALID_HANDLE)
     {      
      FileReadArray(han,arr1);             
      FileClose(han);
     }
  }
//+------------------------------------------------------------------+