错误、漏洞、问题 - 页 2645

 
Stanislav Korotky:

是的,所有的MQL语法都会被丢弃在那里。目前,在新的构建下固定了源代码的编译。我将添加拉链。

可以将所有的文件层次放到沙盒中,不需要压缩。

 
fxsaber:

可以将整个文件的层次结构放入沙盒中,而不需要拉链。

你可以,但需要将拉链作为一个选项。你是否有文章https://www.mql5.com/ru/articles/1971 中的来源,并改编成最新的编译器?

Работаем с ZIP-архивами средствами MQL5 без использования сторонних библиотек
Работаем с ZIP-архивами средствами MQL5 без использования сторонних библиотек
  • www.mql5.com
Однажды автора данной статьи привлекла интересная особенность функции CryptDecode, а именно — возможность распаковывать переданный ей ZIP-массив. Этот модификатор был введен разработчиками торговой платформы MetaTrader 5 для того, чтобы можно было распаковывать ответ некоторых серверов, используя стандартную функцию WebRequest. Однако из-за...
 
Stanislav Korotky:

你可以,但作为一个选项的拉链会有需求。你是否有文章https://www.mql5.com/ru/articles/1971 中的来源,并改编成最新的编译器?

是的,我使用unzip。这里是 一个工作版本。

 
fxsaber:

是的,我使用解压缩。这里是 一个工作版本。

我在压缩的例子中留下了垃圾。

2020.02.12 21:54:06.620 ZipTask1 (EURUSD,D1)    21 leaked strings left
2020.02.12 21:54:06.620 ZipTask1 (EURUSD,D1)    21 undeleted objects left
2020.02.12 21:54:06.620 ZipTask1 (EURUSD,D1)    21 objects of type KeyValuePair left
2020.02.12 21:54:06.620 ZipTask1 (EURUSD,D1)    2184 bytes of leaked memory

拧到我的脚本上--同样的事情--似乎是在拉链库中。

PS。发现它在Dictionary.mqh中。

 
Stanislav Korotky:

我留下的是垃圾,作为使用拉链工作的一个例子。

拧到我的脚本上--同样的事情--似乎是在拉链库中。

PS。发现它在Dictionary.mqh中。

有一种模板式的代码。这意味着我只是没有遇到问题,因为我只使用了部分功能。

 

为什么我不能做一个这样的模板?

struct A
  {
   int               i;
   double            d;
  };

template<typename T>
T f(int value)
  {
   T result;
   return(result);
  }
//+------------------------------------------------------------------+
void OnStart()
  {
   A a;
   int i = 1;
   a = f(i);
  }
//+------------------------------------------------------------------+

模板不匹配

'f' - 不能应用模板

见 "f "的声明

'f' - 作为参考传递的参数,预期的变量

'f' - 作为参考传递的参数,预期的变量

 

我在存储库方面遇到了一点麻烦。它把一些文件发送到存储库,但有些文件什么都不做。

而且最重要的是,在\MQL5\文件夹中没有mql5.storage-文件可以删除它。


它现在在哪里?

 
Igor Makanu:

为什么我不能做一个这样的模板?

因为你似乎对模板的工作方式有一个完全错误的想法。

   a.i = f<int>(i);

你想要的 "奇迹 "是不会发生的。

 
Igor Makanu:

为什么我不能做一个这样的模板?

因为模板只按参数输出类型,不按输出值输出。

 
fxsaber:

因为你似乎对模板的工作方式有一个完全错误的想法。

你想要的 "奇迹 "不可能发生。

编译器是如何转换模板的,我可以想象,没有什么新东西,它的工作方式是一样的?

struct A
  {
   int               i;
   double            d;
  };

template<typename T>
void f(int value,T &result)
  {
   T tmp;
   result = tmp;
  }
//+------------------------------------------------------------------+
void OnStart()
  {
   A a;
   int i = 1;
   f(i,a);
  }
//+------------------------------------------------------------------+
安德烈-特鲁哈诺维奇

因为该模板只按参数输出类型,而不是按输出值输出。

我明白了,我还希望我忽略了什么。

好吧,这不是关键,它将通过参数工作

原因: