错误、漏洞、问题 - 页 1576 1...156915701571157215731574157515761577157815791580158115821583...3184 新评论 Vladimir Pastushak 2016.05.07 10:36 #15751 我想知道用什么原则来把产品放在这个横幅上以及授权卖家的产品是否去那里?我的意思是,我可以在这个横幅上看到我的产品吗? 我已经翻了30页,还没有看到我的产品... Alexey Navoykov 2016.05.07 13:49 #15752 Renat Fatkhullin:我不干涉。我有26年的不间断编程经验。如果我们谈论的是金融部门,警告基本上是错误的。而所有数以千计的关于 "失去标志、失去准确性、失去鬼魂等 "的报告是对代码质量的判决。显然,你不太明白其中的含义。请以足够完整的形式提供编译器指出的错误的那段代码。没有它,这一切的讨论就显得不好看,不公平。好吧,Renat,这些关于 "代码质量 "的争论与讨论的主题无关。 因为我们在这里只讨论可编译性,即代码的可操作性。以及准确性的损失等等。- 这是程序员的个人问题,所以说是他/她的责任。隐性转换,例如int到short,并没有被语言标准所禁止,对吗? 那么,为什么我们现在要宣扬?好了,我已经发现了其中的一个错误。class CClass { }; class CArr { CClass* data[]; public: CClass* operator[] (int i) { return data[i]; } }; template<typename T> void Func (T* obj) { } void OnStart() { CArr arr; Func(arr[0]); }这是我在日志中得到的。'C类'--没有类型的声明 TestScript.mq5 16 9在以前的版本中,一切都很正常。 Renat Fatkhullin 2016.05.07 15:36 #15753 Alexey Navoykov:好吧,Renat,这些关于 "代码质量 "的争论与讨论的主题无关。 因为我们在这里只讨论可编译性,即代码的可操作性。以及准确性的损失等等。- 这是程序员的个人问题,所以说是他/她的责任。隐性转换,例如int到short,并没有被语言标准所禁止,对吗? 那么,为什么我们现在要宣扬? 2600个有潜在问题的地方,甚至在财务方面--这不是道德,而正是代码质量的指标。好了,我已经发现了其中的一个错误。这是我在日志中得到的。在以前的版本中,一切都很正常。是的,这个错误已经被讨论过了(可能是和A100一起),并在5月4日被修复。显然,在类型控制方面做得过头了。我附上最新的MetaEditor build 1329,它没有这个错误。请在那里查看。MT5的发布时间是5月12日。 附加的文件: MetaEditor64.exe.zip 10385 kb [删除] 2016.05.08 19:38 #15754 Alexey Navoykov:在以前的版本中,它是好的。在你的代码中,你没有返回一个私有对象的常量指针。事实证明,第三方(就变量可见性而言)函数可以改变看似不应该在架构上被他们访问的东西,因为程序员已经指定了私有。每当我想返回一个指向私有对象的指针时,我必须指定一个const修改器。在你的情况下,我将设置一个经纬度。我不是一个高空飞人,所以我在问。你必须在某个地方使用这个代码,还是只是懒得去设置const? [删除] 2016.05.08 19:40 #15755 A100:两天的时间几乎都浪费了(在我这个年龄已经很多了),我本来打算用一个稍微不同的方式来使用它们。 你引用了一百多个错误。每一次都是如此疯狂地花费你的时间?你从哪里得到对开发商如此慷慨的支持?阿列克谢-纳沃伊科夫。所以,我再次向A100的耐心表示敬意。 我自己也厌倦了,对我来说,坐在工作正常的旧版本上比在新版本中寻找错误的原因更容易,在服务台工作。 或者有人会为这项工作支付我?是的,对于第三方测试人员来说,serviced是一件很酷的事情,可以免费做。显然,它不是为此而生的,但事实上,它恰恰成了免费工作的第三方测试人员的雇主。如果不是因为这些错误报告,编译器的编译时间会更长。每个人都会争论说,发现一个错误应该有报应,这是世界上的惯例。A100应该得到国家测试员的工资。而且似乎是一年的测试员的工资。 Alexey Navoykov 2016.05.08 21:42 #15756 Renat Fatkhullin:是的,这个错误已经被讨论过了(也许是和A100一起),并且早在5月4日就被修复了。显然,他们对类型的控制已经过度了。我附上了最新的MetaEditor build 1329,它不包含这个错误。请在那里查看。MT5的发布将在5月12日。已检查。现在几乎没有编译错误,除了一些奇怪的奇迹,我无法从程序中单独重现,但设法通过一些随机手段绕过。下面是我要告诉你的问题区域的示例代码。 同样,它单独编译很好,但在我的程序中产生了一个错误。class CBase { }; class CClass : public CBase { }; class CWork { public: template<typename T> void Run(T& arr[]) { struct Struct { template<typename T1> static void Set(T1& main, T& arr[], CBase& obj) { main.Set(arr); } }; Struct structobj; structobj.Set(this, arr, arr[0]); } template<typename T> void Set(T& arr[]) { for (int i=0; i<ArraySize(arr); i++) Set(arr[i]); // Здесь возникает ошибка: 'arr' - parameter conversion not allowed } template<typename T> void Set(T& obj) { } template<typename T> void Set(T*& obj) { } }; void Main() { CWork work; CClass arr[]; work.Run(arr); return; } 如果你在Main函数中的任何地方(例如,在返回后)添加一行。work.Set(arr[0])。它可以正常编译。程序员似乎在优化方面走得太远了。 而且在运行过程中也有一些小毛病。例如,我给一个结构的 某些成员 赋值,但后来发现那里的值是旧的,也就是说没有赋值。 如果我在它附近添加一行任意操作,一切都会变得正常。 这些错误是从你优化编译器的那个秋季构建开始的。 总而言之,一切都还是原始的。此外,编译本身仍然需要20秒,而build 1159只需要1-2秒。 同时,我没有注意到我的程序有任何明显的加速,收益在10-20%之内。所以你可以忘记那些关于2-10倍速度的故事。也许这发生在特别选择的测试样本上,但我们有真实的应用,而不是假的。为了更高的性能,总的来说编译速度慢了10-20倍。 我认为,这不值得,程序员损失的时间更有价值。我仍然被迫停留在1159构建上。 Alexey Navoykov 2016.05.08 21:55 #15757 Anton Zverev:在你的代码中,你没有返回一个私有对象的常量指针。事实证明,第三方(就变量可见性而言)函数可以改变看似不应该在架构上被他们访问的东西,因为程序员已经指定了私有。每当我想返回一个指向私有对象的指针时,我必须指定一个const修改器。在你的情况下,我会给它加上一个翘板。我不是一个高空飞人,所以我在问。你必须在某个地方使用这个代码,还是只是懒得去设置const?我只是把一个数组隐藏在私有的地方,而C类对象本身是可以被用户完全访问的,这就是目的。 如果我只需要它用于阅读,我会把const放进去。 Alexey Navoykov 2016.05.08 22:01 #15758 Anton Zverev: 所有的人都会支持,发现错误就应该有报应,这是世界上的惯例。A100应该得到一个国家测试员的工资。而且似乎是一年的测试员的工资。 我支持这一点,但我担心这将仅限于一块牌子和一封表扬信 :) Sergey Gritsay 2016.05.09 07:23 #15759 我不知道这是不是一个错误,或者只是对CDealInfoPositionId()和Ticket() 方法的错误描述。我写了以下代码//+------------------------------------------------------------------+ //| test_01.mq5 | //| Sergey Gritsay | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Sergey Gritsay" #property link "https://www.mql5.com" #property version "1.00" #include <Trade\Trade.mqh> //#include <Trade\DealInfo.mqh> CTrade trade; CDealInfo deal; ulong ticket_deal; // тикет сделки ulong ticket_position; // тикет позиции //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- trade.Buy(0.1,_Symbol); ticket_deal=trade.ResultDeal(); deal.Ticket(ticket_deal); ticket_position=deal.PositionId(); Print("ResultDeal() = ",ticket_deal); Print("deal.PositionId() = ",ticket_position); } //+------------------------------------------------------------------+ 结果NM 0 14:06:49.083 test_01 (EURUSD,H1) ResultDeal() = 69380150 QE 0 14:06:49.083 test_01 (EURUSD,H1) deal.PositionId() = 0我使用HistorySelect() 函数添加了一个对交易历史的请求。//+------------------------------------------------------------------+ //| test_01.mq5 | //| Sergey Gritsay | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Sergey Gritsay" #property link "https://www.mql5.com" #property version "1.00" #include <Trade\Trade.mqh> //#include <Trade\DealInfo.mqh> CTrade trade; CDealInfo deal; ulong ticket_deal; // тикет сделки ulong ticket_position; // тикет позиции //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- trade.Buy(0.1,_Symbol); ticket_deal=trade.ResultDeal(); HistorySelect(0,TimeCurrent()); deal.Ticket(ticket_deal); ticket_position=deal.PositionId(); Print("ResultDeal() = ",ticket_deal); Print("deal.PositionId() = ",ticket_position); } //+------------------------------------------------------------------+ 结果JM 0 14:16:33.055 test_01 (EURUSD,H1) ResultDeal() = 69381116 EF 0 14:16:33.055 test_01 (EURUSD,H1) deal.PositionId() = 83654708 [删除] 2016.05.09 08:03 #15760 Alexey Navoykov:在private中,我只隐藏了数组。 而C类对象本身是可以被用户完全访问的,这就是目的。 如果只是需要阅读,我会把const放进去。我明白了,你能告诉我这在哪些结构中可能是有用的吗?我知道,用这种方法,你不能对数组本身做任何事情(调整大小,交换元素,等等)。然而,删除,可以应用于...我假设你在某个地方用模板来做,这样[]运算符的语法对不同的对象类型 是一样的。一般来说,你能不能在方便的时候展示一下这个结构的使用。 1...156915701571157215731574157515761577157815791580158115821583...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我想知道用什么原则来把产品放在这个横幅上
以及授权卖家的产品是否去那里?我的意思是,我可以在这个横幅上看到我的产品吗? 我已经翻了30页,还没有看到我的产品...
我不干涉。我有26年的不间断编程经验。
如果我们谈论的是金融部门,警告基本上是错误的。而所有数以千计的关于 "失去标志、失去准确性、失去鬼魂等 "的报告是对代码质量的判决。显然,你不太明白其中的含义。
请以足够完整的形式提供编译器指出的错误的那段代码。
没有它,这一切的讨论就显得不好看,不公平。
好吧,Renat,这些关于 "代码质量 "的争论与讨论的主题无关。 因为我们在这里只讨论可编译性,即代码的可操作性。以及准确性的损失等等。- 这是程序员的个人问题,所以说是他/她的责任。隐性转换,例如int到short,并没有被语言标准所禁止,对吗? 那么,为什么我们现在要宣扬?
好了,我已经发现了其中的一个错误。
这是我在日志中得到的。
'C类'--没有类型的声明 TestScript.mq5 16 9
在以前的版本中,一切都很正常。
好吧,Renat,这些关于 "代码质量 "的争论与讨论的主题无关。 因为我们在这里只讨论可编译性,即代码的可操作性。以及准确性的损失等等。- 这是程序员的个人问题,所以说是他/她的责任。隐性转换,例如int到short,并没有被语言标准所禁止,对吗? 那么,为什么我们现在要宣扬?
好了,我已经发现了其中的一个错误。
这是我在日志中得到的。
在以前的版本中,一切都很正常。
是的,这个错误已经被讨论过了(可能是和A100一起),并在5月4日被修复。显然,在类型控制方面做得过头了。
我附上最新的MetaEditor build 1329,它没有这个错误。请在那里查看。
MT5的发布时间是5月12日。
在以前的版本中,它是好的。
在你的代码中,你没有返回一个私有对象的常量指针。事实证明,第三方(就变量可见性而言)函数可以改变看似不应该在架构上被他们访问的东西,因为程序员已经指定了私有。
每当我想返回一个指向私有对象的指针时,我必须指定一个const修改器。在你的情况下,我将设置一个经纬度。
我不是一个高空飞人,所以我在问。你必须在某个地方使用这个代码,还是只是懒得去设置const?
两天的时间几乎都浪费了(在我这个年龄已经很多了),我本来打算用一个稍微不同的方式来使用它们。
所以,我再次向A100的耐心表示敬意。 我自己也厌倦了,对我来说,坐在工作正常的旧版本上比在新版本中寻找错误的原因更容易,在服务台工作。 或者有人会为这项工作支付我?
是的,对于第三方测试人员来说,serviced是一件很酷的事情,可以免费做。显然,它不是为此而生的,但事实上,它恰恰成了免费工作的第三方测试人员的雇主。如果不是因为这些错误报告,编译器的编译时间会更长。
每个人都会争论说,发现一个错误应该有报应,这是世界上的惯例。A100应该得到国家测试员的工资。而且似乎是一年的测试员的工资。
是的,这个错误已经被讨论过了(也许是和A100一起),并且早在5月4日就被修复了。显然,他们对类型的控制已经过度了。
我附上了最新的MetaEditor build 1329,它不包含这个错误。请在那里查看。
MT5的发布将在5月12日。
已检查。现在几乎没有编译错误,除了一些奇怪的奇迹,我无法从程序中单独重现,但设法通过一些随机手段绕过。
下面是我要告诉你的问题区域的示例代码。 同样,它单独编译很好,但在我的程序中产生了一个错误。
如果你在Main函数中的任何地方(例如,在返回后)添加一行。
work.Set(arr[0])。
它可以正常编译。
程序员似乎在优化方面走得太远了。
而且在运行过程中也有一些小毛病。例如,我给一个结构的 某些成员 赋值,但后来发现那里的值是旧的,也就是说没有赋值。 如果我在它附近添加一行任意操作,一切都会变得正常。 这些错误是从你优化编译器的那个秋季构建开始的。 总而言之,一切都还是原始的。
此外,编译本身仍然需要20秒,而build 1159只需要1-2秒。 同时,我没有注意到我的程序有任何明显的加速,收益在10-20%之内。所以你可以忘记那些关于2-10倍速度的故事。也许这发生在特别选择的测试样本上,但我们有真实的应用,而不是假的。
为了更高的性能,总的来说编译速度慢了10-20倍。 我认为,这不值得,程序员损失的时间更有价值。
我仍然被迫停留在1159构建上。
在你的代码中,你没有返回一个私有对象的常量指针。事实证明,第三方(就变量可见性而言)函数可以改变看似不应该在架构上被他们访问的东西,因为程序员已经指定了私有。
每当我想返回一个指向私有对象的指针时,我必须指定一个const修改器。在你的情况下,我会给它加上一个翘板。
我不是一个高空飞人,所以我在问。你必须在某个地方使用这个代码,还是只是懒得去设置const?
我只是把一个数组隐藏在私有的地方,而C类对象本身是可以被用户完全访问的,这就是目的。 如果我只需要它用于阅读,我会把const放进去。
所有的人都会支持,发现错误就应该有报应,这是世界上的惯例。A100应该得到一个国家测试员的工资。而且似乎是一年的测试员的工资。
我不知道这是不是一个错误,或者只是对CDealInfoPositionId()和Ticket() 方法的错误描述。我写了以下代码
结果
我使用HistorySelect() 函数添加了一个对交易历史的请求。
结果
在private中,我只隐藏了数组。 而C类对象本身是可以被用户完全访问的,这就是目的。 如果只是需要阅读,我会把const放进去。
我明白了,你能告诉我这在哪些结构中可能是有用的吗?我知道,用这种方法,你不能对数组本身做任何事情(调整大小,交换元素,等等)。然而,删除,可以应用于...
我假设你在某个地方用模板来做,这样[]运算符的语法对不同的对象类型 是一样的。一般来说,你能不能在方便的时候展示一下这个结构的使用。