// Пример хранения/обмена данными через Ресурсы внутри Терминала#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/ru/code/22166voidOnStart()
{
const RESOURCEDATA<int> ResourceINT("::int"); // Ресурс для обмена int-ами. const - как доказательство, что ничего не пишется в объект классаint ArrayINT[] = {1, 2, 3};
int Num = 5;
ResourceINT = ArrayINT; // Ресурс хранит массив.
ResourceINT += Num; // Добавили в ресурс еще значение.
ResourceINT += ArrayINT; // Добавили массив.int ArrayINT2[];
ResourceINT.Get(ArrayINT2); // Считали данные из ресурса.ArrayPrint(ArrayINT2); // Вывели: 1 2 3 5 1 2 3
ResourceINT.Free(); // Удалили данные из ресурсаPrint(ResourceINT.Get(ArrayINT2)); // Убедились, что данных нет: 0const RESOURCEDATA<MqlTick> ResourceTicks("::Ticks"); // Ресурс для обмена тиками. const - как доказательство, что ничего не пишется в объект классаMqlTick Tick;
if (SymbolInfoTick(_Symbol, Tick))
for (int i = 0; i < 3; i++)
ResourceTicks += Tick; // Добавили в ресурс тикиMqlTick Ticks[];
ResourceTicks.Get(Ticks); // Считали данные из ресурса.ArrayPrint(Ticks); // Вывели.// Это полное имя ресурса для обращения из другой программыconststring NameOut = StringSubstr(MQLInfoString(MQL_PROGRAM_PATH), StringLen(TerminalInfoString(TERMINAL_PATH)) + 5) + "::Ticks";
Print(NameOut); // Вывели полное имя ресурса.const RESOURCEDATA<MqlTick> Resource(NameOut); // Ресурс для доступа к данным (read-only) из другой программыMqlTick TicksOut[];
Resource.Get(TicksOut); // Считали данные из ресурса.ArrayPrint(TicksOut); // Вывели.
Resource.Free(); // Не получится повлиять на данные read-only-ресурса.Print(_LastError); // ERR_INVALID_PARAMETER - Ошибочный параметр при вызове системной функции.
}
当然了。
我也想用一些令我困惑的事情来迷惑你))))。有没有可能在一个资源中传递几个单独的行,这样在读取资源时就可以只读取其中的选定行。
对于一个图像,可以通过TextOut()创建几行,但试图读取这样的资源却没有成功。只有第一行可以阅读。
我也想用一些令我困惑的事情来迷惑你))))。是否有可能在一个资源中传递一些单独的行,这样就有可能只从其中读取选定的行。
对于一个图像来说,可以通过TextOut()创建几行,但试图读取这个资源的尝试却失败了。只有第一行可以阅读。
试图保存或阅读图片上的文字是没有意义的。使用该资源按照我上面描述的方式写入字符串,然后使用CharArrayToString提取回来。接下来,用分界符分割字符串,并在其中找到合适的分界符。(因此,在保存字符串之前,要用一些符号将其分成子字符串)。
我没有想要照着图片阅读。我只是提到了这幅画,作为几行文字的一个例子。
拉出一个子串太容易了。我们不是在寻找简单的方法:)))谢谢你的帮助。
我没有想要照着图片阅读。我只是提到了这幅画,作为几行文字的一个例子。
要取出一个子串,这太容易了。我们不是在寻找简单的方法)。谢谢你的帮助。
如果你已经知道如何将数据保存在资源中并进行检索,那么拉出一个子串并不是太难。这本身就是一项简单的任务。试着先把字符串保存到一个资源中,然后从那里提取它。然后添加一个函数,将字符串分解成子串并搜索正确的子串。
彼得感谢你的帮助。我多年前就学会了如何与弦乐合作。以及如何保存资源并阅读它,在你的帮助下,我昨天想通了。只是脑子里有一条疯狂的短信,好像我应该试试......怎么做呢短信在路上迷路了,迷失在我的思想里。
我想弄清楚创建资源 的二维数组和一维数组的区别。你在这方面有什么进展、想法吗?
彼得感谢你的帮助。我多年前就学会了如何与弦乐合作。以及如何保存资源并阅读它,在你的帮助下,我昨天想通了。只是脑子里有一条疯狂的短信,好像我应该试试......但怎么做短信就迷了路,迷了我的心。
所以现在我想弄清楚创建资源 的二维数组和一维数组的区别。你对这个问题有什么见解、想法吗?
我读了一些早期的页面,发现任务是只从资源中读取一个小字符串。如果这个字符串小于64个字符,就没有必要在联合上做文章,把数据保存到资源上。只需将所需的字符串写入 OBJPROP_TEXT 的描述属性中。
ObjectSetString(chartID,label_name,OBJPROP_TEXT, "你的字符串")。
并像这样把它拿回来。
string Str =ObjectGetString(chartID,label_name,OBJPROP_TEXT);
就这样吧。))
关于交易、自动交易系统和测试交易策略的论坛
图书馆:TradeTransactions
fxsaber, 2018.09.20 16:23
我读了一些早期的页面,发现任务是只从资源中读取一个小字符串。如果这个字符串小于64个字符,就没有必要在联合上做文章,把数据保存到资源上。只需将所需的字符串写入 OBJPROP_TEXT 的描述属性中。
ObjectSetString(chartID,label_name,OBJPROP_TEXT, "你的字符串")。
并像这样把它拿回来。
string Str = ObjectGetString(chartID,label_name,OBJPROP_TEXT);
就这样吧。))
并非如此。任务是输出几行信息。在我看来...这只是我想让它显示的方式。其中一句话里有一个日期。这个日期不仅是为了明确,而且即使在重启后也应该被程序使用。事实证明,它必须以某种方式得到保存。这就是我开始捣乱的地方,我们不是在寻找简单的出路。既然保存日期的一种方法是使用图形对象,为什么不使用相同的资源呢。重启MT资源后是可以读取的,但重启电脑后还没有检查。最主要的是,我搞清楚了资源和单位。我知道的下一件事是,我的脑子里收到了疯狂的短信。一旦我删除了一切,我将继续进行有用的工作。
并非如此。任务是输出几行信息。在我看来......。这正是我想要的方式,用画布来展示它。其中一句话里有一个日期。这个日期不仅是为了明确,而且即使在重启后也应该被程序使用。事实证明,它必须以某种方式得到保存。这就是我开始捣乱的地方,我们不是在寻找简单的出路。既然保存日期的一种方法是使用图形对象,为什么不使用相同的资源呢。重启MT资源后是可以读取的,但重启电脑后还没有检查。最主要的是,我搞清楚了资源和单位。我知道的下一件事是,我的脑子里收到了疯狂的短信。一旦我删除了一切,我将继续进行有用的工作。
很好。然后继续掌握资源和工会。它们提供了一种多功能的方式,不仅可以快速写入和存储任何数据,而且还可以在不同的程序之间实时共享这些数据,而且对磁盘没有任何负担。