Переменные типа string. Обход ограничения в 255 символов

 

из документации

...

Длина строковой константы - от 0 до 255 символов. Если длина строковой константы превосходит максимальную, лишние символы справа отбрасываются, и компилятор выдает соответствующее предупреждение. ...

Действительно, если при инициализации переменной типа string  строкой более 255 символов компилятор выдает предупреждение\ошибку

но если переменную данного типа собрать операцией

StringConcatenate( ...)

то можно обойти данное ограниечение в 255 символов

вод код скрипта

string testStr="qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?";
string strTest;
int start()
  {
   strTest=StringConcatenate(testStr,testStr,testStr,testStr,testStr,testStr,testStr,testStr,testStr,testStr);
  
Print(strTest);
  
Print(StringLen(strTest));
  
return(0);
  
}


вот лог из журнала

23:24:05 Compiling 'test_string'
23:24:05 test_string EURGBP,M1: loaded successfully
23:24:05 test_string EURGBP,M1: qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?
23:24:05 test_string EURGBP,M1: 870
23:24:05 test_string EURGBP,M1: uninit reason 0
23:24:05 test_string EURGBP,M1: removed

с "собранной" переменной получается успешно работать и совершать необходимые (мне) операции


Как это можно прокомментировать?

Это полезная фича или просто успешный баг.

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

А нельзя ли изначально инициализировать как переменную а не как константу.

ладно убрал переменную strTest

и оставил только одну изначально она константа а после превращается в переменную ?


string testStr="qwertyuiop[]asdfghjkl;zxcvbnm,.1234567890-=!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:ZXCVBNM<>?";

int start()
  {
   testStr=StringConcatenate(testStr,testStr,testStr,testStr,testStr,testStr,testStr,testStr,testStr,testStr);
  
Print(testStr);
  
Print(StringLen(testStr));
  
return(0);
  
}

В логах результат тот же