È possibile emettere testo su più righe in un oggetto OBJ_TEXT? - pagina 7

 
Реter Konow:
Naturalmente.

Voglio anche lasciarvi perplessi con qualcosa che mi ha lasciato perplesso))) È possibile passare diverse linee individuali in una risorsa, in modo da poter leggere solo la linea selezionata da essa durante la lettura della risorsa.

Per un'immagine si possono creare alcune righe attraverso TextOut(), ma i tentativi di leggere tale risorsa non hanno successo. Solo la prima riga può essere letta.

 
Alexey Viktorov:

Voglio anche lasciarvi perplessi con qualcosa che mi ha lasciato perplesso))) C'è la possibilità di passare alcune linee separate in una risorsa, in modo che sia possibile leggere solo la linea selezionata da essa.

Per un'immagine si possono creare alcune righe attraverso TextOut(), ma i tentativi di leggere questa risorsa sono falliti. Solo la prima riga può essere letta.

Non ha senso cercare di salvare o leggere il testo da un'immagine. Usate la risorsa per scrivere stringhe come ho descritto sopra, poi estraetele indietro usando CharArrayToString. Poi, dividete la stringa con un delimitatore e trovate quello giusto tra questi. (Quindi, prima di salvare la stringa, dividetela in sottostringhe con qualche simbolo).
 
Реter Konow:
Non ha senso cercare di salvare o leggere il testo da un'immagine. Usate la risorsa per scrivere stringhe come ho descritto sopra e poi estraetele di nuovo usando CharArrayToString. Poi, dividete la stringa con un delimitatore e trovate quello giusto tra questi. (Quindi, prima di salvare la stringa, dividetela in sottostringhe con qualche simbolo).

Non avevo alcun desiderio di leggere da un'immagine. Ho citato l'immagine solo come esempio di poche righe di scrittura.

Estrarre una sottostringa è troppo facile. Non stiamo cercando vie facili :))) Grazie per l'aiuto.

 
Alexey Viktorov:

Non avevo alcun desiderio di leggere da un'immagine. Ho citato l'immagine solo come esempio di poche righe di scrittura.

Togliere una sottostringa è troppo facile. Non stiamo cercando vie facili). Grazie per l'aiuto.

Non è troppo difficile estrarre una sottostringa se sai già come salvare i dati in una risorsa ed estrarli. Questo è un compito semplice in sé. Prova a salvare prima la stringa in una risorsa e poi estrarla da lì. Poi aggiungete una funzione per rompere la stringa in sottostringhe e cercare quella giusta.
 
Реter Konow:
Non è troppo difficile estrarre una sottostringa se sai già come salvare i dati in una risorsa e recuperarli. È un compito semplice in sé. Prova a salvare prima la stringa in una risorsa e poi estrarla da lì. Poi aggiungete una funzione per rompere la stringa in sottostringhe e cercare quella giusta.

Peter grazie per il tuo aiuto. Ho imparato a lavorare con le corde anni fa. E come salvare una risorsa e leggerla, con il vostro aiuto, l'ho capito ieri. Ho appena ricevuto un messaggio frenetico nella mia testa, come se dovessi provare... e come farlo il messaggio si è perso per strada, si è perso nei miei pensieri.

Sto cercando di capire la differenza tra gli array bidimensionali e monodimensionali per creare risorse. Avete qualche sviluppo o pensiero su questo?

 
Alexey Viktorov:

Peter grazie per il tuo aiuto. Ho imparato a lavorare con le corde anni fa. E come salvare una risorsa e leggerla, con il vostro aiuto, l'ho capito ieri. Ho appena ricevuto un messaggio di testo frenetico nella mia testa, come dovrei provare... ma come farlo il messaggio di testo si è perso nel modo, si è perso nei miei pensieri.

Così ora sto cercando di capire la differenza tra gli array bidimensionali e monodimensionali per creare risorse. Hai qualche intuizione, qualche pensiero su questo?

Ad essere onesti, non ho mai memorizzato un array bidimensionale in una risorsa. Ho sempre lavorato con uno monodimensionale, perché è senza vincoli. Unidimensionale è meglio per salvare i dati, anche se non deve esserlo per forza. Dipende da che tipo di dati e in che formato. Usate solo un array unidimensionale per salvare le stringhe, perché l'array bidimensionale non può essere inviato alle funzioni CharArrayToString e StringToCharArray. Quindi, vi consiglierei di sviluppare un meccanismo per memorizzare tutti i vostri dati in un array monodimensionale per la flessibilità. Ma si può provare a usare la bidimensionalità per i dati non stringa dello stesso tipo. Sarà interessante vedere cosa ne ricaverete.
 

Ho letto alcune pagine precedenti e ho capito che il compito era quello di leggere solo una piccola stringa dalla risorsa. Se questa stringa è inferiore a 64 caratteri, non ha senso fare casino con le unioni e salvare i dati nella risorsa. Basta scrivere la stringa richiesta nella proprietà description di OBJPROP_TEXT:

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

E riprenderlo così:

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


E questo è tutto.))

 
Alexey Viktorov:

Forum sul trading, sistemi di trading automatico e test di strategie di trading

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

Ho letto alcune pagine precedenti e ho capito che il compito era quello di leggere solo una piccola stringa dalla risorsa. Se questa stringa è inferiore a 64 caratteri, non ha senso fare casino con le unioni e salvare i dati nella risorsa. Basta scrivere la stringa richiesta nella proprietà description di OBJPROP_TEXT:

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

E riprenderlo in questo modo:

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


E questo è tutto.))

Non esattamente. Il compito era quello di produrre alcune righe di informazioni. Secondo me... è solo il modo in cui volevo che fosse visualizzato. Una delle linee ha una data. Questa data non è solo per chiarezza, ma dovrebbe essere usata dal programma anche dopo il riavvio. Si scopre che deve essere salvato in qualche modo. Qui è dove ho iniziato a fare casino, non stiamo cercando vie d'uscita facili. Dato che un modo per salvare la data è usare un oggetto grafico, perché non usare la stessa risorsa? Dopo il riavvio la risorsa MT è leggibile, ma dopo il riavvio il computer non ha ancora controllato. La cosa principale è che ho capito le risorse e le unità. La cosa successiva che sapevo è che stavo ricevendo messaggi frenetici nella mia testa. Quando avrò cancellato tutto, continuerò il lavoro utile.

 
Alexey Viktorov:

Non proprio. Il compito era quello di produrre alcune righe di informazioni. A mio parere ... E' proprio il modo in cui volevo che fosse, per visualizzarlo con una tela. Una delle linee ha una data. Questa data non è solo per chiarezza, ma dovrebbe essere usata dal programma anche dopo il riavvio. Si scopre che deve essere salvato in qualche modo. Qui è dove ho iniziato a fare casino, non stiamo cercando vie d'uscita facili. Dato che un modo per salvare la data è usare un oggetto grafico, perché non usare la stessa risorsa? Dopo il riavvio la risorsa MT è leggibile, ma dopo il riavvio il computer non ha ancora controllato. La cosa principale è che ho capito le risorse e le unità. La cosa successiva che sapevo è che stavo ricevendo messaggi frenetici nella mia testa. Quando avrò cancellato tutto, continuerò il lavoro utile.

Bene. Poi continua a padroneggiare le risorse e i sindacati. Offrono un modo versatile non solo per scrivere e memorizzare qualsiasi dato velocemente, ma anche per condividere quei dati tra diversi programmi in tempo reale e senza carico sul disco.