É possível emitir texto em várias linhas em um objeto OBJ_TEXT? - página 7

 
Реter Konow:
É claro.

Eu também quero confundi-lo com algo que me intrigou)))) É possível passar várias linhas individuais em um único recurso, para que você possa ler somente a linha selecionada a partir dele enquanto lê o recurso.

Para uma imagem, algumas linhas podem ser criadas através do TextOut(), mas as tentativas de ler tal recurso não têm sucesso. Somente a primeira linha pode ser lida.

 
Alexey Viktorov:

Eu também quero confundi-lo com algo que me intrigou)))) Existe a possibilidade de passar algumas linhas separadas em um único recurso, para que seja possível ler somente linhas selecionadas a partir dele.

Para uma imagem, algumas linhas podem ser criadas através do TextOut(), mas as tentativas de ler este recurso falharam. Somente a primeira linha pode ser lida.

Não adianta tentar salvar ou ler texto de uma imagem. Use o recurso para escrever cordas como descrevi acima e depois extrair de volta usando CharArrayToString. Em seguida, divida o fio por um delimitador e encontre o certo entre eles. (Portanto, antes de salvar o cordel, divida-o em substratos por algum símbolo).
 
Реter Konow:
Não adianta tentar salvar ou ler texto de uma imagem. Use o recurso para escrever cordas como descrevi acima e depois extrair de volta usando CharArrayToString. Em seguida, divida o fio por um delimitador e encontre o certo entre eles. (Portanto, antes de salvar o cordel, divida-o em substratos por algum símbolo).

Eu não tinha vontade de ler a partir de uma foto. Mencionei o quadro apenas como um exemplo de algumas linhas de escrita.

Puxar um substrato é muito fácil. Não estamos procurando maneiras fáceis :))) Obrigado pela ajuda.

 
Alexey Viktorov:

Eu não tinha vontade de ler a partir de uma foto. Mencionei o quadro apenas como um exemplo de algumas linhas de escrita.

Para tirar um substrato, é muito fácil. Não estamos procurando por caminhos fáceis). Obrigado pela ajuda.

Não é muito difícil puxar um substrato se você já sabe como salvar dados em um recurso e extraí-los. Esta é uma tarefa simples em si mesma. Tente primeiro salvar o cordel em um recurso e depois extraí-lo de lá. Em seguida, acrescente uma função para quebrar o cordel em substratos e procurar o correto.
 
Реter Konow:
Não é muito difícil extrair um substrato se você já sabe como salvar dados em um recurso e recuperá-los. É uma tarefa simples em si mesma. Tente primeiro salvar o cordel em um recurso e depois extraí-lo de lá. Em seguida, acrescente uma função para quebrar o cordel em substratos e procurar o correto.

Peter agradece por sua ajuda. Aprendi a trabalhar com cordas anos atrás. E como salvar um recurso e lê-lo, com sua ajuda, eu o descobri ontem. Acabei de receber uma mensagem de texto frenética na minha cabeça, como se eu devesse tentar... e como fazer isso a mensagem de texto se perdeu no caminho, se perdeu em meus pensamentos.

Estou tentando descobrir a diferença entre arrays bidimensionais e unidimensionais para criar recursos. Você tem algum desenvolvimento, alguma reflexão sobre isso?

 
Alexey Viktorov:

Peter agradece por sua ajuda. Aprendi a trabalhar com cordas anos atrás. E como salvar um recurso e lê-lo, com sua ajuda, eu o descobri ontem. Acabei de receber uma mensagem de texto frenética na minha cabeça, como se eu devesse tentar... mas como fazer isso a mensagem de texto se perdeu no caminho, se perdeu em meus pensamentos.

Portanto, agora estou tentando descobrir a diferença entre arrays bidimensionais e unidimensionais para criar recursos. Você tem alguma idéia, pensamento sobre isso?

Para ser honesto, eu nunca armazenei uma matriz bidimensional em um recurso. Sempre trabalhei com uma unidimensional, porque é sem restrições. Uma dimensão é melhor para salvar dados, embora não tenha que ser. Depende de que tipo de dados e em que formato. Use apenas uma matriz unidimensional para salvar cordas, porque a matriz bidimensional não pode ser enviada para as funções CharArrayToString e StringToCharArray. Portanto, eu o aconselharia a desenvolver um mecanismo para armazenar quaisquer de seus dados em uma matriz unidimensional para flexibilidade. Mas, você pode tentar usar dados bidimensionais para dados sem cordas do mesmo tipo. Será interessante ver o que você ganha com isso.
 

Eu li algumas páginas anteriores e percebi que a tarefa era ler apenas um pequeno fio do recurso. Se esta cadeia tiver menos de 64 caracteres, não faz sentido fazer confusão com os sindicatos e salvar dados para o recurso. Basta escrever a string necessária para descrever a propriedade de OBJPROP_TEXT:

ObjectSetString(chartID,label_name,OBJPROP_TEXT, "Sua string");

E recuperá-lo desta maneira:

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


E é isso)).

 
Alexey Viktorov:

Fórum sobre comércio, sistemas comerciais automatizados e estratégias comerciais de teste

Bibliotecas: 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:

Eu li algumas páginas anteriores e percebi que a tarefa era ler apenas um pequeno fio do recurso. Se esta cadeia tiver menos de 64 caracteres, não faz sentido fazer confusão com os sindicatos e salvar dados para o recurso. Basta escrever a string necessária para descrever a propriedade de OBJPROP_TEXT:

ObjectSetString(chartID,label_name,OBJPROP_TEXT, "Sua string");

E recuperá-lo desta maneira:

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


E é isso)).

Não exatamente. A tarefa era produzir algumas linhas de informação. Na minha opinião... é exatamente como eu queria que fosse exibido. Uma das linhas tem uma data nela. Esta data não é apenas para clareza, mas deve ser usada pelo programa mesmo após o reinício. Acontece que ela tem que ser salva de alguma forma. Foi aqui que comecei a brincar, não estamos procurando saídas fáceis. Como uma maneira de salvar a data é usar um objeto gráfico, por que não usar o mesmo recurso. Após reiniciar o recurso MT é legível, mas após reiniciar o computador ainda não foi verificado. O principal é que eu descobri recursos e unidades. Quando dei por mim, estava recebendo mensagens de texto frenéticas em minha cabeça. Uma vez que eu tenha apagado tudo, continuarei o trabalho útil.

 
Alexey Viktorov:

Nem por isso. A tarefa era produzir algumas linhas de informação. Na minha opinião ... era exatamente assim que eu queria que fosse, para exibi-la com uma tela. Uma das linhas tem uma data nela. Esta data não é apenas para clareza, mas deve ser usada pelo programa mesmo após o reinício. Acontece que ela tem que ser salva de alguma forma. Foi aqui que comecei a brincar, não estamos procurando saídas fáceis. Como uma maneira de salvar a data é usar um objeto gráfico, por que não usar o mesmo recurso. Após reiniciar o recurso MT é legível, mas após reiniciar o computador ainda não foi verificado. O principal é que eu descobri recursos e unidades. Quando dei por mim, estava recebendo mensagens de texto frenéticas em minha cabeça. Uma vez que eu tenha apagado tudo, continuarei o trabalho útil.

Bom. Em seguida, continue dominando os recursos e os sindicatos. Eles oferecem uma maneira versátil não apenas para escrever e armazenar quaisquer dados rapidamente, mas também para compartilhar esses dados entre diferentes programas em tempo real e sem carga no disco.