新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1416

 
ANDREY:

谢谢你的澄清。

顺便说一下,我去掉了黄色加号,编译器出现了错误。所以他们在这整个建设中发挥了一些作用。但是....,我还是不明白。当只通过使用蓝色加号来进行字符串加法 时,需要它们做什么。从你的解释来看,如果我没弄错的话,这个建筑中没有其他东西.....。

而关于字符串(i)...关于类型转换 ....对我来说,这或多或少是清楚的。不清楚的是,.....string是一个变量类型的名称。i是一个计数器变量,表示一个数组元素的索引 还有,为什么i在括号里()? 到目前为止,我一直认为括号是一种函数特性。例如,Print( )。在一些函数中,不同的数据被放在小括号里。 但是小括号是什么意思,或者小括号对i和整个结构--string(i)有什么作用?乍一看,似乎之前i 变量的类型是int(整数),然后你把i变量的类型从int改为string(字符串) 但包含 的圆括号并没有让我这么想。

谢谢你的解释。

这不是一个类型转换,而是i变量中的一个值的转换

你经常可以这样看待它

eStr+=(string)i+": "+DoubleToString(eArray[i],4)+", ";
 
Alekseu Fedotov:

这不是一个类型转换,而是对在变量i中发现的值进行转换

更多的时候可以被看作是


谢谢你的提示。i 变量的价值转换。你在我的代码中是什么意思?
1.i
是0,在(字符串)i+ 之后 变成1,然后是2,以此类推,直到30。为什么我需要(string)而不是只需要i++?
2.i 变量的类型是int,在(string)i+ 之后,它 变成了 string?嗯,这不是数值转换,而是变量类型的转换。


还有....也许你可以给我解释一下黄色的加号是什么。或者它们是用来做什么的?

 eStr+=string(i)+": "+DoubleToString(eArray[i],4)+", ";

谢谢你的解释。

 
ANDREY:

谢谢你的提示。转换变量i 的值。我的代码中是什么意思?
1.i
是0,在(字符串)i+ 之后 变成1,然后是2,以此类推,直到30。为什么我需要(string)而不是只需要i++?
2.i 变量的类型是int,在(string)i+ 之后,它 变成了 string?嗯,这不是数值转换,而是变量类型的转换。


还有....也许你可以给我解释一下黄色的加号是什么。或者它们是用来做什么的?

谢谢你的解释。

类型转换或显式类型转换是相等的。文件中使用了这两种表达方式。你正确地注意到阿列克谢的告诫,它是类型转换,...

进一步说:我们有几条线

  1. i为int类型,被明确转换为字符串类型(让它为0)。
  2. ": "
  3. eArray[i]通过DoubleToString函数 转换为字符串类型(让它成为1.6251)。
  4. ", "

每次迭代时,i的值在循环中被递增,并从那里进入这个字符串......

请注意,在这些字符串之间要加上 "pluses"。这些加号将这些线加起来变成一条线。结果是字符串 "0: 1.6251",然后通过操作符+=将这个字符串追加到eStr变量中。


 
ANDREY:

谢谢你的提示。转换变量i 的值。我的代码中是什么意思?
1.i
是0,在(字符串)i+ 之后 变成1,然后是2,以此类推,直到30。为什么我需要(string)而不是只需要i++?
2.i 变量的类型是int,在(string)i+ 之后,它 变成了 string?嗯,这不是价值转换,而是变量类型的转换。


还有....也许你可以给我解释一下黄色的加号是什么。或者它们是用来做什么的?

谢谢你的解释。

用黄色加号形成一个字符串(文本),用Print() 输出。

你可以用StringConcatenate()做同样的事情

eStr+=StringConcatenate((string)i,": ",DoubleToString(eArray[i],4),", ");
 
Alekseu Fedotov:

你用黄色加号组成一个字符串(文本),用Print() 输出。

你可以用StringConcatenate()做同样的事情

我不建议使用这个函数,因为它在MQL5中的工作方式与在MQL4中完全不同。因此,当你切换到MQL5时,可能很难理解它。


但也许我错了...

mql4

string  StringConcatenate( 
   void argument1,         // первый параметр любого простого типа  
   void argument2,         // второй параметр любого простого типа 
   ...                     // следующий параметр любого простого типа 
   );

mql5

int  StringConcatenate( 
   string&  string_var,   // строка для формирования 
   void argument1         // первый параметр любого простого типа  
   void argument2         // второй параметр любого простого типа 
   ...                    // следующий параметр любого простого типа 
   );

正如你所看到的,在mql5中,它非常类似于字符串的简单加法。

 eStr+=string(i)+": "+DoubleToString(eArray[i],4)+", ";
 StringConcatenate(eStr, i, ": ", eArray[i], ", ");
而类型转换在这个函数中进行,没有任何额外的顾虑。
 
Alexey Viktorov:

我不建议使用这个函数,因为它在MQL5中的工作方式与在MQL4中不同。因此,当你切换到MQL5时,可能很难理解

谢谢你提供的宝贵信息

 
Alekseu Fedotov:

你用黄色加号组成一个字符串(文本),用Print() 输出。

你可以用StringConcatenate()做同样的事情

谢谢你为我提供的新信息

 
ANDREY:

谢谢你提供的宝贵信息

我对我匆忙写的信息进行了补充。

大家已经很清楚,你对每一个向你解释的人是多么的感激。不要用单独的信息拉长话题...

 
Alexey Viktorov:

下一篇: 我们有几条线

  1. i为int类型, 明确 为字符串类型(设为0)。
  2. ": "
  3. eArray[i]通过 DoubleToString转换 为字符串类型(让它成为1.6251)。
  4. ", "




为什么1.6251不能像i 那样明确地被 投到字符串类型中?在我看来,它更短,而且节省了计算资源.....。

谢谢你的解释

 
Alexey Viktorov:

我在我的帖子中草草写了一些补充。

大家已经很清楚,你对每一个向你解释的人是多么的感激。不要用单独的信息拉长话题...

好的。然后,你的每一个回复都会被默认为感谢(将被存储在一个变量中:):):)。)....,如果你不介意的话。