错误、漏洞、问题 - 页 1513 1...150615071508150915101511151215131514151515161517151815191520...3184 新评论 [删除] 2016.02.19 08:09 #15121 从性能的角度来看,哪个更好,像这样。 template <typename T> void SetProperty( const int id, const T Value, const int Modifier = 0 ) const { const string sType = typename(T); if (sType == "double") ::ObjectSetDouble(this.Chart, this.Name, id, Modifier, (double)Value); else if (sType == "string") ::ObjectSetString(this.Chart, this.Name, id, Modifier, (string)Value); else ::ObjectSetInteger(this.Chart, this.Name, id, Modifier, (long)Value); return; }还是通过重载方法? coderex 2016.02.19 08:24 #15122 zaskok3:从性能的角度来看,哪个更好,像这样。还是通过重载方法? 你不会看到在性能方面有任何差别--两种解决方案都有它们的位置 :) [删除] 2016.02.19 09:17 #15123 coderex: 你不会看到在性能方面有什么不同--两种解决方案都有其用武之地 :)谢谢你!另一个问题。结构中的恒定字段的意义是什么?这样的结构甚至不能被传递(编译器发誓或堆栈溢出)?#property strict struct STRUCT { const int Num; STRUCT( const int iNum = 0 ) : Num(iNum) // Если затереть " = 0", то будет ошибка компиляции: 'STRUCT' - wrong parameters count { } /* // Так получается обойти ошибки компиляции, но на этапе выполнения: Stack overflow STRUCT operator = ( STRUCT &Struct ) { STRUCT Res(Struct.Num); return(Res); } */ }; const STRUCT GetStruct( const int Num = 0 ) { STRUCT Struct(Num); return(Struct); // 'return' - not allowed for objects with protected members or inheritance } void OnStart( void ) { Print(GetStruct(1).Num); return; } 为结构重载赋值运算符 实际上是不可能的(由于无限递归,它将是有意义的)。那么,为什么要在结构中设置恒定字段呢? Ivan 2016.02.19 09:55 #15124 Karputov Vladimir: 在Windows 10 x64上,在1241版本上从未遇到过这个错误。在 "展开 "命令之后,图形窗口完全展开,没有任何洞。你可能在你的操作系统内改变了一些设置(也许你喜欢修剪你的操作系统的默认值或清理注册表或类似的东西...)。当用鼠标拖动玻璃时,在这一点上按下 "Shift "或 "Ctrl "或 "Alt"。我最好的建议是给serviceDesk写信,提供详细的描述,并附上自己的代码(显示刻度)和屏幕截图。>> 可能你改变了你的操作系统内部的一些设置(也许你热衷于削减你的操作系统的标准功能,或注册表清理,等等)。我不喜欢那种东西,系统是干净的>> 在这里,我可以用详细的描述给你建议,用你的代码(显示抽搐),用截图给ServiceDesk做一个申请。我认为这个分支是一个很好的例子。 [删除] 2016.02.19 10:46 #15125 如果我使用#include将一个包含类似内容的mqh-文件纳入指标。int GetIndicatorBuffers( void ) { return(indicator_buffers); // 'indicator_buffers' - undeclared identifier }在指标本身的编译阶段没有错误。但它与mqh单独出现(见上文)。我怎样才能在MT4中找到这个属性指标的值,以便编译器不会在插入的mqh中抱怨不止一次? Igor Volodin 2016.02.19 14:57 #15126 我正在努力确保应用程序在MQL5和MQL4中的操作是相同的。 我怀疑在MQL4中引入sinput 变量时,他们忘了在语言中添加ParameterSetRange()和ParameterGetRange()函数。它们出现在MQL4文档中的ParameterSetRange()和ParameterGetInput()-https://docs.mql4.com/basis/variables/inputvariables#sinput但编译器不会接受它们。不幸的是,如果没有这些函数,sinput变量的所有乐趣都会消失。 Input Variables - MQL4 Documentation docs.mql4.com Input Variables - MQL4 Documentation - MQL4 Documentation Koldun Zloy 2016.02.19 15:49 #15127 zaskok3:谢谢你!另一个问题。结构中的恒定字段的意义是什么?这样的结构甚至不能被传递(编译器发誓或堆栈溢出)? 为结构重载赋值运算符 几乎是不可能的(因为无限递归,所以会有意义)。那么,为什么要在结构中设置恒定字段呢?请享受。#property strict struct STRUCT { const int Num; STRUCT( const int iNum ) : Num( iNum ) { } STRUCT( const STRUCT& Struct ) : Num( Struct.Num ) { } }; const STRUCT GetStruct( const int Num = 0 ) { STRUCT Struct( Num ); return Struct; } //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { Print( GetStruct(1).Num ); } //+------------------------------------------------------------------+ [删除] 2016.02.19 16:23 #15128 Koldun Zloy:请享受。 直奔主题的感觉很好,谢谢你!我还在想,为什么我在重载构造函数之前没有自己弄清楚,而是进入了赋值运算符。毕竟,解决方案是显而易见的! [删除] 2016.02.20 18:22 #15129 将MT4终端文件夹移至另一个驱动器。以前我用便携式钥匙运行它。我这次也做了同样的事情。终端一下子就连接到了服务器。过去,当我移动一个终端文件夹 时,密码没有被保存--我不得不重新输入。现在(build 950),这种情况没有发生。这是否正常(而且只对我而言)? TheXpert 2016.02.20 18:32 #15130 zaskok3:从性能的角度来看,还有什么更好的方法呢? 当然是超载了。 1...150615071508150915101511151215131514151515161517151815191520...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
从性能的角度来看,哪个更好,像这样。
还是通过重载方法?
从性能的角度来看,哪个更好,像这样。
还是通过重载方法?
你不会看到在性能方面有什么不同--两种解决方案都有其用武之地 :)
谢谢你!另一个问题。
结构中的恒定字段的意义是什么?这样的结构甚至不能被传递(编译器发誓或堆栈溢出)?
为结构重载赋值运算符 实际上是不可能的(由于无限递归,它将是有意义的)。那么,为什么要在结构中设置恒定字段呢?
在Windows 10 x64上,在1241版本上从未遇到过这个错误。在 "展开 "命令之后,图形窗口完全展开,没有任何洞。
你可能在你的操作系统内改变了一些设置(也许你喜欢修剪你的操作系统的默认值或清理注册表或类似的东西...)。
当用鼠标拖动玻璃时,在这一点上按下 "Shift "或 "Ctrl "或 "Alt"。
我最好的建议是给serviceDesk写信,提供详细的描述,并附上自己的代码(显示刻度)和屏幕截图。
>> 可能你改变了你的操作系统内部的一些设置(也许你热衷于削减你的操作系统的标准功能,或注册表清理,等等)。
我不喜欢那种东西,系统是干净的
>> 在这里,我可以用详细的描述给你建议,用你的代码(显示抽搐),用截图给ServiceDesk做一个申请。
我认为这个分支是一个很好的例子。
如果我使用#include将一个包含类似内容的mqh-文件纳入指标。
在指标本身的编译阶段没有错误。但它与mqh单独出现(见上文)。
我怎样才能在MT4中找到这个属性指标的值,以便编译器不会在插入的mqh中抱怨不止一次?
我正在努力确保应用程序在MQL5和MQL4中的操作是相同的。
我怀疑在MQL4中引入sinput 变量时,他们忘了在语言中添加ParameterSetRange()和ParameterGetRange()函数。
它们出现在MQL4文档中的ParameterSetRange()和ParameterGetInput()-https://docs.mql4.com/basis/variables/inputvariables#sinput
但编译器不会接受它们。
不幸的是,如果没有这些函数,sinput变量的所有乐趣都会消失。
谢谢你!另一个问题。
结构中的恒定字段的意义是什么?这样的结构甚至不能被传递(编译器发誓或堆栈溢出)?
为结构重载赋值运算符 几乎是不可能的(因为无限递归,所以会有意义)。那么,为什么要在结构中设置恒定字段呢?
请享受。
请享受。
将MT4终端文件夹移至另一个驱动器。以前我用便携式钥匙运行它。我这次也做了同样的事情。
终端一下子就连接到了服务器。过去,当我移动一个终端文件夹 时,密码没有被保存--我不得不重新输入。现在(build 950),这种情况没有发生。
这是否正常(而且只对我而言)?
从性能的角度来看,还有什么更好的方法呢?