Сдаюсь !

 

друзья, такая вот странная штука !

сохраняю шаблон:

      string s_TerminalDataFolder  = TerminalInfoString(TERMINAL_DATA_PATH);
      string s_Source      = s_TerminalDataFolder + "\\templates\\"   + mss_GlobalMagicChartID + ".tpl";
      string s_Destination = s_TerminalDataFolder  + "\\MQL4\\Files\\" + mss_GlobalMagicChartID + ".tpl";
      
Print("mss_GlobalMagicChartID=",mss_GlobalMagicChartID);      
      
      if(ChartSaveTemplate(0,mss_GlobalMagicChartID))
      {
         if (!CopyFileW(s_Source,s_Destination,false))
         {
            Print(__FUNCTION__," CopyFileW(sourse = " + s_Source + " destination = " + s_Destination + " error = " + ::GetLastError());
            return(false);
         }
         Print(__FUNCTION__," Save template fine: " + mss_GlobalMagicChartID + ".tpl");
      }
      else
      {
         Print(__FUNCTION__," Couldnot Save template : " + mss_GlobalMagicChartID + ".tpl" + "Error = " + GetLastError());
         return(false);
      }

этот Print

Print("mss_GlobalMagicChartID=",mss_GlobalMagicChartID);

для проверки, он печатает это

eStomper_02-MagicChart-1-EURUSD-5

однако шаблон сохраняется под таким вот именем

eStomper_02-MagicChart-1-EURUSD-

Но !

если, скажем 

mss_GlobalMagicChartID  =  eStomper_02-MagicChart-11-EURUSD-5

то шаблон сохраняется под нормальным, неусеченным именем

eStomper_02-MagicChart-11-EURUSD-5

хоть ты тресни !

 
Denis Sartakov:

друзья, такая вот странная штука !

сохраняю шаблон:

этот Print

Print("mss_GlobalMagicChartID=",mss_GlobalMagicChartID);

для проверки, он печатает это

eStomper_02-MagicChart-1-EURUSD-5

однако шаблон сохраняется под таким вот именем

eStomper_02-MagicChart-1-EURUSD-

Но !

если, скажем 

mss_GlobalMagicChartID  =  eStomper_02-MagicChart-11-EURUSD-5

то шаблон сохраняется под нормальным, неусеченным именем

eStomper_02-MagicChart-11-EURUSD-5

хоть ты тресни !

номер 0:

mss_GlobalMagicChartID

должен быть StringTrimRight и Left также.

прочие рекомендации:

измените чтобы имена не содержали "хитрого" символа минус. Это раз. Если он случайно попадёт в начало или конец имени, могут быть странные проблемы


могут получаться в итоге излишне большие путевые имена, это два. То есть покороче надо.


можно (и лучше) делать иерархию каталогов типа eStomper/02/11/EURUSD . Кстати, для WinAPI / и \\ равнозначны.

 
Maxim Kuznetsov:

номер 0:

должен быть StringTrimRight и Left также.

прочие рекомендации:

измените чтобы имена не содержали "хитрого" символа минус. Это раз. Если он случайно попадёт в начало или конец имени, могут быть странные проблемы


могут получаться в итоге излишне большие путевые имена, это два. То есть покороче надо.


можно (и лучше) делать иерархию каталогов типа eStomper/02/11/EURUSD . Кстати, для WinAPI / и \\ равнозначны.

это, конечно, да, но не помогло это

      mss_GlobalMagicChartID = StringTrimLeft(mss_GlobalMagicChartID);

      mss_GlobalMagicChartID = StringTrimRight(mss_GlobalMagicChartID);


но, вот переменная формируется точно также, как и прежде,

mss_GlobalMagicChartID  =  eStomper_02-MagicChart-11-EURUSD-5

но шаблон сохраняется под нормальным, неусеченным именем

eStomper_02-MagicChart-11-EURUSD-5

 
Denis Sartakov:

