在一个OBJ_TEXT对象中,是否可以在多行上输出文本? - 页 7

 
Реter Konow:
当然了。

我也想用一些令我困惑的事情来迷惑你))))。有没有可能在一个资源中传递几个单独的行,这样在读取资源时就可以只读取其中的选定行。

对于一个图像,可以通过TextOut()创建几行,但试图读取这样的资源却没有成功。只有第一行可以阅读。

 
Alexey Viktorov:

我也想用一些令我困惑的事情来迷惑你))))。是否有可能在一个资源中传递一些单独的行,这样就有可能只从其中读取选定的行。

对于一个图像来说,可以通过TextOut()创建几行,但试图读取这个资源的尝试却失败了。只有第一行可以阅读。

试图保存或阅读图片上的文字是没有意义的。像我上面描述的那样使用资源来写字符串,然后用CharArrayToString 提取回来。接下来,用分界符分割字符串,并在其中找到合适的分界符。(因此,在保存字符串之前,要用一些符号将其分成子字符串)。
 
Реter Konow:
试图保存或阅读图片上的文字是没有意义的。使用该资源按照我上面描述的方式写入字符串,然后使用CharArrayToString提取回来。接下来,用分界符分割字符串,并在其中找到合适的分界符。(因此,在保存字符串之前,要用一些符号将其分成子字符串)。

我没有想要照着图片阅读。我只是提到了这幅画,作为几行文字的一个例子。

拉出一个子串太容易了。我们不是在寻找简单的方法:)))谢谢你的帮助。

 
Alexey Viktorov:

我没有想要照着图片阅读。我只是提到了这幅画,作为几行文字的一个例子。

要取出一个子串,这太容易了。我们不是在寻找简单的方法)。谢谢你的帮助。

如果你已经知道如何在资源中保存数据并将其提取出来,那么拉出一个子串并不是太难。这本身就是一项简单的任务。试着先把字符串保存到一个资源中,然后从那里提取它。然后添加一个函数,将字符串分解成子串并搜索正确的子串。
 
Реter Konow:
如果你已经知道如何将数据保存在资源中并进行检索,那么拉出一个子串并不是太难。这本身就是一项简单的任务。试着先把字符串保存到一个资源中,然后从那里提取它。然后添加一个函数,将字符串分解成子串并搜索正确的子串。

彼得感谢你的帮助。我多年前就学会了如何与弦乐合作。以及如何保存资源并阅读它,在你的帮助下,我昨天想通了。只是脑子里有一条疯狂的短信,好像我应该试试......怎么做呢短信在路上迷路了,迷失在我的思想里。

我想弄清楚创建资源 的二维数组和一维数组的区别。你在这方面有什么进展、想法吗?

 
Alexey Viktorov:

彼得感谢你的帮助。我多年前就学会了如何与弦乐合作。以及如何保存资源并阅读它,在你的帮助下,我昨天想通了。只是脑子里有一条疯狂的短信,好像我应该试试......但怎么做短信就迷了路,迷了我的心。

所以现在我想弄清楚创建资源 的二维数组和一维数组的区别。你对这个问题有什么见解、想法吗?

说实话,我从来没有在资源中存储过一个二维数组。我一直用一个一维的工作,因为它不受约束。一元化更有利于保存数据,尽管它不一定是这样。这取决于什么样的数据,以什么样的格式。只使用一维数组来保存字符串,因为二维数组不能被发送到CharArrayToString和StringToCharArray函数。所以,我建议你开发一种机制,将你的任何数据存储在一维数组中,以获得灵活性。但是,你可以尝试对同一类型的非字符串数据使用二维。看看你从中得到了什么,会很有意思。
 

我读了一些早期的页面,发现任务是只从资源中读取一个小字符串。如果这个字符串小于64个字符,就没有必要在联合上做文章,把数据保存到资源上。只需将所需的字符串写入 OBJPROP_TEXT 的描述属性中。

ObjectSetString(chartID,label_name,OBJPROP_TEXT, "你的字符串")

并像这样把它拿回来。

string Str =ObjectGetString(chartID,label_name,OBJPROP_TEXT);


就这样吧。))

 
Alexey Viktorov:

关于交易、自动交易系统和测试交易策略的论坛

图书馆:TradeTransactions

fxsaber, 2018.09.20 16:23

// Пример хранения/обмена данными через Ресурсы внутри Терминала
#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/ru/code/22166

void OnStart()
{  
  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)); // Убедились, что данных нет: 0

  const 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);        // Вывели.
  
  // Это полное имя ресурса для обращения из другой программы
  const string 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 - Ошибочный параметр при вызове системной функции.
}

 
Реter Konow:

我读了一些早期的页面,发现任务是只从资源中读取一个小字符串。如果这个字符串小于64个字符,就没有必要在联合上做文章,把数据保存到资源上。只需将所需的字符串写入 OBJPROP_TEXT 的描述属性中。

ObjectSetString(chartID,label_name,OBJPROP_TEXT, "你的字符串")

并像这样把它拿回来。

string Str = ObjectGetString(chartID,label_name,OBJPROP_TEXT);


就这样吧。))

并非如此。任务是输出几行信息。在我看来...这只是我想让它显示的方式。其中一句话里有一个日期。这个日期不仅是为了明确,而且即使在重启后也应该被程序使用。事实证明,它必须以某种方式得到保存。这就是我开始捣乱的地方,我们不是在寻找简单的出路。既然保存日期的一种方法是使用图形对象,为什么不使用相同的资源呢。重启MT资源后是可以读取的,但重启电脑后还没有检查。最主要的是,我搞清楚了资源和单位。我知道的下一件事是,我的脑子里收到了疯狂的短信。一旦我删除了一切,我将继续进行有用的工作。

 
Alexey Viktorov:

并非如此。任务是输出几行信息。在我看来......。这正是我想要的方式,用画布来展示它。其中一句话里有一个日期。这个日期不仅是为了明确,而且即使在重启后也应该被程序使用。事实证明,它必须以某种方式得到保存。这就是我开始捣乱的地方,我们不是在寻找简单的出路。既然保存日期的一种方法是使用图形对象,为什么不使用相同的资源呢。重启MT资源后是可以读取的,但重启电脑后还没有检查。最主要的是,我搞清楚了资源和单位。我知道的下一件事是,我的脑子里收到了疯狂的短信。一旦我删除了一切,我将继续进行有用的工作。

很好。然后继续掌握资源和工会。它们提供了一种多功能的方式,不仅可以快速写入和存储任何数据,而且还可以在不同的程序之间实时共享这些数据,而且对磁盘没有任何负担。