来自一个 "傻瓜 "的问题 - 页 124

 
MetaDriver:

好了,我走了。:) 我也在航站楼外。

检查过的元素 - 试图使用ArrayResize(...)。

从 "试图使用 "这句话来看,你很可能会得到一个 "数组是静态 "类型的错误。好吧,让我们检查一下。
 
MetaDriver:

尝试使用ArrayResize(...)是很基本的。

崎岖不平的)更简单
 

好吧,这里有错误。Metaquotes的公民们,请注意了!!!。

   int j[1];
   Alert("Размер массива из одного элемента без списка инициализации = ", sizeof(j), "   Массив динамический? ", ArrayIsDynamic(j));

   int k[];
   Alert("Размер структуры для динамического массива = ", sizeof(k), "   Массив динамический? ",ArrayIsDynamic(k));
   
   int g[] = {0};
   Alert("Размер массива из одного элемента со списком инициализации = ", sizeof(g), "   Массив динамический? ",ArrayIsDynamic(g));
错误的本质:当一个初始化列表(int g[] = {0}; )被用于一个数组时,sizeof(g)函数给出了struct MqlArrayObject的大小(为一个动态数组创建)。
Документация по MQL5: Основы языка / Операции и выражения / Другие операции
Документация по MQL5: Основы языка / Операции и выражения / Другие операции
  • www.mql5.com
Основы языка / Операции и выражения / Другие операции - Документация по MQL5
 
220Volt:
错误的本质:当一个初始化列表(int g[] = {0}; )被用于一个数组时,sizeof(g)函数打印了struct MqlArrayObject的大小(为一个动态数组创建)。
而与此同时,ArrayIsDinamic()却说这个数组是静态的?
 
MetaDriver:
而ArrayIsDinamic()说,数组是静态的?

j - 静态

k - 动态

g - 静态

 
220Volt:
....

g - 静态

太可怕了,写给Sportlotto吧,我会支持的。
 
220Volt:

好吧,这里有错误。

错误的本质:当初始化列表(int g[] = {0}; )被用于一个数组时,函数sizeof(g)给出了struct MqlArrayObject(为动态数组创建)的大小

谢谢你的留言,这个错误已经被纠正了。
 
mql5:
谢谢你的留言,错误已纠正。

伊利亚斯!!!

它究竟是如何被修复的? 在声明 中被解析的数组 是否变得动态(可调整大小)?

还是完全静止?

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
MetaDriver:

还是完全静止?
当然,是静态的。
 
Renat:
当然,这是一个静态代码。

哦,现在我明白了。

Renat,我有一个长期的建议,就是关于这个问题。 请为数组做一个命名的类型,至少对于静态数组(所有其他类型已经有了)。

也就是说,你可以声明,例如:typedef Int8 = int[8]; 。

这个问题的代价是可以将一维(2,3维)数组,也就是更大尺寸数组中的子数,传递到函数中。

也就是说,如果你进一步声明:Int8 arr[...],你可以将arr[i] 传入函数func(Int8 &a) {...}

目前,我不得不在mql5中执行很多额外的操作,并写了很多难看的代码,因为不可能把子数传到函数中。

我不写serviced,因为这个话题在我看来是有争议的。

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.