Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2314

 
Galim_V #:

Добрый вечер! Задача разделить строку превысившую допустимую длину на строки. 

Получилось так:

Результат не конечный. По всей видимости потребуется еще массив. Вопрос: насколько верна конструкция и если есть под рукой или можете "на коленке", альтернативные варианты. 

   int y=0, _t=60;
   string st1,st2,st3;
   string text= "Привет! Над всей Испанией безоблачное небо. А у вас какая погода? Если погода у вас плохая, то приезжайте к нам в Испанию или покупайте зонтик)";
   st1=StringSubstr(text, y, _t); y+=_t;
   st2=StringSubstr(text, y, _t); y+=_t;
   st3=StringSubstr(text, y, _t);
   Comment(st1,"\n",st2,"\n",st3);
 
Galim_V #:

Добрый вечер! Задача разделить строку превысившую допустимую длину на строки. 

Получилось так:

Результат не конечный. По всей видимости потребуется еще массив. Вопрос: насколько верна конструкция и если есть под рукой или можете "на коленке", альтернативные варианты. 

А так

/********************Script program start function*******************/
void OnStart()
 {
  string result[],
         text = "Привет! Над всей Испанией безоблачное небо. А у вас какая погода? Если погода у вас плохая, то приезжайте к нам в Испанию";
  int k = StringSplit(text, ' ', result);
  DebugBreak();
 }/******************************************************************/
/*****************************End program****************************/

не проще? Получается массив из 22 элементов. 

В MQL4 тоже работает, но в MQL5 можно в отладчике увидеть все элементы массива


 
здравствуйте   как переименовать скриншот  в советнике? открылся ордер сделал скриншот  закрылся переименовал его. в учебнике не нашёл такой функции. заранее спасибо.
 
Alexey Viktorov #:

А так не проще? Получается массив из 22 элементов. 

В MQL4 тоже работает, но в MQL5 можно в отладчике увидеть все элементы массива


С уважением, Владимир.

 
MrBrooklin #:


С уважением, Владимир.

Ты мне льстишь…)))

 
Tretyakov Rostyslav #:

Строка может быть сгенерирована. Ограничение по длине, - тоже может быть переменной. Получается, что количество получаемых строк заранее неизвестно. Спасибо за зонтик, но все быстро меняется, у нас уже снег.)

 
Galim_V #:

Строка может быть сгенерирована. Ограничение по длине, - тоже может быть переменной. Получается, что количество получаемых строк заранее неизвестно. Спасибо за зонтик, но все быстро меняется, у нас уже снег.)

NormalizeDouble(StringLen(text)/n+0.6,0);
 
Alexey Viktorov #:

А так

не проще? Получается массив из 22 элементов. 

В MQL4 тоже работает, но в MQL5 можно в отладчике увидеть все элементы массива


Проще. Но это только первая часть "балета". Остается склеить в размер с сохранением орфографии. Пока теряю последнюю строчку.

//+------------------------------------------------------------------+
//|                                                 StringDemo02.mq4 |
//|                        Copyright 2023, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
string message[];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {

   int length=26;     // Допустимая длинна стоки
   string text;

//-----------------
   text= "Привет! Над всей Испанией безоблачное небо. А у вас какая погода? Если погода у вас плохая, то приезжайте к нам в Испанию";
   comp(length,text);
  }
//+------------------------------------------------------------------+
void comp(const int len01,string st2)
  {
   int  temp=0;
   int len02=0,size=0,t=0;
   string result[];               // массив для получения строк
   string addstr;
   if(len01!=0&&st2!="")
     {
      st2=StringTrimLeft(st2);
      st2=StringTrimRight(st2);
      len02=StringLen(st2);
      if(len01>=len02)
         return ;
      else
        {
         if(len02%len01!=0)
            size=len02/len01+1;    //Узнаем размер массива
         ArrayResize(message,size);
         int k=StringSplit(st2,32,result);
         PrintFormat("Получено строк: %d.рфзмер массива: %d",k,size);
         if(k>0)
           {
            while(0<size&&!IsStopped())
              {
               for(int i=temp; i<k; i++)
                 {
                   Print("i = ",i);
                  if(StringLen(addstr+" "+result[i])<=len01)
                    {
                     StringAdd(addstr," "+result[i]);
                     Print("t = ",t," addstr = ",addstr);
                    }
                  else
                    {
                     temp=i;
                     Print("temp = ",temp);
                     addstr=" ";
                     break;
                    }
                  PrintFormat("result[%d]=%s",i,result[i]);
                 }
                 size--;
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+

Спасибо, Алексей!

 
Tretyakov Rostyslav #:

 Спасибо, посмотрю.

 
Galim_V #:

Строка может быть сгенерирована. Ограничение по длине, - тоже может быть переменной. Получается, что количество получаемых строк заранее неизвестно. Спасибо за зонтик, но все быстро меняется, у нас уже снег.)

   int length=26;     // Допустимая длинна стоки
   int j, size, y=0;
   string text= "Привет! Над всей Испанией безоблачное небо. А у вас какая погода? Если погода у вас плохая, то приезжайте к нам в Испанию или покупайте шубу)";
   string txt[];
   size=StringLen(text)/length+1;
   ArrayResize(txt,size);
   for(j=0; j<size; j++)
     {
      txt[j]=StringSubstr(text, y, length); y+=length;
      Print(txt[j]);
     }
Причина обращения: