错误、漏洞、问题 - 页 1768 1...176117621763176417651766176717681769177017711772177317741775...3184 新评论 pavlick_ 2016.12.21 14:05 #17671 fxsaber: 这只有在傻瓜式的编译器中才能实现。你自己也知道。 C++编译器不会为你考虑清楚。#include <iostream>using namespace std;struct S{ S operator +(const S&) {cout << "operator +\n"; return S{};}}; S operator ""_s(const char*, size_t) {cout << "literal operator\n"; return S{};}int main(){ cout << "___literal concatenation example___\n"; S s = "sd"_s "sf"_s; cout << "___operator+ example___\n"; S s2 = "sd"_s + "sf"_s;} 产出。 符号连接的例子___。 字面运算符 运营商+例子___。 字面运算符 字面运算符操作员+ 正如你所看到的,在第二种情况下,operator+并没有被concatenation所取代(为literal创建,随后进行运行时添加)。编译器根本无法将其剪除,因为程序员有太多的可能性,这大大限制了优化的范围。当然,这不是MKL,它可能是不同的,但 "一个正常的编译器将为我做一切事情 "这个说法本身就是错误的。 Errors, bugs, questions 关于如何调用C#的dll所产生问题。 创建您自己的MetaTrader扩展(dll)。 fxsaber 2016.12.21 15:12 #17672 pavlick_: 当然,这不是MQL,它可能是不同的,但 "一个正常的编译器将为我做一切 "的说法是错误的。 好吧,既然MQL中没有这样的操作符,那么不设置任何与之相关的功能也是合乎逻辑的。我不打算争论编译器的问题,因为我根本就不是一个程序员。我只知道一点MQL的情况。 Artem Ponyavin 2016.12.22 08:19 #17673 厌倦了浪费时间和金钱:优化器挂在了最后一关。代理人什么都不做,一切都在授权阶段。日志中一片寂静。启用/禁用代理没有意义,优化 后一切从头开始。谁面临过这个问题?如何与之斗争? 附加的文件: opt1.png 44 kb opt2.png 96 kb opt3.png 88 kb A100 2016.12.23 22:08 #17674 魔术线在1024x768的屏幕分辨率下,MetaEditor\1495的操作顺序。打开所附文件将水平滚动滑块一直向右移动(如图所示)。在第三行点击/*12345*/。 进一步设置:服务/设置/常规/制表 4个字符 附加的文件: Test.mq5 2 kb [删除] 2016.12.24 11:25 #17675 当试图使用StringToInteger()将一个字符串转换 为数字时,如果字符串不包含数字,它将返回0而不出现错误(GetLastError() = 0)。如果输入参数包含一个字符串,并且用户错误地指定了数值--该函数将返回一个错误的值,并且不会显示错误。这很糟糕。此外,如果字符串包含一个不正确的数字表示,例如,5o(而不是50),该函数将返回值5而不产生错误。不仅如此,它不是0,而且该函数将字符串分解为5,这又是不正确的。亲爱的开发者,请改进该函数,增加错误代码,或者如果它不能解析字符串,则返回LONG_MAX值+错误,这样我们就可以确定哪里出了问题。你现在不能这样做。检查脚本代码。#property version "1.00"#property script_show_inputs//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+input string value="05";//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+void OnStart() { const long iValue=StringToInteger(value); Print("iValue = ",iValue,", lastError = ",GetLastError()); }//+------------------------------------------------------------------+ Errors, bugs, questions 使用自定义指标时的EA加速理论(功能-iCustom)。 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 Renat Fatkhullin 2016.12.24 11:38 #17676 实现你自己版本的功能--它应该不超过10分钟。我们不会改变系统功能的行为。 [删除] 2016.12.24 11:48 #17677 Renat Fatkhullin:实现你自己版本的功能--它应该不超过10分钟。我们不会改变系统功能的行为。所以你认为没有必要细化函数,特别是可以明显说谎的函数?即使我们只是增加错误代码,也是可以的,但现在你建议我们重新发明车轮。当然,不是一个复杂的,而是一辆自行车。 Renat Fatkhullin 2016.12.24 11:49 #17678 Alexey Kozitsyn:所以你认为没有必要细化函数,特别是可以明显说谎的函数?即使你只是增加了错误代码,那也是好的,但现在你提出要重新发明车轮。当然,不是一个复杂的,而是一辆自行车。 不需要提炼,它们是wtoi/atoi的完全类似物。这个问题已经结束。 A100 2016.12.24 13:26 #17679 编译错误#include <Math\Stat\Math.mqh>struct S {}; Slat 2016.12.24 17:39 #17680 你好,请告诉我是否可以在Metatrader中设置一个 "周期分隔符"? 我只想在m5上能看到15、30和小时的蜡烛结束的位置,这样我就不用总是看时间了,怎么做? 1...176117621763176417651766176717681769177017711772177317741775...3184 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这只有在傻瓜式的编译器中才能实现。你自己也知道。
using namespace std;
struct S
{
S operator +(const S&) {cout << "operator +\n"; return S{};}
};
S operator ""_s(const char*, size_t) {cout << "literal operator\n"; return S{};}
int main()
{
cout << "___literal concatenation example___\n";
S s = "sd"_s "sf"_s;
cout << "___operator+ example___\n";
S s2 = "sd"_s + "sf"_s;
}
符号连接的例子___。
字面运算符
运营商+例子___。
字面运算符
字面运算符
操作员+
正如你所看到的,在第二种情况下,operator+并没有被concatenation所取代(为literal创建,随后进行运行时添加)。编译器根本无法将其剪除,因为程序员有太多的可能性,这大大限制了优化的范围。当然,这不是MKL,它可能是不同的,但 "一个正常的编译器将为我做一切事情 "这个说法本身就是错误的。当然,这不是MQL,它可能是不同的,但 "一个正常的编译器将为我做一切 "的说法是错误的。
厌倦了浪费时间和金钱:优化器挂在了最后一关。代理人什么都不做,一切都在授权阶段。日志中一片寂静。启用/禁用代理没有意义,优化 后一切从头开始。
谁面临过这个问题?如何与之斗争?
魔术线
在1024x768的屏幕分辨率下,MetaEditor\1495的操作顺序。
- 打开所附文件
- 将水平滚动滑块一直向右移动(如图所示)。
- 在第三行点击/*12345*/。
进一步设置:服务/设置/常规/制表 4个字符当试图使用StringToInteger()将一个字符串转换 为数字时,如果字符串不包含数字,它将返回0而不出现错误(GetLastError() = 0)。如果输入参数包含一个字符串,并且用户错误地指定了数值--该函数将返回一个错误的值,并且不会显示错误。这很糟糕。
此外,如果字符串包含一个不正确的数字表示,例如,5o(而不是50),该函数将返回值5而不产生错误。不仅如此,它不是0,而且该函数将字符串分解为5,这又是不正确的。
亲爱的开发者,请改进该函数,增加错误代码,或者如果它不能解析字符串,则返回LONG_MAX值+错误,这样我们就可以确定哪里出了问题。你现在不能这样做。
检查脚本代码。
#property script_show_inputs
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
input string value="05";
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
const long iValue=StringToInteger(value);
Print("iValue = ",iValue,", lastError = ",GetLastError());
}
//+------------------------------------------------------------------+
实现你自己版本的功能--它应该不超过10分钟。
我们不会改变系统功能的行为。
实现你自己版本的功能--它应该不超过10分钟。
我们不会改变系统功能的行为。
所以你认为没有必要细化函数,特别是可以明显说谎的函数?
即使我们只是增加错误代码,也是可以的,但现在你建议我们重新发明车轮。当然,不是一个复杂的,而是一辆自行车。
所以你认为没有必要细化函数,特别是可以明显说谎的函数?
即使你只是增加了错误代码,那也是好的,但现在你提出要重新发明车轮。当然,不是一个复杂的,而是一辆自行车。
编译错误
struct S {};