это, конечно, да, но не помогло это

      mss_GlobalMagicChartID = StringTrimLeft(mss_GlobalMagicChartID);

      mss_GlobalMagicChartID = StringTrimRight(mss_GlobalMagicChartID);


но, вот переменная формируется точно также, как и прежде,

mss_GlobalMagicChartID  =  eStomper_02-MagicChart-11-EURUSD-5

но шаблон сохраняется под нормальным, неусеченным именем

eStomper_02-MagicChart-11-EURUSD-5

и не сможет помочь - StringTrimLeft отдаёт int (int, Карл!) , не строку.

 
Maxim Kuznetsov:

и не сможет помочь - StringTrimLeft отдаёт int (int, Карл!) , не строку.

Нет, друг, ты не прав:

если mss_GlobalMagicChartID  =  eStomper_02-MagicChart-11-EURUSD-5

шаблон сохраняется под нормальным, неусеченным именем

eStomper_02-MagicChart-11-EURUSD-5

 

Весело, а может код по более в студию, а то не понятно что там и где, а то что 2+2=4 проверять не очень хочется.

А еще проще пройтись отладчиком наверное и понять в каком месте твориться не ладное, ? 

или дано что если скормить функции eStomper_02-MagicChart-1-EURUSD-5 баг гарантирован?

Сдаюсь !
Сдаюсь !
  • 2020.08.05
  • www.mql5.com
друзья, такая вот странная штука...
 
Alexandr Andreev:

Весело, а может код по более в студию, а то не понятно что там и где, а то что 2+2=4 проверять не очень хочется.

А еще проще пройтись отладчиком наверное и понять в каком месте твориться не ладное, ? 

или дано что если скормить функции eStomper_02-MagicChart-1-EURUSD-5 баг гарантирован?

если на месте, где сейчас "1" стоит однофифровое число, то "5" в имени шаблона урезается...

если число из двух и более цифр, все нормально...

 
Denis Sartakov:

если на месте, где сейчас "1" стоит однофифровое число, то "5" в имени шаблона урезается...

если число из двух и более цифр, все нормально...

void OnStart()
  {
//---
  string s1="eStomper_02-MagicChart-1-EURUSD-5";
  string s2="eStomper_02-MagicChart-11-EURUSD-5";
  ChartSaveTemplate(0,s1);
  ChartSaveTemplate(0,s2);
  }

Полет нормальный! Все без ошибок


 
Код в студию
 
Denis Sartakov:

Нет, друг, ты не прав:

если mss_GlobalMagicChartID  =  eStomper_02-MagicChart-11-EURUSD-5

шаблон сохраняется под нормальным, неусеченным именем

eStomper_02-MagicChart-11-EURUSD-5

// смотреть тут

string s=StringTrimLeft("   кто то из нас не прав  ");

и справку заодно

 
Alexandr Andreev:
Код в студию
   string s_Symbol = Symbol();
   string s_EA_Name = MQLInfoString(MQL_PROGRAM_NAME);
   string s_MagicChartIDSuffix = "MagicChart";
   string s_GlobalMagicChartID  = s_EA_Name + "-" + s_MagicChartIDSuffix + "-" + IntegerToString(mi_Magic) + "-" + s_Symbol + "-" + IntegerToString(Period());
      if(ChartSaveTemplate(0,s_GlobalMagicChartID))
      {
Print("s_GlobalMagicChartID=",s_GlobalMagicChartID);      
         if (!CopyFileW(s_Source,s_Destination,false))
         {
            Print(__FUNCTION__," CopyFileW(sourse = " + s_Source + " destination = " + s_Destination + " error = " + ::GetLastError());
            return(false);
         }
         Print(__FUNCTION__," Save template fine: " + mss_GlobalMagicChartID + ".tpl");
      }
      else
      {
         Print(__FUNCTION__," Couldnot Save template : " + mss_GlobalMagicChartID + ".tpl" + "Error = " + GetLastError());
         return(false);
      }
Причина обращения: