OBJ_TEXT 개체에서 여러 줄에 텍스트를 표시할 수 있습니까? - 페이지 7

 
Реter Konow :
틀림없이.

나는 또한 내가 어리둥절했던 것과 함께 당신을 어리둥절하게 만들고 싶습니다.))) 리소스를 읽을 때 선택한 줄만 읽을 수 있도록 하나의 리소스에 여러 개의 별도 줄을 전송할 수 있습니까?

그림의 경우 TextOut()을 사용하여 여러 줄을 만들 수 있지만 이러한 리소스를 읽으려는 시도는 실패했습니다. 첫 번째 줄만 읽습니다.

 
Alexey Viktorov :

나는 또한 내가 어리둥절했던 것과 함께 당신을 어리둥절하게 만들고 싶습니다.))) 리소스를 읽을 때 선택한 줄만 읽을 수 있도록 하나의 리소스에 여러 개의 별도 줄을 전송할 수 있습니까?

그림의 경우 TextOut()을 사용하여 여러 줄을 만들 수 있지만 이러한 리소스를 읽으려는 시도는 실패했습니다. 첫 번째 줄만 읽습니다.

이미지에서 텍스트를 저장하거나 읽으려고 하는 것은 의미가 없습니다. 리소스를 사용하여 위에서 설명한 대로 문자열을 작성한 다음 CharArrayToString 으로 다시 검색합니다. 그런 다음 문자열을 구분 기호로 분할하고 그 중에서 필요한 문자열을 찾습니다. (따라서 문자열을 저장하기 전에 일부 문자가 포함된 하위 문자열로 분할합니다.)
 
Реter Konow :
이미지에서 텍스트를 저장하거나 읽으려고 하는 것은 의미가 없습니다. 리소스를 사용하여 위에서 설명한 대로 문자열을 작성한 다음 CharArrayToString으로 다시 검색합니다. 그런 다음 문자열을 구분 기호로 분할하고 그 중에서 필요한 문자열을 찾습니다. (따라서 문자열을 저장하기 전에 일부 문자가 포함된 하위 문자열로 분할합니다.)

예, 그림에서 읽고 싶은 마음이 없었습니다. 나는 여러 줄로 쓰는 예로서 그림에 대해 말했습니다.

부분 문자열을 빼내세요. 너무 쉽습니다. 우리는 쉬운 방법을 찾고 있지 않습니다. :))) 도와주셔서 감사합니다.

 
Alexey Viktorov :

예, 그림에서 읽고 싶은 마음이 없었습니다. 나는 여러 줄로 쓰는 예로서 그림에 대해 말했습니다.

부분 문자열을 빼내세요. 너무 쉽습니다. 우리는 쉬운 방법을 찾고 있지 않습니다. :))) 도와주셔서 감사합니다.

리소스에 데이터를 저장하고 검색하는 방법을 이미 알고 있다면 하위 문자열을 추출하는 것은 그리 어렵지 않습니다. 이것은 그 자체로 간단한 작업입니다. 먼저 리소스에 문자열을 저장한 다음 검색해 보세요. 그런 다음 문자열을 하위 문자열로 분할하고 필요한 것을 검색하는 함수를 추가합니다.
 
Реter Konow :
리소스에 데이터를 저장하고 검색하는 방법을 이미 알고 있다면 하위 문자열을 추출하는 것은 그리 어렵지 않습니다. 이것은 그 자체로 간단한 작업입니다. 먼저 리소스에 문자열을 저장한 다음 검색해 보세요. 그런 다음 문자열을 하위 문자열로 분할하고 필요한 것을 검색하는 함수를 추가합니다.

도움을 주셔서 감사합니다. 나는 몇 년 전에 문자열로 작업하는 방법을 배웠습니다. 그리고 당신의 도움으로 어제 리소스를 저장하고 읽는 방법을 알아 냈습니다. 시도해야 할 것처럼 미친 SMS가 내 마음에 떠올랐습니다 ...하지만이 SMS를 수행하는 방법은 도중에 길을 잃고 생각에 빠졌습니다.

이제 리소스 생성 을 위한 2차원 배열과 1차원 배열의 차이점을 이해하려고 합니다. 이에 대한 경험이나 생각이 있습니까?

 
Alexey Viktorov :

