我的方法。核心是引擎。 - 页 99

 
Реter Konow:
简而言之,每当你改变一个用户参数值时,这个值应该被转换为联盟的一个变量值,并立即保存到一个共享字节数组中,然后你可以将其转换为uint并写入资源中。

你必须在联合结构里面有一个用户参数。当你改变参数时,该结构将随着int数组的同时改变而改变。

union c
{
  uint i[2];
  long width;
}cc;
 
cс.width = 200;

i[2]是一个用户资源,由另一个程序读取。

只要有一行cc.width = 200,你就会改变。

  1. 负责宽度的参数。
  2. 包含该参数的结构。
  3. 另一个程序正在读取的资源的数组。

而且这里没有转换和复制,只有映射。
 
Vasiliy Sokolov:


我可以改变连接属性文件中的封装函数,并将每个可用的值转换为联盟中的相应变量,并在飞行中制作一个字节数组。但是,也需要传递的文本值,使用StringToChar() 转换为字节数组。

然而,这消除了使用联盟的意义。毕竟,如果我无论如何都 要使用StringToChar(),为什么不把所有东西组合成一个字符串,然后StringToChar()把整个字符串翻译成字节

 
Vasiliy Sokolov:

你必须在联合结构里面有一个用户参数。当你改变参数时,该结构将随着int数组的同时改变而改变。

i[2]是一个用户资源,由另一个程序读取。

只要有一行cc.width = 200,你就会改变。

  1. 负责宽度的参数。
  2. 包含该参数的结构。
  3. 由第三方程序读取的资源的数组。

而且这里没有转换或复制,只是映射。

瓦西里,你忘了我们说的是双向交流。在我的引擎中,我可以把一切都与工会联系起来,但我不能对用户的代码负责。我只能想出包装器并把它们放在插件中。

哪里能保证用户也会使用工会?因此,当他调用我的包装函数时,我必须自己取他的值,并从他的插件文件中的我的联合体中转换为我的一个变量。

 
Реter Konow:

我可以改变连接属性文件中的封装函数,并将每个可用的值转换为联盟中的相应变量,并在飞行中制作一个字节数组。然而,文本值也必须被传递,必须使用StringToChar() 转换为字节数组。

然而,这消除了使用联盟的意义。毕竟,如果我无论如何都 要使用StringToChar(),为什么不把所有东西组合成一个字符串,然后StringToChar()把整个字符串翻译成字节

因为你会有双重解析。你会把所有的东西都转换为字符串,这是很慢的。然后你把字符串解析成一个数组,这非常快。然后你把它组装成一个字符串--那是非常快的。然后你把字符串解析成正确的类型--这非常慢。

 
Реter Konow:

好的,但是文本呢?

它们必须通过StringToChar() 转换为字节。你不能使用工会,对吗?

是的,你必须翻译它们,但这很快速,不像解析那样。

 

比如说。

这里是连接属性 插件文件中的封装函数。

string E_Last_10_bars_2_Close_price(string n = rare_value,  int Property = -1){return(GET_N_SET(11,n,Property));}

这个函数是这样调用的。

E_Last_10_bars_2_Close_price(Close[2]);

也就是说,用户在一个表格单元 中设置了Close[2] 的值。

Close[2] - это значение дабл.

因此,在他的程序中的包装函数里面,我可以把值(Close[2])表示为一个char数组。

但是,在同一个单元格中,用户可以发送值 "Hello!:)",然后该怎么办?

E_Last_10_bars_2_Close_price("Привет! :)");
 
 

哦,彼得,你从错误的编程语言开始。你应该学到一些不严格打字的东西。

总的来说,我理解你,你在MQL的基础上发明了自己的非类型化语言。你通过使用字符串绕过了其严格的类型。这是个演习!

 
Vasiliy Sokolov:

哦,彼得,你从错误的编程语言开始。你应该学到一些不严格打字的东西。

总的来说,我理解你,你在MQL的基础上发明了自己的非类型化语言。你通过使用字符串绕过了其严格的类型。这是个演习!

是的,))。有马的举动!

 

如果你使用一个表格,你必须决定你是否希望表格中的数据是严格的数字或文本。如果是文本,你就传入字符串。如果它是真实的,你的函数必须看起来像这样。

string E_Last_10_bars_2_Close_price(double n,  int Property = -1){return(GET_N_SET(11,n,Property));}