도움을 주셔서 감사합니다. 나는 몇 년 전에 문자열로 작업하는 방법을 배웠습니다. 그리고 당신의 도움으로 어제 리소스를 저장하고 읽는 방법을 알아 냈습니다. 시도해야 할 것처럼 미친 SMS가 내 마음에 떠올랐습니다 ...하지만이 SMS를 수행하는 방법은 도중에 길을 잃고 생각에 빠졌습니다.

이제 리소스 생성 을 위한 2차원 배열과 1차원 배열의 차이점을 이해하려고 합니다. 이에 대한 경험이나 생각이 있습니까?

솔직히 말해서 리소스에 2차원 배열을 저장한 적이 없습니다. 제한이 없기 때문에 항상 1차원으로 작업했습니다. 물론 필수는 아니지만 데이터를 저장하려면 1차원이 더 좋습니다. 어떤 데이터와 형식으로 살펴봅니다. 1차원 배열만 사용하여 문자열을 저장합니다. 2차원은 CharArrayToString 및 StringToCharArray 함수로 보낼 수 없습니다. 따라서 보편성을 위해 1차원 배열에 데이터를 저장하는 메커니즘을 개발하는 것이 좋습니다. 그러나 동일한 유형의 문자열이 아닌 데이터에 대해 2D를 사용해 볼 수 있습니다. 이것으로 무엇이 올지 흥미로울 것입니다.
 

나는 이전의 몇 페이지를 읽고 리소스에서 단 한 줄의 작은 줄만 읽는다는 것을 깨달았습니다. 이 문자열이 64자 미만이면 공용체로 차단하고 리소스에 데이터를 저장하는 것은 의미가 없습니다. 원하는 문자열을 OBJPROP_TEXT 개체의 설명 속성에 쓰십시오.

ObjectSetString (chartID,label_name, OBJPROP_TEXT ,"귀하의 문자열");

그리고 다음과 같이 되돌립니다.

문자열 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 ,"귀하의 문자열");

그리고 다음과 같이 되돌립니다.

문자열 Str = ObjectGetString (chartID,label_name, OBJPROP_TEXT );


그리고 그게 다야.))

확실히 그런 방식은 아닙니다. 작업은 여러 줄의 정보를 표시하는 것이 었습니다. 제 생각에는... 그냥 캔버스로 표현하고 싶었습니다. 행 중 하나에 날짜가 포함되어 있습니다. 이 날짜는 명확성을 위한 것일 뿐만 아니라 재부팅 후에도 프로그램에서 사용해야 합니다. 어떻게든 구해야 할 것 같습니다. 여기서 나는 속임수를 쓰기 시작했습니다. 우리는 쉬운 방법을 찾고 있지 않습니다. 날짜를 저장하는 한 가지 방법은 그래픽 개체를 사용하는 것이므로 동일한 리소스를 사용하지 않는 이유는 무엇입니까? MT를 다시 시작한 후 리소스를 읽지 만 컴퓨터를 재부팅 한 후 아직 확인하지 않았습니다. 가장 중요한 것은 내가 자원과 노동 조합을 알아 낸 것입니다. 그리고 미친 SMS가 내 머리에 갔다. 다 지우는대로 유익한 작업 계속하겠습니다.

 
Alexey Viktorov :

확실히 그런 방식은 아닙니다. 작업은 여러 줄의 정보를 표시하는 것이 었습니다. 제 생각에는... 그냥 캔버스로 표현하고 싶었습니다. 행 중 하나에 날짜가 포함되어 있습니다. 이 날짜는 명확성을 위한 것일 뿐만 아니라 재부팅 후에도 프로그램에서 사용해야 합니다. 어떻게든 구해야 할 것 같습니다. 여기에서 나는 속이기 시작했습니다. 우리는 쉬운 방법을 찾고 있지 않습니다. 날짜를 저장하는 한 가지 방법은 그래픽 개체를 사용하는 것이므로 동일한 리소스를 사용하지 않는 이유는 무엇입니까? MT를 다시 시작한 후 리소스를 읽지 만 컴퓨터를 재부팅 한 후 아직 확인하지 않았습니다. 가장 중요한 것은 내가 자원과 노동 조합을 알아 냈다는 것입니다. 그리고 미친 SMS가 내 머리에 갔다. 다 지우는대로 유익한 작업 계속하겠습니다.

좋은. 그런 다음 자원과 노동 조합을 계속 개발하십시오. 이를 통해 모든 데이터를 빠르게 기록하고 저장할 수 있을 뿐만 아니라 디스크 로드 없이 실시간으로 서로 다른 프로그램 간에 이 데이터를 교환할 수 있는 보편적인 방법이 열립니다.